adr-new
# adr-new Creates a new Architecture Decision Record (ADR) file in `docs/adr/` with automatic numbering and updates the index. Use this skill when the team makes significant architectural choices to document the problem, chosen solution, and alternatives considered. ADRs provide lasting rationale for design decisions and prevent future confusion about why specific approaches were selected over others.
git clone --depth 1 https://github.com/Filip-Podstavec/claude-leverage /tmp/adr-new && cp -r /tmp/adr-new/skills/adr-new ~/.claude/skills/adr-newSKILL.md
# /adr-new
## What it does
Creates a new numbered ADR file in `docs/adr/` and adds an entry to the
index. ADRs are the lightweight memory of *why* the architecture looks
the way it does — without them, six months from now nobody (human or
agent) remembers why we chose A instead of B.
The convention is documented in
[`docs/adr/README.md`](../../docs/adr/README.md): MADR-flavored,
numbered, immutable status (proposed → accepted → deprecated /
superseded).
## Workflow
1. **Find target dir.** Default `docs/adr/` from the current repo root
(via `git rev-parse --show-toplevel`). If no `docs/adr/` exists,
ask the user: "create it now?". If yes, also copy
`templates/adr-template.md` if shipped (the plugin ships its own
template under `docs/adr/template.md` — useful as a reference even
when the target repo doesn't have one yet).
2. **Pick next number.** List existing `docs/adr/NNNN-*.md` files,
parse the leading number, take the max + 1. Pad to 4 digits.
3. **Get the title.**
- If `$ARGUMENTS` has a positional, use it as the title.
- If `--noninteractive`, fail if no title was given (we won't
hallucinate one).
- Otherwise, prompt the user.
- Convert to kebab-case for the filename:
`0042-replace-polling-with-webhooks.md`.
4. **Ask for context** (skip in `--noninteractive`):
- One-line summary of the problem.
- The chosen option (one sentence, stated as fact in present
tense).
- 1–3 alternatives considered (one line each).
- Whether to mark `status: proposed` (default) or `accepted` (if
the team already decided in conversation and just needs the
record).
5. **Generate the file** at `docs/adr/<NNNN>-<kebab-title>.md` using
the MADR template (the plugin ships
[`docs/adr/template.md`](../../docs/adr/template.md) for reference).
Substitute:
- `NNNN` → resolved number
- `Title` → user-provided title
- `YYYY-MM-DD` → today (`date +%Y-%m-%d`)
- `Status` → resolved value
- Context / Decision / Alternatives → user input or
`<TODO: fill in>` placeholders if user skipped them
6. **Update the index.** Append the new ADR to the bulleted list in
`docs/adr/README.md` (or create it if it doesn't exist). Preserve
the existing index style:
`- [NNNN — Title](NNNN-kebab.md)`
7. **Report.** Print the new file path and remind the user that ADRs
are immutable once `accepted` — future revisions are *new* ADRs
superseding the old one, not edits.
## Hard rules
- **Numbers are immutable.** Once shipped, an ADR's number never
changes. If you regenerate the file (because of typos in the title
before commit), keep the number.
- **Status is immutable once `accepted`.** Edits to an `accepted` ADR
should be limited to typos and link fixes. Substantive changes ship
as a new ADR that explicitly supersedes the old one
(`Status: superseded by NNNN`).
- **The index is the source of truth for "what ADRs exist."** Always
update it; never let it drift from the directory contents.
- **Never overwrite an existing ADR.** If the kebab-title collides
with an existing file, ask the user for a different title.
## Tunables
- `--status accepted` — start the ADR as `accepted` rather than
`proposed`. Use when the decision is already settled and you're just
recording it.
- `--noninteractive` — skip prompts; requires a title positional and
fills the context/decision/alternatives with `<TODO>` placeholders.
- `--dry-run` — print what would be written, write nothing.
## When to write an ADR (and when not to)
**Write an ADR for:**
- Architectural tradeoffs likely to be re-litigated (e.g., "no
embedding RAG", "AGENTS.md canonical, CLAUDE.md import").
- Decisions that depend on external constraints (a vendor, an open
issue, a benchmark result).
- Decisions where alternatives are plausible enough that a future
agent will propose them.
**Don't write an ADR for:**
- Implementation choices the code itself shows (variable names,
function structure).
- One-off tactical fixes.
- Things covered by an obvious convention (test naming, lint config).
If you're not sure: write it. Three sentences in `docs/adr/0042.md`
is cheap; re-arguing the same point six months later is expensive.
## What this skill does NOT do
- **Doesn't make the decision.** It records a decision you've already
made. If you don't yet know the decision, you want a `docs/specs/`
document (or `superpowers:brainstorming`), not an ADR.
- **Doesn't read the conversation context.** You tell it the
decision in your own words; the skill just structures the file.
- **Doesn't supersede or modify existing ADRs.** Modification is a
manual edit + new ADR with `Status: superseded by NNNN`.USE WHEN a test intermittently fails on unchanged code. Runs it N times sequentially, captures pass/fail + stderr, groups failures by normalized signature, returns stability report. Read-only — never modifies code or installs deps. For statistical signal across runs, not one-shot diagnosis.
USE BEFORE committing security-sensitive changes (auth, crypto, routes, templates, secrets). Audits current diff for OWASP-Top-10 patterns + deps typosquatting. Read-only. Returns Critical / Important / Nice schema with file:line. Model review — not a Semgrep/CodeQL replacement.
Diagnose a flaky test by running it N times. Delegates to flaky-test-isolator subagent — N runs, signature-grouped failures, stability report. Does NOT fix the test.
>
>
>
>
>