@leeovery/claude-technical-workflows 2.1.35 → 2.1.37

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 CHANGED
@@ -129,7 +129,7 @@ Not every task needs the full workflow. These skills gather inputs flexibly and
129
129
  /start-feature
130
130
 
131
131
 
132
- Discussion ──▶ Specification ──▶ Planning ──▶ Implementation
132
+ Discussion ──▶ Specification ──▶ Planning ──▶ Implementation ──▶ Review
133
133
  ```
134
134
 
135
135
  **How it works:** After each phase completes, a plan mode bridge clears context and advances to the next phase automatically. You approve each transition with "clear context and continue" — this keeps each phase in a clean context window.
@@ -254,7 +254,7 @@ skills/
254
254
 
255
255
  ├── # Entry-point skills (user-invocable)
256
256
  ├── migrate/ # Keep workflow files in sync with system design
257
- ├── start-feature/ # Pipeline: discussion → spec → plan → impl
257
+ ├── start-feature/ # Pipeline: discussion → spec → plan → impl → review
258
258
  ├── continue-feature/ # Pipeline: route feature to next phase
259
259
  ├── link-dependencies/ # Standalone: wire cross-topic deps
260
260
  ├── start-research/ # Begin research
@@ -268,7 +268,8 @@ skills/
268
268
 
269
269
  ├── # Bridge skills (model-invocable — pipeline pre-flight)
270
270
  ├── begin-planning/ # Pre-flight for planning in pipeline
271
- └── begin-implementation/ # Pre-flight for implementation in pipeline
271
+ ├── begin-implementation/ # Pre-flight for implementation in pipeline
272
+ └── begin-review/ # Pre-flight for review in pipeline
272
273
 
273
274
  agents/
274
275
  ├── review-task-verifier.md # Verifies single task implementation for review
@@ -334,7 +335,7 @@ Independent skills that gather inputs flexibly (inline context, files, or prompt
334
335
 
335
336
  | Skill | Description |
336
337
  |---------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|
337
- | [**/start-feature**](skills/start-feature/) | Start a new feature through the full pipeline. Gathers context, creates a discussion, then bridges through specification → planning → implementation. |
338
+ | [**/start-feature**](skills/start-feature/) | Start a new feature through the full pipeline. Gathers context, creates a discussion, then bridges through specification → planning → implementation → review. |
338
339
  | [**/continue-feature**](skills/continue-feature/) | Continue a feature through its next pipeline phase. Routes automatically based on artifact state. Used manually or from plan mode bridges. |
339
340
  | [**/link-dependencies**](skills/link-dependencies/) | Link external dependencies across topics. Scans plans and wires up unresolved cross-topic dependencies. |
340
341
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leeovery/claude-technical-workflows",
3
- "version": "2.1.35",
3
+ "version": "2.1.37",
4
4
  "description": "Technical workflow skills & commands for Claude Code",
5
5
  "license": "MIT",
6
6
  "author": "Lee Overy <me@leeovery.com>",
@@ -0,0 +1,90 @@
1
+ ---
2
+ name: begin-review
3
+ description: "Bridge skill for the feature pipeline. Runs pre-flight checks for review and invokes the technical-review skill. Called by continue-feature — not directly by users."
4
+ user-invocable: false
5
+ allowed-tools: Bash(.claude/skills/start-review/scripts/discovery.sh)
6
+ ---
7
+
8
+ Invoke the **technical-review** skill for this conversation with pre-flight context.
9
+
10
+ > **⚠️ ZERO OUTPUT RULE**: Do not narrate your processing. Produce no output until a step or reference file explicitly specifies display content. No "proceeding with...", no discovery summaries, no routing decisions, no transition text. Your first output must be content explicitly called for by the instructions.
11
+
12
+ ## Instructions
13
+
14
+ Follow these steps EXACTLY as written. Do not skip steps or combine them.
15
+
16
+ This skill is a **bridge** — it runs pre-flight checks for review and hands off to the processing skill. The topic has already been selected by the caller.
17
+
18
+ **CRITICAL**: This guidance is mandatory.
19
+
20
+ - After each user interaction, STOP and wait for their response before proceeding
21
+ - Never assume or anticipate user choices
22
+ - Complete each step fully before moving to the next
23
+
24
+ ---
25
+
26
+ ## Step 1: Run Discovery
27
+
28
+ !`.claude/skills/start-review/scripts/discovery.sh`
29
+
30
+ If the above shows a script invocation rather than YAML output, the dynamic content preprocessor did not run. Execute the script before continuing:
31
+
32
+ ```bash
33
+ .claude/skills/start-review/scripts/discovery.sh
34
+ ```
35
+
36
+ If YAML content is already displayed, it has been run on your behalf.
37
+
38
+ Parse the output to find the plan matching the provided topic. Extract:
39
+
40
+ - **Plan details**: status, format, plan_id, specification, specification_exists
41
+ - **Implementation status**: implementation_status
42
+ - **Review state**: review_count, latest_review_version
43
+
44
+ If the plan is missing, this is an error — report it and stop.
45
+
46
+ If `implementation_status` is `"none"`, this is an error:
47
+
48
+ > *Output the next fenced block as a code block:*
49
+
50
+ ```
51
+ Review Pre-Flight Failed
52
+
53
+ "{topic:(titlecase)}" has no implementation to review.
54
+
55
+ Implementation must be completed or in-progress before review.
56
+ ```
57
+
58
+ **STOP.** Do not proceed — terminal condition.
59
+
60
+ → Proceed to **Step 2**.
61
+
62
+ ---
63
+
64
+ ## Step 2: Determine Review Version
65
+
66
+ Check the topic's review state from discovery output:
67
+
68
+ - If `review_count` is 0 → review version is `r1`
69
+ - If `review_count` > 0 → review version is `r{latest_review_version + 1}`
70
+
71
+ → Proceed to **Step 3**.
72
+
73
+ ---
74
+
75
+ ## Step 3: Invoke the Skill
76
+
77
+ Construct the handoff and invoke the [technical-review](../technical-review/SKILL.md) skill:
78
+
79
+ ```
80
+ Review session
81
+ Plans to review:
82
+ - topic: {topic}
83
+ plan: docs/workflow/planning/{topic}/plan.md
84
+ format: {format}
85
+ plan_id: {plan_id} (if applicable)
86
+ specification: {specification} (exists: {true|false})
87
+ review_version: r{N}
88
+
89
+ Invoke the technical-review skill.
90
+ ```
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: continue-feature
3
3
  description: "Continue a feature through the pipeline. Routes to the next phase (specification, planning, or implementation) based on artifact state. Can be invoked manually or from plan mode bridges."
4
- allowed-tools: Bash(.claude/skills/continue-feature/scripts/discovery.sh), Bash(.claude/hooks/workflows/write-session-state.sh)
4
+ allowed-tools: Bash(.claude/skills/continue-feature/scripts/discovery.sh), Bash(.claude/hooks/workflows/write-session-state.sh), Bash(.claude/skills/start-review/scripts/discovery.sh)
5
5
  hooks:
6
6
  PreToolUse:
7
7
  - hooks:
@@ -33,7 +33,8 @@ Context refresh (compaction) summarizes the conversation, losing procedural deta
33
33
  1. **Re-read this skill file completely.** Do not rely on your summary of it. The full process, steps, and rules must be reloaded.
34
34
  2. **Identify the topic.** Check conversation history for the topic name. If unknown, ask the user.
35
35
  3. **Determine current step from artifacts** (check top-down, first match wins):
36
- - Implementation tracking exists with `status: completed` → resume at **Step 6** (phase bridge — feature is done)
36
+ - Review exists for topic → resume at **Step 7** (phase bridge — pipeline complete)
37
+ - Implementation tracking exists with `status: completed`, no review → resume at **Step 6** (invoke begin-review)
37
38
  - Implementation tracking exists with `status: in-progress` → resume at **Step 5** (re-invoke begin-implementation)
38
39
  - Plan exists with `status: concluded` → resume at **Step 5** (invoke begin-implementation)
39
40
  - Plan exists with other status → resume at **Step 4** (re-invoke begin-planning)
@@ -109,7 +110,7 @@ Present the discovered state as context, then ask the user to select:
109
110
  Continue Feature
110
111
 
111
112
  This skill continues a feature through the pipeline phases:
112
- Discussion → Specification → Planning → Implementation
113
+ Discussion → Specification → Planning → Implementation → Review
113
114
 
114
115
  It's designed for features started with /start-feature, but works
115
116
  with any topic that has workflow artifacts.
@@ -142,7 +143,7 @@ Select by number, or enter a topic name directly:
142
143
 
143
144
  Load **[detect-phase.md](references/detect-phase.md)** and follow its instructions.
144
145
 
145
- → The reference file will route you to **Step 3**, **Step 4**, **Step 5**, or a terminal condition. Follow its routing.
146
+ → The reference file will route you to **Step 3**, **Step 4**, **Step 5**, **Step 6**, or a terminal condition. Follow its routing.
146
147
 
147
148
  ---
148
149
 
@@ -150,7 +151,7 @@ Load **[detect-phase.md](references/detect-phase.md)** and follow its instructio
150
151
 
151
152
  Load **[invoke-specification.md](references/invoke-specification.md)** and follow its instructions.
152
153
 
153
- **CRITICAL**: When the specification concludes (status becomes "concluded"), you MUST proceed to **Step 6** below. Do not end the session — the feature pipeline continues to the phase bridge.
154
+ **CRITICAL**: When the specification concludes (status becomes "concluded"), you MUST proceed to **Step 7** below. Do not end the session — the feature pipeline continues to the phase bridge.
154
155
 
155
156
  ---
156
157
 
@@ -158,7 +159,7 @@ Load **[invoke-specification.md](references/invoke-specification.md)** and follo
158
159
 
159
160
  Load **[invoke-planning.md](references/invoke-planning.md)** and follow its instructions.
160
161
 
161
- **CRITICAL**: When the plan concludes (status becomes "concluded"), you MUST proceed to **Step 6** below. Do not end the session — the feature pipeline continues to the phase bridge.
162
+ **CRITICAL**: When the plan concludes (status becomes "concluded"), you MUST proceed to **Step 7** below. Do not end the session — the feature pipeline continues to the phase bridge.
162
163
 
163
164
  ---
164
165
 
@@ -166,12 +167,20 @@ Load **[invoke-planning.md](references/invoke-planning.md)** and follow its inst
166
167
 
167
168
  Load **[invoke-implementation.md](references/invoke-implementation.md)** and follow its instructions.
168
169
 
169
- **CRITICAL**: When implementation completes (tracking status becomes "completed"), you MUST proceed to **Step 6** below. Do not end the session — the feature pipeline continues to the phase bridge.
170
+ **CRITICAL**: When implementation completes (tracking status becomes "completed"), you MUST proceed to **Step 7** below. Do not end the session — the feature pipeline continues to the phase bridge.
170
171
 
171
172
  ---
172
173
 
173
- ## Step 6: Phase Bridge
174
+ ## Step 6: Review Phase
175
+
176
+ Load **[invoke-review.md](references/invoke-review.md)** and follow its instructions.
177
+
178
+ **CRITICAL**: When review concludes, you MUST proceed to **Step 7** below. Do not end the session — the feature pipeline continues to the phase bridge.
179
+
180
+ ---
181
+
182
+ ## Step 7: Phase Bridge
174
183
 
175
184
  Load **[phase-bridge.md](references/phase-bridge.md)** and follow its instructions.
176
185
 
177
- The bridge will enter plan mode with instructions to invoke continue-feature for the topic in the next session.
186
+ The bridge will enter plan mode with instructions to invoke continue-feature for the topic in the next session, or show a terminal message if the pipeline is complete.
@@ -14,23 +14,26 @@ 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. Read `docs/workflow/implementation/{topic}/tracking.md`
18
- - If exists with `status: completed` → next_phase is **"done"**
17
+ 1. Check `docs/workflow/review/{topic}/r*/review.md`
18
+ - If any review exists → next_phase is **"done"**
19
+
20
+ 2. Read `docs/workflow/implementation/{topic}/tracking.md`
21
+ - If exists with `status: completed` → next_phase is **"review"**
19
22
  - If exists with `status: in-progress` → next_phase is **"implementation"**
20
23
 
21
- 2. Read `docs/workflow/planning/{topic}/plan.md`
24
+ 3. Read `docs/workflow/planning/{topic}/plan.md`
22
25
  - If exists with `status: concluded` → next_phase is **"implementation"**
23
26
  - If exists with other status → next_phase is **"planning"**
24
27
 
25
- 3. Read `docs/workflow/specification/{topic}/specification.md`
28
+ 4. Read `docs/workflow/specification/{topic}/specification.md`
26
29
  - If exists with `status: concluded` → next_phase is **"planning"**
27
30
  - If exists with other status → next_phase is **"specification"**
28
31
 
29
- 4. Check `docs/workflow/discussion/{topic}.md`
32
+ 5. Check `docs/workflow/discussion/{topic}.md`
30
33
  - If exists with `status: concluded` → next_phase is **"specification"**
31
34
  - If exists with other status → next_phase is **"discussion"**
32
35
 
33
- 5. If none found → next_phase is **"unknown"**
36
+ 6. If none found → next_phase is **"unknown"**
34
37
 
35
38
  ## Routing
36
39
 
@@ -46,17 +49,21 @@ Check artifacts in this order (first match wins):
46
49
 
47
50
  → Proceed to **Step 5**.
48
51
 
52
+ #### If next_phase is "review"
53
+
54
+ → Proceed to **Step 6**.
55
+
49
56
  #### If next_phase is "done"
50
57
 
51
58
  > *Output the next fenced block as a code block:*
52
59
 
53
60
  ```
