dev-playbooks 1.2.8 → 1.3.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dev-playbooks",
3
- "version": "1.2.8",
3
+ "version": "1.3.0",
4
4
  "description": "AI-powered spec-driven development workflow",
5
5
  "keywords": [
6
6
  "devbooks",
@@ -0,0 +1,161 @@
1
+ # Spec Structure Template
2
+
3
+ > This template defines the standard structure for Spec truth files, ensuring Specs are verifiable, traceable, and can drive test generation.
4
+
5
+ ## File Location
6
+
7
+ ```
8
+ <truth-root>/specs/<capability>/spec.md
9
+ ```
10
+
11
+ ## Standard Structure
12
+
13
+ ```markdown
14
+ ---
15
+ # Metadata (required)
16
+ capability: <capability-name>
17
+ owner: @<owner>
18
+ last_verified: YYYY-MM-DD
19
+ last_referenced_by: <last-referencing-change-id>
20
+ health: active | stale | deprecated
21
+ freshness_check: monthly | quarterly | on-change
22
+ ---
23
+
24
+ # <Capability Name> Specification
25
+
26
+ ## Glossary
27
+
28
+ > Capability-specific terms, consistent with `<truth-root>/_meta/glossary.md`.
29
+
30
+ | Term | Definition | Constraints |
31
+ |------|------------|-------------|
32
+ | Order | Order entity | Must have at least one OrderItem |
33
+ | OrderItem | Order line item | qty > 0, price >= 0 |
34
+
35
+ ## Invariants
36
+
37
+ > Constraints that must always hold; violations are system bugs.
38
+
39
+ | ID | Description | Verification |
40
+ |----|-------------|--------------|
41
+ | INV-001 | Order total = SUM(item.price * item.qty) | A (automated test) |
42
+ | INV-002 | Inventory quantity >= 0 | A (automated test) |
43
+ | INV-003 | Shipped orders cannot be cancelled | A (state machine test) |
44
+
45
+ ## Contracts
46
+
47
+ ### Preconditions
48
+
49
+ | ID | Operation | Condition | Violation Behavior |
50
+ |----|-----------|-----------|-------------------|
51
+ | PRE-001 | Create order | user.isAuthenticated | Return 401 |
52
+ | PRE-002 | Pay order | order.status == 'pending' | Return 400 |
53
+
54
+ ### Postconditions
55
+
56
+ | ID | Operation | Guarantee |
57
+ |----|-----------|-----------|
58
+ | POST-001 | Create order success | Generate unique order.id |
59
+ | POST-002 | Payment success | inventory.decreased(qty) |
60
+
61
+ ## State Machine
62
+
63
+ > If this capability involves state transitions, a state machine must be defined.
64
+
65
+ ### State Set
66
+
67
+ ```
68
+ States: {Created, Paid, Shipped, Done, Cancelled}
69
+ ```
70
+
71
+ ### Transition Rules
72
+
73
+ | Current State | Action | Target State | Condition |
74
+ |---------------|--------|--------------|-----------|
75
+ | Created | pay | Paid | payment.success |
76
+ | Created | cancel | Cancelled | - |
77
+ | Paid | ship | Shipped | inventory.reserved |
78
+ | Paid | refund | Cancelled | - |
79
+ | Shipped | deliver | Done | - |
80
+
81
+ ### Forbidden Transitions
82
+
83
+ | Current State | Action | Reason |
84
+ |---------------|--------|--------|
85
+ | Shipped | cancel | Violates INV-003 |
86
+ | Done | * | Terminal state, cannot exit |
87
+ | Cancelled | * | Terminal state, cannot exit |
88
+
89
+ ## Requirements
90
+
91
+ ### REQ-001: <Requirement Title>
92
+
93
+ **Description**: <one-sentence description>
94
+
95
+ **SHALL/SHOULD/MAY**:
96
+ - The system **SHALL** ...
97
+ - The system **SHOULD** ...
98
+
99
+ **Trace**: AC-001 (from design.md)
100
+
101
+ #### Scenario: <scenario-name>
102
+
103
+ - **GIVEN** user is logged in and cart is non-empty
104
+ - **WHEN** user clicks "Submit Order"
105
+ - **THEN** system creates order and returns order ID
106
+
107
+ **Data Instances** (boundary conditions):
108
+
109
+ | Input | Expected Output | Notes |
110
+ |-------|-----------------|-------|
111
+ | qty=1, price=100 | total=100 | Normal value |
112
+ | qty=0 | Reject | Boundary - zero |
113
+ | qty=-1 | Reject | Boundary - negative |
114
+
115
+ ---
116
+
117
+ ## Change History
118
+
119
+ | Date | Change Package | Changes |
120
+ |------|----------------|---------|
121
+ | 2024-01-16 | 20240116-1030-add-cancel | Add cancel order scenario |
122
+ ```
123
+
124
+ ## Usage Guide
125
+
126
+ ### 1. Who Writes Specs?
127
+
128
+ - **spec-contract skill**: Creates/updates spec deltas
129
+ - **archiver skill**: Merges spec deltas into truth-root
130
+
131
+ ### 2. Who Reads Specs?
132
+
133
+ | Skill | Reading Purpose |
134
+ |-------|-----------------|
135
+ | design-doc | Check if design conflicts with existing Specs, reference REQ-xxx |
136
+ | test-owner | Generate tests from contracts/state machines |
137
+ | impact-analysis | Identify affected Specs |
138
+ | code-review | Check terminology consistency |
139
+ | archiver | Update metadata, build reference chain |
140
+
141
+ ### 3. Test Generation Mapping
142
+
143
+ | Spec Element | Generated Test Type |
144
+ |--------------|---------------------|
145
+ | INV-xxx | Invariant tests |
146
+ | PRE-xxx | Precondition tests (satisfied + violated) |
147
+ | POST-xxx | Postcondition tests |
148
+ | State Transition | State transition tests |
149
+ | Forbidden Transition | Forbidden transition tests |
150
+ | Data Instance Table | Parameterized test cases |
151
+
152
+ ### 4. Health Detection
153
+
154
+ The `health` field in Spec files is automatically detected by entropy-monitor:
155
+
156
+ | Condition | health Status |
157
+ |-----------|---------------|
158
+ | last_verified < 90 days | `active` |
159
+ | last_verified > 90 days | `stale` (needs review) |
160
+ | Explicitly marked deprecated | `deprecated` |
161
+ | last_referenced_by empty for >6 months | Recommend deletion |
@@ -120,6 +120,32 @@ Merge change package spec artifacts into `<truth-root>`:
120
120
  | `<change-root>/<change-id>/specs/**` | `<truth-root>/specs/**` | Incremental merge |
121
121
  | `<change-root>/<change-id>/contracts/**` | `<truth-root>/contracts/**` | Versioned merge |
122
122
 
123
+ **Spec Metadata Update** (must execute during merge):
124
+
125
+ When merging specs into truth-root, the following metadata must be updated:
126
+
127
+ ```yaml
128
+ # Update in each merged/referenced spec file header
129
+ ---
130
+ last_referenced_by: <change-id> # Last change package referencing this spec
131
+ last_verified: <archive-date> # Last verification date
132
+ health: active # Health status: active | stale | deprecated
133
+ ---
134
+ ```
135
+
136
+ **Metadata Update Rules**:
137
+
138
+ | Scenario | Update Behavior |
139
+ |----------|-----------------|
140
+ | New Spec | Create complete metadata header |
141
+ | Modify existing Spec | Update `last_referenced_by` and `last_verified` |
142
+ | Spec referenced by design doc but not modified | Update only `last_referenced_by` |
143
+ | Marked as deprecated | Set `health: deprecated` |
144
+
145
+ **Building Reference Traceability Chain**:
146
+
147
+ During archiving, archiver automatically scans the "Affected Specs" declared in design.md and updates the `last_referenced_by` field for these Specs, even if they weren't directly modified. This establishes a reverse traceability chain from Specs to change packages.
148
+
123
149
  ### Step 4: Architecture Merge
124
150
 
125
151
  > **Design Decision**: C4 architecture changes are recorded in design.md's Architecture Impact section and merged into truth by Archiver during archiving.
@@ -13,6 +13,10 @@ Inputs (provided by me):
13
13
  - Glossary / ubiquitous language (if present): `<truth-root>/_meta/glossary.md`
14
14
  - High-ROI pitfalls list (if present): `<truth-root>/engineering/pitfalls.md`
15
15
 
16
+ **Required Spec Truth Reading** (mandatory before review):
17
+ - `<truth-root>/specs/**`: existing spec files
18
+ - Purpose: verify code naming/structure aligns with terminology and contracts defined in Specs
19
+
16
20
  Hard constraints (must follow):
17
21
  1) Output only review findings and concrete change suggestions; do not directly modify `tests/` or design documents.
