Skip to content
Ultracite
Esc
↑↓navigate↵open⌘Jpreview

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.

…
Ultracite’s rules
Where IBM Bob looks for instructions
  1. 1~/.bob/rules/Your global rules for every project, loaded first.
  2. 2.bob/rules-{mode}/Workspace rules for the current mode, such as rules-plan/ or rules-ask/.
  3. 3AGENTS.mdUltraciteThe workspace-root file init writes, loaded by default after the mode’s rules.
  4. 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": false in Bob IDE settings, or "bob-shell.useAgentRules": false in Bob Shell, stops Bob reading AGENTS.md. Leave both unset for Ultracite.
Bob Shell files
Bob Shell also reads single files at the workspace root: .bobrules for 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_Store are 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`
What the rules tell it to run
  1. 01Bob writes a file, for example with its write_file tool.
  2. 02The rules in AGENTS.md tell it to run npx ultracite fix, which it does once the command is approved.
  3. 03It reads the output and fixes what’s left.
  4. 04If you ran npx ultracite check yourself, @terminal hands Bob the command and its output.

Worth knowing about IBM Bob

  • Hand it the output with @terminal

    In Bob IDE, @terminal adds your last terminal command and its output to the chat, and @problems adds every error and warning in the Problems panel, with file paths and line numbers.

  • Allowlist commands by prefix

    approvedCommands under approval.allowedExecutors in ~/.bob/settings/settings.json approves commands that start with an entry, such as npx ultracite, and deniedCommands always 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 as rules-plan/ or rules-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, init installs 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) or bob-shell.useAgentRules (Bob Shell) isn’t set to false, 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, PostToolUse and Stop. Only UserPromptSubmit and PreToolUse can block (with exit code 2), and PostToolUse output is ignored. Ultracite doesn’t configure Bob hooks.
How do I let Bob run ultracite without asking?
Add npx ultracite to approvedCommands for execute_command under approval.allowedExecutors in ~/.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.

Ship less slop

One command sets up your linter, formatter, editor and agents. Works with Oxlint, Biome and ESLint.