Skip to main content
skill CX Codex

architecture-decision — Claude Code skill: write ADRs

Walks the agent through drafting an ADR: context, alternatives weighed, consequences. Useful when a technical decision needs a written record.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add Donchitos/Claude-Code-Game-Studios --skill architecture-decision -a claude-code
Open on GitHub

What architecture-decision does

The skill runs as a sequence of phases. It first resolves config through yaml-helper.sh, pulling review_mode, automation, workflow, docs.density and team.size. Then it loads engine context, scans docs/architecture/ and picks the next free ADR number. Alternatives get discussed with you before anything is written.

Arguments pick the mode. retrofit <path> reconstructs a decision that already shipped in code; accept <ADR-id> moves an ADR out of Proposed. The --review full|lean|solo flag overrides review_mode from config. Run it with no argument and it asks for a short title first.

docs.density controls how much prose lands in the document. terse keeps decision and alternatives as bullets with one line of rationale, balanced gives a paragraph per section, thorough writes out trade-offs in full. The Engine Compatibility, ADR Dependencies and GDD Requirements tables stay intact at every density. One thing to plan around: the skill tells you to run /architecture-review in a fresh session, since the reviewer has to be independent of whoever authored the ADR. Stories blocked on this decision stay blocked until you run accept.

What it helps with

  • record an engine or system choice as an ADR
  • reconstruct a past decision from existing code
  • compare alternatives and note what each one costs
  • move an ADR from Proposed to accepted
  • see which stories are waiting on a decision

Example prompts for the agent

  • Document the decision on our event system architecture
  • Retrofit an ADR from the existing code: retrofit src/core
  • Accept ADR-0007: accept ADR-0007

How to install architecture-decision

1Skills CLI (Vercel)

npx skills add Donchitos/Claude-Code-Game-Studios --skill architecture-decision -a claude-code

2Manually: put the files in place

~/.claude/skills/architecture-decision/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/architecture-decision/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about architecture-decision

How do I install architecture-decision in Claude Code?

Run npx skills add Donchitos/Claude-Code-Game-Studios --skill architecture-decision -a claude-code. The skill lands at ~/.claude/skills/architecture-decision/SKILL.md.

What does architecture-decision do?

It guides you through writing an ADR: gathering context, weighing alternatives, recording consequences. It also handles retrofitting a decision from code and accepting finished ADRs.

Why does the review have to run in a separate session?

The skill states that /architecture-review needs a reviewer independent of the authoring context. Running it in the same session would invalidate the assessment, so start a fresh Claude session.

Source text

SKILL.md · MIT
---
name: architecture-decision
description: "Create an ADR documenting a technical decision: context, alternatives considered, consequences."
argument-hint: "[title | retrofit <path> | accept <ADR-id>] [--review full|lean|solo]"
user-invocable: true
allowed-tools: Read, Glob, Grep, Write, Edit, Agent, AskUserQuestion, Bash(wc -c *), Bash(bash "*/.claude/skills/architecture-decision/../../hooks/yaml-helper.sh" resolve_config *), Bash(bash .claude/scripts/registry.sh *)
model: sonnet
---

!`bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys review_mode,automation,workflow,docs.density,team.size`

Resolved above — use as-is; `--review` overrides `review_mode`. No block →
defaults in `.claude/docs/config-resolution.md`.

# Architecture Decision

When this skill is invoked:

## 0. Parse Arguments — Detect Retrofit / Acceptance Mode

See `.claude/docs/director-gates.md` for the full check pattern. Individual gate definitions live in `.claude/docs/director-gates/[gate-id].md` — the spawned agent reads its own gate file; do not read it in the parent session.

Every `AskUserQuestion` call follows `.claude/docs/automation-modes.md`
(collaborative asks always · guided major-only · autonomous logs and proceeds;
`automation_always_ask` categories always prompt).

**`team.size`**: which agents validate this ADR (orthogonal to review_mode/workflow).
- **`individual`** (default): `technical-director` (TD-ADR) + the engine-specialist.
- **`small`** and **`studio`**: the same two. This skill spawns no engine
  sub-specialist and no adversarial reviewer at any size.

**`docs.density`** — it controls the *depth* of the ADR's prose sections, not
which sections the skeleton emits (that is fixed). `modes.rigor` sets it
alongside `workflow`; set `docs.density` explicitly to vary ADR verbosity alone:
`terse` (the default, via `rigor: minimal`) = decision + alternatives as bullets, one line of rationale each;
`balanced` = paragraph per section with light rationale (`rigor: standard`); `thorough` =
full prose with trade-offs and worked rationale in Decision, Alternatives, and
Consequences. Apply it to the prose sections; the Engine Compatibility, ADR
Dependencies, and GDD Requirements tables are structural and stay whole at every
density.

