adr-format-alexandrian
npx machina-cli add skill zircote/adr/adr-format-alexandrian --openclawAlexandrian ADR Format
The Alexandrian format is inspired by Christopher Alexander's pattern language. It emphasizes the forces influencing decisions and the resulting context after applying a solution.
About Alexandrian Format
The Alexandrian format is:
- Pattern-oriented - Follows pattern language structure
- Force-focused - Emphasizes competing forces
- Context-rich - Detailed before/after context
- Relationship-aware - Links to related patterns/decisions
Template Structure
# {NUMBER}. {TITLE}
Date: {DATE}
## Status
{STATUS}
## Context
{Background and current state}
## Problem
{Clear problem statement}
## Forces
* {Force 1}
* {Force 2}
* {Force 3}
## Solution
{Chosen solution}
## Resulting Context
### Benefits
* {Benefit 1}
* {Benefit 2}
### Drawbacks
* {Drawback 1}
* {Drawback 2}
### Related Patterns/Decisions
* {Related ADR or pattern}
Section Guide
Context
Describe the background:
- Project state
- Team composition
- Organizational factors
- Technical environment
Problem
State the problem clearly:
- What issue needs resolution?
- What question needs answering?
- Frame as a specific challenge
Forces
List forces influencing the decision:
- Technical requirements
- Business constraints
- Team factors
- Organizational pressures
Forces often pull in different directions, creating tension that the decision must resolve.
Example:
## Forces
* Need for high availability (99.99% uptime SLA)
* Limited budget ($5K/month infrastructure)
* Team expertise in Kubernetes
* Requirement for data residency in EU
* Desire to minimize operational overhead
Solution
Describe the chosen solution:
- What will be done
- How it addresses the forces
- Specific implementation approach
Resulting Context
Document the state after applying the solution:
Benefits - Positive outcomes achieved Drawbacks - Negative consequences accepted Related Patterns/Decisions - Connections to other ADRs or architectural patterns
When to Use Alexandrian Format
Best for:
- Decisions with complex, competing forces
- Pattern-oriented teams
- Decisions requiring detailed context
- Situations with many constraints
Consider other formats when:
- Quick documentation needed
- Forces are straightforward
- Team prefers simpler templates
Alexandrian Best Practices
Documenting Forces
- List 4-8 forces for most decisions
- Include both technical and non-technical forces
- Note which forces are in tension
- Prioritize or weight forces if helpful
Resulting Context
- Be honest about drawbacks
- Link to decisions that address drawbacks
- Note conditions that would trigger revisiting
Additional Resources
Templates
Template available at:
${CLAUDE_PLUGIN_ROOT}/templates/alexandrian/adr-template.md
External Resources
- "A Pattern Language" by Christopher Alexander
- Pattern-Oriented Software Architecture
Source
git clone https://github.com/zircote/adr/blob/main/skills/adr-format-alexandrian/SKILL.mdView on GitHub Overview
The Alexandrian ADR format is a pattern-oriented decision record that centers on forces influencing choices and the resulting context after applying a solution. It emphasizes context-rich documentation, explicit connections to related patterns, and a structured template to guide complex decisions.
How This Skill Works
Adopt the Alexandrian template (Number.Title, Date, Status, Context, Problem, Forces, Solution, Resulting Context, Benefits, Drawbacks, Related Patterns). Document 4–8 forces (technical and non-technical), note tensions, and describe a solution that addresses those forces. Capture the resulting context with benefits, drawbacks, and links to related decisions to close the loop.
When to Use It
- When decisions have complex, competing forces and you need clear tradeoffs
- When your team benefits from pattern-oriented structure and explicit linkages to related decisions
- When a decision requires detailed context and justification beyond a brief note
- When constraints (technical, business, or organizational) are many and interdependent
- When quick documentation is not enough and forces are straightforward; otherwise consider lighter formats
Quick Start
- Step 1: Create a new ADR file named 001-<title>.md in the Alexandrian ADR folder
- Step 2: Fill in Context, Problem, and Forces (4–8 items) and document the Solution
- Step 3: Add Resulting Context with Benefits/Drawbacks and link Related Patterns
Best Practices
- Document 4–8 forces for most decisions, including technical and non-technical factors
- Note which forces are in tension and consider prioritizing or weighting them
- Be explicit about how the chosen solution addresses the identified forces
- Be honest about drawbacks in the Resulting Context and how they’re mitigated
- Link related patterns/decisions in the Resulting Context to show interconnections
Example Use Cases
- ADR for monolith vs microservices decision considering performance, maintainability, and team skills
- Choosing a database technology (SQL vs NoSQL) under consistency, latency, and ops tradeoffs
- Selecting a caching strategy (in-memory vs distributed) balancing speed, cost, and complexity
- Deployment approach (blue/green vs canary) with downtime, rollback, and risk considerations
- Data residency/compliance pattern across regions with sovereignty, latency, and vendor lock-in