claude-blueprint 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/.claude-plugin/plugin.json +26 -0
  2. package/LICENSE +21 -0
  3. package/README.md +387 -0
  4. package/agents/adr-architect-cartographer.md +179 -0
  5. package/agents/adr-bug-surface-mapper.md +154 -0
  6. package/agents/adr-compliance-auditor.md +146 -0
  7. package/agents/adr-consistency-auditor.md +131 -0
  8. package/agents/adr-conways-law-analyzer.md +170 -0
  9. package/agents/adr-devils-advocate.md +161 -0
  10. package/agents/adr-impact-analyzer.md +135 -0
  11. package/agents/adr-maintainability-assessor.md +162 -0
  12. package/agents/adr-researcher.md +134 -0
  13. package/agents/adr-retrospective.md +204 -0
  14. package/agents/adr-testing-strategy-evaluator.md +164 -0
  15. package/agents/persona.md +36 -0
  16. package/bin/cli.js +33 -0
  17. package/commands/architect.md +66 -0
  18. package/commands/audit.md +41 -0
  19. package/commands/blueprint.md +63 -0
  20. package/commands/debt.md +102 -0
  21. package/commands/digest.md +106 -0
  22. package/commands/drift.md +104 -0
  23. package/commands/eli5.md +149 -0
  24. package/commands/evaluate.md +61 -0
  25. package/commands/fitness.md +119 -0
  26. package/commands/guard.md +102 -0
  27. package/commands/health.md +139 -0
  28. package/commands/help.md +119 -0
  29. package/commands/hooks.md +131 -0
  30. package/commands/impact.md +38 -0
  31. package/commands/init.md +229 -0
  32. package/commands/list.md +51 -0
  33. package/commands/new.md +74 -0
  34. package/commands/rearchitect.md +45 -0
  35. package/commands/retro.md +50 -0
  36. package/commands/review.md +50 -0
  37. package/commands/search.md +28 -0
  38. package/commands/status.md +189 -0
  39. package/commands/timeline.md +113 -0
  40. package/commands/transition.md +83 -0
  41. package/config/lifecycle.toml +71 -0
  42. package/config/relationships.toml +22 -0
  43. package/config/state.toml +21 -0
  44. package/config/taxonomy.toml +118 -0
  45. package/package.json +27 -0
  46. package/src/claude-md.js +57 -0
  47. package/src/install.js +83 -0
  48. package/src/paths.js +25 -0
  49. package/src/verify.js +95 -0