**`workflow`** (see `.claude/docs/workflow-modes.md`):
- `full` — all ADRs on the required ADR list must be completed.
- `standard` — critical ADRs only (Foundation-layer systems).
- `minimal` — not required. Can still be run voluntarily.

**If the argument starts with `retrofit` followed by a file path**

**Read `references/0-retrofit.md` now and follow it** — this phase's steps are in that file, not here. Read it again if the conversation was compacted or resumed during this phase.

**If the argument starts with `accept` followed by an ADR id**

**Read `references/0-accept.md` now and follow it** — this phase's steps are in that file, not here. Read it again if the conversation was compacted or resumed during this phase.

If NOT in retrofit or acceptance mode, proceed to Step 1 below (normal ADR authoring).

**No-argument guard**: If no argument was provided (title is empty), ask before
running Phase 0:

> "What technical decision are you documenting? Please provide a short title
> (e.g., `event-system-architecture`, `physics-engine-choice`)."

Use the user's response as the title, then proceed to Step 1.

---

## 1. Load Engine Context (ALWAYS FIRST)

**Read `references/1-engine-context.md` now and follow it** — this phase's steps are in that file, not here. Read it again if the conversation was compacted or resumed during this phase.

## 2. Determine the next ADR number

Scan `docs/architecture/` for existing ADRs to find the next number.

---

## 3. Gather context

**Read `references/3-gather-context.md` now and follow it** — this phase's steps are in that file, not here. Read it again if the conversation was compacted or resumed during this phase.

## 4. Guide the decision collaboratively

**Read `references/4-decide.md` now and follow it** — this phase's steps are in that file, not here. Read it again if the conversation was compacted or resumed during this phase.

## 5. Generate the ADR

**Read `references/5-generate.md` now and follow it** — this phase's steps are in that file, not here. Read it again if the conversation was compacted or resumed during this phase.

## 6. Closing Next Steps

After the ADR is written (and registry optionally updated), close with `AskUserQuestion`.

Before generating the widget:
1. Read the `## Required ADRs` section of `docs/architecture/architecture.md` (by section) and list `docs/architecture/adr-*.md`: a required ADR with no file is still unwritten. Without `architecture.md`, look for ADRs flagged in technical-preferences.md or systems-index.md as prerequisites
2. Check if all prerequisite ADRs are now written. If yes, include a "Start writing GDDs" option.
3. List ALL remaining priority ADRs as individual options — not just the next one or two.

Widget format:
```
ADR-[NNNN] written and registry updated. What would you like to do next?
[1] Write [next-priority-adr-name] — [brief description from prerequisites list]
[2] Write [another-priority-adr] — [brief description]  (include ALL remaining ones)
[N] Start writing GDDs — run `/design-system [first-undesigned-system]` (only show if all prerequisite ADRs are written)
[N+1] Stop here for this session
```

If there are no remaining priority ADRs and no undesigned GDD systems, offer only "Stop here" and suggest running `/architecture-review` in a fresh session.

**Always include this fixed notice in the closing output (do NOT omit it):**

> To validate ADR coverage against your GDDs, open a **fresh Claude Code session**
> and run `/architecture-review`.
>
> **Never run `/architecture-review` in the same session as `/architecture-decision`.**
> The reviewing agent must be independent of the authoring context to give an unbiased
> assessment. Running it here would invalidate the review.

**Do NOT unblock stories here.** This ADR is `Proposed` — Step 5 guarantees it,
and a story blocked *pending this decision* is still pending it. Unblocking on
authoring defeats the guard at the moment it becomes relevant: the pipeline
appears to flow while running on decisions nobody has accepted.

Instead, tell the user what is now waiting on acceptance:

> "ADR-NNNN is written and `Proposed`. [N] stories remain `Blocked` pending it.
> Run `/architecture-decision accept ADR-NNNN` when the decision is settled —
> that is what moves them to `Ready`."

List the blocked stories by path so the cost of leaving it Proposed is visible.
(Acceptance has consequences enforced across many skills and an authority
recorded in only a few, so the route between them must stay explicit.)

© Donchitos · MIT · Donchitos/Claude-Code-Game-Studios

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set72

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor