ADR Review
Multi-agent debate pattern for rigorous ADR validation. Orchestrates 6 specialized agents through structured review rounds until consensus or 10 rounds maximum.
Triggers
| Trigger Phrase |
Operation |
review this ADR |
Full 6-agent debate on specified ADR |
validate ADR-005 |
Targeted review of specific ADR by number |
review this decision record |
ADR review for durable architecture/design decision records |
delete ADR-NNN |
Deletion review with dependency and supersession checks |
ADR file created, modified, or deleted |
Auto-triggered via detect_adr_changes.py |
Quick Start
# Manual triggers:
/adr-review .agents/architecture/ADR-005-api-versioning.md
"review this ADR"
"validate ADR-005"
"review this decision record under docs/decisions"
Automatic Detection: A Claude Code hook runs at session start and detects ADR changes, prompting you to invoke this skill. The pre-commit hook also detects staged ADR files and displays a reminder.
| Input |
Output |
Consensus Required |
| ADR file path |
Debate log + Updated ADR |
6/6 Accept or D&C |
File Triggers
| Pattern |
Location |
Events |
ADR-*.md |
.agents/architecture/ |
create, update, delete |
ADR-*.md |
docs/adr/ |
create, update, delete |
ADR-*.md |
docs/architecture/ |
create, update, delete |
ADR-*.md |
docs/decisions/ |
create, update, delete |
ADR-*.md |
architecture/decisions/ |
create, update, delete |
Detection: from the skill directory, run python3 scripts/detect_adr_changes.py --base-path <repo-root>. From repo root, run .claude/skills/adr-review/scripts/detect_adr_changes.py for the Claude skill tree or src/copilot-cli/skills/adr-review/scripts/detect_adr_changes.py for the Copilot CLI mirror.
When to Use
MANDATORY Triggers (automatic):
- Architect creates or updates an ADR
- ANY agent modifies
.agents/architecture/ADR-*.md, docs/adr/ADR-*.md, docs/architecture/ADR-*.md, docs/decisions/ADR-*.md, or architecture/decisions/ADR-*.md
User-Initiated Triggers (manual):
- User requests ADR review ("review this ADR", "validate this decision")
- User asks to review a durable design decision record or rationale for future maintainers
- User requests multi-perspective validation for strategic decisions
Agent Roles
| Agent |
Focus |
Tie-Breaker Role |
| architect |
Structure, governance, coherence, ADR compliance |
Structural questions |
| critic |
Gaps, risks, alignment, completeness |
None |
| independent-thinker |
Challenge assumptions, surface contrarian views |
None |
| security |
Threat models, security trade-offs |
None |
| analyst |
Root cause, evidence, feasibility |
None |
| high-level-advisor |
Priority, resolve conflicts, break ties |
Decision paralysis |
Process
| Phase |
Purpose |
Details |
| Phase 0 |
Related work research |
Search issues/PRs for context |
| Phase 1 |
Independent review |
Each agent reviews ADR using Zimmermann 7-question checklist |
| Phase 2 |
Consolidation |
Identify consensus and conflicts; flag review anti-patterns |
| Phase 3 |
Resolution |
Propose updates for P0/P1 issues |
| Phase 4 |
Convergence check |
Agents vote: Accept/D&C/Block |
Consensus: All 6 agents Accept OR Disagree-and-Commit. Max 10 rounds.
See references/debate-protocol.md for full phase details.
Deletion Workflow
| Phase |
Purpose |
| D1 |
Detection - identify deleted ADR |
| D2 |
Impact assessment - find dependencies |
| D3 |
Archival decision - archive accepted ADRs |
| D4 |
Cleanup - update references |
See references/deletion-workflow.md for full workflow.
Issue Resolution
| Priority |
Requirement |
Gate |
| P0 |
Must resolve |
BLOCKING |
| P1 |
Resolve OR defer with issue |
BLOCKING |
| P2 |
Document |
Non-blocking |
See references/issue-resolution.md for deferral protocol.
Phase 4: Strategic Review (Principal-Level Validation)
After structural and technical review, apply strategic lenses:
Strategic Validation Checklist
Chesterton's Fence (Change Justification)
Path Dependence (Irreversibility Recognition)
Core vs Context (Investment Prioritization)
Second-System Effect (Over-Engineering Detection)
Strategic Review Verdict
Overall Strategic Assessment: [APPROVED | CONCERNS | REJECTED]
Blocking Issues:
- [Strategic issue 1 with required mitigation]
- [Strategic issue 2 with required mitigation]
Recommendations:
- [Strategic improvement 1]
- [Strategic improvement 2]
Scripts
| Script |
Purpose |
.claude/skills/adr-review/scripts/detect_adr_changes.py |
Detect ADR file changes for the Claude skill tree |
src/copilot-cli/skills/adr-review/scripts/detect_adr_changes.py |
Detect ADR file changes for the Copilot CLI mirror |
# Basic detection from repo root
uv run python .claude/skills/adr-review/scripts/detect_adr_changes.py
# Skill-relative detection from the Claude skill directory
cd .claude/skills/adr-review
python3 scripts/detect_adr_changes.py --base-path ../../..
cd ../../..
# Compare to specific commit
uv run python .claude/skills/adr-review/scripts/detect_adr_changes.py --since-commit abc123
# Include untracked ADR files
uv run python .claude/skills/adr-review/scripts/detect_adr_changes.py --include-untracked
# Copilot CLI mirror from repo root
uv run python src/copilot-cli/skills/adr-review/scripts/detect_adr_changes.py --include-untracked
# Skill-relative detection from the Copilot CLI mirror
cd src/copilot-cli/skills/adr-review
python3 scripts/detect_adr_changes.py --base-path ../../../..
cd ../../../..
Verification Checklist
Before marking complete, run the bundled detector to check for pending ADR changes:
uv run python .claude/skills/adr-review/scripts/detect_adr_changes.py --include-untracked
echo "exit=$?" # must be 0; non-zero means git error or I/O failure
After skill invocation:
Anti-Patterns
Process Anti-Patterns
| Avoid |
Why |
Instead |
| Single-agent ADR review |
Misses domain expertise |
Use full 6-agent debate |
| Skipping Phase 0 |
Duplicates existing work |
Always research first |
| Ignoring D&C dissent |
Loses important context |
Document all reservations |
| Manual ADR monitoring |
Error-prone |
Use detect_adr_changes.py |
| Deleting accepted ADRs without archive |
Loses knowledge |
Always archive accepted ADRs |
Review Anti-Patterns (Zimmermann)
Each agent should self-check against these. Phase 2 consolidation flags violations.
| Anti-Pattern |
Problem |
Detection |
| Pass Through |
Few/no comments, document barely read |
Agent produces no substantive findings |
| Copy Edit |
Focuses on wording, ignores content |
All findings editorial, none architectural |
| Siding/Dead End |
Comments switch topic, deviate from ADR |
Agent drifts from decision at hand |
| Self Promotion |
Recommends reviewer's preferred solution |
Agent pushes technology without objective rationale |
| Power Game |
Authority claims instead of technical arguments |
Agent uses position over evidence |
| Offended Reaction |
Defends criticized position subjectively |
Agent reacts emotionally to rationale |
| Groundhog Day |
Same message repeated across rounds |
Agent re-raises resolved issues |
See zimmermann-review-guidance.md for full practices and pledges.
References
| Document |
Content |
| debate-protocol.md |
Full Phases 0-4 workflow |
| deletion-workflow.md |
Phases D1-D4 workflow |
| issue-resolution.md |
P0/P1/P2 handling and deferral |
| artifacts.md |
Output formats and templates |
| agent-prompts.md |
Detailed agent prompt templates |
| zimmermann-review-guidance.md |
Review practices, 7 anti-patterns, checklist, reviewer pledge (Zimmermann 2023) |
1---2name: adr-review3description: Multi-agent debate orchestration for Architecture Decision Records. Automatically triggers on ADR create/edit/delete. Coordinates architect, critic, independent-thinker, security, analyst, and high-level-advisor agents in structured debate rounds until consensus. Use when you say "review this ADR", when an ADR is created/edited/deleted, or when reviewing, accepting, or updating a decision file under .agents/architecture/, docs/architecture/, docs/decisions/, docs/adr/, or architecture/decisions/, including intent like "review this decision record" or "check this rationale for future maintainers". Do NOT use to author a new ADR (use adr-generator).4license: MIT5---67# ADR Review89Multi-agent debate pattern for rigorous ADR validation. Orchestrates 6 specialized agents through structured review rounds until consensus or 10 rounds maximum.1011## Triggers1213| Trigger Phrase | Operation |14|----------------|-----------|15| `review this ADR` | Full 6-agent debate on specified ADR |16| `validate ADR-005` | Targeted review of specific ADR by number |17| `review this decision record` | ADR review for durable architecture/design decision records |18| `delete ADR-NNN` | Deletion review with dependency and supersession checks |19| `ADR file created, modified, or deleted` | Auto-triggered via detect_adr_changes.py |2021---2223## Quick Start2425```text26# Manual triggers:27/adr-review .agents/architecture/ADR-005-api-versioning.md28"review this ADR"29"validate ADR-005"30"review this decision record under docs/decisions"31```3233**Automatic Detection**: A Claude Code hook runs at session start and detects ADR changes, prompting you to invoke this skill. The pre-commit hook also detects staged ADR files and displays a reminder.3435| Input | Output | Consensus Required |36|-------|--------|-------------------|37| ADR file path | Debate log + Updated ADR | 6/6 Accept or D&C |3839## File Triggers4041| Pattern | Location | Events |42|---------|----------|--------|43| `ADR-*.md` | `.agents/architecture/` | create, update, delete |44| `ADR-*.md` | `docs/adr/` | create, update, delete |45| `ADR-*.md` | `docs/architecture/` | create, update, delete |46| `ADR-*.md` | `docs/decisions/` | create, update, delete |47| `ADR-*.md` | `architecture/decisions/` | create, update, delete |4849**Detection**: from the skill directory, run `python3 scripts/detect_adr_changes.py --base-path <repo-root>`. From repo root, run `.claude/skills/adr-review/scripts/detect_adr_changes.py` for the Claude skill tree or `src/copilot-cli/skills/adr-review/scripts/detect_adr_changes.py` for the Copilot CLI mirror.5051## When to Use5253**MANDATORY Triggers** (automatic):5455- Architect creates or updates an ADR56- ANY agent modifies `.agents/architecture/ADR-*.md`, `docs/adr/ADR-*.md`, `docs/architecture/ADR-*.md`, `docs/decisions/ADR-*.md`, or `architecture/decisions/ADR-*.md`5758**User-Initiated Triggers** (manual):5960- User requests ADR review ("review this ADR", "validate this decision")61- User asks to review a durable design decision record or rationale for future maintainers62- User requests multi-perspective validation for strategic decisions6364## Agent Roles6566| Agent | Focus | Tie-Breaker Role |67|-------|-------|------------------|68| **architect** | Structure, governance, coherence, ADR compliance | Structural questions |69| **critic** | Gaps, risks, alignment, completeness | None |70| **independent-thinker** | Challenge assumptions, surface contrarian views | None |71| **security** | Threat models, security trade-offs | None |72| **analyst** | Root cause, evidence, feasibility | None |73| **high-level-advisor** | Priority, resolve conflicts, break ties | Decision paralysis |7475## Process7677| Phase | Purpose | Details |78|-------|---------|---------|79| **Phase 0** | Related work research | Search issues/PRs for context |80| **Phase 1** | Independent review | Each agent reviews ADR using [Zimmermann 7-question checklist](references/zimmermann-review-guidance.md) |81| **Phase 2** | Consolidation | Identify consensus and conflicts; flag [review anti-patterns](references/zimmermann-review-guidance.md) |82| **Phase 3** | Resolution | Propose updates for P0/P1 issues |83| **Phase 4** | Convergence check | Agents vote: Accept/D&C/Block |8485**Consensus**: All 6 agents Accept OR Disagree-and-Commit. Max 10 rounds.8687See [references/debate-protocol.md](references/debate-protocol.md) for full phase details.8889## Deletion Workflow9091| Phase | Purpose |92|-------|---------|93| **D1** | Detection - identify deleted ADR |94| **D2** | Impact assessment - find dependencies |95| **D3** | Archival decision - archive accepted ADRs |96| **D4** | Cleanup - update references |9798See [references/deletion-workflow.md](references/deletion-workflow.md) for full workflow.99100## Issue Resolution101102| Priority | Requirement | Gate |103|----------|-------------|------|104| **P0** | Must resolve | BLOCKING |105| **P1** | Resolve OR defer with issue | BLOCKING |106| **P2** | Document | Non-blocking |107108See [references/issue-resolution.md](references/issue-resolution.md) for deferral protocol.109110## Phase 4: Strategic Review (Principal-Level Validation)111112After structural and technical review, apply strategic lenses:113114### Strategic Validation Checklist115116#### Chesterton's Fence (Change Justification)117118- [ ] If removing/changing existing patterns: Original purpose documented119- [ ] Investigation evidence provided (git archaeology, interviews, documentation)120- [ ] Confirmation original problem no longer exists121- [ ] Assessment: [PASS | FAIL | N/A]122123#### Path Dependence (Irreversibility Recognition)124125- [ ] Historical constraints identified and documented126- [ ] Reversibility assessment complete (rollback capability, vendor lock-in)127- [ ] Migration/exit strategy defined if adding dependencies128- [ ] Irreversible decisions explicitly flagged and justified129- [ ] Assessment: [PASS | FAIL | N/A]130131#### Core vs Context (Investment Prioritization)132133- [ ] Capability classified as Core (differentiating) or Context (commodity)134- [ ] If building Context: Justification for not buying/outsourcing135- [ ] If Core: Competitive differentiation explained136- [ ] Assessment: [PASS | FAIL | N/A]137138#### Second-System Effect (Over-Engineering Detection)139140- [ ] If replacing existing system: Scope boundaries explicit141- [ ] Feature list justified (not "everything we didn't do last time")142- [ ] Simplicity preservation strategy documented143- [ ] Assessment: [PASS | FAIL | N/A]144145### Strategic Review Verdict146147**Overall Strategic Assessment**: [APPROVED | CONCERNS | REJECTED]148149**Blocking Issues**:150151- [Strategic issue 1 with required mitigation]152- [Strategic issue 2 with required mitigation]153154**Recommendations**:155156- [Strategic improvement 1]157- [Strategic improvement 2]158159## Scripts160161| Script | Purpose |162|--------|---------|163| `.claude/skills/adr-review/scripts/detect_adr_changes.py` | Detect ADR file changes for the Claude skill tree |164| `src/copilot-cli/skills/adr-review/scripts/detect_adr_changes.py` | Detect ADR file changes for the Copilot CLI mirror |165166```bash167# Basic detection from repo root168uv run python .claude/skills/adr-review/scripts/detect_adr_changes.py169170# Skill-relative detection from the Claude skill directory171cd .claude/skills/adr-review172python3 scripts/detect_adr_changes.py --base-path ../../..173cd ../../..174175# Compare to specific commit176uv run python .claude/skills/adr-review/scripts/detect_adr_changes.py --since-commit abc123177178# Include untracked ADR files179uv run python .claude/skills/adr-review/scripts/detect_adr_changes.py --include-untracked180181# Copilot CLI mirror from repo root182uv run python src/copilot-cli/skills/adr-review/scripts/detect_adr_changes.py --include-untracked183184# Skill-relative detection from the Copilot CLI mirror185cd src/copilot-cli/skills/adr-review186python3 scripts/detect_adr_changes.py --base-path ../../../..187cd ../../../..188```189190## Verification Checklist191192Before marking complete, run the bundled detector to check for pending ADR changes:193194```bash195uv run python .claude/skills/adr-review/scripts/detect_adr_changes.py --include-untracked196echo "exit=$?" # must be 0; non-zero means git error or I/O failure197```198199- [ ] The detector script exited 0 (no git or I/O errors)200- [ ] If skill was auto-triggered by a file change, `HasChanges` should be `true`; if skill was manually invoked on an existing committed ADR, `HasChanges: false` is expected and acceptable201202After skill invocation:203204- [ ] Debate log exists at `.agents/critique/ADR-NNN-debate-log.md`205- [ ] ADR status updated using the frontmatter enum below; use prose for review nuance206- [ ] Frontmatter `status` field present and a valid enum value: one of207 `proposed | accepted | rejected | deprecated | superseded` (ADR-073).208 A missing or out-of-enum `status` is a P1 blocker; the frontmatter enum is209 authoritative for tooling, the prose `## Status` carries the human nuance.210- [ ] If this review transitions `status` to `accepted`: the same change carries211 adr-review debate-log evidence at `.agents/critique/ADR-NNN-debate-log.md`212 (ADR-073 Phase-3 acceptance gate). A hand-edit to `accepted` with no213 debate-log artifact is a forgeable approval signal and MUST be rejected.214<!-- vendor-portability: declared. adr-review checks accepted-transition evidence under .agents/critique/; a consumer repo without it reports missing evidence, not a silent pass. Issue #2050. -->215- [ ] All P0 issues addressed or documented216- [ ] Dissent captured for Disagree-and-Commit positions217- [ ] Recommendations provided to orchestrator218219## Anti-Patterns220221### Process Anti-Patterns222223| Avoid | Why | Instead |224|-------|-----|---------|225| Single-agent ADR review | Misses domain expertise | Use full 6-agent debate |226| Skipping Phase 0 | Duplicates existing work | Always research first |227| Ignoring D&C dissent | Loses important context | Document all reservations |228| Manual ADR monitoring | Error-prone | Use detect_adr_changes.py |229| Deleting accepted ADRs without archive | Loses knowledge | Always archive accepted ADRs |230231### Review Anti-Patterns (Zimmermann)232233Each agent should self-check against these. Phase 2 consolidation flags violations.234235| Anti-Pattern | Problem | Detection |236|-------------|---------|-----------|237| **Pass Through** | Few/no comments, document barely read | Agent produces no substantive findings |238| **Copy Edit** | Focuses on wording, ignores content | All findings editorial, none architectural |239| **Siding/Dead End** | Comments switch topic, deviate from ADR | Agent drifts from decision at hand |240| **Self Promotion** | Recommends reviewer's preferred solution | Agent pushes technology without objective rationale |241| **Power Game** | Authority claims instead of technical arguments | Agent uses position over evidence |242| **Offended Reaction** | Defends criticized position subjectively | Agent reacts emotionally to rationale |243| **Groundhog Day** | Same message repeated across rounds | Agent re-raises resolved issues |244245See [zimmermann-review-guidance.md](references/zimmermann-review-guidance.md) for full practices and pledges.246247## References248249| Document | Content |250|----------|---------|251| [debate-protocol.md](references/debate-protocol.md) | Full Phases 0-4 workflow |252| [deletion-workflow.md](references/deletion-workflow.md) | Phases D1-D4 workflow |253| [issue-resolution.md](references/issue-resolution.md) | P0/P1/P2 handling and deferral |254| [artifacts.md](references/artifacts.md) | Output formats and templates |255| [agent-prompts.md](references/agent-prompts.md) | Detailed agent prompt templates |256| [zimmermann-review-guidance.md](references/zimmermann-review-guidance.md) | Review practices, 7 anti-patterns, checklist, reviewer pledge (Zimmermann 2023) |