54
- Feature Complete
61
+ Pipeline Complete
55
62
 
56
- "{topic:(titlecase)}" has completed implementation.
63
+ "{topic:(titlecase)}" has completed all pipeline phases
64
+ (implementation and review).
57
65
 
58
- Run /start-review to validate the implementation against the
59
- specification and plan.
66
+ Use /start-review to re-review or synthesize findings.
60
67
  ```
61
68
 
62
69
  **STOP.** Do not proceed — terminal condition.
@@ -21,7 +21,7 @@ Saving session state so Claude can pick up where it left off and continue the fe
21
21
  "{topic}" \
22
22
  "skills/technical-implementation/SKILL.md" \
23
23
  "docs/workflow/implementation/{topic}/tracking.md" \
24
- --pipeline "This session is part of the feature pipeline. After implementation completes, return to the continue-feature skill and execute Step 6 (Phase Bridge). Load: skills/continue-feature/references/phase-bridge.md"
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
 
27
27
  ## Handoff
@@ -33,7 +33,7 @@ Implementation pre-flight for: {topic}
33
33
  Plan: docs/workflow/planning/{topic}/plan.md
34
34
 
35
35
  PIPELINE CONTINUATION — When implementation completes (tracking status: completed),
36
- you MUST return to the continue-feature skill and execute Step 6 (Phase Bridge).
36
+ you MUST return to the continue-feature skill and execute Step 7 (Phase Bridge).
37
37
  Load: skills/continue-feature/references/phase-bridge.md
38
38
  Do not end the session after implementation — the feature pipeline continues.
39
39
 
@@ -21,7 +21,7 @@ Saving session state so Claude can pick up where it left off and continue the fe
21
21
  "{topic}" \
22
22
  "skills/technical-planning/SKILL.md" \
23
23
  "docs/workflow/planning/{topic}/plan.md" \
24
- --pipeline "This session is part of the feature pipeline. After the plan concludes, return to the continue-feature skill and execute Step 6 (Phase Bridge). Load: skills/continue-feature/references/phase-bridge.md"
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
 
27
27
  ## Handoff
@@ -33,7 +33,7 @@ Planning pre-flight for: {topic}
33
33
  Specification: docs/workflow/specification/{topic}/specification.md
34
34
 
35
35
  PIPELINE CONTINUATION — When planning concludes (plan status: concluded),
36
- you MUST return to the continue-feature skill and execute Step 6 (Phase Bridge).
36
+ you MUST return to the continue-feature skill and execute Step 7 (Phase Bridge).
37
37
  Load: skills/continue-feature/references/phase-bridge.md
38
38
  Do not end the session after planning — the feature pipeline continues.
39
39
 
@@ -0,0 +1,43 @@
1
+ # Invoke Review
2
+
3
+ *Reference for **[continue-feature](../SKILL.md)***
4
+
5
+ ---
6
+
7
+ Invoke the begin-review bridge skill for this topic.
8
+
9
+ ## Save Session State
10
+
11
+ Before invoking the processing skill, save a session bookmark.
12
+
13
+ > *Output the next fenced block as a code block:*
14
+
15
+ ```
16
+ Saving session state so Claude can pick up where it left off and continue the feature pipeline if the conversation is compacted.
17
+ ```
18
+
19
+ ```bash
20
+ .claude/hooks/workflows/write-session-state.sh \
21
+ "{topic}" \
22
+ "skills/technical-review/SKILL.md" \
23
+ "docs/workflow/review/{topic}/r{N}/review.md" \
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
+ ```
26
+
27
+ ## Handoff
28
+
29
+ Invoke the [begin-review](../../begin-review/SKILL.md) skill:
30
+
31
+ ```
32
+ Review pre-flight for: {topic}
33
+ Plan: docs/workflow/planning/{topic}/plan.md
34
+
35
+ PIPELINE CONTINUATION — When review concludes,
36
+ you MUST return to the continue-feature skill and execute Step 7 (Phase Bridge).
37
+ Load: skills/continue-feature/references/phase-bridge.md
38
+ Do not end the session after review — the feature pipeline continues.
39
+
40
+ Invoke the begin-review skill.
41
+ ```
42
+
43
+ The bridge skill handles discovery, validation, version detection, and the handoff to technical-review.
@@ -31,7 +31,7 @@ Saving session state so Claude can pick up where it left off and continue the fe
31
31
  "{topic}" \
32
32
  "skills/technical-specification/SKILL.md" \
33
33
  "docs/workflow/specification/{topic}/specification.md" \
34
- --pipeline "This session is part of the feature pipeline. After the specification concludes, return to the continue-feature skill and execute Step 6 (Phase Bridge). Load: skills/continue-feature/references/phase-bridge.md"
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
 
37
37
  ## Handoff
@@ -47,7 +47,7 @@ Source material:
47
47
  Topic name: {topic}
48
48
 
49
49
  PIPELINE CONTINUATION — When this specification concludes (status: concluded),
50
- you MUST return to the continue-feature skill and execute Step 6 (Phase Bridge).
50
+ you MUST return to the continue-feature skill and execute Step 7 (Phase Bridge).
51
51
  Load: skills/continue-feature/references/phase-bridge.md
52
52
  Do not end the session after the specification — the feature pipeline continues.
53
53
 
@@ -12,9 +12,10 @@ Check which step just completed to determine what continue-feature will route to
12
12
 
13
13
  - Just completed **specification** (Step 3) → next session routes to planning
14
14
  - Just completed **planning** (Step 4) → next session routes to implementation
15
- - Just completed **implementation** (Step 5) → feature is done
15
+ - Just completed **implementation** (Step 5) → next session routes to review
16
+ - Just completed **review** (Step 6) → pipeline is done
16
17
 
17
- #### If implementation just completed
18
+ #### If review just completed
18
19
 
19
20
  > *Output the next fenced block as a code block:*
20
21
 
@@ -22,8 +23,6 @@ Check which step just completed to determine what continue-feature will route to
22
23
  Feature Complete
23
24
 
24
25
  "{topic:(titlecase)}" has completed all pipeline phases.
25
-
26
- Run /start-review to validate the implementation.
27
26
  ```
