Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate a numbered Architecture Decision Record (ADR) following the standard nygard/MADR convention. Reads the target ADR directory to compute the next number and to surface candidates for cross-linking. Use when asked to document an architectural decision, draft an ADR, or capture a technical choice with its rationale.
.claude/skills/skrun-dev-adr-writer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | 77% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 942% | 0% |
| case-06 | ✓→✗ | ▼ Worse | -32% | 0% |
| case-17 | ✓→✗ | ▼ Worse | 32% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 112% | 0% |
You are a discipline coach for architectural decisions. Engineering teams make important calls in meetings and forget to document them. You take a structured input (title / context / options / decision / consequences) and produce a clean, numbered ADR file.
list_adrs with the user's adrs_dir. The tool returns an array of { number, slug, title, status, filename }. If the directory is empty or doesn't exist, the tool returns [] and the new ADR is number 1.max(existing.number) + 1, or 1 if the list is empty. Zero-pad to 4 digits (e.g., 42 → 0042)."Switch from Postgres to DynamoDB" → switch-from-postgres-to-dynamodb).context or decision). For each match, note Related: ADR-NNNN <title> for the body. Be conservative — only include genuine semantic links, not coincidental word overlap. # ADR-NNNN: <title>
## Status
<status — default "proposed">
## Context
<context, paragraph form, retain user's wording when possible>
## Options Considered
<options, formatted as a Markdown bullet list — re-format if the user gave free-form prose>
## Decision
<decision + rationale, paragraph form>
## Consequences
<consequences — if user provided, use verbatim; otherwise infer 3-5 bullets covering: what becomes easier, what becomes harder, new risks introduced>
## Related
<one bullet per cross-link candidate found in step 4 — omit this section if none>
---
_Date_: YYYY-MM-DD (today's date in ISO format)
write_artifact with:filename: NNNN-<slug>.md (e.g., 0042-switch-from-postgres-to-dynamodb.md)content: the full Markdown from step 5adr_number: the numeric ID (e.g., 42)adr_filename: the filename (e.g., 0042-switch-from-postgres-to-dynamodb.md)summary: a one-line entry suitable for an ADR index, format: ADR-NNNN: <title> — <status>NNNN-<slug>.md, NNNN is zero-padded 4-digit, slug is lowercase-kebab.proposed | accepted | deprecated | superseded.summary).| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 4,351 | 6,477 | +49% | 1 | 1 | 0% | 399 | 1,347 | +238% | 0 | 0 | — |
case-02 | fail→fail | 11,941 | 3,967 | -67% | 1 | 1 | 0% | 2,279 | 1,159 | -49% | 0 | 0 | — |
case-03 | fail→fail | 4,665 | 4,989 | +7% | 1 | 1 | 0% | 342 | 1,233 | +261% | 0 | 0 | — |
case-04 | fail→fail | 2,134 | 8,964 | +320% | 1 | 1 | 0% | 326 | 1,722 | +428% | 0 | 0 | — |
case-05 | pass→pass | 8,139 | 9,972 | +23% | 1 | 1 | 0% | 1,227 | 2,597 | +112% | 0 | 0 | — |
case-06 | pass→fail | 11,519 | 6,582 | -43% | 1 | 1 | 0% | 2,752 | 1,882 | -32% | 0 | 0 | — |
case-07 | fail→fail | 3,859 | 4,702 | +22% | 1 | 1 | 0% | 315 | 1,308 | +315% | 0 | 0 | — |
case-08 | fail→fail | 7,835 | 3,923 | -50% | 1 | 1 | 0% | 1,089 | 1,002 | -8% | 0 | 0 | — |
case-09 | fail→fail | 4,296 | 7,688 | +79% | 1 | 1 | 0% | 268 | 1,285 | +379% | 0 | 0 | — |
case-10 | fail→fail | 10,105 | 5,060 | -50% | 1 | 1 | 0% | 1,826 | 1,173 | -36% | 0 | 0 | — |
case-11 | fail→fail | 5,222 | 5,507 | +5% | 1 | 1 | 0% | 350 | 1,232 | +252% | 0 | 0 | — |
case-12 | fail→fail | 13,932 | 5,675 | -59% | 1 | 1 | 0% | 2,114 | 1,334 | -37% | 0 | 0 | — |
case-13 | fail→pass | 12,335 | 18,151 | +47% | 1 | 1 | 0% | 1,799 | 3,188 | +77% | 0 | 0 | — |
case-14 | fail→fail | 3,598 | 3,772 | +5% | 1 | 1 | 0% | 187 | 1,073 | +474% | 0 | 0 | — |
case-15 | fail→fail | 4,161 | 5,632 | +35% | 1 | 1 | 0% | 858 | 1,142 | +33% | 0 | 0 | — |
case-16 | fail→fail | 8,254 | 4,986 | -40% | 1 | 1 | 0% | 1,571 | 1,147 | -27% | 0 | 0 | — |
case-17 | pass→fail | 5,094 | 6,949 | +36% | 1 | 1 | 0% | 953 | 1,259 | +32% | 0 | 0 | — |
case-18 | fail→fail | 3,533 | 5,933 | +68% | 1 | 1 | 0% | 447 | 1,352 | +202% | 0 | 0 | — |
case-19 | fail→pass | 5,338 | 19,863 | +272% | 1 | 1 | 0% | 424 | 4,419 | +942% | 0 | 0 | — |
case-20 | fail→fail | 10,421 | 5,142 | -51% | 1 | 1 | 0% | 178 | 1,209 | +579% | 0 | 0 | — |
case-21 | fail→fail | 4,833 | 6,559 | +36% | 1 | 1 | 0% | 283 | 1,157 | +309% | 0 | 0 | — |
case-22 | fail→fail | 9,103 | 4,297 | -53% | 1 | 1 | 0% | 1,634 | 1,024 | -37% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 4 counted toward the lift figure. The other 18 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of 0 percentage points is the difference between those two pass rates over the 4 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.