adr-documentation

2
1
Source

Architecture Decision Records (ADR) documentation practice. Use when documenting architectural decisions, recording technical trade-offs, creating decision logs, or establishing architectural patterns. Trigger keywords - "ADR", "architecture decision", "decision record", "trade-offs", "architectural decision", "decision log".

Install

mkdir -p .claude/skills/adr-documentation && curl -L -o skill.zip "https://mcp.directory/api/skills/download/6220" && unzip -o skill.zip -d .claude/skills/adr-documentation && rm skill.zip

Installs to .claude/skills/adr-documentation

About this skill

ADR Documentation

Overview

What are ADRs?

Architecture Decision Records (ADRs) are lightweight documents that capture important architectural decisions along with their context and consequences. They serve as a historical record of why certain choices were made, helping teams avoid revisiting settled debates and providing context for future developers.

Key characteristics:

  • Immutable: Once accepted, ADRs are rarely modified (supersede instead)
  • Context-rich: Capture the environment and constraints at decision time
  • Outcome-focused: Document what was decided and why
  • Alternative-aware: Show what options were considered and rejected

Why Document Decisions?

Context Preservation:

  • Future team members understand why things are the way they are
  • Avoid "we've always done it this way" without knowing the reason
  • Preserve institutional knowledge across team changes

Onboarding:

  • New developers can read ADR history to understand system evolution
  • Reduces repetitive explanations of architectural choices
  • Provides learning path through project decisions

Avoiding Repeat Mistakes:

  • Document why certain approaches were rejected
  • Prevent re-proposing failed solutions
  • Learn from past trade-offs

Alignment:

  • Create shared understanding across team
  • Resolve disagreements with documented rationale
  • Enable asynchronous decision-making

When to Write an ADR

Write an ADR when:

  • Significant architectural choices: Microservices vs monolith, event-driven vs request/response
  • Technology selections: Database choice, framework adoption, language decisions
  • Pattern decisions: State management approach, authentication strategy, error handling patterns
  • Breaking changes: API redesigns, data model changes, migration strategies
  • Performance-critical decisions: Caching strategies, optimization approaches, scalability patterns
  • Security-related choices: Authentication methods, encryption strategies, access control models
  • Infrastructure decisions: Deployment strategy, hosting platform, CI/CD approach
  • Dependency selections: Major library choices, third-party service integrations

Don't write an ADR for:

  • Minor implementation details
  • Temporary workarounds
  • Personal coding style preferences
  • Reversible low-impact choices

ADR Structure

Standard Format

# ADR-XXXX: [Short Title]

## Status
[Proposed | Accepted | Deprecated | Superseded by ADR-YYYY]

## Date
YYYY-MM-DD

## Context
[Problem statement and environment]

## Decision
[What was decided]

## Consequences
[What results from this decision]

## Alternatives Considered
[Other options evaluated]

## Related ADRs
[Links to related decisions]

## References
[External links and documentation]

Section Guidelines

Title:

  • Format: ADR-XXXX: Short Decision Title
  • Be specific: "ADR-0012: Use PostgreSQL for Primary Database"
  • Not generic: "ADR-0012: Database Choice"

Status:

  • Proposed: Under discussion, not yet accepted
  • Accepted: Decision is final and being implemented
  • Deprecated: No longer recommended but not replaced
  • Superseded by ADR-YYYY: Replaced by a newer decision

Date:

  • Use ISO format: YYYY-MM-DD
  • Date of status change, not original proposal

Context:

  • Describe the forces at play
  • Technical constraints
  • Business requirements
  • Team capabilities
  • Timeline pressures
  • Budget considerations
  • Example: "We need to store structured data with complex relationships. Team has limited database expertise. Must support 100k+ users within 6 months."

Decision:

  • State clearly what was decided
  • Include scope and boundaries
  • Specify what is NOT included
  • Example: "We will use PostgreSQL as our primary database for all structured data. NoSQL solutions may be used for specific use cases (caching, session storage) but PostgreSQL is the default."

Consequences:

  • Positive: What benefits we gain
  • Negative: What drawbacks we accept
  • Neutral: What trade-offs we're making

Example:

### Positive
- Strong ACID guarantees for transactions
- Rich query capabilities with SQL
- Mature ecosystem and tooling

