decide-adr

decide-adr is a skill for Claude Code, Codex from genkovich/sdd. It costs 221 tokens per session (2,781 once invoked), scanned A, original, MIT.

A skill for recording an architecture decision after it was made elsewhere, such as in code, a chat, or a whiteboard. It writes the decision as a MADR ADR, a standard document describing the context, choice, and consequences.

In plain words
What is it for?
Use it to document a specific past decision, or to submit a proposed decision for review and acceptance by the appropriate technical reviewers.
Why use it?
It fills the documentation gap when an important design choice was made without being recorded during the normal design process.

Skill for Claude CodeCodex

Part of the sdd plugin — 22 skills, 10 agents shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/genkovich/sdd/decide-adr
Any agent
npx skills add genkovich/sdd --skill decide-adr
Clone the repo
git clone --depth 1 https://github.com/genkovich/sdd

Made for: Claude Code, Codex.

Or install sdd, the plugin that ships this one along with the rest of its 22 skills, 10 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for decide-adr

README.md
[![agentmods](https://agentmods.dev/badge/skills/genkovich/sdd/decide-adr.svg)](https://agentmods.dev/skills/genkovich/sdd/decide-adr)
Your own site
<a href="https://agentmods.dev/skills/genkovich/sdd/decide-adr"><img src="https://agentmods.dev/badge/skills/genkovich/sdd/decide-adr.svg" alt="Measured on agentmods" height="20"></a>
Per session 221 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,781 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00221 $0.02781
Opus 5 $0.00111 $0.01391
Sonnet 5 $0.00044 $0.00556
Haiku 4.5 $0.00022 $0.00278

Measured 6d ago against content hash 35a4a1e4a13e, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-05, from the pricing page.

Security

Grade A, and why

decide-adr scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/decide-adr/SKILL.md · 87 lines

How it starts

The opening of the file, as written. The whole thing — 87 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Skill: decide-adr

The post-hoc / asynchronous ADR path (pipeline stage 8a). design spawns ADRs synchronously and Accepted while you walk it Socratically; decide-adr records a decision that missed that pass — already in code, agreed in a chat, sketched on a whiteboard, or flagged by a tasks/review gate as a contract with no ADR behind it. It can also run a Proposed → Accepted review flow when the decision still needs a reviewer's sign-off. One file = one decision; it reuses design's MADR template, so there is no second ADR format here.

It is a recording utility, not a Socratic design stage — it does not run the shared Socratic loop or critic. The two shared dependencies are question phrasing and the worthiness gate: → ../_shared/ask-style.md · ../design/references/blast-radius.md

ADR prose (context / drivers / consequences) follows artifact_language — the MADR headings and Status: values (Proposed / Accepted / …) stay English → ../_shared/artifact-language.md.

Owner

Decision author (usually the Architect or Tech Lead). A reviewer (Tech Lead, plus Security when relevant) signs off the Proposed → Accepted transition.

Inputs

  • <slug> — the feature slug, same as every earlier stage.
  • <title> — kebab-case, describes the decision, not the problem (time-sortable-ids, not id-strategy).
  • The decision itself + its alternatives — pulled from sad.md §4 Solution strategy / §9 ADR index / §11 Risks, or supplied by the user.
  • Input gate (soft). Expects docs/features/<slug>/ to exist, ideally with sad.md (decide-adr reads its §4/§9/§11 for context and drivers). If the decision is genuinely standalone — no feature folder yet — allow it, but note the missing design context in the ADR's Context section and warn the user, rather than refusing.

Protocol

  1. Locate the feature. test -d docs/features/<slug>. Missing → ask whether to proceed standalone (AskUserQuestion, phrasing per ../_shared/ask-style.md). On «yes», create docs/features/<slug>/adr/ and flag that design context is absent. sad.md present → read its §4 (strategy), §9 (existing ADR index), §11 (risks); absent → note it and source context from the user.
  2. Worthiness check. Score the decision against the blast-radius gate../design/references/blast-radius.md (irreversible / multi-module / has legitimate alternatives). 2-of-3 → proceed. Below the bar → tell the user it's likely inline-in-sad.md material, not an ADR, and confirm before writing one anyway.
  3. Dedup. ls docs/features/<slug>/adr/*.md 2>/dev/null. An Accepted ADR on the same topic exists → don't duplicate: propose either editing it or a new ADR that marks the old one Superseded by NNNN (and stamps the old one's status + updated_at).
  4. Pick the number. NNNN = (count of existing adr/*.md) + 1, zero-padded to 4 digits (0001, 0002, …). Never reuse a number.
  5. Copy the template. Copy ../design/templates/adr.mddocs/features/<slug>/adr/NNNN-<title>.md. This is the canonical MADR shape, owned by design and referenced here — do not invent a variant. Patch frontmatter: owner, updated_at: <today>, feature_size (from .size if present), ticket.
  6. Context. 2–4 sentences: what forced this decision (an NFR, an incident, a constraint), and — if sad.md is absent — an explicit note that there is no design document, so the context is reconstructed from the author.
  7. Decision drivers. Bullets — the quality goals / constraints that pushed the choice, each traceable to a real source (spec §6 NFR, sad.md §2 Constraints, a §1 top-3 quality goal). Don't invent drivers; they filter out pet decisions.
  8. Considered options. List all serious options (≥2 — one option is a declaration, not a decision), one line each with its trade-off. No strawman (an option an existing constraint already rules out).
  9. Decision outcome. «Chosen: » + 1–2 sentences on why it won, citing the drivers above.
  10. Consequences. Positive and Negative and Neutral — cons included, or it's rationalisation, not a record. Name what changes in the codebase, ops, monitoring, onboarding. <!-- TBD --> only where a number honestly needs a spike.
  11. Status. Proposed while a reviewer still has to sign off; Accepted once final. Run the review flow when needed: write Proposed, fill reviewers, and on sign-off flip to Accepted and bump updated_at. A reader six months on must be able to tell a live plan from a settled fact.
  12. Close the loop. Add a row to sad.md §9 ADR index (and link from tasks/_epic.md if the ADR scopes a specific task). The ADR's own ## Links must point up to the spec + the relevant sad.md §N — no orphans.
  13. Structural self-check — per ../_shared/self-check.md: re-read the written ADR from disk and verify 6 items: (1) NNNN = prior adr/*.md count + 1 and is unique in the folder; (2) ≥2 options under Considered options; (3) Consequences carries at least one Negative; (4) status ∈ {Proposed, Accepted}; (5) a row for this ADR exists in sad.md §9 (when sad.md exists); (6) ## Links is non-empty. Fix + re-check ≤2 cycles; surface anything unresolved.
  14. Propose commit + handoff. adr: <slug> NNNN <title>. Then emit the stage-handoff block per ../_shared/handoff.md (utility variant) — What I did (incl. «self-check: 6/6 pass») + Review (adr/NNNN-<title>.md) + Run next: resume the gate that needed it (/sdd:tasks <slug> or /sdd:plan-tests <slug>); /clear optional.

Read the full file on GitHub · 87 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 6d ago First seen · 87 lines · 221 tokens per session scan A 35a4a1e4a13e

Subscribe to this mod's changes

decide-adr is a skill published in the GitHub repository genkovich/sdd (119 stars, last pushed today), licensed MIT. It adds 221 tokens to every session and 2,781 once invoked, about $0.0011 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

local-ai-agents

Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…

microsoft/ai-agents-for-beginners · 200 tokens

next-cache-components-adoption

Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…

vercel/next.js · 95 tokens

next-cache-components-optimizer

Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…

vercel/next.js · 170 tokens

next-partial-prefetching-adoption

Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…

vercel/next.js · 103 tokens

chronicle

Analyze Copilot session history for standup reports, usage tips, session search, and session reindexing. Use when the user asks for a standup, daily summary, usage tips, workflow recommendations, wants to search or find past sessions by keyword/file/PR, wants to reindex their session store, or asks about deleting…

microsoft/vscode · 72 tokens