Agent Runbooks
A convention for externalizing step-by-step procedures from AI agent instruction files (CLAUDE.md, AGENTS.md, .cursorrules, etc.) into on-demand runbook files.
The Problem
AI agent instruction files serve two purposes in tension:
- Policy — conventions, architecture decisions, rules that apply to every interaction
- Procedure — step-by-step instructions that apply to specific workflows
Policy is always-on context and belongs in the instruction file. Procedure is on-demand context — it should be loaded when needed and absent when not.
Inlining procedures into your instruction file means paying the full token cost on every interaction, even when the procedure is irrelevant.
The Convention
Place runbooks in a runbooks/ directory under whichever agent config directory you use:
your-project/
├── .agent/runbooks/ # or .agents/runbooks/, .ai/runbooks/
│ ├── precommit.md
│ ├── prerelease.md
│ ├── deploy.md
│ └── incident-response.md
├── CLAUDE.md # (or AGENTS.md, .cursorrules, etc.)
└── ...
The parent directory name is an emerging convention — .agent/, .agents/, .ai/, and tool-specific directories (.claude/, .cursor/) all work. What matters is the pattern: externalize procedures into on-demand files.
Each runbook is a standalone markdown file with a clear title, description, and procedural steps. Your instruction file references them with a single line:
Before committing, follow `.agent/runbooks/precommit.md`.
25 lines of inline procedure replaced by 1 line of reference. The agent reads the runbook on demand when it actually needs the procedure.
Emerging directory conventions
| Convention | Examples | Status |
|---|---|---|
.ai/ |
AgentInfra, dot-ai (archived), agnostic-ai | Early-stage |
.agents/ |
ACS spec, .agents Protocol | Multiple competing specs |
.agent/ |
dotagent (122 stars) | Most-starred proposal |
| Tool-specific | .claude/, .cursor/rules/, .windsurf/rules/ |
Established but vendor-locked |
Pick whichever aligns with your existing setup. The runbooks pattern works with any of them.
Runbook Format
Runbooks are plain markdown. No special syntax required. Recommended structure:
One-line description of when this procedure applies.
1. - -
2.
Runbooks vs Rules
AI coding tools use "rules" (.cursor/rules/, .windsurf/rules/, .rules) for declarative policy — conventions, coding standards, and architectural guidelines that shape agent behavior. Rules are typically always-loaded or conditionally attached.
Runbooks are different: they contain imperative procedures — step-by-step instructions for specific tasks. The distinction matters because it tells the agent what to expect:
- Rules = "use snake_case for Python functions" (policy, always relevant)
- Runbooks = "step 1: run
make check, step 2: verify output, step 3: stage files..." (procedure, relevant only during that task)
Loading mode (eager/lazy) is orthogonal — both rules and runbooks can be loaded on demand. The content type is what differs.
Design Principles
- One procedure per file. Each runbook covers exactly one workflow.
- Runbooks are imperative, instruction files are declarative. The instruction file says what (conventions, rules). Runbooks say how (step-by-step procedures).
- Reference, don't duplicate. One-line pointer in the instruction file; full procedure in the runbook.
- Self-contained. A runbook should make sense without reading the instruction file first.
- Version-controlled. Runbooks are code. They belong in the repo.
Cross-Harness Compatibility
This convention works with any AI coding assistant that can read project files:
| Tool | Instruction File | How It Loads Runbooks |
|---|---|---|
| Claude Code | CLAUDE.md / AGENTS.md | Agent reads referenced files on demand |
| Cursor | .cursor/rules/*.mdc |
Agent Requested mode or file reference |
| GitHub Copilot | .github/copilot-instructions.md |
Scoped instructions with applyTo globs |
| Windsurf | .windsurf/rules/*.md |
Agent reads referenced files |
| Gemini CLI | GEMINI.md | @file.md import syntax |
| Aider | CONVENTIONS.md | --read flag or .aider.conf.yml |
| Codex (OpenAI) | AGENTS.md | Nested per-directory + file reads |
Examples
See the examples/ directory for real-world runbooks:
precommit.md— Pre-commit checklist (test, lint, audit, review)prerelease.md— Multi-target release procedure
Related Work
- AGENTS.md — Universal instruction file spec (Linux Foundation)
- Claude Code Skills — Progressive disclosure for agent procedures
- AgentInfra —
.ai/directory with three-layer loading - dotagent — Universal parser/converter for AI rules across IDEs
- ACS — Agentic Collaboration Standard proposing
.agents/
License
CC0 1.0 — Public domain. Use this convention however you like.