### Negative
- Requires careful index management for performance
- Scaling horizontally is more complex than NoSQL
- Team needs PostgreSQL training

### Neutral
- Need to establish backup/restore procedures
- Must define connection pooling strategy

Alternatives Considered:

  • List 2-4 alternatives seriously evaluated
  • For each: Pros, Cons, Why rejected
  • Be fair to alternatives (avoid strawman arguments)

Related ADRs:

  • Link to decisions that influenced this one
  • Link to decisions this one influences
  • Create a decision graph over time

References:

  • Documentation links
  • Blog posts or articles that influenced decision
  • Benchmark results
  • Proof of concepts

ADR Numbering and Naming

Sequential Numbering

Use zero-padded sequential numbers:

  • ADR-0001, ADR-0002, ..., ADR-0010, ..., ADR-0100
  • Four digits handles up to 9,999 ADRs (enough for most projects)
  • Don't skip numbers when superseding (new ADR gets next number)

File Naming

Format: ADR-XXXX-short-title.md

Examples:

  • ADR-0001-use-postgresql-database.md
  • ADR-0002-adopt-react-19-frontend.md
  • ADR-0003-implement-jwt-authentication.md

Naming guidelines:

  • Use lowercase
  • Use hyphens (not underscores or spaces)
  • Keep title short but descriptive
  • Include key technology/pattern name

Location

Recommended locations:

  • Option 1: ai-docs/decisions/ (alongside other AI-focused docs)
  • Option 2: docs/adr/ (standard documentation location)
  • Option 3: Root adr/ directory (if ADRs are primary docs)

Choose consistently across project.

For Claude Code plugins:

  • Use ai-docs/decisions/ to co-locate with CLAUDE.md and other AI docs
  • Makes ADRs easily discoverable by Claude

When to Write an ADR

Technology Adoption

Write an ADR when:

  • Adopting a new framework or major library
  • Choosing between competing technologies
  • Upgrading to a new major version with breaking changes

Examples:

  • ADR-0015: Migrate from Webpack to Vite
  • ADR-0023: Adopt TypeScript for Backend Services
  • ADR-0031: Use Bun Runtime Instead of Node.js

Architectural Pattern Selection

Write an ADR when:

  • Choosing architectural style (monolith, microservices, serverless)
  • Selecting state management approach
  • Defining API design patterns
  • Establishing error handling strategies

Examples:

  • ADR-0008: Use Event-Driven Architecture for Order Processing
  • ADR-0012: Implement Repository Pattern for Data Access
  • ADR-0019: Adopt REST over GraphQL for Public API

Breaking Changes

Write an ADR when:

  • Making changes that break backward compatibility
  • Migrating data models
  • Redesigning core APIs
  • Changing authentication mechanisms

Examples:

  • ADR-0025: Remove Legacy API v1 Endpoints
  • ADR-0033: Migrate from Sessions to JWT Tokens
  • ADR-0041: Change User ID from Integer to UUID

Performance-Critical Decisions

Write an ADR when:

  • Implementing caching strategies
  • Making database optimization choices
  • Selecting algorithms for hot paths
  • Deciding on async vs sync processing

Examples:

  • ADR-0017: Implement Redis for Session Caching
  • ADR-0022: Use WebSockets for Real-Time Updates
  • ADR-0028: Adopt Background Job Queue for Heavy Processing

Security-Related Choices

Write an ADR when:

  • Choosing authentication methods
  • Implementing authorization strategies
  • Selecting encryption approaches
  • Defining security policies

Examples:

  • ADR-0010: Use OAuth 2.0 with PKCE for Mobile Auth
  • ADR-0014: Implement Row-Level Security in PostgreSQL
  • ADR-0020: Adopt OWASP Guidelines for API Security

ADR Lifecycle

Proposal Phase

Creating a Proposal:

  1. Draft ADR with status "Proposed"
  2. Share with team for feedback
  3. Discuss in team meeting or async comments
  4. Iterate on Context and Alternatives sections

Review Process:

  • Ensure all alternatives are fairly represented
  • Verify consequences are realistic
  • Check that context captures current constraints
  • Validate decision aligns with project goals

Acceptance

