Architecture Decision Records

| Write ADR | Skip ADR |

What Is This

The Architecture Decision Records skill enables teams to write, maintain, and manage Architecture Decision Records (ADRs) using established industry best practices. ADRs are concise documents that capture the context, rationale, and impact of key technical decisions made throughout the lifecycle of a software or systems project. This skill focuses on structuring ADRs to ensure decisions are transparent, traceable, and easily accessible, thereby supporting long-term maintainability and clarity within development teams.

ADRs typically answer three fundamental questions:

  • Context: What circumstances or requirements led to this decision?
  • Decision: What choice did the team make?
  • Consequences: What are the implications, both positive and negative, of this decision?

By leveraging this skill, teams can create a consistent and reliable record of important architectural choices, making it easier to revisit, communicate, and justify decisions over time.

Why Use It

In rapidly evolving technology environments, teams frequently face complex trade-offs and must make decisions that have lasting effects on the architecture, design, and operation of systems. Without clear documentation, the reasoning behind these decisions can become lost, leading to confusion, repeated debates, or costly mistakes.

The Architecture Decision Records skill addresses these challenges by:

  • Improving Transparency: Ensures that all team members, current and future, understand why specific decisions were made.
  • Facilitating Onboarding: New team members can quickly get up to speed by reviewing past architectural choices.
  • Supporting Consistency: Encourages a standardized approach to documenting key decisions.
  • Enabling Traceability: Maintains a clear history of how and why the architecture evolved.
  • Reducing Risk: Helps avoid repeating past mistakes and documents trade-offs for future reference.

By documenting not only what was decided but also the context and consequences, teams are better equipped to adapt their architecture as requirements change or new technologies emerge.

How to Use It

Creating an ADR

When a significant technical or architectural decision arises, follow these steps to create an ADR:

  1. Identify the Decision Point: Determine whether the decision is significant enough to warrant an ADR (see "When to Use It" below).

  2. Use a Standard Template: Consistency is key. A typical ADR uses the following structure:

    # ADR Title
    
    ## Context
    [Explain the background and forces leading to this decision.]
    
    ## Decision
    [State the decision clearly.]
    
    ## Consequences
    [Describe the impact of this decision, including positive and negative effects.]
  3. Document the ADR: Fill in each section with clear, concise, and relevant information. Be specific about the alternatives considered, the rationale for the choice, and any risks or follow-up actions.

  4. Review and Accept: Share the ADR with relevant stakeholders for review and consensus. Once accepted, mark the ADR’s status accordingly.

  5. Maintain the ADR Lifecycle: Update the status of each ADR as circumstances change. The typical ADR lifecycle is:

    Proposed → Accepted → Deprecated → Superseded
                   ↓
                Rejected
    • Proposed: Under discussion
    • Accepted: Officially adopted
    • Rejected: Not adopted
    • Deprecated: No longer recommended
    • Superseded: Replaced by a new ADR

Code Example:

Sample ADR (Markdown)

## ADR-002:

Adopt PostgreSQL for Application Database

## Context
The application requires a robust, scalable, and open-source relational database. Alternatives considered include MySQL, SQLite, and cloud-managed databases.

## Decision
We will use PostgreSQL due to its advanced features, strong community support, and compatibility with our deployment environment.

## Consequences
- Leverages advanced data types and indexing options
- Requires team training on PostgreSQL-specific features
- Enables future scalability and high availability

When to Use It

Use this skill to write an ADR when making decisions such as:

Write ADRSkip ADR
New framework adoptionMinor version upgrades
Database technology choiceBug fixes
API design patternsImplementation details
Security architectureRoutine maintenance
Integration patternsConfiguration changes

Essentially, create an ADR for any decision that significantly impacts the system’s architecture, technology stack, or design patterns. Minor implementation details or routine maintenance activities do not require ADRs.

Important Notes

  • Keep ADRs short and focused: Each ADR should address a single decision.
  • Maintain version control: Store ADRs in your project repository for easy access and change tracking.
  • Promote team collaboration: Engage stakeholders in the review and acceptance process.
  • Update as needed: If a decision is reversed or superseded, update the ADR’s status and reference related records.
  • Establish clear guidelines: Define as a team when ADRs are required to avoid unnecessary documentation.

By integrating the Architecture Decision Records skill into your workflow, you ensure that your project's decision-making process is well-documented, transparent, and resilient to future changes.