Claude Code Plugins

Community-maintained marketplace

Feedback

Create Architecture Decision Records (ADRs) documenting key architectural choices. Analyzes context, evaluates alternatives, and captures decisions using standard ADR template. Use when documenting database design, technology selection, pattern choices, or architectural trade-offs.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name create-adr
description Create Architecture Decision Records (ADRs) documenting key architectural choices. Analyzes context, evaluates alternatives, and captures decisions using standard ADR template. Use when documenting database design, technology selection, pattern choices, or architectural trade-offs.
acceptance [object Object], [object Object], [object Object], [object Object]
inputs [object Object]
outputs [object Object]
telemetry [object Object]

Create Architecture Decision Record (ADR)

Overview

Create comprehensive Architecture Decision Records following industry best practices. ADRs document architectural choices, alternatives considered, rationale, and consequences to provide context for future development.

ADR Structure:

  • Context: Problem and constraints
  • Decision: What was decided
  • Alternatives: Options evaluated with pros/cons
  • Rationale: Why this decision was made
  • Consequences: Positive, negative, and neutral impacts

Prerequisites

  • docs/adrs/ directory (created if missing)
  • Context for decision (file to analyze, problem description, or existing architecture)

Workflow

Step 0: Determine ADR Number

Action: Find next available ADR number.

# List existing ADRs
ls -la docs/adrs/ 2>/dev/null || echo "ADR directory does not exist"

# Find highest number
find docs/adrs/ -name "adr-*.md" 2>/dev/null | \
  sed 's/.*adr-\([0-9]*\)-.*/\1/' | \
  sort -n | \
  tail -1

Calculate next number:

  • If no ADRs exist: Start at 001
  • If ADRs exist: Increment highest by 1

Create ADR directory if missing:

mkdir -p docs/adrs

Step 1: Analyze Context

Action: Understand what decision needs to be documented.

Context Types:

1. File/Schema Analysis (like Prisma schema):

# Read the file to analyze
Read(file_path: {context_path})

Analyze to identify:

  • Technology choices: Database, ORM, patterns used
  • Data modeling decisions: Schema structure, relationships
  • Architectural patterns: Multi-tenancy, event sourcing, etc.
  • Design tradeoffs: Normalization vs. denormalization, indexing strategies

2. Technology Selection:

  • List technologies being compared
  • Identify requirements driving selection
  • Note constraints (team skills, budget, timeline)

3. Pattern Adoption:

  • Describe pattern being adopted
  • Explain problem it solves
  • Note implementation approach

Step 2: Identify Key Decisions

Action: Extract architectural decisions from context.

For Schema/File Analysis: Scan for decision indicators:

  • Database technology (PostgreSQL, MySQL, MongoDB)
  • ORM choice (Prisma, TypeORM, Sequelize)
  • Schema patterns (multi-tenancy, soft deletes, audit logs)
  • Relationship modeling (one-to-many, many-to-many)
  • Indexing strategy
  • Enum usage for type safety
  • JSON/JSONB for flexibility

Example from Prisma Schema:

// Decision indicators:
- PostgreSQL chosen (ADR: Database Selection)
- Prisma ORM (ADR: ORM Selection)
- Multi-tenancy via hotelId (ADR: Multi-Tenancy Strategy)
- Clerk for auth (ADR: Authentication Provider)
- Event sourcing pattern (ADR: Event Processing Architecture)

Prioritize decisions:

  1. High Impact: Database, framework, major patterns
  2. Medium Impact: Libraries, architectural patterns
  3. Low Impact: Utility choices, minor patterns

Focus on 1-3 most significant decisions per ADR.


Step 3: Research Alternatives

Action: Identify alternatives that could have been chosen.

For Technology Decisions:

Database: PostgreSQL
Alternatives:
- MySQL (widely used, simpler)
- MongoDB (NoSQL, flexible schema)
- SQLite (embedded, simple)

For each alternative, identify:

  • Pros: Advantages and strengths
  • Cons: Disadvantages and limitations
  • Use cases: When it's the better choice

Research sources:

  • Official documentation
  • Comparison articles
  • Team experience
  • Industry best practices

Minimum alternatives: At least 2 (typically 3-4)


Step 4: Determine Rationale

Action: Explain why the chosen option was selected.

Rationale factors:

  • Requirements fit: How well option meets requirements
  • Team expertise: Existing skills and experience
  • Timeline: Impact on delivery speed
  • Cost: Licensing, hosting, maintenance
  • Scalability: Handles expected growth
  • Community: Support availability
  • Risk: Maturity and stability

Example rationale:

PostgreSQL chosen over MongoDB because:
1. Data is highly relational (users → hotels → conversations)
2. ACID transactions required for billing
3. Team has strong SQL experience (no MongoDB experience)
4. Scale fits PostgreSQL capabilities (100K users proven)
5. Full-text search built-in (eliminates Elasticsearch)

Make rationale specific and measurable.


Step 5: Identify Consequences

Action: Document impacts of the decision.

Consequence Types:

Positive Consequences:

  • Benefits gained
  • Problems solved
  • Capabilities enabled

Negative Consequences:

  • Limitations introduced
  • Tradeoffs accepted
  • Future constraints

