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

Kiro IDE, linted on save and steered by AGENTS.md

ultracite init --editors kiro writes .vscode/settings.json and installs your toolchain’s extension from Open VSX through the kiro launcher, so Kiro formats on save and applies safe fixes as VS Code would. Kiro’s agent always loads AGENTS.md as steering, but IDE 1.0 removed its diagnostics tool, so #problems or ultracite check is how lint errors reach it.

Kiro by AWSChecked against Kiro 1.2.56

{
  "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
  }
}
Oxlint + Oxfmt
What init does in Kiro
  1. 1Writes .vscode/settings.jsonA new file, or merged into yours setting by setting, with your comments and other settings kept.
  2. 2Installs oxc.oxc-vscodeWith kiro --install-extension, when it creates the settings file.
Then, in Kiro
  1. 3Open the project in Kiro. If init couldn’t run kiro, install oxc.oxc-vscode from the Extensions view, or biomejs.biome if you picked Biome.
  2. 4Save a TypeScript 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 Kiro 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

  • Biome

    Extension
    biomejs.biome
    Formats with
    biomejs.biome
    On save
    source.fixAll.biomesource.organizeImports.biome

    --linter biome

  • ESLint + Prettier + Stylelint

    Extensions
    dbaeumer.vscode-eslintesbenp.prettier-vscode
    Formats with
    esbenp.prettier-vscode
    On save
    source.fixAll.eslintsource.organizeImports

    --linter eslint

Kiro runs VS Code extensions from Open VSX

Kiro reads the same .vscode/settings.json as VS Code. What differs is where its extensions come from, and how much its agent may do before you trust the workspace.

Extensions
Kiro installs from Open VSX, not the Visual Studio Marketplace. oxc.oxc-vscode, biomejs.biome, dbaeumer.vscode-eslint and esbenp.prettier-vscode are all published there.
Private registry
An admin can point Kiro at another registry with the ExtensionGalleryServiceUrl policy. Check that it carries your toolchain’s extension.
Code OSS 1.131
Kiro has been on Code OSS 1.131 since IDE 1.1, so it reads .vscode/settings.json as VS Code does.
Workspace trust
Until you trust a workspace, Kiro skips its steering files and skills and asks before every shell command, even one a rule allows. The decision is stored outside the repository.
Shell commands
Without a rule, read-only git commands run silently and other commands ask. A shell rule in ~/.kiro/settings/permissions.yaml can allow npx ultracite *.
Agent autonomy
Settings → Agent → Agent Autonomy (kiroAgent.agentAutonomy): Autopilot goes ahead with allowed actions; Supervised asks before any action.

Lint errors reach Kiro through #problems

Kiro’s agent treats AGENTS.md as steering that’s always included, at the workspace root and in subfolders. IDE 1.0 removed the agent’s standalone diagnostics tool, so to hand it your linter’s findings, add #problems to a message or let it run ultracite check as the rules ask.

Where the agent looks for instructions
  1. 1~/.kiro/steering/Global steering for every workspace, including an AGENTS.md placed here. Workspace steering wins when the two disagree.
  2. 2.kiro/steering/*.mdWorkspace steering, loaded by each file’s inclusion mode: always (the default), fileMatch, manual or auto. Skipped until you trust the workspace.
  3. 3AGENTS.mdUltraciteWhere init writes Ultracite’s rules. Always included; inclusion modes don’t apply to it.
  4. 4packages/ui/AGENTS.mdSubfolder AGENTS.md files load as steering alongside the rest.
  5. 5.kiro/skills/Skills, loaded when a request matches their description. Kiro’s skill folders are this one and ~/.kiro/skills/, so init installs the Ultracite skill here when the project has a .kiro folder.
rules:
  - capability: shell
    match: ["npx ultracite *"]
    effect: allow
  1. 01The agent writes a file in your workspace.
  2. 02Your Oxc, Biome or ESLint extension reports problems in the editor, as it does for your own edits. Since IDE 1.0 the agent has no standalone tool for reading them.
  3. 03Add #problems to your next message to hand it those findings.
  4. 04Or it runs npx ultracite check because AGENTS.md says to. A shell allow rule lets that run without a prompt in a trusted workspace.
Agent pageUltracite for Kiro CLI

Worth knowing about Kiro

  • Changes to .vscode always ask

    Kiro asks before its agent writes anything under .vscode/, in trusted and untrusted workspaces alike, and no allow rule removes that prompt. The agent can’t change your format-on-save settings without your approval.

  • Hooks follow the agent, not you

    Kiro’s PostFileSave hook runs when the agent saves or modifies a file, and PostTaskExec runs after a spec task finishes. Both are for the agent’s changes; format on save covers yours. Ultracite doesn’t write Kiro hooks.

  • Steering can read your config

    A steering file can pull in a live file with #[[file:path]], a line range with #[[file:path:12-28]] or a folder listing with #[[folder:path]]. In an AGENTS.md, paths resolve from that file’s folder, so it can point the agent at the oxlint.config.ts you actually ship.

Kiro questions, answered

Does Kiro use the VS Code Marketplace?
No. Kiro installs extensions from Open VSX unless an admin sets another registry with the ExtensionGalleryServiceUrl policy. oxc.oxc-vscode, biomejs.biome, dbaeumer.vscode-eslint and esbenp.prettier-vscode are all published on Open VSX.
Does Kiro read AGENTS.md?
Yes. Kiro loads AGENTS.md from the workspace root, from subfolders and from ~/.kiro/steering/ as steering that’s always included. Inclusion modes don’t apply to it.
Can Kiro’s agent see my lint errors?
Not through a dedicated tool: IDE 1.0 removed the agent’s standalone diagnostics tool. Add #problems to a chat message to share the language server’s findings, or let the agent run npx ultracite check.
Why didn’t init install the Oxlint extension in Kiro?
init runs kiro --install-extension only when it creates .vscode/settings.json, and only if kiro is on your PATH. Otherwise, install oxc.oxc-vscode from Kiro’s Extensions view, which searches Open VSX.
Can Kiro run Ultracite after every agent edit?
Kiro can: a PostFileSave hook in .kiro/hooks/*.json fires when the agent saves or modifies a matching file. Ultracite doesn’t write one, and init --hooks doesn’t support Kiro.

Ship less slop

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