18
22
  2) Do not debate business correctness (tests/specs decide that); focus only on maintainability and engineering quality.
@@ -64,6 +68,12 @@ Review focus (must cover):
64
68
  - Is the same concept named inconsistently across modules (e.g., User/Account/Member mixed)?
65
69
  - Is Entity vs Value Object modeled correctly? (Entity has an ID; VO has no ID and is immutable.)
66
70
 
71
+ **Spec Truth Terminology Alignment** (must check):
72
+ - Do code names match terminology defined in `<truth-root>/specs/`?
73
+ - Do state names/enum values match state machine definitions in Specs?
74
+ - Do method names reflect actions/transitions in Specs? (e.g., `cancel()` corresponds to `order --[cancel]--> cancelled`)
75
+ - If naming inconsistencies are found, mark as "terminology drift risk" and recommend unification
76
+
67
77
  ---
68
78
 
69
79
  ## Invariant Protection (must check)
@@ -18,6 +18,10 @@ Inputs (provided by me):
18
18
  - Chat history
19
19
  - Glossary / ubiquitous language (if present): `<truth-root>/_meta/glossary.md`
20
20
 
21
+ **Required Spec Truth Reading** (mandatory before designing):
22
+ - `<truth-root>/specs/**`: existing spec files (REQ/Invariants/Contracts)
23
+ - Purpose: ensure design does not conflict with existing specs and explicitly references affected specs
24
+
21
25
  Tasks:
