Difficulty: Advanced Time Investment: 2-3 hours Prerequisites: Understanding of ADRs, agent skills framework, governance challenges
The Problem: Architectural Decision Records (ADRs) are critical for long-term maintainability, but they’re often:
The Cost:
The Solution: Agent skills can act as architecture guardrails, automatically:
Architecture Decision Record (ADR): A document that captures an important architectural decision along with its context and consequences.
Standard Format (Nygard):
# ADR-XXX: [Decision Title]
## Status
Accepted | Proposed | Deprecated | Superseded by ADR-YYY
## Context
What is the issue we're trying to solve?
What constraints exist? (team size, budget, timeline)
What alternatives did we consider?
## Decision
What did we decide to do?
Be specific: "We will use PostgreSQL for the primary database"
## Consequences
Positive outcomes (what we gain)
Negative outcomes (what we lose, technical debt we accept)
Risks and mitigations
Example:
# ADR-003: Use Zustand for Client State Management
## Status
Accepted
## Context
Our Next.js application needs client-side state management for:
- User session data
- UI state (modals, filters)
- Real-time notifications
Alternatives considered:
- Redux (too complex for our small team of 3)
- Context API (performance issues with frequent updates)
- Zustand (simpler API, good performance)
## Decision
We will use Zustand for all client-side state management.
## Consequences
✅ Simpler API (less boilerplate than Redux)
✅ Good performance (optimised re-renders)
❌ Smaller community than Redux (fewer examples)
❌ Need to educate team (new library)
adr-governor SkillTriggers when:
Workflow:
graph TD
A[Developer proposes change] --> B{ADR exists?}
B -->|No| C[Draft new ADR]
B -->|Yes| D[Validate against existing ADR]
C --> E[Check against Enterprise Tech Radar]
E --> F{Technology approved?}
F -->|Yes| G[Generate ADR from template]
F -->|No| H[Flag deprecated/unapproved tech]
G --> I[Present to developer for review]
H --> I
D --> I
/adr-governor/
├── SKILL.md # Instructions for when/how to use
├── templates/
│ └── adr-template.md # Nygard format template
├── references/
│ ├── tech-radar.json # Approved/deprecated technologies
└── scripts/
├── validate_adr.py # Check ADR against standards
└── generate_adr.sh # Create new ADR from template
Without adr-governor:
Developer: "Let's use Redis for caching"
→ Implements Redis
→ Pushes code
→ Architect reviews PR: "Why Redis instead of our standard Memcached?"
→ Debate happens in PR comments
→ Code rework or exception approval
→ No ADR written (context lost)
With adr-governor:
Developer: "Let's use Redis for caching"
→ Skill triggers: "I detect a new technology proposal"
→ Skill checks tech-radar.json:
{
"redis": {
"status": "assess",
"note": "We standardise on Memcached. Redis requires approval."
}
}
→ Skill responds:
"Redis is in 'assess' status. Our standard is Memcached.
To proceed with Redis, we need to document why it's necessary.
I'll draft an ADR for you."
→ Skill generates ADR:
# ADR-012: Use Redis Instead of Memcached for Caching
## Context
[Prompts developer to fill in: Why is Memcached insufficient?]
## Decision
We will use Redis for [specific use case]
## Consequences
✅ [Benefits Redis provides]
❌ Diverges from standard (increases operational complexity)
→ Developer fills in context
→ Skill validates: "This looks good. File a PR with this ADR."
→ Architect reviews ADR (not PR comments)
→ Decision documented for future reference
Setup: Use Claude Code or Cursor without the adr-governor skill
Task: “Initialise a new project using Express and MongoDB”
Observe:
Lesson: Without guardrails, agents will happily implement suboptimal choices.
Setup: Add the adr-governor skill (use example above)
Task: “Initialise a new project using Express and MongoDB”
Observe: The skill prevents bad decisions before code is written.
Note: As descrbed in the Agent Skills Framework Agent Skills have limitations, you made need to prompt Claude to use this skill for now…
Setup: With adr-governor skill enabled
Task: “We need to add real-time features to the app”
Expected agent behavior:
Observe: The skill guides the decision-making process, not just documents it.
Problem: Radar says “use React 16” but you’re on React 18 Solution: Treat tech radar like code—review quarterly, update proactively
Problem: Skill flags every minor library choice Solution: Only govern significant decisions (databases, frameworks, major libraries)
Problem: Developer has a valid reason to deviate, but skill blocks them Solution: Allow “exception ADRs” that document why standard was bypassed
Problem: Developer codes first, writes ADR later (loses decision context) Solution: Skill should trigger before code is written (ideally in planning phase)
ADR automation may help to mitigate the “governance at scale” problem, but it may contribute velocity without comprehension, your mileage may vary.
Without automation:
With automation (adr-governor skill):
Start:
The goal: Agents reduce the friction and toil of the ADR process to improve technical decision audit trails.