@leeovery/claude-technical-workflows 2.1.39 → 2.1.41
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/README.md +1 -1
- package/agents/implementation-analysis-architecture.md +2 -2
- package/agents/implementation-analysis-duplication.md +2 -2
- package/agents/implementation-analysis-standards.md +2 -2
- package/agents/implementation-analysis-synthesizer.md +3 -3
- package/agents/implementation-analysis-task-writer.md +1 -1
- package/agents/implementation-task-executor.md +3 -0
- package/agents/planning-phase-designer.md +8 -6
- package/agents/planning-task-designer.md +8 -6
- package/agents/review-findings-synthesizer.md +2 -2
- package/agents/review-task-verifier.md +1 -1
- package/hooks/workflows/compact-recovery.sh +1 -1
- package/hooks/workflows/session-cleanup.sh +1 -1
- package/hooks/workflows/session-env.sh +10 -2
- package/hooks/workflows/write-session-state.sh +2 -2
- package/package.json +1 -1
- package/skills/begin-implementation/SKILL.md +5 -5
- package/skills/begin-planning/SKILL.md +2 -1
- package/skills/begin-review/SKILL.md +1 -1
- package/skills/continue-feature/references/detect-phase.md +5 -5
- package/skills/continue-feature/references/invoke-implementation.md +2 -2
- package/skills/continue-feature/references/invoke-planning.md +2 -2
- package/skills/continue-feature/references/invoke-review.md +2 -2
- package/skills/continue-feature/references/invoke-specification.md +3 -3
- package/skills/continue-feature/scripts/discovery.sh +5 -5
- package/skills/link-dependencies/SKILL.md +5 -5
- package/skills/migrate/SKILL.md +1 -1
- package/skills/migrate/scripts/migrate.sh +56 -25
- package/skills/migrate/scripts/migrations/011-rename-workflow-directory.sh +73 -0
- package/skills/migrate/scripts/migrations/012-environment-setup-to-state.sh +23 -0
- package/skills/start-discussion/SKILL.md +2 -2
- package/skills/start-discussion/references/gather-context-research.md +1 -1
- package/skills/start-discussion/references/handle-selection.md +1 -1
- package/skills/start-discussion/references/invoke-skill.md +3 -3
- package/skills/start-discussion/references/research-analysis.md +3 -3
- package/skills/start-discussion/scripts/discovery.sh +3 -3
- package/skills/start-feature/SKILL.md +5 -5
- package/skills/start-feature/references/phase-bridge.md +1 -1
- package/skills/start-implementation/SKILL.md +6 -6
- package/skills/start-implementation/scripts/discovery.sh +4 -4
- package/skills/start-planning/SKILL.md +5 -3
- package/skills/start-planning/references/display-state.md +31 -1
- package/skills/start-planning/references/invoke-skill.md +3 -3
- package/skills/start-planning/scripts/discovery.sh +32 -3
- package/skills/start-research/SKILL.md +1 -1
- package/skills/start-research/references/invoke-skill.md +1 -1
- package/skills/start-review/SKILL.md +1 -1
- package/skills/start-review/references/invoke-skill.md +4 -4
- package/skills/start-review/scripts/discovery.sh +5 -5
- package/skills/start-specification/SKILL.md +1 -1
- package/skills/start-specification/references/analysis-flow.md +2 -2
- package/skills/start-specification/references/confirm-continue.md +3 -3
- package/skills/start-specification/references/confirm-create.md +2 -2
- package/skills/start-specification/references/confirm-refine.md +1 -1
- package/skills/start-specification/references/confirm-unify.md +2 -2
- package/skills/start-specification/references/display-analyze.md +1 -1
- package/skills/start-specification/references/display-groupings.md +3 -3
- package/skills/start-specification/references/display-specs-menu.md +1 -1
- package/skills/start-specification/references/handoffs/continue-concluded.md +4 -4
- package/skills/start-specification/references/handoffs/continue.md +4 -4
- package/skills/start-specification/references/handoffs/create-with-incorporation.md +5 -5
- package/skills/start-specification/references/handoffs/create.md +4 -4
- package/skills/start-specification/references/handoffs/unify-with-incorporation.md +6 -6
- package/skills/start-specification/references/handoffs/unify.md +4 -4
- package/skills/start-specification/scripts/discovery.sh +3 -3
- package/skills/status/SKILL.md +1 -1
- package/skills/status/scripts/discovery.sh +5 -5
- package/skills/technical-discussion/SKILL.md +3 -3
- package/skills/technical-discussion/references/template.md +2 -2
- package/skills/technical-implementation/SKILL.md +11 -10
- package/skills/technical-implementation/references/analysis-loop.md +45 -9
- package/skills/technical-implementation/references/environment-setup.md +3 -3
- package/skills/technical-implementation/references/invoke-task-writer.md +1 -1
- package/skills/technical-implementation/references/task-loop.md +1 -1
- package/skills/technical-planning/SKILL.md +8 -7
- package/skills/technical-planning/references/analyze-task-graph.md +1 -1
- package/skills/technical-planning/references/author-tasks.md +5 -5
- package/skills/technical-planning/references/define-phases.md +5 -2
- package/skills/technical-planning/references/define-tasks.md +6 -3
- package/skills/technical-planning/references/invoke-review-integrity.md +1 -1
- package/skills/technical-planning/references/invoke-review-traceability.md +1 -1
- package/skills/technical-planning/references/output-formats/local-markdown/about.md +2 -2
- package/skills/technical-planning/references/output-formats/local-markdown/authoring.md +2 -2
- package/skills/technical-planning/references/output-formats/local-markdown/reading.md +3 -3
- package/skills/technical-planning/references/output-formats/local-markdown/updating.md +1 -1
- package/skills/technical-planning/references/phase-design/bugfix.md +75 -0
- package/skills/technical-planning/references/phase-design/feature.md +77 -0
- package/skills/technical-planning/references/phase-design/greenfield.md +75 -0
- package/skills/technical-planning/references/phase-design.md +7 -57
- package/skills/technical-planning/references/plan-index-schema.md +3 -1
- package/skills/technical-planning/references/review-integrity.md +1 -1
- package/skills/technical-planning/references/review-traceability.md +1 -1
- package/skills/technical-planning/references/task-design/bugfix.md +65 -0
- package/skills/technical-planning/references/task-design/feature.md +61 -0
- package/skills/technical-planning/references/task-design/greenfield.md +47 -0
- package/skills/technical-planning/references/task-design.md +6 -39
- package/skills/technical-planning/references/verify-source-material.md +2 -2
- package/skills/technical-research/SKILL.md +2 -2
- package/skills/technical-research/references/interview.md +2 -2
- package/skills/technical-review/SKILL.md +1 -1
- package/skills/technical-review/references/invoke-review-synthesizer.md +3 -3
- package/skills/technical-review/references/invoke-review-task-writer.md +2 -2
- package/skills/technical-review/references/invoke-task-verifiers.md +3 -3
- package/skills/technical-review/references/produce-review.md +1 -1
- package/skills/technical-review/references/review-actions-loop.md +7 -5
- package/skills/technical-specification/SKILL.md +5 -5
- package/skills/technical-specification/references/dependencies.md +2 -2
- package/skills/technical-specification/references/review-tracking-format.md +1 -1
- package/skills/technical-specification/references/specification-format.md +1 -1
- package/skills/technical-specification/references/verify-source-material.md +2 -2
- package/skills/view-plan/SKILL.md +2 -2
package/README.md
CHANGED
|
@@ -212,7 +212,7 @@ npx claude-manager remove @leeovery/claude-technical-workflows && npm rm @leeove
|
|
|
212
212
|
Documents are stored in your project using a **phase-first** organisation. Early phases use flat files; later phases use topic directories with multiple files for tracking and analysis.
|
|
213
213
|
|
|
214
214
|
```
|
|
215
|
-
|
|
215
|
+
.workflows/
|
|
216
216
|
├── research/ # Phase 1 — flat, semantically named
|
|
217
217
|
│ ├── exploration.md
|
|
218
218
|
│ ├── competitor-analysis.md
|
|
@@ -38,7 +38,7 @@ You receive via the orchestrator's prompt:
|
|
|
38
38
|
3. **Read specification** — understand design intent and boundaries
|
|
39
39
|
4. **Read all implementation files** — understand the full picture
|
|
40
40
|
5. **Analyze architecture** — evaluate how the pieces compose as a whole
|
|
41
|
-
6. **Write findings** to
|
|
41
|
+
6. **Write findings** to `.workflows/implementation/{topic}/analysis-architecture-c{cycle-number}.md`
|
|
42
42
|
|
|
43
43
|
## Hard Rules
|
|
44
44
|
|
|
@@ -52,7 +52,7 @@ You receive via the orchestrator's prompt:
|
|
|
52
52
|
|
|
53
53
|
## Output File Format
|
|
54
54
|
|
|
55
|
-
Write to
|
|
55
|
+
Write to `.workflows/implementation/{topic}/analysis-architecture-c{cycle-number}.md`:
|
|
56
56
|
|
|
57
57
|
```
|
|
58
58
|
AGENT: architecture
|
|
@@ -34,7 +34,7 @@ You receive via the orchestrator's prompt:
|
|
|
34
34
|
3. **Read specification** — understand design intent
|
|
35
35
|
4. **Read all implementation files** — build a mental map of the full codebase
|
|
36
36
|
5. **Analyze for duplication** — compare patterns across files, identify extraction candidates
|
|
37
|
-
6. **Write findings** to
|
|
37
|
+
6. **Write findings** to `.workflows/implementation/{topic}/analysis-duplication-c{cycle-number}.md`
|
|
38
38
|
|
|
39
39
|
## Hard Rules
|
|
40
40
|
|
|
@@ -48,7 +48,7 @@ You receive via the orchestrator's prompt:
|
|
|
48
48
|
|
|
49
49
|
## Output File Format
|
|
50
50
|
|
|
51
|
-
Write to
|
|
51
|
+
Write to `.workflows/implementation/{topic}/analysis-duplication-c{cycle-number}.md`:
|
|
52
52
|
|
|
53
53
|
```
|
|
54
54
|
AGENT: duplication
|
|
@@ -34,7 +34,7 @@ You receive via the orchestrator's prompt:
|
|
|
34
34
|
3. **Read code-quality.md** — understand quality standards
|
|
35
35
|
4. **Read all implementation files** — map each file back to its spec requirements
|
|
36
36
|
5. **Compare implementation against spec** — check every decision point
|
|
37
|
-
6. **Write findings** to
|
|
37
|
+
6. **Write findings** to `.workflows/implementation/{topic}/analysis-standards-c{cycle-number}.md`
|
|
38
38
|
|
|
39
39
|
## Hard Rules
|
|
40
40
|
|
|
@@ -48,7 +48,7 @@ You receive via the orchestrator's prompt:
|
|
|
48
48
|
|
|
49
49
|
## Output File Format
|
|
50
50
|
|
|
51
|
-
Write to
|
|
51
|
+
Write to `.workflows/implementation/{topic}/analysis-standards-c{cycle-number}.md`:
|
|
52
52
|
|
|
53
53
|
```
|
|
54
54
|
AGENT: standards
|
|
@@ -20,13 +20,13 @@ You receive via the orchestrator's prompt:
|
|
|
20
20
|
|
|
21
21
|
## Your Process
|
|
22
22
|
|
|
23
|
-
1. **Read all findings files** from
|
|
23
|
+
1. **Read all findings files** from `.workflows/implementation/{topic}/` — look for `analysis-duplication-c{cycle-number}.md`, `analysis-standards-c{cycle-number}.md`, and `analysis-architecture-c{cycle-number}.md`
|
|
24
24
|
2. **Deduplicate** — same issue found by multiple agents → one finding, note all sources
|
|
25
25
|
3. **Group related findings** — multiple findings about the same pattern become one task (e.g., 3 duplication findings about the same helper pattern = 1 "extract helper" task)
|
|
26
26
|
4. **Filter** — discard low-severity findings unless they cluster into a pattern. Never discard high-severity.
|
|
27
27
|
5. **Normalize** — convert each group into a task using the canonical task template (Problem / Solution / Outcome / Do / Acceptance Criteria / Tests)
|
|
28
|
-
6. **Write report** — output to
|
|
29
|
-
7. **Write staging file** — if actionable tasks exist, write to
|
|
28
|
+
6. **Write report** — output to `.workflows/implementation/{topic}/analysis-report-c{cycle-number}.md`
|
|
29
|
+
7. **Write staging file** — if actionable tasks exist, write to `.workflows/implementation/{topic}/analysis-tasks-c{cycle-number}.md` with `status: pending` for each task
|
|
30
30
|
|
|
31
31
|
## Report Format
|
|
32
32
|
|
|
@@ -32,7 +32,7 @@ You receive via the orchestrator's prompt:
|
|
|
32
32
|
|
|
33
33
|
## Update the Plan Index File
|
|
34
34
|
|
|
35
|
-
The Plan Index File (
|
|
35
|
+
The Plan Index File (`.workflows/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.
|
|
36
36
|
|
|
37
37
|
Append at the end of the Plan Index File body, following the **Phase Entry** and **Task Table** templates from plan-index-schema:
|
|
38
38
|
|
|
@@ -36,6 +36,9 @@ You are stateless — each invocation starts fresh. The full task content is alw
|
|
|
36
36
|
- Read files and tests related to the task's domain
|
|
37
37
|
- Identify patterns, conventions, and structures you'll need to follow or extend
|
|
38
38
|
- Check for existing code that the task builds on or integrates with
|
|
39
|
+
- Find similar implementations — if the task is "add endpoint X", find existing endpoints and follow the same pattern
|
|
40
|
+
- Understand inputs, outputs, and callers of any code you'll modify
|
|
41
|
+
- Note the testing approach used in this area — use the same patterns
|
|
39
42
|
6. **Execute TDD cycle** — follow the process in tdd-workflow.md for each acceptance criterion and test case.
|
|
40
43
|
7. **Verify all acceptance criteria met** — every criterion from the task must be satisfied
|
|
41
44
|
8. **Return structured result**
|
|
@@ -17,8 +17,9 @@ You receive file paths via the orchestrator's prompt:
|
|
|
17
17
|
2. **Specification path** — The validated specification to plan from
|
|
18
18
|
3. **Cross-cutting spec paths** (if any) — Architectural decisions that influence planning
|
|
19
19
|
4. **phase-design.md** — Phase design principles
|
|
20
|
-
5. **
|
|
21
|
-
6. **
|
|
20
|
+
5. **Context-specific phase design** — Work-type guidance (greenfield, feature, or bugfix)
|
|
21
|
+
6. **task-design.md** — Task design principles (for phase granularity awareness)
|
|
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 phase structure
|
|
@@ -30,9 +31,10 @@ On **amendment**, you also receive:
|
|
|
30
31
|
2. Read the specification in full, following the ingestion protocol
|
|
31
32
|
3. Read any cross-cutting specifications
|
|
32
33
|
4. Read `phase-design.md` — absorb the phase design principles
|
|
33
|
-
5. Read
|
|
34
|
-
6. Read `
|
|
35
|
-
7.
|
|
34
|
+
5. Read the context-specific phase design guidance
|
|
35
|
+
6. Read `task-design.md` — understand task granularity (needed to judge phase scope)
|
|
36
|
+
7. Read `plan-index-schema.md` — understand the plan index structure
|
|
37
|
+
8. Design the phase structure
|
|
36
38
|
|
|
37
39
|
If this is an **amendment**: read your previous output and the user's feedback, then revise accordingly.
|
|
38
40
|
|
|
@@ -59,7 +61,7 @@ Continue for all phases.
|
|
|
59
61
|
|
|
60
62
|
## Rules
|
|
61
63
|
|
|
62
|
-
1. **
|
|
64
|
+
1. **Strongest foundation first** — Phase 1 establishes the pattern for subsequent phases. Follow the Phase 1 strategy from the loaded context guidance.
|
|
63
65
|
2. **Vertical phases** — each phase delivers working functionality, not technical layers
|
|
64
66
|
3. **Clear acceptance** — every criterion is pass/fail verifiable
|
|
65
67
|
4. **No forward references** — no phase depends on something not yet built
|
|
@@ -17,9 +17,10 @@ You receive file paths via the orchestrator's prompt:
|
|
|
17
17
|
2. **Specification path** — The validated specification to plan from
|
|
18
18
|
3. **Cross-cutting spec paths** (if any) — Architectural decisions that influence planning
|
|
19
19
|
4. **task-design.md** — Task design principles
|
|
20
|
-
5. **
|
|
21
|
-
6. **
|
|
22
|
-
7. **
|
|
20
|
+
5. **Context-specific task design** — Work-type guidance (greenfield, feature, or bugfix)
|
|
21
|
+
6. **All approved phases** — The complete phase structure (from the Plan Index File)
|
|
22
|
+
7. **Target phase number** — Which phase to break into tasks
|
|
23
|
+
8. **plan-index-schema.md** — Canonical plan index structure
|
|
23
24
|
|
|
24
25
|
On **amendment**, you also receive:
|
|
25
26
|
- **Previous output** — Your prior task list
|
|
@@ -31,9 +32,10 @@ On **amendment**, you also receive:
|
|
|
31
32
|
2. Read the specification in full, following the ingestion protocol
|
|
32
33
|
3. Read any cross-cutting specifications
|
|
33
34
|
4. Read `task-design.md` — absorb the task design principles
|
|
34
|
-
5. Read the
|
|
35
|
-
6. Read
|
|
36
|
-
7.
|
|
35
|
+
5. Read the context-specific task design guidance
|
|
36
|
+
6. Read the approved phases — understand the full plan structure and where this phase fits
|
|
37
|
+
7. Read `plan-index-schema.md` — understand the plan index structure
|
|
38
|
+
8. Design the task list for the target phase
|
|
37
39
|
|
|
38
40
|
If this is an **amendment**: read your previous output and the user's feedback, then revise accordingly.
|
|
39
41
|
|
|
@@ -26,8 +26,8 @@ You receive via the orchestrator's prompt:
|
|
|
26
26
|
4. **Group related findings** — multiple findings about the same concern become one task (e.g., 3 QA findings about missing error handling in the same module = 1 "add error handling" task)
|
|
27
27
|
5. **Filter** — discard low-severity non-blocking findings unless they cluster into a pattern. Never discard high-severity or blocking findings.
|
|
28
28
|
6. **Normalize** — convert each group into a task using the canonical task template (Problem / Solution / Outcome / Do / Acceptance Criteria / Tests)
|
|
29
|
-
7. **Write report** — output to
|
|
30
|
-
8. **Write staging file** — if actionable tasks exist, write to
|
|
29
|
+
7. **Write report** — output to `.workflows/implementation/{topic}/review-report-c{cycle}.md`
|
|
30
|
+
8. **Write staging file** — if actionable tasks exist, write to `.workflows/implementation/{topic}/review-tasks-c{cycle}.md` with `status: pending` for each task
|
|
31
31
|
|
|
32
32
|
## Report Format
|
|
33
33
|
|
|
@@ -87,7 +87,7 @@ Review the implementation as a senior architect would:
|
|
|
87
87
|
|
|
88
88
|
## Output File Format
|
|
89
89
|
|
|
90
|
-
Write to
|
|
90
|
+
Write to `.workflows/review/{topic}/r{N}/qa-task-{index}.md`:
|
|
91
91
|
|
|
92
92
|
```
|
|
93
93
|
TASK: [Task name/description]
|
|
@@ -17,7 +17,7 @@ fi
|
|
|
17
17
|
session_id=$(cat | grep -o '"session_id" *: *"[^"]*"' | sed 's/.*: *"//;s/"//')
|
|
18
18
|
|
|
19
19
|
if [ -n "$session_id" ]; then
|
|
20
|
-
session_file="$PROJECT_DIR
|
|
20
|
+
session_file="$PROJECT_DIR/.workflows/.cache/sessions/${session_id}.yaml"
|
|
21
21
|
if [ -f "$session_file" ]; then
|
|
22
22
|
rm -f "$session_file"
|
|
23
23
|
fi
|
|
@@ -10,8 +10,16 @@
|
|
|
10
10
|
# Extract session_id from stdin JSON
|
|
11
11
|
session_id=$(cat | grep -o '"session_id" *: *"[^"]*"' | sed 's/.*: *"//;s/"//')
|
|
12
12
|
|
|
13
|
-
if [ -
|
|
14
|
-
echo "
|
|
13
|
+
if [ -z "$session_id" ]; then
|
|
14
|
+
echo "[session-env] WARNING: Could not parse session_id from stdin" >&2
|
|
15
|
+
exit 0
|
|
15
16
|
fi
|
|
16
17
|
|
|
18
|
+
if [ -z "$CLAUDE_ENV_FILE" ]; then
|
|
19
|
+
echo "[session-env] WARNING: CLAUDE_ENV_FILE not set — cannot persist CLAUDE_SESSION_ID" >&2
|
|
20
|
+
exit 0
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
echo "export CLAUDE_SESSION_ID=${session_id}" >> "$CLAUDE_ENV_FILE"
|
|
24
|
+
|
|
17
25
|
exit 0
|
|
@@ -19,7 +19,7 @@ if [ -z "$PROJECT_DIR" ]; then
|
|
|
19
19
|
fi
|
|
20
20
|
|
|
21
21
|
if [ -z "$CLAUDE_SESSION_ID" ]; then
|
|
22
|
-
|
|
22
|
+
echo "[write-session-state] WARNING: CLAUDE_SESSION_ID not set — session state will not be saved" >&2
|
|
23
23
|
exit 0
|
|
24
24
|
fi
|
|
25
25
|
|
|
@@ -42,7 +42,7 @@ while [ $# -gt 0 ]; do
|
|
|
42
42
|
esac
|
|
43
43
|
done
|
|
44
44
|
|
|
45
|
-
SESSIONS_DIR="$PROJECT_DIR
|
|
45
|
+
SESSIONS_DIR="$PROJECT_DIR/.workflows/.cache/sessions"
|
|
46
46
|
mkdir -p "$SESSIONS_DIR"
|
|
47
47
|
|
|
48
48
|
SESSION_FILE="$SESSIONS_DIR/${CLAUDE_SESSION_ID}.yaml"
|
package/package.json
CHANGED
|
@@ -117,7 +117,7 @@ Environment: No special setup required.
|
|
|
117
117
|
> *Output the next fenced block as a code block:*
|
|
118
118
|
|
|
119
119
|
```
|
|
120
|
-
Environment setup file found:
|
|
120
|
+
Environment setup file found: .workflows/environment-setup.md
|
|
121
121
|
```
|
|
122
122
|
|
|
123
123
|
→ Proceed to **Step 4**.
|
|
@@ -133,8 +133,8 @@ Are there any environment setup instructions I should follow before implementati
|
|
|
133
133
|
|
|
134
134
|
**STOP.** Wait for user response.
|
|
135
135
|
|
|
136
|
-
- If the user provides instructions, save them to
|
|
137
|
-
- If the user says no/none, create
|
|
136
|
+
- If the user provides instructions, save them to `.workflows/environment-setup.md`, commit
|
|
137
|
+
- If the user says no/none, create `.workflows/environment-setup.md` with "No special setup required." and commit
|
|
138
138
|
|
|
139
139
|
→ Proceed to **Step 4**.
|
|
140
140
|
|
|
@@ -150,10 +150,10 @@ Construct the handoff and invoke the [technical-implementation](../technical-imp
|
|
|
150
150
|
|
|
151
151
|
```
|
|
152
152
|
Implementation session for: {topic}
|
|
153
|
-
Plan:
|
|
153
|
+
Plan: .workflows/planning/{topic}/plan.md
|
|
154
154
|
Format: {format}
|
|
155
155
|
Plan ID: {plan_id} (if applicable)
|
|
156
|
-
Specification:
|
|
156
|
+
Specification: .workflows/specification/{topic}/specification.md (exists: {true|false})
|
|
157
157
|
Implementation tracking: {exists | new} (status: {status})
|
|
158
158
|
Dependencies: {All satisfied | notes}
|
|
159
159
|
Environment: {Setup required | No special setup required}
|
|
@@ -82,7 +82,8 @@ Construct the handoff and invoke the [technical-planning](../technical-planning/
|
|
|
82
82
|
|
|
83
83
|
```
|
|
84
84
|
Planning session for: {topic}
|
|
85
|
-
Specification:
|
|
85
|
+
Specification: .workflows/specification/{topic}/specification.md
|
|
86
|
+
Work type: feature
|
|
86
87
|
Additional context: {summary of user's answer from Step 3, or "none"}
|
|
87
88
|
Cross-cutting references: {list of applicable cross-cutting specs with brief summaries, or "none"}
|
|
88
89
|
Recommended output format: {common_format from discovery if non-empty, otherwise "none"}
|
|
@@ -80,7 +80,7 @@ Construct the handoff and invoke the [technical-review](../technical-review/SKIL
|
|
|
80
80
|
Review session
|
|
81
81
|
Plans to review:
|
|
82
82
|
- topic: {topic}
|
|
83
|
-
plan:
|
|
83
|
+
plan: .workflows/planning/{topic}/plan.md
|
|
84
84
|
format: {format}
|
|
85
85
|
plan_id: {plan_id} (if applicable)
|
|
86
86
|
specification: {specification} (exists: {true|false})
|
|
@@ -14,22 +14,22 @@ Either use the `next_phase` from discovery output (if discovery was run), or com
|
|
|
14
14
|
|
|
15
15
|
Check artifacts in this order (first match wins):
|
|
16
16
|
|
|
17
|
-
1. Check
|
|
17
|
+
1. Check `.workflows/review/{topic}/r*/review.md`
|
|
18
18
|
- If any review exists → next_phase is **"done"**
|
|
19
19
|
|
|
20
|
-
2. Read
|
|
20
|
+
2. Read `.workflows/implementation/{topic}/tracking.md`
|
|
21
21
|
- If exists with `status: completed` → next_phase is **"review"**
|
|
22
22
|
- If exists with `status: in-progress` → next_phase is **"implementation"**
|
|
23
23
|
|
|
24
|
-
3. Read
|
|
24
|
+
3. Read `.workflows/planning/{topic}/plan.md`
|
|
25
25
|
- If exists with `status: concluded` → next_phase is **"implementation"**
|
|
26
26
|
- If exists with other status → next_phase is **"planning"**
|
|
27
27
|
|
|
28
|
-
4. Read
|
|
28
|
+
4. Read `.workflows/specification/{topic}/specification.md`
|
|
29
29
|
- If exists with `status: concluded` → next_phase is **"planning"**
|
|
30
30
|
- If exists with other status → next_phase is **"specification"**
|
|
31
31
|
|
|
32
|
-
5. Check
|
|
32
|
+
5. Check `.workflows/discussion/{topic}.md`
|
|
33
33
|
- If exists with `status: concluded` → next_phase is **"specification"**
|
|
34
34
|
- If exists with other status → next_phase is **"discussion"**
|
|
35
35
|
|
|
@@ -20,7 +20,7 @@ Saving session state so Claude can pick up where it left off and continue the fe
|
|
|
20
20
|
.claude/hooks/workflows/write-session-state.sh \
|
|
21
21
|
"{topic}" \
|
|
22
22
|
"skills/technical-implementation/SKILL.md" \
|
|
23
|
-
"
|
|
23
|
+
".workflows/implementation/{topic}/tracking.md" \
|
|
24
24
|
--pipeline "This session is part of the feature pipeline. After implementation completes, return to the continue-feature skill and execute Step 7 (Phase Bridge). Load: skills/continue-feature/references/phase-bridge.md"
|
|
25
25
|
```
|
|
26
26
|
|
|
@@ -30,7 +30,7 @@ Invoke the [begin-implementation](../../begin-implementation/SKILL.md) skill:
|
|
|
30
30
|
|
|
31
31
|
```
|
|
32
32
|
Implementation pre-flight for: {topic}
|
|
33
|
-
Plan:
|
|
33
|
+
Plan: .workflows/planning/{topic}/plan.md
|
|
34
34
|
|
|
35
35
|
PIPELINE CONTINUATION — When implementation completes (tracking status: completed),
|
|
36
36
|
you MUST return to the continue-feature skill and execute Step 7 (Phase Bridge).
|
|
@@ -20,7 +20,7 @@ Saving session state so Claude can pick up where it left off and continue the fe
|
|
|
20
20
|
.claude/hooks/workflows/write-session-state.sh \
|
|
21
21
|
"{topic}" \
|
|
22
22
|
"skills/technical-planning/SKILL.md" \
|
|
23
|
-
"
|
|
23
|
+
".workflows/planning/{topic}/plan.md" \
|
|
24
24
|
--pipeline "This session is part of the feature pipeline. After the plan concludes, return to the continue-feature skill and execute Step 7 (Phase Bridge). Load: skills/continue-feature/references/phase-bridge.md"
|
|
25
25
|
```
|
|
26
26
|
|
|
@@ -30,7 +30,7 @@ Invoke the [begin-planning](../../begin-planning/SKILL.md) skill:
|
|
|
30
30
|
|
|
31
31
|
```
|
|
32
32
|
Planning pre-flight for: {topic}
|
|
33
|
-
Specification:
|
|
33
|
+
Specification: .workflows/specification/{topic}/specification.md
|
|
34
34
|
|
|
35
35
|
PIPELINE CONTINUATION — When planning concludes (plan status: concluded),
|
|
36
36
|
you MUST return to the continue-feature skill and execute Step 7 (Phase Bridge).
|
|
@@ -20,7 +20,7 @@ Saving session state so Claude can pick up where it left off and continue the fe
|
|
|
20
20
|
.claude/hooks/workflows/write-session-state.sh \
|
|
21
21
|
"{topic}" \
|
|
22
22
|
"skills/technical-review/SKILL.md" \
|
|
23
|
-
"
|
|
23
|
+
".workflows/review/{topic}/r{N}/review.md" \
|
|
24
24
|
--pipeline "This session is part of the feature pipeline. After the review concludes, return to the continue-feature skill and execute Step 7 (Phase Bridge). Load: skills/continue-feature/references/phase-bridge.md"
|
|
25
25
|
```
|
|
26
26
|
|
|
@@ -30,7 +30,7 @@ Invoke the [begin-review](../../begin-review/SKILL.md) skill:
|
|
|
30
30
|
|
|
31
31
|
```
|
|
32
32
|
Review pre-flight for: {topic}
|
|
33
|
-
Plan:
|
|
33
|
+
Plan: .workflows/planning/{topic}/plan.md
|
|
34
34
|
|
|
35
35
|
PIPELINE CONTINUATION — When review concludes,
|
|
36
36
|
you MUST return to the continue-feature skill and execute Step 7 (Phase Bridge).
|
|
@@ -10,7 +10,7 @@ Invoke the specification skill for this topic.
|
|
|
10
10
|
|
|
11
11
|
The specification needs source material. Check what's available:
|
|
12
12
|
|
|
13
|
-
1. **Discussion document**:
|
|
13
|
+
1. **Discussion document**: `.workflows/discussion/{topic}.md`
|
|
14
14
|
- If exists and concluded → use as primary source
|
|
15
15
|
- If exists and in-progress → this shouldn't happen (detect-phase would have routed to discussion)
|
|
16
16
|
|
|
@@ -30,7 +30,7 @@ Saving session state so Claude can pick up where it left off and continue the fe
|
|
|
30
30
|
.claude/hooks/workflows/write-session-state.sh \
|
|
31
31
|
"{topic}" \
|
|
32
32
|
"skills/technical-specification/SKILL.md" \
|
|
33
|
-
"
|
|
33
|
+
".workflows/specification/{topic}/specification.md" \
|
|
34
34
|
--pipeline "This session is part of the feature pipeline. After the specification concludes, return to the continue-feature skill and execute Step 7 (Phase Bridge). Load: skills/continue-feature/references/phase-bridge.md"
|
|
35
35
|
```
|
|
36
36
|
|
|
@@ -42,7 +42,7 @@ Invoke the [technical-specification](../../technical-specification/SKILL.md) ski
|
|
|
42
42
|
Specification session for: {topic}
|
|
43
43
|
|
|
44
44
|
Source material:
|
|
45
|
-
- Discussion:
|
|
45
|
+
- Discussion: .workflows/discussion/{topic}.md
|
|
46
46
|
|
|
47
47
|
Topic name: {topic}
|
|
48
48
|
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
|
|
12
12
|
set -eo pipefail
|
|
13
13
|
|
|
14
|
-
DISC_DIR="
|
|
15
|
-
SPEC_DIR="
|
|
16
|
-
PLAN_DIR="
|
|
17
|
-
IMPL_DIR="
|
|
18
|
-
REVIEW_DIR="
|
|
14
|
+
DISC_DIR=".workflows/discussion"
|
|
15
|
+
SPEC_DIR=".workflows/specification"
|
|
16
|
+
PLAN_DIR=".workflows/planning"
|
|
17
|
+
IMPL_DIR=".workflows/implementation"
|
|
18
|
+
REVIEW_DIR=".workflows/review"
|
|
19
19
|
|
|
20
20
|
# Helper: Extract a frontmatter field value from a file
|
|
21
21
|
# Usage: extract_field <file> <field_name>
|
|
@@ -24,8 +24,8 @@ Use simple, individual commands. Never combine multiple operations into bash loo
|
|
|
24
24
|
|
|
25
25
|
Scan the codebase for existing plans:
|
|
26
26
|
|
|
27
|
-
1. **Find plan files**: Look in
|
|
28
|
-
- Run `ls
|
|
27
|
+
1. **Find plan files**: Look in `.workflows/planning/`
|
|
28
|
+
- Run `ls .workflows/planning/` to list plan files
|
|
29
29
|
- Each topic is a directory containing `plan.md`
|
|
30
30
|
|
|
31
31
|
2. **Extract plan metadata**: For each plan file
|
|
@@ -39,7 +39,7 @@ Scan the codebase for existing plans:
|
|
|
39
39
|
```
|
|
40
40
|
Dependency Linking
|
|
41
41
|
|
|
42
|
-
No plans found in
|
|
42
|
+
No plans found in .workflows/planning/
|
|
43
43
|
|
|
44
44
|
There are no plans to link. Create plans first.
|
|
45
45
|
```
|
|
@@ -122,7 +122,7 @@ Key:
|
|
|
122
122
|
|
|
123
123
|
For each unresolved dependency:
|
|
124
124
|
|
|
125
|
-
1. **Search for matching plan**: Does
|
|
125
|
+
1. **Search for matching plan**: Does `.workflows/planning/{dependency-topic}/plan.md` exist?
|
|
126
126
|
- If no match: Mark as "no plan exists" - cannot resolve yet
|
|
127
127
|
|
|
128
128
|
2. **If plan exists**: Load the format's reading reference
|
|
@@ -174,7 +174,7 @@ Unresolved (no matching plan exists):
|
|
|
174
174
|
• {source} → {target}: {description}
|
|
175
175
|
|
|
176
176
|
Updated files:
|
|
177
|
-
•
|
|
177
|
+
• .workflows/planning/{topic}/plan.md
|
|
178
178
|
```
|
|
179
179
|
|
|
180
180
|
If any dependencies remain unresolved:
|
package/skills/migrate/SKILL.md
CHANGED
|
@@ -39,7 +39,7 @@ Return control silently - no user interaction needed.
|
|
|
39
39
|
## Notes
|
|
40
40
|
|
|
41
41
|
- This skill is run automatically at the start of every workflow skill
|
|
42
|
-
- Migrations are tracked in
|
|
42
|
+
- Migrations are tracked in `.workflows/.state/migrations` (one migration ID per line)
|
|
43
43
|
- The orchestrator skips entire migrations once recorded — individual scripts don't track
|
|
44
44
|
- To force re-running all migrations, delete the tracking file
|
|
45
45
|
- Each migration is idempotent - safe to run multiple times
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
# ./scripts/migrate.sh
|
|
10
10
|
#
|
|
11
11
|
# Tracking:
|
|
12
|
-
# Migrations are tracked in
|
|
12
|
+
# Migrations are tracked in .workflows/.state/migrations
|
|
13
13
|
# Format: "migration_id" per line (e.g., "001", "002")
|
|
14
14
|
# The orchestrator checks/records migration IDs — individual scripts don't track.
|
|
15
15
|
# Delete the log file to force re-running all migrations.
|
|
@@ -24,28 +24,65 @@ set -eo pipefail
|
|
|
24
24
|
|
|
25
25
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
26
26
|
MIGRATIONS_DIR="$SCRIPT_DIR/migrations"
|
|
27
|
-
TRACKING_FILE="docs/workflow/.state/migrations"
|
|
28
27
|
|
|
29
|
-
#
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
# === LEGACY TRACKING SUPPORT (remove after 2026-06) ===
|
|
29
|
+
#
|
|
30
|
+
# Handles tracking file discovery across historical locations and formats.
|
|
31
|
+
# Once all users have run migration 011, replace this section with:
|
|
32
|
+
# TRACKING_FILE=".workflows/.state/migrations"
|
|
33
|
+
# mkdir -p "$(dirname "$TRACKING_FILE")"
|
|
34
|
+
|
|
35
|
+
find_tracking_file() {
|
|
36
|
+
for candidate in \
|
|
37
|
+
".workflows/.state/migrations" \
|
|
38
|
+
"docs/workflow/.state/migrations" \
|
|
39
|
+
"docs/workflow/.cache/migrations" \
|
|
40
|
+
"docs/workflow/.cache/migrations.log"
|
|
41
|
+
do
|
|
42
|
+
[ -f "$candidate" ] && echo "$candidate" && return
|
|
43
|
+
done
|
|
44
|
+
echo ".workflows/.state/migrations"
|
|
45
|
+
}
|
|
33
46
|
|
|
34
|
-
|
|
35
|
-
|
|
47
|
+
normalize_tracking_format() {
|
|
48
|
+
local file="$1"
|
|
49
|
+
[ ! -f "$file" ] && return
|
|
50
|
+
# Old: "docs/workflow/discussion/auth.md: 001" → New: "001"
|
|
51
|
+
if grep -q ': [0-9]' "$file" 2>/dev/null; then
|
|
52
|
+
grep -oE '[0-9]+$' "$file" | sort -u > "${file}.tmp"
|
|
53
|
+
mv "${file}.tmp" "$file"
|
|
54
|
+
fi
|
|
55
|
+
}
|
|
36
56
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
57
|
+
stabilize_tracking_location() {
|
|
58
|
+
local file="$1"
|
|
59
|
+
local stable="docs/workflow/.state/migrations"
|
|
60
|
+
# If tracking is at a legacy .cache/ location, move to .state/ so it survives migration 010
|
|
61
|
+
case "$file" in
|
|
62
|
+
docs/workflow/.cache/*)
|
|
63
|
+
mkdir -p "$(dirname "$stable")"
|
|
64
|
+
mv "$file" "$stable"
|
|
65
|
+
echo "$stable"
|
|
66
|
+
;;
|
|
67
|
+
*)
|
|
68
|
+
echo "$file"
|
|
69
|
+
;;
|
|
70
|
+
esac
|
|
71
|
+
}
|
|
45
72
|
|
|
46
|
-
|
|
73
|
+
TRACKING_FILE=$(find_tracking_file)
|
|
74
|
+
normalize_tracking_format "$TRACKING_FILE"
|
|
75
|
+
TRACKING_FILE=$(stabilize_tracking_location "$TRACKING_FILE")
|
|
76
|
+
mkdir -p "$(dirname "$TRACKING_FILE")"
|
|
47
77
|
touch "$TRACKING_FILE"
|
|
48
78
|
|
|
79
|
+
# === END LEGACY TRACKING SUPPORT ===
|
|
80
|
+
|
|
81
|
+
# Track counts for final report
|
|
82
|
+
FILES_UPDATED=0
|
|
83
|
+
FILES_SKIPPED=0
|
|
84
|
+
MIGRATIONS_RUN=0
|
|
85
|
+
|
|
49
86
|
#
|
|
50
87
|
# Helper function: Report a file update (for migration scripts to call)
|
|
51
88
|
# Usage: report_update "filepath" "description"
|
|
@@ -88,14 +125,6 @@ if [ ${#MIGRATION_SCRIPTS[@]} -eq 0 ]; then
|
|
|
88
125
|
exit 0
|
|
89
126
|
fi
|
|
90
127
|
|
|
91
|
-
# One-time: convert old per-file format to per-migration format
|
|
92
|
-
# Old: "docs/workflow/discussion/auth.md: 001" → extracts "001"
|
|
93
|
-
# New: "001" → already correct
|
|
94
|
-
if grep -q ': [0-9]' "$TRACKING_FILE" 2>/dev/null; then
|
|
95
|
-
grep -oE '[0-9]+$' "$TRACKING_FILE" | sort -u > "${TRACKING_FILE}.tmp"
|
|
96
|
-
mv "${TRACKING_FILE}.tmp" "$TRACKING_FILE"
|
|
97
|
-
fi
|
|
98
|
-
|
|
99
128
|
for script in "${MIGRATION_SCRIPTS[@]}"; do
|
|
100
129
|
# Extract migration ID from filename (e.g., "001" from "001-discussion-frontmatter.sh")
|
|
101
130
|
migration_id=$(basename "$script" .sh | grep -oE '^[0-9]+')
|
|
@@ -115,6 +144,8 @@ for script in "${MIGRATION_SCRIPTS[@]}"; do
|
|
|
115
144
|
# shellcheck source=/dev/null
|
|
116
145
|
source "$script"
|
|
117
146
|
|
|
147
|
+
# Re-find tracking file (migration 011 moves it)
|
|
148
|
+
TRACKING_FILE=$(find_tracking_file)
|
|
118
149
|
echo "$migration_id" >> "$TRACKING_FILE"
|
|
119
150
|
MIGRATIONS_RUN=$((MIGRATIONS_RUN + 1))
|
|
120
151
|
done
|