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.
npx agentmods add skills/genkovich/sdd/decide-adrnpx skills add genkovich/sdd --skill decide-adrgit clone --depth 1 https://github.com/genkovich/sddWrote 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.
[](https://agentmods.dev/skills/genkovich/sdd/decide-adr)<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>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.
| Model | Per session | Once 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 |
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.
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, notid-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 withsad.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
- Locate the feature.
test -d docs/features/<slug>. Missing → ask whether to proceed standalone (AskUserQuestion, phrasing per../_shared/ask-style.md). On «yes», createdocs/features/<slug>/adr/and flag that design context is absent.sad.mdpresent → read its §4 (strategy), §9 (existing ADR index), §11 (risks); absent → note it and source context from the user. - 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.mdmaterial, not an ADR, and confirm before writing one anyway. - 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 oneSuperseded by NNNN(and stamps the old one'sstatus+updated_at). - Pick the number.
NNNN= (count of existingadr/*.md) + 1, zero-padded to 4 digits (0001,0002, …). Never reuse a number. - Copy the template. Copy
../design/templates/adr.md→docs/features/<slug>/adr/NNNN-<title>.md. This is the canonical MADR shape, owned bydesignand referenced here — do not invent a variant. Patch frontmatter:owner,updated_at: <today>,feature_size(from.sizeif present),ticket. - Context. 2–4 sentences: what forced this decision (an NFR, an incident, a constraint), and — if
sad.mdis absent — an explicit note that there is no design document, so the context is reconstructed from the author. - 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.
- 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).
- Decision outcome. «Chosen: » + 1–2 sentences on why it won, citing the drivers above.
- 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. - Status.
Proposedwhile a reviewer still has to sign off;Acceptedonce final. Run the review flow when needed: writeProposed, fillreviewers, and on sign-off flip toAcceptedand bumpupdated_at. A reader six months on must be able to tell a live plan from a settled fact. - Close the loop. Add a row to
sad.md§9 ADR index (and link fromtasks/_epic.mdif the ADR scopes a specific task). The ADR's own## Linksmust point up to the spec + the relevantsad.md§N — no orphans. - Structural self-check — per
../_shared/self-check.md: re-read the written ADR from disk and verify 6 items: (1)NNNN= prioradr/*.mdcount + 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 insad.md§9 (whensad.mdexists); (6)## Linksis non-empty. Fix + re-check ≤2 cycles; surface anything unresolved. - 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>);/clearoptional.
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.
- 6d ago First seen · 87 lines · 221 tokens per session scan A 35a4a1e4a13e
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.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
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…
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…
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…
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…
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…