22
26
  1) Output a design doc (not an implementation plan, not code).
23
27
  2) The doc must be concrete enough to drive acceptance and task decomposition: clear boundaries, contracts, red lines, and acceptance.
@@ -182,7 +186,13 @@ Limits:
182
186
 
183
187
  Additional requirements (for traceability in large projects):
184
188
  - Explicitly list affected capabilities/modules/external contracts (names and boundaries only; no implementation)
185
- - If external interfaces/APIs/events/data structures are involved: specify versioning strategy in the Core data and event contracts section (`schema_version`, compatibility window, migration/replay principles)
186
- - If architecture boundaries change: add an optional **C4 Delta** subsection under Target architecture describing what C1/C2/C3 elements were added/modified/removed (full maps are maintained by the C4 map maintainer)
189
+ - If external interfaces/APIs/events/data structures are involved: specify versioning strategy in the "Core data and event contracts" section (`schema_version`, compatibility window, migration/replay principles)
190
+ - If architecture boundaries change: add an optional **C4 Delta** subsection under "Target architecture" describing what C1/C2/C3 elements were added/modified/removed (full maps are maintained by the C4 map maintainer)
191
+
192
+ **Spec Truth Reference Requirements** (core traceability):
193
+ - **Must declare affected existing Specs**: list spec files under `<truth-root>/specs/` impacted by this design
194
+ - **Must reference REQ/Invariant**: each constraint in the design must trace back to REQ-xxx or INV-xxx in Specs
195
+ - **Gap declaration**: if design cannot satisfy an existing REQ, explicitly declare it as a Gap with justification
196
+ - **Terminology consistency**: domain terms must match `<truth-root>/_meta/glossary.md`; new terms must be declared and proposed for glossary addition
187
197
 
188
198
  Now output the Design Doc in Markdown. Do not output extra explanations.
@@ -17,6 +17,10 @@ Input materials (provided by me):
17
17
  - Current truth source: `<truth-root>/`
18
18
  - Codebase (read-only analysis)
19
19
 
20
+ **Required Spec Truth Reading** (mandatory before analysis):
21
+ - `<truth-root>/specs/**`: existing spec files
22
+ - Purpose: identify which existing Specs (REQ/Invariants/Contracts) are impacted by this change
23
+
20
24
  Hard constraints (must follow):
21
25
  - Impact analysis first, code later
22
26
  - No "decorative/surface refactors" unless they directly reduce risk for this change
@@ -53,6 +57,19 @@ Output format (MECE):
53
57
  - Are external system/API changes isolated by ACL? (External model changes must not leak into internal models)
54
58
  - Are there direct calls to external APIs bypassing the adapter layer?
55
59
  - If adding external dependency: suggested ACL interface definition
60
+ - **F. Affected Spec Truth** (required):
61
+ - List spec files under `<truth-root>/specs/` impacted by this change
62
+ - For each affected Spec, mark impact type:
63
+ - `[BREAK]`: breaks existing REQ/Invariant (needs Spec update or redesign)
64
+ - `[EXTEND]`: extends existing capability (needs new REQ/Scenario)
65
+ - `[DEPRECATE]`: deprecates existing capability (needs Spec marked deprecated)
66
+ - Output format:
67
+ ```
68
+ Affected Specs:
69
+ - [EXTEND] specs/order/spec.md - add cancel order scenario
70
+ - [BREAK] specs/payment/spec.md - INV-002 "paid orders cannot be cancelled" needs modification
71
+ - [DEPRECATE] specs/legacy-checkout/spec.md - entire spec deprecated
72
+ ```
56
73
  4) Compatibility and Risks