Mitigation Strategies: For each negative consequence, document mitigation:

Negative: PostgreSQL vertical scaling limits
Mitigation: Plan read replica strategy, monitor query performance

Neutral Consequences:

  • Changes with mixed/unclear impact
  • Future considerations
  • Monitoring needs

Be honest about tradeoffs - every decision has pros and cons.


Step 6: Write ADR

Action: Create ADR document using standard template.

ADR Template:

# ADR-{NUMBER}: {Decision Title}

**Date:** {YYYY-MM-DD}
**Status:** Accepted
**Deciders:** {Team/Role}

## Context

{What problem are we solving? What constraints exist?}

{For schema analysis: Describe the schema structure and requirements}

## Decision

We will use **{CHOSEN OPTION}** for {PURPOSE}.

## Alternatives Considered

### Option 1: {Chosen Option}
**Pros:**
- {Advantage 1}
- {Advantage 2}

**Cons:**
- {Disadvantage 1}
- {Disadvantage 2}

### Option 2: {Alternative}
**Pros:**
- {Advantage 1}

**Cons:**
- {Disadvantage 1}

### Option 3: {Alternative}
**Pros:**
- {Advantage 1}

**Cons:**
- {Disadvantage 1}

## Rationale

{Explain why chosen option was selected over alternatives}

{Be specific: "PostgreSQL chosen because data is relational and team has SQL expertise"}

## Consequences

**Positive:**
- {Benefit 1}
- {Benefit 2}

**Negative:**
- {Limitation 1}
  - *Mitigation:* {How we'll address this}

**Neutral:**
- {Consideration 1}

## Related Decisions

- ADR-XXX: {Related decision}

## Notes

{Additional context, benchmarks, links, team discussions}

File naming:

docs/adrs/adr-{NUMBER}-{kebab-case-title}.md

Examples:
- docs/adrs/adr-001-database-selection.md
- docs/adrs/adr-002-orm-choice.md
- docs/adrs/adr-003-multi-tenancy-strategy.md

Step 7: Verify ADR Quality

Action: Check ADR completeness and quality.

Quality Checklist:

Context section:

  • Problem clearly stated
  • Constraints identified
  • Requirements listed

Alternatives (minimum 2):

  • Each has pros and cons
  • Comparison is balanced
  • Technical depth appropriate

Rationale:

  • Explains "why" not just "what"
  • Specific and measurable
  • References requirements

Consequences:

  • Positive impacts listed
  • Negative impacts with mitigations
  • Honest about tradeoffs

Writing quality:

  • Clear and concise
  • No jargon without explanation
  • Readable by future team members

If quality checks fail:

  • Revise weak sections
  • Add missing details
  • Clarify ambiguous statements

Output

Return structured output:

{
  "adr_created": true,
  "adr_path": "docs/adrs/adr-001-database-selection.md",
  "decision_number": 1,
  "decision_title": "Database Selection",
  "alternatives_count": 3,
  "telemetry": {
    "skill": "create-adr",
    "decision_number": 1,
    "context_type": "schema_analysis",
    "alternatives_count": 3,
    "duration_ms": 12000
  }
}

Error Handling

Error 1: No Context Provided

Error: "Context required for ADR creation" Action: Ask user for decision context or file to analyze

Error 2: Cannot Determine Decision

Error: "Cannot identify architectural decision from context" Action: Ask user to clarify what decision needs documenting

Error 3: Insufficient Alternatives

Error: "At least 2 alternatives required" Action: Research additional options or ask user for alternatives


Examples

Example 1: Database Schema Analysis

Input: context: "packages/backend/src/schema.prisma"

Output ADR:

# ADR-001: PostgreSQL Database with Prisma ORM

**Date:** 2025-11-05
**Status:** Accepted
**Deciders:** Backend Team

## Context

Need database for multi-tenant SaaS application managing hotels, conversations, and analytics. Requirements:
- Relational data (hotels → users → conversations → messages)
- ACID transactions (billing, user management)
- Full-text search
- Multi-tenancy via hotelId
- TypeScript integration

## Decision

Use **PostgreSQL** with **Prisma ORM** for database layer.

[... rest of ADR with alternatives, rationale, consequences ...]

Example 2: Technology Selection

Input: context: "Choose state management for React app"

Output ADR:

# ADR-002: State Management Strategy

**Date:** 2025-11-05
**Status:** Accepted

## Context

React application needs client state management for:
- User authentication state
- Global UI state (theme, modals)
- Form state (multi-step wizards)

[... alternatives: Zustand, Redux, Context ...]

Using This Skill

From Winston subagent:

/winston *create-adr "packages/backend/src/schema.prisma"
/winston *create-adr "Choose between REST and GraphQL"

Directly:

Use create-adr skill with context: "Analyze authentication strategy in src/auth/"

Philosophy

ADRs are living documentation that:

  • Preserve context for future developers
  • Document tradeoffs honestly
  • Explain "why" not just "what"
  • Guide future decisions through patterns

Good ADRs prevent "why did we do this?" questions 6 months later.


References

  • Michael Nygard's ADR template (original)
  • ThoughtWorks Technology Radar ADR guidance
  • MADR (Markdown ADR) format specification
  • references/adr-examples.md for complete examples