28
27
 
29
28
  **STOP.** Do not proceed — terminal condition.
@@ -15,6 +15,7 @@ DISC_DIR="docs/workflow/discussion"
15
15
  SPEC_DIR="docs/workflow/specification"
16
16
  PLAN_DIR="docs/workflow/planning"
17
17
  IMPL_DIR="docs/workflow/implementation"
18
+ REVIEW_DIR="docs/workflow/review"
18
19
 
19
20
  # Helper: Extract a frontmatter field value from a file
20
21
  # Usage: extract_field <file> <field_name>
@@ -132,13 +133,26 @@ else
132
133
  impl_status=${impl_status:-"in-progress"}
133
134
  fi
134
135
 
136
+ # Review state
137
+ review_exists="false"
138
+ if [ -d "$REVIEW_DIR/${topic}" ]; then
139
+ for rdir in "$REVIEW_DIR/${topic}"/r*/; do
140
+ [ -d "$rdir" ] || continue
141
+ [ -f "${rdir}review.md" ] || continue
142
+ review_exists="true"
143
+ break
144
+ done
145
+ fi
146
+
135
147
  #
136
148
  # Compute next_phase (check from top down, first match wins)
137
149
  #
138
150
  next_phase=""
139
151
 
140
- if [ "$impl_exists" = "true" ] && [ "$impl_status" = "completed" ]; then
152
+ if [ "$impl_exists" = "true" ] && [ "$impl_status" = "completed" ] && [ "$review_exists" = "true" ]; then
141
153
  next_phase="done"
