Adr
Use when the user knows what they want built and says "/adr", "write an ADR for X", "decide and build X", or "ADR-driven". Turns an intent into a grounded, cited, build-ready ADR at docs/adr/YYYY-MM-DD-<slug>.md — load-bearing decisions surfaced to the human — then hands off to the subagent-driven-development loop. For exploratory "not sure what I want yet" work use brainstorming first; for visual planning use visual-plan.From its SKILL.md
npx -y skills add jasonm4130/claude-skills --skill adrAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 2 commands, including `P="$HOME/.claude/plugins/cache/jasonm4130-claude-skills/subagent-driven-development/0.7.0/workflows/sdd.mjs"` and 1 more.
SKILL.md
6.5 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
ADR-Driven Development (front-end for adr → sdd)
Turn an intent into one grounded, cited, build-ready ADR, then hand it to the
deterministic subagent-driven-development (SDD) loop. This collapses
brainstorm → spec → writing-plans → sdd into adr → sdd for "I know what I
want, build it" work.
The arc:
intent → GROUND → ADR (you approve) → SDD loop → you ratify
Stay thin. This skill is a four-phase orchestrator — prose plus the two
embedded blocks below. The determinism lives in sdd.mjs, not here. One ADR doc,
not a multi-file apparatus. For exploratory "not sure what I want yet" work use
brainstorming first; for visual planning/recaps use visual-plan (which keeps
the visual niche — adr carries its own build-oriented template).
Phase 1 — Ground (scaled)
Read the real code and current external practice the change touches.
Default inline; escalate to a deep-dive fan-out only when the change is novel,
cross-cutting, or the user asks — a deep-dive on a one-line change is the
ceremony to avoid.
- State grounding: LSP (symbols/types/refs),
githistory, anExploreagent for breadth. - Research grounding:
context7for library docs, the cloudflare MCP for CF, adeep-divefan-out for novel/cross-cutting work or on request — current external knowledge, not ~1-year-stale training. - Record which mode was used (inline vs deep-dive fan-out) in the ADR.
Output: a grounding brief — every claim already cited — that feeds the ADR.
Phase 2 — Author the ADR
Write docs/adr/YYYY-MM-DD-<slug>.md (dated, not numbered; create docs/adr/ if
absent) using the template below.
- Citation rule (hard): a codebase claim cites a file/symbol; an external claim cites a dated source; an ungrounded claim is excluded from the ADR. This makes "not stale training" auditable.
- Success criteria must be checkable. Phrase each so the loop can verify it —
a test that must pass, a CI signal, a concrete assertion — and mark each
oracle-backed or
[checker](checker-agent-evaluable, only when no oracle exists). This block is the loop's done-oracle. - Decomposition is thin
### Task Nsubsections, placed LAST sotask-briefextracts each cleanly —{ n, title, tier, deps }-shaped, not pasted task prose.
ADR template (embed verbatim; Decomposition LAST)
# <Title>
**Status:** Proposed | Accepted | Superseded **Date:** YYYY-MM-DD
## Context <!-- grounded; every claim cites a file/symbol or dated source -->
## Decisions <!-- each load-bearing decision: options + the choice; these bind every task as global constraints -->
## Success criteria <!-- CHECKABLE; each marked oracle-backed or [checker]; this is the loop's done-oracle -->
## Consequences <!-- incl. hard-to-reverse bets / risks -->
## Grounding sources <!-- files/symbols read + external sources WITH dates -->
## Decomposition <!-- LAST section; thin `### Task N` subsections so task-brief extracts each -->
### Task 1: <title>
<2–4 lines: what to build, which files, deps, tier hint>
### Task 2: <title>
…
Phase 3 — Tiered decision gate (human-in-the-loop)
- Always-surface (blocking) set — new dependency · public-API change · schema/data-model change · architecture-shaping choice. Present each as an explicit choice the human picks before anything builds.
- Reversible decisions: record as "assuming X — override if wrong" defaults — non-blocking.
- Hard gate: nothing implements until the human approves the ADR (its decisions + criteria + decomposition).
Phase 4 — Handoff
On approval, resolve sdd.mjs by literal path — pinned to the version of
subagent-driven-development, not this plugin's own version — and invoke
the Workflow with the ADR.
Loud-fail guard: if the Decomposition has no parseable ### Task N entries,
stop and fix the ADR — do not hand off (mirrors task-brief's "task N not
found" guard). Nothing builds from an ADR the loop can't read.
Resolve the loop and invoke it:
P="$HOME/.claude/plugins/cache/jasonm4130-claude-skills/subagent-driven-development/0.7.0/workflows/sdd.mjs"
[ -f "$P" ] && echo "$P" || echo "MISSING: subagent-driven-development 0.7.0 is not installed at $P — run /plugin marketplace update jasonm4130-claude-skills, or /plugin install subagent-driven-development@jasonm4130-claude-skills if it was never installed"
If it reports MISSING, stop and tell the user to update the plugin. Do not
glob the cache for another version: superseded and rolled-back versions stay on
disk, so picking the highest cached one silently runs a loop whose args
contract this skill no longer matches.
Workflow({ scriptPath: "<resolved sdd.mjs>", args: {
adrPath: "<abs path to docs/adr/YYYY-MM-DD-<slug>.md>",
workdir: "<worktree root>",
pluginDir: "<plugin root containing workflows/ prompts/ scripts/>",
globalConstraints: "<the ADR Decisions, verbatim>",
successCriteria: "<the ADR Success criteria block, verbatim>",
mergeBase: "<git merge-base main HEAD>",
tasks: [ { n: 1, title: "...", tier: "sonnet", deps: [] }, ... ], // from the Decomposition
limits: { fixRounds: 2, escalateAttempts: 2 }
}})
pluginDir is the directory containing workflows/, prompts/, and
scripts/. The loop runs per-task implement → review → fix (model-tiered,
ponytail-lensed) — Decomposition tasks whose deps allow it run as parallel
waves with a per-wave merge gate, so mark deps honestly there — then judges
the whole branch against the ADR's Success criteria (oracle gates + a checker
agent). It converges only when oracles pass and the checker is satisfied;
merge stays human-gated in your session — the loop never merges.
Scope guard
The loop is for bounded, test-covered work. Large ambiguous brownfield → break into smaller ADRs or run manually; don't force it through one ADR.
See also
- Design spec:
docs/superpowers/specs/2026-06-27-adr-driven-development-design.md - The loop it drives:
plugins/subagent-driven-development/
What ships with it: 1 file
1.4 KB alongside SKILL.md, 1 of them executable
- skill.test.mjsruns1.4 KB