Skip to content
Development
Skill

/architectural-decision-record

Create, extract, or convert an ADR (architectural decision record) using the ADR template. Use when creating new ADRs, extracting an ADR from existing documentation, converting a document into an ADR, recording an architecture or design decision, or updating the status of an

From plugin
han
35047 skills31 agents

Claude Code

$ npx -y skills add testdouble/han --skill architectural-decision-record --agent claude-code

SKILL.md

architectural-decision-record.SKILL.md
name: architectural-decision-record
description: >
  Create, extract, or convert an ADR (architectural decision record) using the ADR template. Use when creating new ADRs,
  extracting an ADR from existing documentation, converting a document into an ADR, recording an architecture or design
  decision, or updating the status of an existing ADR. Does not create or update enforceable coding standards or
  conventions — use coding-standard for that. Does not write feature or system documentation — use project-documentation
  instead.
argument-hint: "[topic-or-title or document-path]"
allowed-tools:
  Read, Write, Edit, Glob, Grep, Agent, Bash(mkdir *), Bash(find *),
  Bash(bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh")

Create ADR

Operating Principles

  • **YAGNI applies to ADRs themselves.** Apply the evidence-based YAGNI rule from

[../../references/yagni-rule.md](../../references/yagni-rule.md). An ADR is worth recording only when there is a concrete forcing function today — a real decision the team is actively making, an existing code path or architectural choice that will be locked in by this record, an applicable regulation, a customer commitment, or a documented incident that drove the choice. ADRs about decisions that don't have to be made yet, "for future flexibility", "best practice says we should pick X", or symmetry with other ADRs ("we have one for auth, so we should have one for billing") are YAGNI candidates and the ADR should not be written. When proposed, recommend deferral with the trigger that would justify writing the ADR (a real decision arising, a real incident, a real regulation taking effect). The user always wins; the rule's job is to make the cost of writing speculative architectural records visible — every ADR is a future-reader's load and a pattern future agents will treat as committed.

  • **The companion evidence rule applies to the ADR's supporting evidence.** Apply the evidence rule from

[../../references/evidence-rule.md](../../references/evidence-rule.md) to the citations that justify the ADR's decision and rejected alternatives. Name the trust class of each citation (codebase, web, provided); mark single-source web claims that drive the chosen option; and when no evidence at any tier supports a claimed trade-off, label it rather than presenting it as a weak preference.

  • **The readability rule shapes the ADR's prose.** Source the standard by invoking

`han-communication:readability-guidance` and apply it as you write the ADR. Hold its default audience frame: a capable reader who did not make this decision and lacks your context. The frame governs how each section reads, never whether a required technical fact appears.

Project Context

  • CLAUDE.md: !`find . -maxdepth 1 -name "CLAUDE.md" -type f`
  • project-discovery.md: !`find . -maxdepth 3 -name "project-discovery.md" -type f`
  • personal config directory: !`bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh" 2>/dev/null || echo "$HOME/.claude"`
  • project .han/config.md: !`cat .han/config.md 2>/dev/null || echo ""`

As your first action, use the Read tool on `.han/config.md` inside the `personal config directory` path above. A read that returns no file is no personal configuration: continue silently. When that file or the `project .han/config.md` probe supplies content, apply it per [config-rule.md](../../references/config-rule.md), which governs precedence between the two files, relative-path resolution, and what to do with a file that reads but cannot be used.

Step 1: Determine Mode

Determine which mode to operate in based on the user's request:

| Mode | When | Initial Status | Then | | ------------------- | -------------------------------------------------------------------- | -------------- | ------------------------------- | | Creating new | Building an ADR from scratch for a new or recent decision | `proposed` | → Step 2 | | Converting existing | User provides an existing document to convert into an ADR | `accepted` | → Step 2 | | Updating existing | Modifying an existing ADR (status change, superseding, adding notes) | — | Read the existing ADR, → Step 3 |

Step 2: Discover Project Structure

1. **Retrieve project config:** Resolve project config: read CLAUDE.md's `## Project Discovery` section for docs and ADR directories; fall back to project-discovery.md; fall back to Glob defaults (`docs/`, `docs/adr/`). Continue without any keys that remain unfound.

2. **Determine the ADR directory:** Use the ADR directory if found; otherwise use `{docs-dir}/adr/` if a docs directory was found; otherwise use `docs/adr/`. Run `mkdir -p` on the resolved directory to ensure it exists.

3. **Enumerate existing ADRs:** Use Glob to find existing `.md` files in the ADR directory.

4. **Check existing ADR format:** If existing ADRs were found, read one to understand the project's format. If it differs from [template.md](./references/template.md), ask the user whether to match the existing format or use this skill's template.

5. **Discover the filename hierarchy taxonomy:** ADRs are organized by a one- or two-level hierarchy encoded in the filename so related decisions sort together in a directory listing. Discover the taxonomy that applies to _this_ project — never hardcode it.

  • **From existing filenames:** If existing ADRs were enumerated, parse their filenames to extract the leading

hierarchy segments already in use (e.g., `auth-session-storage.md` → top-level `auth`; `auth-tokens-rotation.md` → top-level `auth`, second-level `tokens`). Build a list of top-level prefixes and known second-level prefixes per top-level.

  • **From project context:** Read CLAUDE.md and project-discovery.md (paths from project contex
Read more
@testdouble
Ships withhan

Han is a suite of AI skills and agents for solo (or small-team) product engineers.

35047 skills31 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
350
Star history of testdouble/han on GitHub, a chart by star-history.com

Other skills on han.

han-release

han-release

Cut a Han release: update CHANGELOG.md with the changes since the last release, bump and tag every plugin that changed as…

@testdouble@testdoubleInstall Skill
han-update-documentation

han-update-documentati…

Update Han plugin documentation so every skill, agent, guidance doc, index, and cross-reference is current and accurate. On a…

@testdouble@testdoubleInstall Skill
code-overview-to-confluence

code-overview-to-confl…

Produces a progressive-disclosure overview of unfamiliar code or a pull request's changes with code-overview and publishes the…

@testdouble@testdoubleInstall Skill
investigate-to-confluence

investigate-to-conflue…

Runs an evidence-based investigation of a bug, failure, or unexpected behavior with investigate and publishes the resulting…

@testdouble@testdoubleInstall Skill
markdown-to-confluence

markdown-to-confluence

Publishes a local Markdown file to a user-specified Confluence location, creating a new page or updating an existing one through…

@testdouble@testdoubleInstall Skill
plan-a-feature-to-confluence

plan-a-feature-to-conf…

Builds a feature specification from scratch with plan-a-feature and publishes it to a user-specified Confluence location, posting…

@testdouble@testdoubleInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about architectural-decision-record.

Which coding agents can use architectural-decision-record?
architectural-decision-record installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.