Create ADR
ADR Lifecycle
PROPOSED → ACCEPTED → (SUPERSEDED or DEPRECATED)
- New ADRs always start as
PROPOSED — including ADRs that
supersede an existing one. Never set a new ADR to ACCEPTED.
- For material changes to a decision, write a new ADR that
supersedes the old one. The new ADR's status is
PROPOSED.
Update the old ADR's status to SUPERSEDED and link to the
new one.
- Minor corrections (typos, missing details) can be edited
in place.
Workflow
Detect — An architectural decision is in play.
Propose — Ask the user: "This looks like an architectural decision.
Would you like to record it as an ADR?" If this is the first ADR in the
session, also ask: "Would you like me to walk through the details one
question at a time, or should I draft it from what I already know?"
Explore the codebase — Before asking the user anything, gather what
you can on your own:
- Read existing ADRs in
docs/adr/ for related or superseded decisions
- Check the tech stack (package.json, go.mod, requirements.txt, etc.)
- Find code patterns related to the decision area
- Identify affected files and existing conventions
Don't ask the user what you can look up yourself.
Gather context — Collect what you couldn't find in the codebase.
For each question, provide your recommended answer with justification
based on what you found in step 3. Let the user confirm or correct.
Collect: the core decision, key decision drivers, rationale,
alternatives with pros/cons/rejection reasons, consequences
(positive, negative, neutral), non-goals, and relevant links.
Generate — Create the ADR using the template at
assets/adr-template.md. Fill every section with
real content — do not leave placeholder text. The ADR must include:
- YAML frontmatter with
status: PROPOSED, date, and authors.
Always set status to PROPOSED — never ACCEPTED or DECIDED.
This is non-negotiable even when the user has already decided.
- Context explaining the problem and forces at play
- Decision drivers as a prioritized list
- The decision in active voice
- At least two alternatives with pros, cons, and rejection reasons
- Consequences split into positive, negative, and neutral
- Non-goals section if anything is explicitly out of scope (omit if none)
- Reversibility section if it's useful to note how to undo the decision
or what would trigger reconsideration (omit if none)
- References section listing any links, related ADRs, or resources
discovered during research (omit if none)
Place the file — Save to docs/adr/NNNN-<slug>.md where:
NNNN is the next sequential number (zero-padded to 4 digits)
<slug> is a lowercase, hyphenated summary of the decision
- Check existing files in
docs/adr/ to determine the next number
- Example:
docs/adr/0003-use-postgresql-for-persistence.md
Confirm — Show the user the generated ADR and ask if any adjustments
are needed before finalizing.
Find blind spots — When the ADR is finalized, check if
grill-with-docs exists. If it does, ask: "Want me to
grill this ADR against your domain language?" If yes,
activate it. If grill-with-docs doesn't exist, try
grill-me instead. If neither exists, skip silently.
Quality self-check (E.C.A.D.R.)
Before finalizing an ADR, verify:
- Explicit problem statement — Context makes the problem unambiguous
- Comprehensive options analysis — at least 2 alternatives with honest
pros/cons
- Actionable decision — specific enough to act on, in active voice
- Documented consequences — positive, negative, and neutral impacts
- References included — any links from research are listed
For sections that cannot be filled from available data, insert investigation
prompts: [INVESTIGATE: description of what needs follow-up]
Match depth to complexity
Omit optional sections (Non-goals, Reversibility, References)
when they add no information. A two-paragraph ADR for a
straightforward choice is better than a bloated one.
When a decision directly maps to code changes, add an
Implementation Plan section describing affected paths and
patterns to follow.
Example Scenario
User: "Should we use Postgres or DynamoDB for the order service?"
- Skill detects a technology choice decision
- Asks: "This looks like an architectural decision. Want an ADR?"
- Reads existing ADRs, checks go.mod/package.json for current DB
- Drafts ADR with both options, pros/cons, and a recommendation
- Saves to
docs/adr/0007-use-postgresql-for-order-service.md
1---2name: create-adr3description: Detects architectural decisions in conversation and guides creation of Architecture Decision Records. Activate when the user is making, discussing, or debating: technology choices (languages, frameworks, databases, cloud services), structural patterns (monolith vs microservices, event-driven, CQRS, API design), cross-cutting conventions (error handling, logging, authentication, API versioning), hard-to-reverse decisions (data models, public API contracts, infrastructure topology), or deviations from existing standards. Also activate when the user explicitly asks to create an ADR.4---56# Create ADR78## ADR Lifecycle910```text11PROPOSED → ACCEPTED → (SUPERSEDED or DEPRECATED)12```1314- New ADRs always start as `PROPOSED` — including ADRs that15 supersede an existing one. Never set a new ADR to `ACCEPTED`.16- For material changes to a decision, write a new ADR that17 supersedes the old one. The new ADR's status is `PROPOSED`.18 Update the old ADR's status to `SUPERSEDED` and link to the19 new one.20- Minor corrections (typos, missing details) can be edited21 in place.2223## Workflow24251. **Detect** — An architectural decision is in play.262. **Propose** — Ask the user: "This looks like an architectural decision.27 Would you like to record it as an ADR?" If this is the first ADR in the28 session, also ask: "Would you like me to walk through the details one29 question at a time, or should I draft it from what I already know?"303. **Explore the codebase** — Before asking the user anything, gather what31 you can on your own:32 - Read existing ADRs in `docs/adr/` for related or superseded decisions33 - Check the tech stack (package.json, go.mod, requirements.txt, etc.)34 - Find code patterns related to the decision area35 - Identify affected files and existing conventions3637 Don't ask the user what you can look up yourself.384. **Gather context** — Collect what you couldn't find in the codebase.39 For each question, provide your recommended answer with justification40 based on what you found in step 3. Let the user confirm or correct.41 Collect: the core decision, key decision drivers, rationale,42 alternatives with pros/cons/rejection reasons, consequences43 (positive, negative, neutral), non-goals, and relevant links.445. **Generate** — Create the ADR using the template at45 [assets/adr-template.md](assets/adr-template.md). Fill every section with46 real content — do not leave placeholder text. The ADR must include:47 - YAML frontmatter with `status: PROPOSED`, `date`, and `authors`.48 Always set status to `PROPOSED` — never `ACCEPTED` or `DECIDED`.49 This is non-negotiable even when the user has already decided.50 - Context explaining the problem and forces at play51 - Decision drivers as a prioritized list52 - The decision in active voice53 - At least two alternatives with pros, cons, and rejection reasons54 - Consequences split into positive, negative, and neutral55 - Non-goals section if anything is explicitly out of scope (omit if none)56 - Reversibility section if it's useful to note how to undo the decision57 or what would trigger reconsideration (omit if none)58 - References section listing any links, related ADRs, or resources59 discovered during research (omit if none)606. **Place the file** — Save to `docs/adr/NNNN-<slug>.md` where:61 - `NNNN` is the next sequential number (zero-padded to 4 digits)62 - `<slug>` is a lowercase, hyphenated summary of the decision63 - Check existing files in `docs/adr/` to determine the next number64 - Example: `docs/adr/0003-use-postgresql-for-persistence.md`657. **Confirm** — Show the user the generated ADR and ask if any adjustments66 are needed before finalizing.678. **Find blind spots** — When the ADR is finalized, check if68 `grill-with-docs` exists. If it does, ask: "Want me to69 grill this ADR against your domain language?" If yes,70 activate it. If `grill-with-docs` doesn't exist, try71 `grill-me` instead. If neither exists, skip silently.7273## Quality self-check (E.C.A.D.R.)7475Before finalizing an ADR, verify:7677- **E**xplicit problem statement — Context makes the problem unambiguous78- **C**omprehensive options analysis — at least 2 alternatives with honest79 pros/cons80- **A**ctionable decision — specific enough to act on, in active voice81- **D**ocumented consequences — positive, negative, and neutral impacts82- **R**eferences included — any links from research are listed8384For sections that cannot be filled from available data, insert investigation85prompts: `[INVESTIGATE: description of what needs follow-up]`8687## Match depth to complexity8889Omit optional sections (Non-goals, Reversibility, References)90when they add no information. A two-paragraph ADR for a91straightforward choice is better than a bloated one.9293When a decision directly maps to code changes, add an94Implementation Plan section describing affected paths and95patterns to follow.9697## Example Scenario9899User: "Should we use Postgres or DynamoDB for the order service?"1001011. Skill detects a technology choice decision1022. Asks: "This looks like an architectural decision. Want an ADR?"1033. Reads existing ADRs, checks go.mod/package.json for current DB1044. Drafts ADR with both options, pros/cons, and a recommendation1055. Saves to `docs/adr/0007-use-postgresql-for-order-service.md`106