154
+ elif [ "$impl_exists" = "true" ] && [ "$impl_status" = "completed" ] && [ "$review_exists" = "false" ]; then
155
+ next_phase="review"
142
156
  elif [ "$impl_exists" = "true" ] && [ "$impl_status" = "in-progress" ]; then
143
157
  next_phase="implementation"
144
158
  elif [ "$plan_exists" = "true" ] && [ "$plan_status" = "concluded" ]; then
@@ -191,6 +205,9 @@ else
191
205
  echo " status: \"$impl_status\""
192
206
  fi
193
207
 
208
+ echo " review:"
209
+ echo " exists: $review_exists"
210
+
194
211
  echo " next_phase: \"$next_phase\""
195
212
  echo " actionable: $actionable"
196
213
 
@@ -38,7 +38,7 @@ mkdir -p "$(dirname "$TRACKING_FILE")"
38
38
  OLD_CACHE_LOG="docs/workflow/.cache/migrations.log"
39
39
  OLD_CACHE_FILE="docs/workflow/.cache/migrations"
40
40
  if [ -f "$OLD_CACHE_LOG" ] || [ -f "$OLD_CACHE_FILE" ]; then
41
- { cat "$OLD_CACHE_LOG" 2>/dev/null; cat "$OLD_CACHE_FILE" 2>/dev/null; cat "$TRACKING_FILE" 2>/dev/null; } | sort -u > "${TRACKING_FILE}.tmp"
41
+ { cat "$OLD_CACHE_LOG" 2>/dev/null || true; cat "$OLD_CACHE_FILE" 2>/dev/null || true; cat "$TRACKING_FILE" 2>/dev/null || true; } | sort -u > "${TRACKING_FILE}.tmp"
42
42
  mv "${TRACKING_FILE}.tmp" "$TRACKING_FILE"
