IBM Bob formats on save; its agent reads AGENTS.md
ultracite init --editors bob writes .vscode/settings.json, so IBM Bob formats on save and applies safe fixes through the Oxc, Biome or ESLint extension from Open VSX. Bob’s agent follows AGENTS.md by default, and after each write it sees the new errors and warnings the editor reports.
IBM Bob by IBMChecked against IBM Bob 2.2.1
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnPaste": true,
"editor.formatOnSave": true,Format on save
"emmet.showExpandedAbbreviation": "never",
"js/ts.tsdk.path": "node_modules/typescript/lib",The project’s TypeScript
"js/ts.tsdk.promptToUseWorkspaceVersion": true,
"[astro]": {
"editor.defaultFormatter": "astro-build.astro-vscode"
},
"[css]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[graphql]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[handlebars]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[html]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[javascriptreact]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[json]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[jsonc]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[less]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[markdown]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[scss]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[typescript]": {Oxfmt formats it
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[vue-html]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[vue]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"[yaml]": {
"editor.defaultFormatter": "oxc.oxc-vscode"
},
"editor.codeActionsOnSave": {
"source.fixAll.oxc": "explicit"Oxlint’s safe fixes
}
}init does in IBM Bob- 1Writes
.vscode/settings.jsonA new file, or merged into yours setting by setting, with your comments and other settings kept. - 2Installs
oxc.oxc-vscodeWithbobide --install-extension, when it creates the settings file.
- 3Trust the folder when Bob asks. Until you do, it runs the folder in safe mode, with workspace rules, skills and MCP servers suspended.
- 4If
initcouldn’t runbobide, installoxc.oxc-vscodefrom the Extensions view, or Biome’s if you picked Biome. Bob installs extensions from Open VSX. - 5Save a file: Oxfmt formats it and Oxlint’s safe fixes apply.
Three toolchains, one settings.json
init writes the settings for the toolchain you pick, so IBM Bob formats with the same tool as ultracite fix and applies its fixes when you save.
Oxlint + OxfmtDefault
- Extension
- oxc.oxc-vscode
- Formats with
- oxc.oxc-vscode
- On save
- source.fixAll.oxc
--linter oxlint
- Extension
- biomejs.biome
- Formats with
- biomejs.biome
- On save
- source.fixAll.biomesource.organizeImports.biome
--linter biome
- Extensions
- dbaeumer.vscode-eslintesbenp.prettier-vscode
- Formats with
- esbenp.prettier-vscode
- On save
- source.fixAll.eslintsource.organizeImports
--linter eslint
Open VSX, a launcher and a trust prompt
Bob is a VS Code build that installs extensions from Open VSX and applies the .vscode/settings.json that init writes. Its agent waits for you to trust the folder before it reads workspace rules.
- Extension gallery
- Open VSX. Bob’s build points its gallery at open-vsx.org, which has
oxc.oxc-vscode,biomejs.biome,dbaeumer.vscode-eslintandesbenp.prettier-vscode. - Launcher
- Bob’s own launcher is
bobide, built from VS Code’s command-line tool, andinitinstalls the extension withbobide --install-extension. The Linux packages link it to/usr/bin/bobide. - VS Code base
- Bob 2.2.1 is built on VS Code 1.126 and applies
.vscode/settings.jsonas VS Code does. - Workspace trust
- Since 2.0.2, Bob asks for a trust decision the first time you open a folder. Untrusted folders run in safe mode, with workspace rules, skills, MCP servers and hooks suspended.
- Two settings files
.bob/settings.jsonholds Bob’s hooks. Editor settings, including the onesinitwrites, stay in.vscode/settings.json.- Required extensions
- Since 2.2.0, admins can set a
RequiredExtensionsgroup policy that installs extensions silently when Bob starts, which suits rolling out the Oxc or Biome extension.
Bob reads new diagnostics after each edit
Bob loads AGENTS.md from the workspace root by default, after the current mode’s rules and before the general rules in .bob/rules/. Its edit tools compare the editor’s diagnostics before and after each write and pass the new ones to the model, and @problems hands it the whole Problems panel. Its PostToolUse hook ignores output and exit codes, so Ultracite sets up no hook for Bob.
- 1
~/.bob/rules/Your global rules for every project, loaded first. - 2
.bob/rules-{mode}/Workspace rules for the current mode, such asrules-agent/orrules-plan/. - 3
AGENTS.mdUltraciteLoaded by default after the mode’s rules. Whereinitwrites Ultracite’s rules;"bob-code.useAgentRules": falseturns it off. - 4
.bob/rules/General workspace rules, loaded last. They can override global rules.
- 01Bob edits a file with
write_file,apply_diff,insert_contentorsearch_and_replace. - 02The Oxc, Biome or ESLint extension lints the change, as it does for your own edits.
- 03Bob compares the diagnostics from before and after the write and adds the new ones to the tool result the model reads.
- 04No hook reports back, since Bob ignores a
PostToolUsehook’s stdout and exit code 2. In Agent mode, Bob runsnpx ultracite fixwhenAGENTS.mdtells it to.
Worth knowing about IBM Bob
Bob in the lightbulb menu
Put the cursor on a line with a diagnostic and the lightbulb (Cmd+. or Ctrl+.) offers Add to Bob Context, Explain with Bob and Improve with Bob, which send the code with its file path and line numbers.
Only Agent mode runs commands
Of Bob’s three built-in modes, only Agent mode has the Execute tool. Plan mode can edit files but not run commands, and Ask mode can do neither, so
npx ultracite fixruns from Agent mode.Skills come from .bob/skills
Bob loads skills from
.bob/skills/and~/.bob/skills/, not.agents/skills/, and asks before activating one unless Skills is auto-approved.init --agents bobinstalls the Ultracite skill into.bob/skills/.
IBM Bob questions, answered
- Does Ultracite work with IBM Bob?
- Yes.
npx ultracite init --editors bobwrites.vscode/settings.jsonfor Oxlint and Oxfmt, Biome, or ESLint and Prettier. It installs the matching extension from Open VSX with Bob’sbobidecommand. - Why didn’t init install the Oxc extension in IBM Bob?
initinstalls it withbobide --install-extensiononly when it creates.vscode/settings.json, and only ifbobideis on yourPATH. Otherwise, install it from the Extensions view.- Does IBM Bob read AGENTS.md?
- Yes, from the workspace root, unless
bob-code.useAgentRulesisfalse. It loads after the current mode’s rules and before.bob/rules/, and only once you trust the folder. - Can IBM Bob see Oxlint or ESLint errors?
- Yes. After each edit, Bob’s tools pass the model any diagnostics that are new since before the write. Mention
@problemsto give it every error and warning in the Problems panel, with file paths and line numbers. - Does Ultracite set up a hook for IBM Bob?
- No. Bob runs hooks from
.bob/settings.jsonand~/.bob/settings/settings.json, but aPostToolUsehook’s stdout is ignored and exit code 2 has no effect, so a lint hook couldn’t tell Bob what failed.
Keep going
- AgentIBM BobIBM’s AI development IDE, with the Bob Shell CLI and mode-based agents.
- EditorKiroAWS’s spec-driven AI IDE, built on Code OSS, with steering files and agent hooks.
- EditorCursorThe AI code editor built on VS Code, with an agent that edits across your codebase.
- DocsEditor setupEvery editor
initconfigures, and the extension each toolchain needs.
Ship less slop
One command sets up your linter, formatter, editor and agents. Works with Oxlint, Biome and ESLint.