57
74
  - Breaking changes (explicitly mark if any)
58
75
  - Migration/rollback paths
@@ -18,6 +18,10 @@ Inputs (provided by me):
18
18
  - Project profile (if present; follow formatting conventions first): `<truth-root>/_meta/project-profile.md`
19
19
  - Glossary / ubiquitous language (if present): `<truth-root>/_meta/glossary.md`
20
20
 
21
+ **Spec Truth Conflict Detection** (must complete before writing):
22
+ - **Must read existing Specs**: before writing spec delta, read all specs under `<truth-root>/specs/**`
23
+ - **Purpose**: detect conflicts between new spec delta and existing Specs
24
+
21
25
  Hard constraints (must follow):
22
26
  - Output a **spec delta**, not a design doc, not an implementation plan, not code
23
27
  - Do not write implementation details (class names/function names/specific production file paths/library calls)
@@ -26,6 +30,13 @@ Hard constraints (must follow):
26
30
  - Avoid duplicating capabilities: search/reuse/modify existing capability specs first; create a new capability only when necessary
27
31
  - Ubiquitous language: if `<truth-root>/_meta/glossary.md` exists, you must use those terms; do not invent new terms
28
32
 
33
+ **Conceptual Integrity Guardian** (conflict detection rules):
34
+ - **Terminology conflict**: does the new spec use terminology inconsistent with existing specs? (e.g., `Order.status` vs `Order.state`)
35
+ - **Rule conflict**: do new spec rules contradict existing spec rules? (e.g., "paid orders can be cancelled" vs "paid orders cannot be cancelled")
36
+ - **Boundary conflict**: does the new spec's responsibility overlap with existing specs? (e.g., two specs both claim ownership of payment logic)
37
+ - **Invariant compatibility**: does the new spec violate Invariants declared in existing specs?
38
+ - **Conflict report**: if conflicts are detected, declare them at the top of the spec delta with resolution suggestions; archiving is forbidden until conflicts are resolved
39
+
29
40
  Workshop (internal step; do not output separately):
30
41
  - Before writing the spec, run a “virtual three-amigos workshop” (business/dev/test) and incorporate consensus + edge examples into Requirements/Scenarios; do not output workshop notes.
31
42
 
@@ -11,6 +11,10 @@ Inputs (provided by me):
11
11
  - Design/spec documents
12
12
  - Test methodology references (see: `references/test-driven-development.md`)
13
13
 
14
+ **Required Spec Truth Reading** (mandatory before testing):
15
+ - `<truth-root>/specs/**`: existing spec files
16
+ - Purpose: auto-generate test skeletons from contracts (Preconditions/Postconditions/Invariants) and state machines
17
+
14
18
  Artifact locations (directory conventions; protocol-agnostic):
15
19
  - Test plan + traceability should live at: `<change-root>/<change-id>/verification.md`
16
20
  - Test code changes live in the repo’s normal place (e.g., `tests/`), but traceability matrices and MANUAL-* checklists should live in the change package (`verification.md`), not scattered into external `docs/`
@@ -63,6 +67,16 @@ Core principles (must follow):
63
67
  3) **Deterministic and reproducible**: default to offline, no real external services; freeze time; fix random seeds; use fakes/mocks; fixed inputs.
64
68
  4) **Few but strong (risk-driven)**: prioritize the highest-risk failure modes (isolation, idempotency/replay, quality gates, error cascades, contract drift).
65
69
 
70
+ **Contract Tests from Spec Truth** (must follow):
71
+ - **Invariants → invariant tests**: each `[Invariant]` or `INV-xxx` in Specs must have a corresponding test
72
+ - **Preconditions → precondition tests**: each `PRE-xxx` generates two tests: (1) success when satisfied (2) rejection when violated
73
+ - **Postconditions → postcondition tests**: each `POST-xxx` generates result verification tests
74
+ - **State Machine → transition tests**: if Spec contains state machine, generate:
75
+ - All legal transition path tests
76
+ - All forbidden transition rejection tests
77
+ - Terminal state cannot exit tests
78
+ - **REQ coverage traceability**: each test must annotate which REQ-xxx/INV-xxx/PRE-xxx/POST-xxx it covers (in comments or verification.md)
79
+
66
80
  Coverage targets (debate edition; guidance only):
67
81
 
68
82
  | Code type | Coverage target | Rationale |