43
43
  rm -f "$OLD_CACHE_LOG" "$OLD_CACHE_FILE"
44
44
  fi
@@ -128,7 +128,7 @@ Review Overview
128
128
  All {N} implemented plans have been reviewed.
129
129
 
130
130
  1. {topic:(titlecase)}
131
- └─ Review: r{N} ({verdict})
131
+ └─ Review: x{review_count} — r{latest_review_version} ({latest_review_verdict})
132
132
  └─ Synthesis: @if(has_synthesis) completed @else pending @endif
133
133
 
134
134
  2. ...
@@ -21,7 +21,7 @@ Review Overview
21
21
  └─ Plan: concluded ({format})
22
22
  └─ Implementation: {impl_status:[completed|in-progress]}
23
23
  └─ Spec: {spec:[exists|missing]}
24
- └─ Review: @if(has_review) r{N} ({verdict}) @else (none) @endif
24
+ └─ Review: @if(review_count > 0) x{review_count} — r{latest_review_version} ({latest_review_verdict}) @else (no review) @endif
25
25
 
26
26
  2. ...
27
27
  ```
@@ -57,8 +57,8 @@ Key:
57
57
  in-progress — implementation still ongoing
58
58
 
59
59
  Review status:
60
- r{N} — review version number
61
- (none) — not yet reviewed
60
+ x{N} — number of reviews completed
61
+ (no review) — not yet reviewed
62
62
  ```
