@leeovery/claude-technical-workflows 2.1.28 → 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.
- package/agents/implementation-analysis-task-writer.md +10 -17
- package/agents/planning-phase-designer.md +4 -24
- package/agents/planning-task-designer.md +5 -9
- package/package.json +1 -1
- package/skills/technical-implementation/references/invoke-task-writer.md +1 -0
- package/skills/technical-planning/SKILL.md +1 -23
- package/skills/technical-planning/references/author-tasks.md +8 -4
- package/skills/technical-planning/references/define-phases.md +2 -1
- package/skills/technical-planning/references/define-tasks.md +1 -0
- package/skills/technical-planning/references/plan-index-schema.md +101 -0
|
@@ -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,25 +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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
| ID | Name | Edge Cases | Status |
|
|
45
|
-
|----|------|------------|--------|
|
|
46
|
-
| {topic}-{phase}-1 | {Task Title} | — | authored |
|
|
47
|
-
| {topic}-{phase}-2 | {Task Title} | — | authored |
|
|
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
|
|
46
|
+
- If the Plan Index File frontmatter `ext_id` is empty, set it to the external identifier for the plan from the output format
|
|
54
47
|
|
|
55
48
|
## Hard Rules
|
|
56
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
57
|
-
#### Tasks
|
|
58
|
-
| ID | Name | Edge Cases | Status |
|
|
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
|
-
|
|
60
|
+
The orchestrator will use the topic name from the Plan Index File.
|
|
65
61
|
|
|
66
62
|
## Rules
|
|
67
63
|
|
package/package.json
CHANGED
|
@@ -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`
|
|
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.
|
|
90
|
-
3.
|
|
91
|
-
4.
|
|
92
|
-
5.
|
|
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 |
|