mcpField
A
architecture-decision-record

architecture-decision-record

github.com/validkeysDevelopment175 installsUpdated 20w ago
Repository

About architecture-decision-record

A skill that turns decisions in technical-requirements.yaml into standalone ADR files and an index. It is for teams documenting design choices for onboarding, audits, and later review.

Key features

  1. 01Extracts and selects architectural decisions
  2. 02Identifies possible alternatives
  3. 03Writes numbered ADR files
  4. 04Creates an index and gap analysis

Use cases

  1. 01Turning technical requirements into reviewable ADRs
  2. 02Explaining architecture choices to new team members
  3. 03Finding decision areas not covered by generated ADRs

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/validkeys/sherpy --skill architecture-decision-record

After installing, type/architecture-decision-recordin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
adr-document-spec.md
adr-index-spec.md
example-ADR-001.md
example-ADR-003.md
example-INDEX.md

Details

From the project README

Architecture Decision Record

Extracts key architectural decisions from technical-requirements.yaml and formalizes each one as a standalone ADR file. ADRs document why the system is built the way it is, not just what was chosen — making them essential for onboarding, audits, and revisiting trade-offs.

Prerequisites

  • {base_directory}/requirements/technical-requirements.yaml (output from /technical-requirements-interview)

Usage

/architecture-decision-record [base-directory]

If no directory is provided, auto-detect by looking for requirements/technical-requirements.yaml in the current directory.

If not found, prompt the user: "Where are your requirements documents located?"

Wait for the user to provide a path before proceeding. Store as base_directory.

Process

Step 1: Determine Base Directory and Load Technical Requirements

If no directory parameter was provided, check if requirements/technical-requirements.yaml exists in the current directory.

  • If found, use current directory as base_directory
  • If not found, prompt: "Where are your requirements documents located?" and wait for user response

Once base_directory is determined, read {base_directory}/requirements/technical-requirements.yaml and identify every decision point. Look in these sections:

  • architecture — patterns, frameworks, structural choices
  • technology_stack — language, runtime, major libraries, databases
  • data_model — storage engine choice, schema design decisions
  • api_design — REST vs GraphQL vs RPC, versioning strategy
  • security — auth mechanism, token strategy, encryption approach
  • testing — testing strategy, coverage targets, tooling
  • deployment — hosting, CI/CD pipeline, containerization
  • trade_offs and open_questions — explicitly flagged decisions

Collect each decision as a candidate ADR. A decision qualifies if:

  • It involves a meaningful choice between alternatives, OR
  • It has notable consequences for the system's future flexibility, OR
  • It was explicitly flagged as a trade-off or open question
Step 2: Identify Alternatives

For each candidate decision, reason about what the realistic alternatives were. Derive these from:

  • The trade_offs section of the technical requirements (if present)
  • Common alternatives for the chosen technology/pattern
  • Any "options considered" language in the requirements

If no alternatives are inferable, note "alternatives not documented" rather than fabricating them.

Step 3: Assign ADR IDs and Titles

Number ADRs sequentially starting at ADR-001. Titles should be brief and declarative:

  • Good: Use PostgreSQL as the primary data store
  • Bad: Database decision

Group related decisions logically (e.g., all auth decisions before all deployment decisions).

Step 4: Write ADR Files

Create the directory structure:

mkdir -p {base_directory}/architecture/adrs

Write one file per ADR: {base_directory}/architecture/adrs/ADR-NNN-kebab-case-title.md

Each file follows this format:

The ADR document includes: header (ADR-NNN: Title, Status, Date, Source), and four required sections: Context (problem description), Decision (the choice made), Alternatives Considered (table of options ruled out), and Consequences (Positive, Negative/Trade-offs, Risks).

See references/adr-document-spec.md for the complete ADR document specification with all sections and formatting rules.

See references/example-ADR-001.md and references/example-ADR-003.md for full examples.

Step 5: Write INDEX.md

Create {base_directory}/architecture/adrs/INDEX.md as a summary table:

The index includes a single table with columns: ID (link), Title, Status, Date.

See references/adr-index-spec.md for the complete INDEX specification.

See references/example-INDEX.md for a full example.

Step 6: Gap Analysis

Report inline after generating all files:

## ADR Gap Analysis

**Project:** [name]
**ADRs Generated:** [n]

**Decision Areas Covered:**
[✓ / ✗] Architecture / structural patterns
[✓ / ✗] Technology stack
[✓ / ✗] Data storage
[✓ / ✗] API design
[✓ / ✗] Security / authentication
[✓ / ✗] Testing strategy
[✓ / ✗] Deployment / infrastructure

**Open Questions carried forward:** [n]
[List any open_questions from technical-requirements.yaml that could not yet be
formalized as Accepted ADRs — these are candidates for future ADRs.]

**Recommendations:** [none / list]

Output Format

{base_directory}/architecture/adrs/
  INDEX.md
  ADR-001-[title].md
  ADR-002-[title].md
  ...

Example Output

See references/ for sample ADR files (ADR-001, ADR-003) and an INDEX.md.

Comments

Markdown supported