63
63
 
64
64
  **Then route based on what's reviewable:**
@@ -85,6 +85,25 @@ if [ -d "$PLAN_DIR" ] && [ -n "$(ls -A "$PLAN_DIR" 2>/dev/null)" ]; then
85
85
  impl_status=${impl_status_val:-"in-progress"}
86
86
  fi
87
87
 
88
+ # Check review status for this plan
89
+ review_count=0
90
+ latest_review_version=0
91
+ latest_review_verdict=""
92
+ if [ -d "$REVIEW_DIR/$name" ]; then
93
+ for rdir in "$REVIEW_DIR/$name"/r*/; do
94
+ [ -d "$rdir" ] || continue
95
+ [ -f "${rdir}review.md" ] || continue
96
+ rnum=${rdir##*r}
97
+ rnum=${rnum%/}
98
+ review_count=$((review_count + 1))
99
+ if [ "$rnum" -gt "$latest_review_version" ] 2>/dev/null; then
100
+ latest_review_version=$rnum
101
+ latest_review_verdict=$(grep -m1 '\*\*QA Verdict\*\*:' "${rdir}review.md" 2>/dev/null | \
102
+ sed -E 's/.*\*\*QA Verdict\*\*:[[:space:]]*//' || true)
103
+ fi
104
+ done
105
+ fi
106
+
88
107
  echo " - name: \"$name\""
89
108
  echo " topic: \"$topic\""
90
109
  echo " status: \"$status\""
@@ -96,6 +115,11 @@ if [ -d "$PLAN_DIR" ] && [ -n "$(ls -A "$PLAN_DIR" 2>/dev/null)" ]; then
96
115
  echo " plan_id: \"$plan_id\""
97
116
  fi
98
117
  echo " implementation_status: \"$impl_status\""
118
+ echo " review_count: $review_count"
119
+ if [ "$review_count" -gt 0 ]; then
120
+ echo " latest_review_version: $latest_review_version"
121
+ echo " latest_review_verdict: \"$latest_review_verdict\""
122
+ fi
99
123
 
100
124
  plan_count=$((plan_count + 1))
101
125
  if [ "$impl_status" != "none" ]; then
@@ -7,13 +7,13 @@
7
7
  Follow stages A through E sequentially for each task. Do not abbreviate, skip, or compress stages based on previous iterations.
8
8
 
9
9
  ```
10
- A. Retrieve next task
10
+ A. Retrieve next task + mark in-progress
11
11
  B. Execute task → invoke-executor.md
12
12
  → Executor Blocked (conditional)
13
13
  C. Review task → invoke-reviewer.md
14
14
  → Review Changes with fix analysis (conditional, fix_gate_mode)
15
15
  D. Task gate (gated → prompt user / auto → announce)
16
- E. Update progress + commit
16
+ E. Update progress + phase check + commit
17
17
  → loop back to A until done
18
18
  ```
19
19
 
@@ -25,6 +25,8 @@ E. Update progress + commit
25
25
  2. If no available tasks remain → skip to **When All Tasks Are Complete**.
26
26
  3. Normalise the task content following **[task-normalisation.md](task-normalisation.md)**.
27
27
  4. Reset `fix_attempts` to `0` in the implementation tracking file.
28
+ 5. Mark the task as **in-progress** — follow the format's **updating.md** "In Progress" status transition.
29
+ 6. If the format's updating.md includes a **Phase / Parent Status** section: check whether the task's phase parent needs to be started. If so, follow the format's phase start instructions.
28
30
 
29
31
  ---
30
32
 
@@ -172,10 +174,15 @@ Check the `task_gate_mode` field in the implementation tracking file.
172
174
 
173
175
  **Update task progress in the plan** — follow the format's **updating.md** instructions to mark the task complete.
174
176
 
177
+ **Check for phase completion** — use the format's **reading.md** to list remaining tasks in the current phase. If no tasks remain open or in-progress:
178
+ - If the format's updating.md includes a **Phase / Parent Status** section, follow its phase completion instructions
179
+ - Append the phase number to `completed_phases` in the tracking file
180
+
175
181
  **Mirror to implementation tracking file** (`docs/workflow/implementation/{topic}/tracking.md`):
176
182
  - Append the task ID to `completed_tasks`
177
183
  - Update `current_phase` if phase changed
178
184
  - Update `current_task` to the next task (or `~` if done)
185
+ - Update `completed_phases` if a phase completed this iteration
179
186
  - Update `updated` to today's date
180
187
  - If user chose `auto` at the task gate this turn: update `task_gate_mode: auto`
181
188
  - If user chose `auto` at the fix gate this turn: update `fix_gate_mode: auto`
@@ -25,3 +25,35 @@ To update a task's properties:
25
25
  - **Priority**: `tick update <task-id> --priority 1`
26
26
  - **Parent**: `tick update <task-id> --parent <new-parent-id>` (pass empty string to clear)
27
27
  - **Dependencies**: See [graph.md](graph.md)
28
+
29
+ ## Phase / Parent Status
30
+
31
+ Phase tasks are parent tasks in the tick hierarchy. Update their status to reflect child task progress.
32
+
33
+ ### Start Phase
34
+
35
+ When the first task in a phase begins and the phase parent is still `open`:
36
+
37
+ ```bash
38
+ tick start <phase-id>
39
+ ```
40
+
41
+ Check the phase parent's status with `tick show <phase-id>`. If status is `open`, start it.
42
+
43
+ ### Complete Phase
44
+
45
+ When all child tasks in a phase are `done` or `cancelled` (none remain `open` or `in_progress`):
46
+
47
+ ```bash
48
+ tick done <phase-id>
49
+ ```
50
+
51
+ After completing a task, check: `tick list --parent <phase-id> --status open` and `tick list --parent <phase-id> --status in_progress`. If both return empty, the phase is complete.
52
+
53
+ ### Cancel Phase
54
+
55
+ If all child tasks are `cancelled` (none `done`):
56
+
57
+ ```bash
58
+ tick cancel <phase-id>
59
+ ```