Create and maintain Architecture Decision Records (ADRs) optimized for agentic coding workflows. Use when you need to propose, write, update, accept/reject, deprecate, or supersede an ADR; bootstrap an adr folder and index; consult existing ADRs before implementing changes; or enforce ADR conventions. This skill uses Socratic questioning to capture intent before drafting, and validates output against an agent-readiness checklist.
npx skills add https://github.com/vercel/ai --skill adr-skill
ADRs created with this skill are executable specifications for coding agents. A human approves the decision; an agent implements it. The ADR must contain everything the agent needs to write correct code without asking follow-up questions.
This means:
Write an ADR when a decision:
Do NOT write an ADR for:
When in doubt: if a future agent working in this codebase would benefit from knowing _why_ this choice was made, write the ADR.
If you are an agent coding in a repo and you encounter any of these situations, stop and propose an ADR before continuing:
How to propose: Tell the human what decision you've hit, why it matters, and ask if they want to capture it as an ADR. If yes, run the full four-phase workflow. If no, note the decision in a code comment and move on.
Every ADR goes through four phases. Do not skip phases.
Before asking any questions, gather context from the repo:
contributing/decisions/, docs/decisions/, adr/, docs/adr/, decisions/ for existing records. Read them. Note:package.json, go.mod, requirements.txt, Cargo.toml, or equivalent. Note relevant dependencies and versions.Interview the human to understand the decision space. Ask questions one at a time, building on previous answers. Do not dump a list of questions.
Core questions (ask in roughly this order, skip what's already clear from context or Phase 0):
Adaptive follow-ups: Based on answers, probe deeper where the decision is fuzzy. Common follow-ups:
When to stop: You have enough when you can fill every section of the ADR — including the Implementation Plan — without making things up. If you're guessing at any section, ask another question.
Intent Summary Gate: Before moving to Phase 2, present a structured summary of what you captured and ask the human to confirm or correct it:
> Here's what I'm capturing for the ADR:
>
> - Title: {title}
> - Trigger: {why now}
> - Constraints: {list}
> - Options: {option 1} vs {option 2} [vs ...]
> - Lean: {which option and why}
> - Non-goals: {what's explicitly out of scope}
> - Related ADRs/code: {what exists that this interacts with}
> - Affected files/areas: {where in the codebase this lands}
> - Verification: {how we'll know it's implemented correctly}
>
> Does this capture your intent? Anything to add or correct?
Do NOT proceed to Phase 2 until the human confirms the summary.
contributing/decisions/ (if contributing/ exists), docs/decisions/ (MADR default), or adr/ (simpler repos).YYYY-MM-DD-...), continue that.choose-database.md).assets/templates/adr-simple.md for straightforward decisions (one clear winner, minimal tradeoffs).assets/templates/adr-madr.md when you need to document multiple options with structured pros/cons/drivers.references/template-variants.md for guidance.scripts/new_adr.js (handles directory, naming, and optional index updates).assets/templates/ and fill it manually.After drafting, review the ADR against the agent-readiness checklist in references/review-checklist.md.
Present the review as a summary, not a raw checklist dump. Format:
> ADR Review
>
> ✅ Passes: {list what's solid — e.g., "context is self-contained, implementation plan covers affected files, verification criteria are checkable"}
>
> ⚠️ Gaps found:
>
> - {specific gap 1 — e.g., "Implementation Plan doesn't mention test files — which test suite should cover this?"}
> - {specific gap 2}
>
> Recommendation: {Ship it / Fix the gaps first / Needs more Phase 1 work}
Only surface failures and notable strengths — do not recite every passing checkbox.
If there are gaps, propose specific fixes. Do not just flag problems — offer solutions and ask the human to approve.
Do not finalize until the ADR passes the checklist or the human explicitly accepts the gaps.
Agents should read existing ADRs before implementing changes in a codebase that has them. This is not part of the create-an-ADR workflow — it's a standalone operation any agent should do.
contributing/decisions/, docs/decisions/, adr/, docs/adr/, decisions/. Also check for an index file (README.md or index.md).accepted ADRs — these are active decisions.src/db/," do that.ADRs should be bidirectionally linked to the code they govern.
The Implementation Plan section names specific files, directories, and patterns:
## Implementation Plan
- **Affected paths**: `src/db/`, `src/config/database.ts`, `tests/integration/`
- **Pattern**: all database queries go through `src/db/client.ts`
When implementing code guided by an ADR, add a comment referencing it:
// ADR: Using better-sqlite3 for test database
// See: docs/decisions/2025-06-15-use-sqlite-for-test-database.md
import Database from 'better-sqlite3';
Keep these lightweight — one comment at the entry point, not on every line. The goal is discoverability: when a future agent reads this code, they can find the reasoning.
src/db/ can find which ADRs govern that areadeprecated, explain replacement path.## More Information with a date stamp. Do not rewrite history.scripts/set_adr_status.js for status changes (supports YAML front matter, bullet status, and section status).After an ADR is accepted:
contributing/decisions/2025-06-15-use-sqlite-for-test-database.md."## More Information.If the repo has an ADR index/log file (often README.md or index.md in the ADR dir), keep it updated.
Preferred: let scripts/new_adr.js --update-index do it. Otherwise:
When introducing ADRs to a repo that has none:
node /path/to/adr-skill/scripts/bootstrap_adr.js
This creates the directory, an index file, and a filled-out first ADR ("Adopt architecture decision records") with real content explaining why the team is using ADRs. Use --json for machine-readable output. Use --dir to override the directory name.
For repos with many ADRs, organize by subdirectory:
docs/decisions/
backend/
2025-06-15-use-postgres.md
frontend/
2025-06-20-use-react.md
infrastructure/
2025-07-01-use-terraform.md
Date prefixes are local to each category. Choose a categorization scheme early (by layer, by domain, by team) and document it in the index.
scripts/new_adr.js — create a new ADR file from a template, using repo conventions.scripts/set_adr_status.js — update an ADR status in-place (YAML front matter or inline). Use --json for machine output.scripts/bootstrap_adr.js — create ADR dir, README.md, and initial "Adopt ADRs" decision.references/review-checklist.md — agent-readiness checklist for Phase 3 review.references/adr-conventions.md — directory, filename, status, and lifecycle conventions.references/template-variants.md — when to use simple vs MADR-style templates.references/examples.md — filled-out short and long ADR examples with implementation plans.assets/templates/adr-simple.md — lean template for straightforward decisions.assets/templates/adr-madr.md — MADR 4.0 template for decisions with multiple options and structured tradeoffs.assets/templates/adr-readme.md — default ADR index scaffold used by scripts/bootstrap_adr.js.From the target repo root:
# Simple ADR
node /path/to/adr-skill/scripts/new_adr.js --title "Choose database" --status proposed
# MADR-style with options
node /path/to/adr-skill/scripts/new_adr.js --title "Choose database" --template madr --status proposed
# With index update
node /path/to/adr-skill/scripts/new_adr.js --title "Choose database" --status proposed --update-index
# Bootstrap a new repo
node /path/to/adr-skill/scripts/bootstrap_adr.js --dir docs/decisions
Notes:
--dir and --strategy to override.--json to emit machine-readable output.Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.
Intelligently organizes your files and folders across your computer by understanding context, finding duplicates, suggesting better structures, and automating cleanup tasks. Reduces cognitive load and keeps your digital workspace tidy without manual effort.
Generates creative domain name ideas for your project and checks availability across multiple TLDs (.com, .io, .dev, .ai, etc.). Saves hours of brainstorming and manual checking.
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Implements Manus-style file-based planning for complex tasks. Creates task_plan.md, findings.md, and progress.md. Use when starting complex multi-step tasks, research projects, or any task requiring >5 tool calls.
Creative research ideation and exploration. Use for open-ended brainstorming sessions, exploring interdisciplinary connections, challenging assumptions, or identifying research gaps. Best for early-stage research planning when you do not have specific observations yet. For formulating testable hypotheses from data use hypothesis-generation.
Comprehensive GitHub project management with swarm-coordinated issue tracking, project board automation, and sprint planning
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
Take vercel/adr-skill from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.