@leeovery/claude-technical-workflows 2.1.29 → 2.1.30

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.
@@ -18,6 +18,7 @@ You receive via the orchestrator's prompt:
18
18
  3. **Plan path** — the implementation plan path
19
19
  4. **Plan format reading adapter path** — how to read tasks from the plan (for determining next phase number)
20
20
  5. **Plan format authoring adapter path** — how to create tasks in the plan
21
+ 6. **plan-index-schema.md** — Canonical plan index structure
21
22
 
22
23
  ## Your Process
23
24
 
@@ -32,26 +33,17 @@ You receive via the orchestrator's prompt:
32
33
 
33
34
  The Plan Index File (`docs/workflow/planning/{topic}/plan.md`) is the single source of truth for planning progress. After creating task files, you **must** append the new phase and task table to its body.
34
35
 
35
- Append at the end of the Plan Index File body:
36
+ Append at the end of the Plan Index File body, following the **Phase Entry** and **Task Table** templates from plan-index-schema:
36
37
 
37
- ```markdown
38
- ### Phase {N}: Analysis ({cycle description})
39
- status: approved
40
-
41
- **Goal**: Address findings from implementation analysis cycle {N}.
42
-
43
- #### Tasks
44
- | ID | Name | Edge Cases | Status | Ext ID |
45
- |----|------|------------|--------|--------|
46
- | {topic}-{phase}-1 | {Task Title} | — | authored | {ext-id} |
47
- | {topic}-{phase}-2 | {Task Title} | — | authored | {ext-id} |
48
- ```
49
-
50
- - Use `status: approved` for the phase (it's pre-approved by the user in the approval gate)
51
- - Use `authored` for each task status (the task files are fully written)
52
- - Use `—` for edge cases (analysis tasks don't have separate edge case annotations)
38
+ - Phase heading: `### Phase {N}: Analysis ({cycle description})`
39
+ - Phase `status`: `approved` (pre-approved by user in approval gate)
40
+ - Phase `ext_id`: external identifier for the phase from the output format
41
+ - Phase goal: `Address findings from implementation analysis cycle {N}.`
42
+ - Omit `approved_at` and acceptance criteria (analysis phases don't use them)
43
+ - Task `Status`: `authored` (task files are fully written)
44
+ - Task `Ext ID`: external identifier for the task from the output format
53
45
  - Task IDs must match the IDs used in the created task files
54
- - `Ext ID` must contain the external identifier for the task as exposed by the output format.
46
+ - If the Plan Index File frontmatter `ext_id` is empty, set it to the external identifier for the plan from the output format
55
47
 
56
48
  ## Hard Rules
57
49
 
@@ -18,6 +18,7 @@ You receive file paths via the orchestrator's prompt:
18
18
  3. **Cross-cutting spec paths** (if any) — Architectural decisions that influence planning
19
19
  4. **phase-design.md** — Phase design principles
20
20
  5. **task-design.md** — Task design principles (for phase granularity awareness)
21
+ 6. **plan-index-schema.md** — Canonical plan index structure
21
22
 
22
23
  On **amendment**, you also receive:
23
24
  - **Previous output** — Your prior phase structure
@@ -30,7 +31,8 @@ On **amendment**, you also receive:
30
31
  3. Read any cross-cutting specifications
31
32
  4. Read `phase-design.md` — absorb the phase design principles
32
33
  5. Read `task-design.md` — understand task granularity (needed to judge phase scope)
33
- 6. Design the phase structure
34
+ 6. Read `plan-index-schema.md` — understand the plan index structure
35
+ 7. Design the phase structure
34
36
 
35
37
  If this is an **amendment**: read your previous output and the user's feedback, then revise accordingly.
36
38
 
@@ -51,29 +53,7 @@ Phase {N}: {Phase Name}
51
53
 
52
54
  **Phase structure (for the Plan Index File):**
53
55
 
54
- ```markdown
55
- ## Phases
56
-
57
- ### Phase 1: {Phase Name}
58
- status: draft
59
-
60
- **Goal**: {What this phase accomplishes}
61
- **Why this order**: {Why this comes at this position}
62
-
63
- **Acceptance**:
64
- - [ ] {First verifiable criterion}
65
- - [ ] {Second verifiable criterion}
66
-
67
- ### Phase 2: {Phase Name}
68
- status: draft
69
-
70
- **Goal**: {What this phase accomplishes}
71
- **Why this order**: {Why this comes at this position}
72
-
73
- **Acceptance**:
74
- - [ ] {First verifiable criterion}
75
- - [ ] {Second verifiable criterion}
76
- ```
56
+ Begin with a `## Phases` heading, then follow the **Phase Entry** template from plan-index-schema for each phase. Set `status: draft`. Leave `ext_id` empty. Omit `approved_at`.
77
57
 
78
58
  Continue for all phases.
79
59
 
@@ -19,6 +19,7 @@ You receive file paths via the orchestrator's prompt:
19
19
  4. **task-design.md** — Task design principles
20
20
  5. **All approved phases** — The complete phase structure (from the Plan Index File)
21
21
  6. **Target phase number** — Which phase to break into tasks
22
+ 7. **plan-index-schema.md** — Canonical plan index structure
22
23
 
23
24
  On **amendment**, you also receive:
24
25
  - **Previous output** — Your prior task list
@@ -31,7 +32,8 @@ On **amendment**, you also receive:
31
32
  3. Read any cross-cutting specifications
32
33
  4. Read `task-design.md` — absorb the task design principles
33
34
  5. Read the approved phases — understand the full plan structure and where this phase fits
34
- 6. Design the task list for the target phase
35
+ 6. Read `plan-index-schema.md` understand the plan index structure
36
+ 7. Design the task list for the target phase
35
37
 
36
38
  If this is an **amendment**: read your previous output and the user's feedback, then revise accordingly.
37
39
 
@@ -53,15 +55,9 @@ Phase {N}: {Phase Name}
53
55
 
54
56
  **Task table format (for the Plan Index File):**
55
57
 
56
- ```markdown
57
- #### Tasks
58
- | ID | Name | Edge Cases | Status | Ext ID |
59
- |----|------|------------|--------|--------|
60
- | {topic}-{phase}-1 | {Task Name} | {list} | pending | |
61
- | {topic}-{phase}-2 | {Task Name} | {list} | pending | |
62
- ```
58
+ Follow the **Task Table** template from plan-index-schema. Use placeholder IDs `{topic}-{phase}-{seq}`. Set `Status` to `pending`. Leave `Ext ID` empty.
63
59
 
64
- Use placeholder IDs in the format `{topic}-{phase}-{seq}`. The orchestrator will use the topic name from the Plan Index File.
60
+ The orchestrator will use the topic name from the Plan Index File.
65
61
 
66
62
  ## Rules
67
63
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leeovery/claude-technical-workflows",
3
- "version": "2.1.29",
3
+ "version": "2.1.30",
4
4
  "description": "Technical workflow skills & commands for Claude Code",
5
5
  "license": "MIT",
6
6
  "author": "Lee Overy <me@leeovery.com>",
@@ -19,6 +19,7 @@ Pass via the orchestrator's prompt:
19
19
  3. **Plan path** — the implementation plan path
20
20
  4. **Plan format reading adapter path** — `../../technical-planning/references/output-formats/{format}/reading.md`
21
21
  5. **Plan format authoring adapter path** — `../../technical-planning/references/output-formats/{format}/authoring.md`
22
+ 6. **plan-index-schema.md** — `../../technical-planning/references/plan-index-schema.md`
22
23
 
23
24
  ---
24
25
 
@@ -172,29 +172,7 @@ Once selected:
172
172
 
173
173
  1. Read **[output-formats.md](references/output-formats.md)**, find the chosen format entry, and load the format's **[about.md](references/output-formats/{format}/about.md)** and **[authoring.md](references/output-formats/{format}/authoring.md)**
174
174
  2. Capture the current git commit hash: `git rev-parse HEAD`
175
- 3. Create the Plan Index File at `docs/workflow/planning/{topic}/plan.md` with the following frontmatter and title:
176
-
177
- ```yaml
178
- ---
179
- topic: {topic-name}
180
- status: planning
181
- format: {chosen-format}
182
- specification: ../specification/{topic}/specification.md
183
- cross_cutting_specs: # Omit if none
184
- - ../specification/{spec}/specification.md
185
- spec_commit: {output of git rev-parse HEAD}
186
- created: YYYY-MM-DD # Use today's actual date
187
- updated: YYYY-MM-DD # Use today's actual date
188
- external_dependencies: []
189
- author_gate_mode: gated
190
- finding_gate_mode: gated
191
- planning:
192
- phase: 1
193
- task: ~
194
- ---
195
-
196
- # Plan: {Topic Name}
197
- ```
175
+ 3. Create the Plan Index File at `docs/workflow/planning/{topic}/plan.md` using the **Frontmatter** and **Title** templates from **[plan-index-schema.md](references/plan-index-schema.md)**. Set `status: planning`, `spec_commit` to the captured git hash, and today's actual date for `created` and `updated`.
198
176
 
199
177
  3. Commit: `planning({topic}): initialize plan`
200
178
 
@@ -85,11 +85,15 @@ Note that `author_gate_mode` should be updated to `auto` during the commit step
85
85
 
86
86
  > **CHECKPOINT**: If `author_gate_mode: gated`, verify before logging: (1) You presented this exact content, (2) The user explicitly approved with `y`/`yes` or equivalent — not a question, comment, or "okay" in passing, (3) You are writing exactly what was approved with no modifications.
87
87
 
88
+ See **[plan-index-schema.md](plan-index-schema.md)** for field definitions and lifecycle.
89
+
88
90
  1. Write the task to the output format (format-specific — see authoring.md)
89
- 2. Update the task table in the Plan Index File: set `status: authored` and set `Ext ID` to the external identifier for the task as exposed by the output format.
90
- 3. Advance the `planning:` block in frontmatter to the next pending task (or next phase if this was the last task)
91
- 4. If user chose `auto` at this gate: update `author_gate_mode: auto` in the Plan Index File frontmatter
92
- 5. Commit: `planning({topic}): author task {task-id} ({task name})`
91
+ 2. If the Plan Index File frontmatter `ext_id` is empty, set it to the external identifier for the plan as exposed by the output format.
92
+ 3. If the current phase's `ext_id` is empty, set it to the external identifier for the phase as exposed by the output format.
93
+ 4. Update the task table in the Plan Index File: set `status: authored` and set `Ext ID` to the external identifier for the task as exposed by the output format.
94
+ 5. Advance the `planning:` block in frontmatter to the next pending task (or next phase if this was the last task)
95
+ 6. If user chose `auto` at this gate: update `author_gate_mode: auto` in the Plan Index File frontmatter
96
+ 7. Commit: `planning({topic}): author task {task-id} ({task name})`
93
97
 
94
98
  > *Output the next fenced block as a code block:*
95
99
 
@@ -41,6 +41,7 @@ Invoke `planning-phase-designer` with these file paths:
41
41
  3. **Cross-cutting specs**: paths from the Plan Index File's `cross_cutting_specs:` field (if any)
42
42
  4. **phase-design.md**: `phase-design.md`
43
43
  5. **task-design.md**: `task-design.md`
44
+ 6. **plan-index-schema.md**: `plan-index-schema.md`
44
45
 
45
46
  The agent returns a complete phase structure. Write it directly to the Plan Index File body.
46
47
 
@@ -88,7 +89,7 @@ Update the Plan Index File with the revised output, re-present, and ask again. R
88
89
 
89
90
  **If the phase structure is new or was amended:**
90
91
 
91
- 1. Update each phase in the Plan Index File: set `status: approved` and `approved_at: YYYY-MM-DD` (use today's actual date)
92
+ 1. Update each phase in the Plan Index File: set `status: approved` and `approved_at: YYYY-MM-DD` (use today's actual date). See **Phase Entry** in plan-index-schema for field definitions.
92
93
  2. Commit: `planning({topic}): approve phase structure`
93
94
 
94
95
  **If the phase structure was already approved and unchanged:** No updates needed.
@@ -28,6 +28,7 @@ Invoke `planning-task-designer` with these file paths:
28
28
  4. **task-design.md**: `task-design.md`
29
29
  5. **All approved phases**: the complete phase structure from the Plan Index File body
30
30
  6. **Target phase number**: the phase being broken into tasks
31
+ 7. **plan-index-schema.md**: `plan-index-schema.md`
31
32
 
32
33
  ### Present the Output
33
34
 
@@ -0,0 +1,101 @@
1
+ # Plan Index Schema
2
+
3
+ *Reference for **[technical-planning](../SKILL.md)** and its agents*
4
+
5
+ ---
6
+
7
+ This file defines the canonical structure for Plan Index Files (`docs/workflow/planning/{topic}/plan.md`). All agents and references that create or update plan index content **must** follow these templates.
8
+
9
+ ---
10
+
11
+ ## Frontmatter
12
+
13
+ ```yaml
14
+ ---
15
+ topic: {topic-name}
16
+ status: {status}
17
+ format: {chosen-format}
18
+ ext_id:
19
+ specification: ../specification/{topic}/specification.md
20
+ cross_cutting_specs:
21
+ - ../specification/{spec}/specification.md
22
+ spec_commit: {commit-hash}
23
+ created: YYYY-MM-DD
24
+ updated: YYYY-MM-DD
25
+ external_dependencies: []
26
+ author_gate_mode: gated
27
+ finding_gate_mode: gated
28
+ planning:
29
+ phase: 1
30
+ task: ~
31
+ ---
32
+ ```
33
+
34
+ | Field | Set when |
35
+ |-------|----------|
36
+ | `topic` | Plan creation (Step 1) |
37
+ | `status` | Plan creation → `planning`; conclusion → `concluded` |
38
+ | `format` | Plan creation — user-chosen output format |
39
+ | `ext_id` | First task authored — external identifier for the plan |
40
+ | `specification` | Plan creation — relative path to source specification |
41
+ | `cross_cutting_specs` | Plan creation — relative paths to cross-cutting specs (omit key if none) |
42
+ | `spec_commit` | Plan creation — `git rev-parse HEAD`; updated on continue if spec changed |
43
+ | `created` | Plan creation — today's date |
44
+ | `updated` | Plan creation — today's date; update on each commit |
45
+ | `external_dependencies` | Dependency resolution (Step 6) |
46
+ | `author_gate_mode` | Plan creation → `gated`; user opts in → `auto` |
47
+ | `finding_gate_mode` | Plan creation → `gated`; user opts in → `auto` |
48
+ | `planning.phase` | Tracks current phase position |
49
+ | `planning.task` | Tracks current task position (`~` when between tasks) |
50
+ | `review_cycle` | Added by plan-review when review cycle begins |
51
+
52
+ ---
53
+
54
+ ## Title
55
+
56
+ ```markdown
57
+ # Plan: {Topic Name}
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Phase Entry
63
+
64
+ ```markdown
65
+ ### Phase {N}: {Phase Name}
66
+ status: {status}
67
+ ext_id:
68
+ approved_at: {YYYY-MM-DD}
69
+
70
+ **Goal**: {What this phase accomplishes}
71
+
72
+ **Why this order**: {Why this comes at this position}
73
+
74
+ **Acceptance**:
75
+ - [ ] {First verifiable criterion}
76
+ - [ ] {Second verifiable criterion}
77
+ ```
78
+
79
+ | Field | Set when |
80
+ |-------|----------|
81
+ | `status` | Phase design → `draft`; approval → `approved` |
82
+ | `ext_id` | First task in phase authored — external identifier for the phase |
83
+ | `approved_at` | Phase approval — today's date. Omit while `draft`. |
84
+
85
+ ---
86
+
87
+ ## Task Table
88
+
89
+ ```markdown
90
+ #### Tasks
91
+ | ID | Name | Status | Ext ID |
92
+ |----|------|--------|--------|
93
+ | {topic}-{phase}-{seq} | {Task Name} | {status} | |
94
+ ```
95
+
96
+ | Field | Set when |
97
+ |-------|----------|
98
+ | `ID` | Task design — format: `{topic}-{phase}-{seq}` |
99
+ | `Name` | Task design — descriptive task name |
100
+ | `Status` | Task design → `pending`; authoring → `authored` |
101
+ | `Ext ID` | Task authored — external identifier for the task |