Architecture Decision Records

An ADR is a short document that captures a significant architectural choice, the context it was made in, and the consequences of that choice. ADRs are immutable once accepted — superseded ADRs are marked as such, not deleted.

When to Write an ADR

  • You are choosing between two or more viable technical approaches.
  • The decision will be hard or costly to reverse later.
  • A new cross-cutting concern is introduced (auth, observability, data storage).
  • A breaking change to a public API or agent contract is planned.

Small, local choices do not need an ADR. Use inline comments or PR descriptions instead.

ADR Template

# ADR-NNNN: <short title>

**Date:** YYYY-MM-DD
**Status:** Proposed | Accepted | Superseded by ADR-XXXX | Deprecated

## Context
What forces, constraints, or requirements led to this decision?
One paragraph; no solution yet.

## Decision
What we decided. Be direct. "We will use X because Y."

## Consequences
- **Positive:** what becomes easier or possible.
- **Negative:** what becomes harder or is lost.
- **Neutral:** other notable side-effects.

## Alternatives Considered
Brief notes on approaches that were rejected and why.

File location: docs/adr/NNNN-kebab-title.md

Process

  1. Open a GitHub issue tagged adr to socialize the idea.
  2. Create a PR adding the ADR file with status Proposed.
  3. Gather feedback; revise in-place on the same branch.
  4. Change status to Accepted and merge once two maintainers approve.
  5. When superseded, update the old ADR's status line — never delete the file.

Existing ADRs

ADRTitleStatusDate
0001 Multi-agent orchestration via Claude Code native teams Accepted 2024-11
0002 MCP as primary extension protocol over custom REST hooks Accepted 2024-12
0003 Bun as default runtime (replacing Node 20) Accepted 2025-01
0004 Tailwind v4 + CSS custom properties for design tokens Accepted 2025-03
0005 Skill invocation via slash commands over YAML manifests Proposed 2025-06