@@ -0,0 +1,189 @@
1
+ ---
2
+ name: blueprint:status
3
+ description: >
4
+ Architecture governance dashboard with visual knowledge graph. Shows ADR status overview,
5
+ decision debt score, operation history, relationship graph, and governance health metrics
6
+ in an IDE-like interface. Use when: "blueprint status", "architecture dashboard", "show
7
+ governance health", "adr graph", "decision graph", "how are our decisions?", or just
8
+ "status".
9
+ ---
10
+
11
+ # Architecture Governance Dashboard
12
+
13
+ Renders a rich, visual governance dashboard with a knowledge graph of ADR relationships.
14
+ Two output modes: terminal (structured text) and browser (interactive HTML).
15
+
16
+ ## Shared Context
17
+
18
+ Read from parent `blueprint/` skill directory:
19
+ - `config/state.toml` — last operation dates, ADR directory
20
+ - `config/relationships.toml` — ADR dependency graph
21
+ - `config/lifecycle.toml` — status definitions
22
+ - `config/taxonomy.toml` — severity levels, categories
23
+
24
+ ## Process
25
+
26
+ ### Step 1: Gather All Metrics
27
+
28
+ **ADR inventory:**
29
+ - Read all ADR files, extract status, date, category, severity
30
+ - Count by status: Accepted, Proposed, Rejected, Deferred, Deprecated, Superseded
31
+ - Identify the most recent ADR and oldest unreviewed Proposed ADR
32
+
33
+ **Decision debt:**
34
+ - Count Deferred ADRs
35
+ - For each, check trigger conditions against codebase (same logic as `/blueprint:debt`)
36
+ - Calculate debt score: Σ(severity × age_months × dependency_count)
37
+ - Flag any with triggered conditions
38
+
39
+ **Operations recency:**
40
+ - From `config/state.toml`: last audit, evaluation, retro, drift check dates
41
+ - Calculate days since each
42
+
43
+ **Relationship graph:**
44
+ - From `config/relationships.toml`: nodes (ADRs) and edges (dependencies, conflicts, supersessions)
45
+ - If graph is empty/sparse, suggest running `/blueprint:impact` on key ADRs to populate it
46
+
47
+ **Fitness function coverage:**
48
+ - Glob for `tests/architecture/` or equivalent
49
+ - Count how many accepted ADRs have corresponding fitness functions
50
+ - Calculate coverage percentage
51
+
52
+ **Guard status:**
53
+ - Check if pre-commit hook is installed (grep settings.json or .git/hooks/)
54
+
55
+ ### Step 2: Render Terminal Dashboard
56
+
57
+ Always display this first:
58
+
59
+ ```
60
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
61
+ BLUEPRINT ► STATUS
62
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
63
+
64
+ ## Decisions
65
+
66
+ Accepted ██████████████████████████████ 28
67
+ Proposed ██ 2 ← needs review
68
+ Deferred █ 1 ← 1 trigger met
69
+ Rejected ░ 0
70
+ Superseded ░ 0
71
+ Total: 31
72
+
73
+ ## Governance Health
74
+
75
+ | Metric | Value | Status |
76
+ |---------------------|-------------|--------|
77
+ | Decision debt score | 14 | ⚠ |
78
+ | Last audit | 12 days ago | ✓ |
79
+ | Last evaluation | never | ✗ |
80
+ | Last retro | 3 days ago | ✓ |
81
+ | Last drift check | never | ✗ |
82
+ | Fitness coverage | 8/12 (67%) | ⚠ |
83
+ | Guard hook | not installed| ✗ |
84
+
85
+ ## Relationship Graph (text)
86
+
87
+ ADR-0002 (React+FastAPI) ◄── ADR-0003 (two-stage pipeline)
88
+ │ │
89
+ └── ADR-0008 (constrain └── ADR-0005 (persona)
90
+ to ICD-10-AM)
91
+
92
+ ADR-0006 (defer auth) ···· DEFERRED [trigger: user count >50]
93
+
94
+ Clusters: 3 connected components, 2 isolated ADRs
95
+
96
+ ## Suggested Actions
97
+
98
+ 1. /blueprint:review 29 — Proposed ADR awaiting review
99
+ 2. /blueprint:evaluate — No evaluation on record
100
+ 3. /blueprint:debt — 1 deferred trigger appears met
101
+ ```
102
+
103
+ ### Step 3: Generate Interactive HTML Dashboard
104
+
105
+ After the terminal display, generate an interactive HTML file with a visual knowledge
106
+ graph and offer to open it:
107
+
108
+ ```bash
109
+ # Write to a temp file and open
110
+ /tmp/blueprint-dashboard-{timestamp}.html
111
+ ```
112
+
113
+ **The HTML dashboard includes:**
114
+
115
+ **Tab 1: Knowledge Graph (main view)**
116
+
117
+ An interactive graph visualization using inline JavaScript (no external dependencies):
118
+ - **Nodes** = ADRs, colored by status:
119
+ - Accepted: blue
120
+ - Proposed: yellow
121
+ - Deferred: orange
122
+ - Rejected: gray
123
+ - Deprecated: faded gray
124
+ - Superseded: gray with strikethrough
125
+ - **Node size** = severity (High = large, Medium = medium, Low = small)
126
+ - **Edges** = relationships, styled by type:
127
+ - DEPENDS_ON: solid arrow
128
+ - CONFLICTS: red dashed line
129
+ - SUPERSEDES: thick arrow with ×
130
+ - MODIFIES_SCOPE: dotted arrow
131
+ - RELATED: thin gray line
132
+ - **Hover** on a node: show ADR title, status, date, category
133
+ - **Click** on a node: show full ADR summary in a side panel
134
+ - **Clusters** visually grouped by category (Technology, Architecture, etc.)
135
+ - **Force-directed layout** using simple physics simulation
136
+
137
+ Use a self-contained SVG or Canvas renderer — no D3.js or external CDN.
138
+ The file must work offline with zero dependencies.
139
+
140
+ **Tab 2: Decision Timeline**
141
+
142
+ Horizontal timeline showing ADRs by date:
143
+ - Color-coded by status
144
+ - Supersession chains shown as connecting arcs
145
+ - Hover for details
146
+
147
+ **Tab 3: Governance Metrics**
148
+
149
+ The same metrics as the terminal dashboard but with:
150
+ - Sparkline-style history (from state.toml evaluation/retro history)
151
+ - Color-coded health indicators
152
+ - Clickable actions that copy the relevant `/blueprint:` command
153
+
154
+ **Tab 4: Decision Debt**
155
+
156
+ Table of deferred decisions with:
157
+ - Trigger conditions and their status (met/approaching/not yet)
158
+ - Debt score with color coding
159
+ - Age in days
160
+ - Dependency count
161
+
162
+ ### Step 4: Open Dashboard
163
+
164
+ ```bash
165
+ # Write HTML to temp file
166
+ # Open in browser (platform-specific)
167
+ open /tmp/blueprint-dashboard-{timestamp}.html # macOS
168
+ xdg-open /tmp/blueprint-dashboard-{timestamp}.html # Linux
169
+ start /tmp/blueprint-dashboard-{timestamp}.html # Windows
170
+ ```
171
+
172
+ Tell the user: "Dashboard opened in your browser. The terminal summary above is always
173
+ available without the browser."
174
+
175
+ ### Step 5: Update State
176
+
177
+ Set `last_status_check` in `config/state.toml` to today.
178
+
179
+ ## Fallback
180
+
181
+ If the project has no ADRs yet, show:
182
+
183
+ ```
184
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
185
+ BLUEPRINT ► STATUS
186
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
187
+
188
+ No ADRs found. Run /blueprint:init to bootstrap from existing context.
189
+ ```
@@ -0,0 +1,113 @@
1
+ ---
2
+ name: blueprint:timeline
3
+ description: >
4
+ Generate a narrative timeline of architectural evolution through ADR history. Shows how
5
+ decisions built on each other, when things changed, and the arc of the architecture. Use
6
+ when: "show architecture timeline", "decision history", "how did we get here?", "architecture
7
+ evolution", "timeline of decisions", or for onboarding and strategic planning.
8
+ ---
9
+
10
+ # Architecture Evolution Timeline
11
+
12
+ The story of how the architecture evolved, told through its decisions. Not a git log —
13
+ the narrative arc that explains how each decision enabled or constrained the next.
14
+
15
+ ## Shared Context
16
+
17
+ Read from parent `blueprint/` skill directory:
18
+ - `config/state.toml` — ADR directory
19
+ - `config/relationships.toml` — supersession chains, dependencies
20
+
21
+ ## Process
22
+
23
+ ### Step 1: Read and Sort
24
+
25
+ Read all ADR files. Extract:
26
+ - ADR number, title, status
27
+ - Date proposed and date decided
28
+ - Supersedes/superseded-by relationships
29
+ - Category from taxonomy
30
+
31
+ Sort chronologically by date proposed.
32
+
33
+ ### Step 2: Identify Eras
34
+
35
+ Group decisions into eras — periods where related decisions clustered:
36
+
37
+ - **Foundation era:** First decisions that established the base (stack, architecture, deployment)
38
+ - **Feature eras:** Groups of decisions related to specific capabilities
39
+ - **Pivot points:** Superseded decisions that mark a change in direction
40
+ - **Current era:** Recent and pending decisions
41
+
42
+ ### Step 3: Build the Narrative
43
+
44
+ ```
45
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
46
+ BLUEPRINT ► ARCHITECTURE TIMELINE
47
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
48
+
49
+ ## [Era 1: Foundation] — [date range]
50
+
51
+ [Narrative paragraph: what was decided and why, how decisions
52
+ connected to each other]
53
+
54
+ [date] ── ADR-0001: [title] ✓ Accepted
55
+ └── ADR-0002: [title] ✓ Accepted
56
+ └── ADR-0003: [title] ✓ Accepted
57
+ └── ADR-0008: [title] (depends on) ✓ Accepted
58
+
59
+ [1-2 sentences: what this era established and what it enabled]
60
+
61
+ ## [Era 2: ...] — [date range]
62
+
63
+ [date] ── ADR-0009: [title] ✓ Accepted
64
+ [date] ── ADR-0010: [title] ✗ Rejected
65
+ └── ADR-0011: [title] (replaced 0010) ✓ Accepted
66
+
67
+ [Note rejections and supersessions — these are the most interesting
68
+ parts of the story. Why did the team change direction?]
69
+
70
+ ## Pivot Points
71
+
72
+ [Decisions that marked a significant change in direction:]
73
+
74
+ - **[date]: ADR-NNNN superseded ADR-MMMM** — [why the original decision
75
+ was replaced and what changed in the understanding]
76
+
77
+ ## Current State
78
+
79
+ Active decisions: [N]
80
+ Pending review: [M]
81
+ Deferred: [K] (with triggers)
82
+ Superseded: [J]
83
+
84
+ ## What's Next
85
+
86
+ [Based on deferred decisions, pending proposals, and decision debt:]
87
+ - [Decision that's coming up]
88
+ - [Trigger that's approaching]
89
+ ```
90
+
91
+ ### Step 4: Visualize Supersession Chains
92
+
93
+ If any ADRs have been superseded, show the chain:
94
+
95
+ ```
96
+ ADR-0003 (original) ──superseded by──→ ADR-0015 ──superseded by──→ ADR-0022 (current)
97
+ "Use Redis" "Use Memcached" "Use built-in cache"
98
+ ```
99
+
100
+ These chains tell the story of how understanding evolved.
101
+
102
+ ### Step 5: Connect to Relationship Graph
103
+
104
+ Use `config/relationships.toml` to show dependency clusters — groups of
105
+ ADRs that must be considered together. A dependency cluster is a set
106
+ of decisions where changing one requires reviewing all the others.
107
+
108
+ ## Tone
109
+
110
+ This is a story, not a report. It should read like a project retrospective
111
+ written by someone who understands why things happened, not just what happened.
112
+ The senior engineer persona applies but with a historian's perspective —
113
+ connecting cause and effect across time.
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: blueprint:transition
3
+ description: >
4
+ Direct lifecycle transitions for ADRs — accept, reject, defer, or deprecate without spawning
5
+ agents. Use when: "accept adr N", "reject adr N", "defer adr N", "deprecate adr N". For
6
+ review with devil's advocate challenge, use /blueprint:review instead. For superseding, use
7
+ /blueprint:rearchitect instead.
8
+ ---
9
+
10
+ # ADR Lifecycle Transitions
11
+
12
+ Handle simple status transitions inline — no agent spawning. Read the state machine from
13
+ `config/lifecycle.toml` to validate transitions and requirements.
14
+
15
+ ## Shared Context
16
+
17
+ Read from parent `adr/` directory:
18
+ - `config/lifecycle.toml` — valid transitions, requirements, error messages
19
+ - `config/state.toml` — ADR directory location
20
+ - `config/relationships.toml` — for updating edges on supersession
21
+
22
+ ## Supported Transitions
23
+
24
+ ### Accept (`/blueprint:transition accept N`)
25
+
26
+ Proposed → Accepted per `lifecycle.toml`.
27
+
28
+ 1. Read the ADR, verify status is Proposed
29
+ 2. Set status to `Accepted`
30
+ 3. Set `Date decided` to today
31
+ 4. Update README.md index
32
+ 5. Commit: `docs(adr): accept ADR-NNNN <title>`
33
+
34
+ ### Reject (`/blueprint:transition reject N`)
35
+
36
+ Proposed → Rejected per `lifecycle.toml`.
37
+
38
+ 1. Read the ADR, verify status is Proposed
39
+ 2. Ask for rejection reason
40
+ 3. Append reason to Consequences section
41
+ 4. Set status to `Rejected`
42
+ 5. Update README.md index
43
+ 6. Commit: `docs(adr): reject ADR-NNNN <title>`
44
+
45
+ ### Defer (`/blueprint:transition defer N`)
46
+
47
+ Proposed → Deferred per `lifecycle.toml`.
48
+
49
+ 1. Read the ADR, verify status is Proposed
50
+ 2. Ask for trigger condition (when to revisit)
51
+ 3. Add trigger to metadata
52
+ 4. Set status to `Deferred`
53
+ 5. Update README.md index
54
+ 6. Commit: `docs(adr): defer ADR-NNNN <title>`
55
+
56
+ ### Deprecate (`/blueprint:transition deprecate N`)
57
+
58
+ Accepted → Deprecated per `lifecycle.toml`.
59
+
60
+ 1. Read the ADR, verify status is Accepted
61
+ 2. Ask for deprecation reason
62
+ 3. Add deprecation note with date
63
+ 4. Set status to `Deprecated`
64
+ 5. Update README.md index
65
+ 6. Commit: `docs(adr): deprecate ADR-NNNN <title>`
66
+
67
+ ## Invalid Transitions
68
+
69
+ Read `lifecycle.toml.invalid_transitions` for error messages. Present the message and
70
+ suggest the correct action:
71
+ - Rejected → Accepted: "Create a new ADR instead"
72
+ - Proposed → Superseded: "Accept or reject first, then use /blueprint:rearchitect"
73
+ - Proposed → Deprecated: "Use /blueprint:transition reject instead"
74
+
75
+ ## Index Management
76
+
77
+ Every transition updates the README.md index table. Preserve all other content (lifecycle
78
+ diagram, process docs, etc.). Only modify the row for the affected ADR.
79
+
80
+ ## Shorthand Support
81
+
82
+ Users may say "accept adr 3" without the full `/blueprint:transition accept 3` path. The root
83
+ `/blueprint` skill should route these to this sub-skill.
@@ -0,0 +1,71 @@
1
+ # ADR Lifecycle State Machine
2
+ # Agents read this instead of hardcoding lifecycle rules in prose.
3
+
4
+ [statuses.Proposed]
5
+ description = "Decision is drafted and open for discussion. Not yet binding."
6
+ terminal = false
7
+ requires_review = true
8
+
9
+ [statuses.Accepted]
10
+ description = "Decision has been reviewed, approved, and is in effect."
11
+ terminal = false
12
+
13
+ [statuses.Rejected]
14
+ description = "Decision was considered but not adopted. Context preserved."
15
+ terminal = true
16
+
17
+ [statuses.Deferred]
18
+ description = "Decision acknowledged but postponed. Revisit at trigger point."
19
+ terminal = false
20
+ requires_trigger = true
21
+
22
+ [statuses.Deprecated]
23
+ description = "Decision was once accepted but is no longer relevant."
24
+ terminal = true
25
+ requires_reason = true
26
+
27
+ [statuses.Superseded]
28
+ description = "Decision has been replaced by a newer ADR."
29
+ terminal = true
30
+ requires_successor = true
31
+
32
+ # Valid transitions: "From -> To"
33
+
34
+ [transitions."Proposed -> Accepted"]
35
+ action = "accept"
36
+ requires = ["review_or_explicit_accept"]
37
+ side_effects = ["set_date_decided", "update_index"]
38
+
39
+ [transitions."Proposed -> Rejected"]
40
+ action = "reject"
41
+ requires = ["rejection_reason"]
42
+ side_effects = ["append_reason_to_consequences", "update_index"]
43
+
44
+ [transitions."Proposed -> Deferred"]
45
+ action = "defer"
46
+ requires = ["trigger_condition"]
47
+ side_effects = ["add_trigger_to_metadata", "update_index"]
48
+
49
+ [transitions."Accepted -> Deprecated"]
50
+ action = "deprecate"
51
+ requires = ["deprecation_reason"]
52
+ side_effects = ["add_deprecation_note", "update_index"]
53
+
54
+ [transitions."Accepted -> Superseded"]
55
+ action = "supersede"
56
+ requires = ["successor_adr_number"]
57
+ side_effects = ["cross_link_adrs", "update_index_both"]
58
+
59
+ [transitions."Deferred -> Proposed"]
60
+ action = "revisit"
61
+ requires = ["trigger_met"]
62
+ side_effects = ["update_index"]
63
+
64
+ # Invalid transitions with error messages
65
+
66
+ [invalid_transitions]
67
+ "Rejected -> Accepted" = "Cannot accept a rejected ADR. Create a new one instead."
68
+ "Proposed -> Superseded" = "Cannot supersede a proposed ADR. Accept or reject it first."
69
+ "Proposed -> Deprecated" = "Cannot deprecate a proposed ADR. Reject it instead."
70
+ "Deprecated -> Accepted" = "Cannot re-accept a deprecated ADR. Create a new one."
71
+ "Superseded -> Accepted" = "Cannot un-supersede an ADR. The successor is the active decision."
@@ -0,0 +1,22 @@
1
+ # ADR Relationship Graph
2
+ # Built incrementally by the impact analyzer and lifecycle transitions.
3
+ # Run /adr:impact to rebuild edges for a specific ADR.
4
+
5
+ # Edge types:
6
+ # DEPENDS_ON = "Target ADR assumes this ADR remains valid"
7
+ # CONFLICTS = "Target ADR contradicts this ADR"
8
+ # MODIFIES_SCOPE = "Target ADR changes or narrows scope of this ADR"
9
+ # SUPERSEDES = "Target ADR replaces this ADR"
10
+ # RELATED = "ADRs are topically related but independent"
11
+
12
+ # Nodes are added when ADRs are created:
13
+ # [nodes.ADR-0001]
14
+ # title = "Use ADRs for architectural decisions"
15
+ # status = "Accepted"
16
+
17
+ # Edges are added by impact analyzer:
18
+ # [[edges]]
19
+ # from = "ADR-0003"
20
+ # to = "ADR-0008"
21
+ # type = "DEPENDS_ON"
22
+ # detail = "Code constraint ADR depends on pipeline architecture ADR"
@@ -0,0 +1,21 @@
1
+ # ADR System State
2
+ # Auto-updated by ADR skill commands. Do not edit manually unless resetting state.
3
+
4
+ adr_directory = ""
5
+ project_root = ""
6
+
7
+ [last_operations]
8
+ last_audit = ""
9
+ last_evaluation = ""
10
+ last_retro = ""
11
+ last_adr_created = ""
12
+
13
+ # Append entries as: [[evaluation_history]]
14
+ # date = "2026-03-30"
15
+ # dimensions = ["consistency", "bugs", "maintainability", "testing", "conways"]
16
+ # health_score = "ADEQUATE"
17
+
18
+ # Append entries as: [[retro_history]]
19
+ # date = "2026-03-30"
20
+ # verdict = "BAND-AID"
21
+ # adr_created = "0009"
@@ -0,0 +1,118 @@
1
+ # ADR Domain Taxonomy
2
+ # Extensible classification system used by agents. Add categories as the project evolves.
3
+
4
+ # --- Root Cause Categories (used by /adr:retro) ---
5
+
6
+ [root_causes.missing_validation]
7
+ label = "Missing Validation"
8
+ description = "Input wasn't checked at a boundary"
9
+ examples = ["No null check on API response", "Missing schema validation on webhook payload"]
10
+ prevention = "Validation layer at system boundaries"
11
+
12
+ [root_causes.implicit_contract]
13
+ label = "Implicit Contract"
14
+ description = "Two modules depended on undocumented behavior"
15
+ examples = ["Service A assumed Service B always returns arrays", "Module depends on import side effects"]
16
+ prevention = "Explicit interfaces with typed contracts"
17
+
18
+ [root_causes.state_management]
19
+ label = "State Management"
20
+ description = "Mutable state got out of sync"
21
+ examples = ["Cache held stale config after update", "Race condition between concurrent writes"]
22
+ prevention = "Immutable state or explicit synchronization"
23
+
24
+ [root_causes.error_swallowing]
25
+ label = "Error Swallowing"
26
+ description = "Error was caught and silently ignored"
27
+ examples = ["catch (e) {} hiding connection failures", "Promise without .catch()"]
28
+ prevention = "Explicit error handling with logging at every catch"
29
+
30
+ [root_causes.missing_abstraction]
31
+ label = "Missing Abstraction"
32
+ description = "Same logic duplicated, one copy drifted"
33
+ examples = ["Three files parsing dates differently", "Duplicated auth checks with different rules"]
34
+ prevention = "Single source of truth for shared logic"
35
+
36
+ [root_causes.wrong_abstraction]
37
+ label = "Wrong Abstraction"
38
+ description = "Abstraction doesn't fit the actual use case"
39
+ examples = ["Generic handler that special-cases 80% of inputs", "Base class with one implementation"]
40
+ prevention = "Refactor when abstraction obscures more than it simplifies"
41
+
42
+ [root_causes.configuration_drift]
43
+ label = "Configuration Drift"
44
+ description = "Environment-specific behavior not captured in code"
45
+ examples = ["Works locally, breaks in prod", "Hardcoded dev URLs in config"]
46
+ prevention = "Environment parity with infrastructure-as-code"
47
+
48
+ [root_causes.dependency_coupling]
49
+ label = "Dependency Coupling"
50
+ description = "Change in dependency broke assumptions"
51
+ examples = ["Library update changed default behavior", "Transitive dependency conflict"]
52
+ prevention = "Pin versions, wrap external dependencies, test upgrades"
53
+
54
+ [root_causes.missing_test]
55
+ label = "Missing Test"
56
+ description = "No test existed for this scenario"
57
+ examples = ["Happy path tested, error path not", "No regression test after previous fix"]
58
+ prevention = "Anti-pattern tests and boundary testing"
59
+
60
+ [root_causes.architectural_gap]
61
+ label = "Architectural Gap"
62
+ description = "System structure makes this bug class inevitable"
63
+ examples = ["No validation layer between external data and business logic", "No circuit breaker on external calls"]
64
+ prevention = "ADR to address the structural gap"
65
+
66
+ # --- Evaluation Dimensions (used by /adr:evaluate) ---
67
+
68
+ [eval_dimensions.consistency]
69
+ label = "Structural Consistency"
70
+ agent = "adr-consistency-auditor"
71
+ aspects = ["naming", "module_structure", "dependency_direction", "error_handling", "api_patterns", "configuration"]
72
+
73
+ [eval_dimensions.bugs]
74
+ label = "Bug Surface"
75
+ agent = "adr-bug-surface-mapper"
76
+ aspects = ["complexity_hotspots", "coupling", "boundary_integrity", "state_management", "implicit_contracts"]
77
+
78
+ [eval_dimensions.maintainability]
79
+ label = "Maintainability"
80
+ agent = "adr-maintainability-assessor"
81
+ aspects = ["dependency_health", "abstraction_quality", "change_amplification", "cognitive_complexity", "documentation", "technical_debt"]
82
+
83
+ [eval_dimensions.testing]
84
+ label = "Testing Strategy"
85
+ agent = "adr-testing-strategy-evaluator"
86
+ aspects = ["pyramid_health", "risk_coverage", "antipattern_tests", "test_quality", "test_architecture"]
87
+
88
+ [eval_dimensions.conways]
89
+ label = "Conway's Law Alignment"
90
+ agent = "adr-conways-law-analyzer"
91
+ aspects = ["ownership_alignment", "friction_points", "orphaned_modules", "bottlenecks", "scaling_readiness"]
92
+
93
+ # --- Decision Categories ---
94
+
95
+ decision_categories = [
96
+ "Technology Choice",
97
+ "Architecture Pattern",
98
+ "Data Model",
99
+ "API Design",
100
+ "Deployment Strategy",
101
+ "Authentication / Authorization",
102
+ "Integration Strategy",
103
+ "Performance / Scaling",
104
+ "Security / Compliance",
105
+ "Testing Strategy",
106
+ "Process / Workflow",
107
+ ]
108
+
109
+ # --- Severity Levels ---
110
+
111
+ [severity.High]
112
+ description = "Core architectural constraint. Affects multiple components, expensive to reverse."
113
+
114
+ [severity.Medium]
115
+ description = "Significant technical decision. Affects one subsystem, moderately reversible."
116
+
117
+ [severity.Low]
118
+ description = "Local decision. Affects one module, easily reversed."
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "claude-blueprint",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "description": "Architecture Decision Records with teeth — lifecycle management, devil's advocate review, architecture evaluation team, post-fix retrospectives, and compliance auditing for Claude Code.",
6
+ "bin": {
7
+ "blueprint": "./bin/cli.js",
8
+ "claude-blueprint": "./bin/cli.js"
9
+ },
10
+ "files": [
11
+ "bin/",
12
+ "src/",
13
+ ".claude-plugin/",
14
+ "commands/",
15
+ "agents/",
16
+ "config/"
17
+ ],
18
+ "engines": {
19
+ "node": ">=18.0.0"
20
+ },
21
+ "license": "MIT",
22
+ "dependencies": {
23
+ "@inquirer/prompts": "^7.0.0",
24
+ "commander": "^13.0.0",
25
+ "ora": "^8.0.0"
26
+ }
27
+ }