When to Accept:

  • Team consensus reached (or decision maker approves)
  • Decision is being implemented
  • No major unresolved concerns

Accepting an ADR:

  1. Change status to "Accepted"
  2. Update date to acceptance date
  3. Commit to repository
  4. Communicate to team

Post-Acceptance:

  • ADR becomes immutable (don't edit decision or alternatives)
  • May add notes or references sections if new info emerges
  • Use comments to clarify, don't rewrite history

Deprecation Process

When to Deprecate:

  • Decision is no longer recommended but not replaced
  • Technology or pattern is obsolete
  • Security vulnerability makes approach unsafe

Deprecating an ADR:

  1. Change status to "Deprecated"
  2. Add "Deprecation Note" section explaining why
  3. Update date to deprecation date
  4. Don't remove ADR from repository

Example deprecation note:

## Deprecation Note (2026-01-15)

This decision has been deprecated due to security vulnerabilities
discovered in the XYZ library. See ADR-0045 for the replacement
approach using the ABC library.

Superseding Old ADRs

When to Supersede:

  • Making a decision that replaces an old one
  • Reversing a previous decision
  • Evolving a decision with significant changes

Superseding Process:

  1. Create new ADR with next sequential number
  2. Reference old ADR in "Context" section
  3. Update old ADR status to "Superseded by ADR-XXXX"
  4. Explain why old decision is being replaced

Example: Old ADR-0012:

## Status
Superseded by ADR-0034

New ADR-0034:

## Context
ADR-0012 chose MongoDB for our primary database. After 2 years
of production use, we've encountered scaling issues with our
relational data model. This ADR supersedes

---

*Content truncated.*

claudish-usage

MadAppGang

CRITICAL - Guide for using Claudish CLI ONLY through sub-agents to run Claude Code with any AI model (OpenRouter, Gemini, OpenAI, local models). NEVER run Claudish directly in main context unless user explicitly requests it. Use when user mentions external AI models, Claudish, OpenRouter, Gemini, OpenAI, Ollama, or alternative models. Includes mandatory sub-agent delegation patterns, agent selection guide, file-based instructions, and strict rules to prevent context window pollution.

413

schemas

MadAppGang

YAML frontmatter schemas for Claude Code agents and commands. Use when creating or validating agent/command files.

23

golang

MadAppGang

Use when building Go backend services, implementing goroutines/channels, handling errors idiomatically, writing tests with testify, or following Go best practices for APIs/CLI tools.

102

golang-performance

MadAppGang

Use when profiling Go applications (pprof), running benchmarks, optimizing memory/CPU usage, or debugging performance bottlenecks in production Go code.

52

external-model-selection

MadAppGang

Choose optimal external AI models for code analysis, bug investigation, and architectural decisions. Use when consulting multiple LLMs via claudish, comparing model perspectives, or investigating complex Go/LSP/transpiler issues. Provides empirically validated model rankings (91/100 for MiniMax M2, 83/100 for Grok Code Fast) and proven consultation strategies based on real-world testing.

172

hierarchical-coordinator

MadAppGang

Prevent goal drift in long-running multi-agent workflows using a coordinator agent that validates outputs against original objectives at checkpoints. Use when orchestrating 3+ agents, multi-phase features, complex implementations, or any workflow where agents may lose sight of original requirements. Trigger keywords - "hierarchical", "coordinator", "anti-drift", "checkpoint", "validation", "goal-alignment", "decomposition", "phase-gate", "shared-state", "drift detection".

21

You might also like

flutter-development

aj-geddes

Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.

1,6881,430

ui-ux-pro-max

nextlevelbuilder

"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."

1,2721,337

drawio-diagrams-enhanced

jgtolentino

Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.

1,5451,153

godot

bfollington

This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.

1,359809

nano-banana-pro

garg-aayush

Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.

1,268732

pdf-to-markdown

aliceisjustplaying

Convert entire PDF documents to clean, structured Markdown for full context loading. Use this skill when the user wants to extract ALL text from a PDF into context (not grep/search), when discussing or analyzing PDF content in full, when the user mentions "load the whole PDF", "bring the PDF into context", "read the entire PDF", or when partial extraction/grepping would miss important context. This is the preferred method for PDF text extraction over page-by-page or grep approaches.

1,496685