plugins/documentation/skills/write-adr/SKILL.md
Writes Architecture Decision Records (ADRs) in MADR format — captures context and problem, decision drivers, considered options with pros/cons, the chosen option and why, and consequences. Numbers files sequentially under .context/architecture/adr/. Use when the user asks to document a decision, write an ADR, record a trade-off, capture why something was chosen over alternatives, or says things like "let's write this up as an ADR", "log this decision", or "we should document why we picked X".
npx skillsauth add lucasilverentand/skills write-adrInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
An ADR is a timestamped, immutable record of a single architectural decision — the context, the options, the choice, the consequences. It exists so future-you (or a new team member, or an LLM) can reconstruct why the code looks the way it does without having to re-debate the decision.
ls .context/architecture/adr/ 2>/dev/null || echo "(none — will be created)"ls .context/architecture/adr/ 2>/dev/null | grep -E '^[0-9]{4}-' | sed 's/-.*//' | sort -n | tail -1 | awk '{printf "%04d", $1+1}' 2>/dev/null || echo "0001"These topics always deserve a written record (per the convention references in sibling skills):
Before writing anything, pin these down with the user (use AskUserQuestion for the ones that aren't obvious):
Skip questions where the answer is in the conversation or the codebase. Don't invent drivers the user didn't state.
ADRs are numbered sequentially: 0001-use-postgres.md, 0002-outbox-pattern.md, ...
.context/architecture/adr/ for the highest existing number<next>-<kebab-case-title>.mdadr/ directory if it doesn't existUse the MADR template below. Keep it focused — an ADR is not a design doc. One decision per file.
# <NNNN>. <Short title phrased as the decision>
- Status: proposed | accepted | deprecated | superseded by [ADR-NNNN](NNNN-title.md)
- Date: <YYYY-MM-DD>
- Deciders: <who>
- Tags: <optional, e.g., data, api, security>
## Context and problem statement
<2-4 sentences describing the situation that forces a decision. What's the question? Why does it need answering now? What happens if we don't decide?>
## Decision drivers
- <Driver 1 — e.g., must support 10k writes/sec>
- <Driver 2 — e.g., team has no Kafka experience>
- <Driver 3 — e.g., Cloudflare-first stack per project instructions>
## Considered options
- **Option A:** <name>
- **Option B:** <name>
- **Option C:** <name>
## Decision outcome
Chosen option: **<Option B>**, because <concise justification tied to decision drivers>.
### Positive consequences
- <What this enables or improves>
- <...>
### Negative consequences
- <What this costs us or makes harder>
- <...>
## Pros and cons of the options
### Option A: <name>
<Short description.>
- Good: <reason>
- Good: <reason>
- Bad: <reason>
- Bad: <reason>
### Option B: <name>
<Short description.>
- Good: <reason>
- Good: <reason>
- Bad: <reason>
- Bad: <reason>
### Option C: <name>
<Short description.>
- Good: <reason>
- Bad: <reason>
## Links
- <Related ADR: NNNN-title.md>
- <Design doc: path or URL>
- <External reference: RFC, blog post, docs>
Default new ADRs to proposed unless the user says the decision is already made.
If you create .context/architecture/adr/, also create or update .context/architecture/adr/README.md with a one-line index:
# ADRs
| # | Title | Status | Date |
|---|---|---|---|
| 0001 | Use Postgres for Orders | accepted | 2026-04-10 |
| 0002 | Outbox pattern for event publishing | accepted | 2026-04-10 |
Append new entries; don't reorder.
An ADR's job is to make the decision reproducible — a reader a year later should be able to walk the same reasoning. If they can't, the ADR failed. Assume the reader is smart but new to this specific problem:
|File|Covers|
|---|---|
|Data-modeling skill references, when bundled|Data conventions — ADRs should reference deviations from these|
|API-design skill references, when bundled|API conventions — ADRs should reference deviations from these|
|Architecture skill references, when bundled|Infrastructure conventions — ADRs should reference deviations from these|
|references/madr-template.md|The raw template to copy|
|references/examples.md|Two complete example ADRs (outbox pattern, data store choice)|
tools
Creates, audits, and updates public open-source repository documentation, including README files, CONTRIBUTING guides, SECURITY and SUPPORT docs, project badges, quickstarts, usage guidance, community links, and contributor onboarding. Use when maintaining docs for public GitHub projects, libraries, CLIs, apps, or reusable packages, especially when the user says "update this README", "write CONTRIBUTING.md", "make these docs open-source ready", or "improve the public project docs".
development
Creates, audits, and updates private or closed-source project documentation, including internal README hubs, codebase navigation guides, ownership links, Linear initiative links, onboarding notes, runbooks, and contribution guidance for teams. Use when maintaining docs for private repositories, internal apps, services, infrastructure, or company projects, especially when the user says "make this README an internal hub", "document how to navigate this repo", "add Linear links to the docs", or "write private project documentation".
development
Creates, updates, estimates, and tidies Linear issues using Luca's issue-shaping rules. Use when the user asks to create a Linear issue, write ticket-ready issue text, refine an existing issue, add acceptance criteria, set issue relationships, estimate points, audit issue hygiene, tidy a Linear project, find duplicates, fix stale blockers, or normalize labels, milestones, priorities, and issue state.
testing
Keeps an existing Linear project tidy after planning and during execution. Use when the user asks to "tidy Linear", "clean up the project", "audit issues", "find duplicates", "check stale blockers", "fix project drift", or run periodic Linear housekeeping on a project, initiative, or milestone set. Use when planning is underway or execution has started and relationships, labels, priorities, documents, and issue states need coherence without changing product scope.