Open format for AI agent skills Β· v0.9.0 Β· stable spec (RFC 0002)

Write an agent skill once. Run it everywhere.

kitbash β€” bash
$ kitbash install gh:addyosmani/agent-skills/skills/code-review-and-quality
βœ“ installed code-review-and-quality@0.0.0
  budget 6000 tokens Β· standing 250 Β· mode skill Β· pinned in kitbash.lock
⚠ unmanifested (SKILL.md only) β€” defaults applied

$ kitbash compile
β†’ .claude/skills/code-review-and-quality/SKILL.md
β†’ .cursor/rules/code-review-and-quality.mdc
β†’ AGENTS.md Β§code-review-and-quality
⚠ agentsmd can't lazy-load β€” this skill costs ~5,044 tokens standing
compiled 1 skill for 3 agent targets

A real session β€” a third-party skills.sh skill compiled to three agents, its hidden token cost measured. npm install -g kitbash

Kitbash is an open format for agent skills and a compiler that turns one source folder into whatever each coding agent actually reads. Write the skill once and compile it to Claude Code, Cursor, Copilot, Codex, Gemini, and more β€” instead of hand-maintaining a copy per agent.

packages β†’ npm  Β·  containers β†’ Docker  Β·  lint rules β†’ ESLint  Β·  agent skills β†’ kitbash

#Every agent invented its own format

Your team runs several coding agents, and each reads its instructions from a different place. A skill written for one is dead weight for the rest β€” so people keep divergent rule files that quietly drift apart.

Claude Code.claude/skills/*/SKILL.md
Cursor.cursor/rules/*.mdc
GitHub Copilot.github/skills/*/SKILL.md
CodexAGENTS.md
Devin (ex-Windsurf).devin/rules/*.md
Cline.clinerules/*.md
Gemini CLI.gemini/skills/*/SKILL.md
AiderCONVENTIONS.md

#One source folder, compiled everywhere

A Kitbash skill is a directory with a small manifest. It declares things no other format has a field for β€” an enforced token budget and tool permissions β€” and compiles to each agent's native layout.

# skill.toml
[skill]
name = "prereview"
version = "0.1.0"

[triggers]
commands = ["/prereview"]

[context]
budget = 1500    # enforced at compile
standing = 60   # cost while idle

[permissions]
tools = ["read", "grep", "bash:git diff *"]
network = false

[artifacts]
produces = ["findings@1"]
consumes = ["plan@1"]

Budgets, enforced

Every skill declares its token cost. compile measures the output and warns β€” or fails with --strict β€” when a skill goes over, instead of letting rules pile up unmeasured.

Review the diff

Installs pin a content hash in kitbash.lock. Drift is detected, and updates show up as an instruction diff you can read β€” not a silent change.

Honest degradation

An agent that can't run scripts gets an instruction-only build with a visible warning, never a quiet downgrade. Nine targets today, from Claude Code to the AGENTS.md fallback.

#Pick a target

This is kitbash preview, in your browser β€” the same skill compiled for each agent your team runs, with what it actually costs there. Lazy targets load on demand; eager targets pay the full token bill every session.

lazy Β· 0 tok standing .claude/skills/prereview/SKILL.md + .claude/commands/prereview.md
# .claude/skills/prereview/SKILL.md
---
name: prereview
description: "Review the diff against this repo's real standards"
---
<!-- generated by kitbash β€” do not edit; source: .kitbash/skills/prereview @ 0.1.0 -->

Review the working diff the way this repo's own reviewers do…

# .claude/commands/prereview.md β€” compiled slash-command shim
Load the "prereview" skill: read .claude/skills/prereview/SKILL.md and follow it exactly.

Native skills directory, plus declared trigger commands compiled to real slash commands. The body loads only when the skill is invoked, so it costs nothing standing.

Run it yourself: kitbash preview prereview β€” with lint and explain, new in the CLI.

#Skills that feed each other

Typed artifacts are stdin/stdout for agents. A skill declares what it produces and consumes, so skills pipe into each other through data instead of prompt-chaining hope β€” with gates between steps that pass or fail on exit codes, not vibes.

/plan─plan@1β†’implementβ†’/verify─verify@1β†’/prereview─findings@1β†’ship

#Start in one line

Install from npm, set Kitbash up in a repo, add a skill, and compile.

npm or Homebrew Zero-runtime CLI. Compiled output is plain files in your repo β€” no runtime, no lock-in.
npm install -g kitbash
# or: brew install singhharsh1708/tap/kitbash
kitbash init && kitbash compile
Read the guide

#Skills

One skill ships today as a worked example. The rest are sketched in the catalog and land as the compiler earns them.

ships today/prereview

Reviews your diff against your team's actual standards β€” mined from what reviewers on this repo really flag, not a generic checklist.

planned/excavate

Answers "why is this code like this?" with the commit, PR thread, and issue that made it so.

planned/triage

Turns a red CI run into a verdict: flake, environment, or real regression β€” with the decisive log line.

planned/plan

Issue to file-level implementation plan, with risks and a test plan, as an artifact later skills consume.

planned/verify

Drives the changed behavior end-to-end in the running app. Tests passing is evidence, not the verdict.

planned/migrate

Checkpointed migration batches β€” resumable across sessions, every batch independently revertable.

#Read more

The core format is stable and everything is in the open. These are the pages worth starting with.

Already have skills? A plain SKILL.md folder β€” the skills.sh / Claude Skills convention β€” installs directly with kitbash install owner/repo. No manifest, so it's marked unmanifested and defaults are applied. skills.sh distributes skills; Kitbash treats them like real engineering artifacts.