IBM Bob reads AGENTS.md unless you switch it off
IBM Bob loads Ultracite’s rules from the workspace-root AGENTS.md by default, in Bob IDE and Bob Shell, between the current mode’s rules and the general ones. Its PostToolUse hook ignores output, so nothing reports back after an edit; Bob runs ultracite fix and ultracite check when the rules tell it to.
IBM Bob by IBMChecked against IBM Bob 2.2.1
# Ultracite Code Standards
This project uses **Ultracite**, a zero-config preset that enforces strict code quality standards through automated formatting and linting.
## Quick Reference
- **Format code**: `npx ultracite fix`
- **Check for issues**: `npx ultracite check`
- **Diagnose setup**: `npx ultracite doctor`
Oxlint + Oxfmt (the underlying engine) provides robust linting and formatting. Most issues are automatically fixable.
…- 1
~/.bob/rules/Your global rules for every project, loaded first. - 2
.bob/rules-{mode}/Workspace rules for the current mode, such asrules-plan/orrules-ask/. - 3
AGENTS.mdUltraciteThe workspace-root fileinitwrites, loaded by default after the mode’s rules. - 4
.bob/rules/General workspace rules, loaded last. They can override global rules.
How IBM Bob reads the rules
Bob combines global rules first, then workspace rules, and loads AGENTS.md after the current mode’s rules but before the general rules in .bob/rules/.
- Switch it off
"bob-code.useAgentRules": falsein Bob IDE settings, or"bob-shell.useAgentRules": falsein Bob Shell, stops Bob readingAGENTS.md. Leave both unset for Ultracite.- Bob Shell files
- Bob Shell also reads single files at the workspace root:
.bobrulesfor every mode and.bobrules-{mode}for one. - Overrides
- Workspace rules can override global rules when the two disagree.
- File handling
- Rules folders are read recursively, in alphabetical order. Empty files and cache files such as
.DS_Storeare skipped, and symlinks are followed up to 5 levels deep. - Mode instructions
- A mode’s custom instructions, set under Modes in the Bob sidebar, combine with the files in its
rules-{mode}/folder. - Shared settings
- Bob IDE and Bob Shell share
~/.bob/settings/settings.json, so approvals set in the IDE’s settings land in the same file Bob Shell reads.
Bob’s PostToolUse hook can’t report back
Bob IDE and Bob Shell run lifecycle hooks from ~/.bob/settings/settings.json and .bob/settings.json, and PostToolUse fires after a matched tool such as write_file. Its stdout is ignored and exit code 2 does nothing, so a lint hook there couldn’t tell Bob what failed, and Ultracite doesn’t set one up. Bob runs ultracite fix and ultracite check because AGENTS.md tells it to.
- **Format code**: `npx ultracite fix`
- **Check for issues**: `npx ultracite check`
- **Diagnose setup**: `npx ultracite doctor`- 01Bob writes a file, for example with its
write_filetool. - 02The rules in
AGENTS.mdtell it to runnpx ultracite fix, which it does once the command is approved. - 03It reads the output and fixes what’s left.
- 04If you ran
npx ultracite checkyourself,@terminalhands Bob the command and its output.
Worth knowing about IBM Bob
Hand it the output with @terminal
In Bob IDE,
@terminaladds your last terminal command and its output to the chat, and@problemsadds every error and warning in the Problems panel, with file paths and line numbers.Allowlist commands by prefix
approvedCommandsunderapproval.allowedExecutorsin~/.bob/settings/settings.jsonapproves commands that start with an entry, such asnpx ultracite, anddeniedCommandsalways win. Bob Shell picks up changes at the start of its next session.Rules per mode
Each mode reads its own
.bob/rules-{mode}/folder, such asrules-plan/orrules-ask/, so Plan mode can carry instructions that Ask mode never sees.The Ultracite skill
Bob loads skills from
.bob/skills/and~/.bob/skills/, not from.agents/skills/, and asks before activating one unless Skills is auto-approved. When you choose Bob,initinstalls the Ultracite skill into.bob/skills/as well.
IBM Bob questions, answered
- Does IBM Bob read AGENTS.md?
- Yes, by default, from the workspace root, in both Bob IDE and Bob Shell. It loads after the current mode’s rules and before the general rules in
.bob/rules/. - Why isn’t Bob following the Ultracite rules?
- Check that
bob-code.useAgentRules(Bob IDE) orbob-shell.useAgentRules(Bob Shell) isn’t set tofalse, and look in.bob/rules/and~/.bob/rules/for a rule that says something different, since Bob reads them all. - Does IBM Bob support hooks?
- Yes:
SessionStart,UserPromptSubmit,PreToolUse,PostToolUseandStop. OnlyUserPromptSubmitandPreToolUsecan block (with exit code 2), andPostToolUseoutput is ignored. Ultracite doesn’t configure Bob hooks. - How do I let Bob run ultracite without asking?
- Add
npx ultracitetoapprovedCommandsforexecute_commandunderapproval.allowedExecutorsin~/.bob/settings/settings.json. Commands that start with an approved entry are approved automatically, and the file is shared by Bob IDE and Bob Shell.
Keep going
- AgentClineOpen-source coding agent for VS Code, also shipped as a CLI and an SDK.
- AgentKilo CodeOpen-source coding agent for VS Code, JetBrains and the terminal.
- AgentQoderAlibaba’s agentic coding platform: a desktop IDE, a JetBrains plugin and a CLI.
- DocsAgent rulesWhat
initwrites for every agent, and how to keep it current.
Ship less slop
One command sets up your linter, formatter, editor and agents. Works with Oxlint, Biome and ESLint.