@leeovery/claude-technical-workflows 2.1.24 → 2.1.25

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.
Files changed (44) hide show
  1. package/agents/review-task-verifier.md +22 -10
  2. package/package.json +1 -1
  3. package/skills/link-dependencies/SKILL.md +60 -33
  4. package/skills/start-discussion/references/display-options.md +44 -15
  5. package/skills/start-discussion/references/gather-context-continue.md +2 -0
  6. package/skills/start-discussion/references/gather-context-fresh.md +6 -0
  7. package/skills/start-discussion/references/gather-context-research.md +2 -2
  8. package/skills/start-implementation/SKILL.md +114 -47
  9. package/skills/start-planning/SKILL.md +94 -36
  10. package/skills/start-research/references/gather-context.md +4 -4
  11. package/skills/start-review/SKILL.md +14 -123
  12. package/skills/start-review/references/display-plans.md +103 -0
  13. package/skills/start-review/references/invoke-skill.md +32 -0
  14. package/skills/start-review/references/select-plans.md +41 -0
  15. package/skills/start-specification/references/analysis-flow.md +2 -0
  16. package/skills/start-specification/references/confirm-continue.md +21 -1
  17. package/skills/start-specification/references/confirm-create.md +15 -1
  18. package/skills/start-specification/references/confirm-refine.md +9 -1
  19. package/skills/start-specification/references/confirm-unify.md +12 -0
  20. package/skills/start-specification/references/display-analyze.md +21 -2
  21. package/skills/start-specification/references/display-blocks.md +11 -6
  22. package/skills/start-specification/references/display-groupings.md +20 -13
  23. package/skills/start-specification/references/display-single-grouped.md +13 -6
  24. package/skills/start-specification/references/display-single-has-spec.md +15 -7
  25. package/skills/start-specification/references/display-single-no-spec.md +13 -9
  26. package/skills/start-specification/references/display-single.md +0 -2
  27. package/skills/start-specification/references/display-specs-menu.md +21 -6
  28. package/skills/status/SKILL.md +18 -11
  29. package/skills/technical-implementation/SKILL.md +14 -6
  30. package/skills/technical-implementation/references/steps/analysis-loop.md +12 -6
  31. package/skills/technical-implementation/references/steps/task-loop.md +12 -6
  32. package/skills/technical-planning/SKILL.md +8 -4
  33. package/skills/technical-planning/references/steps/analyze-task-graph.md +8 -4
  34. package/skills/technical-planning/references/steps/author-tasks.md +4 -2
  35. package/skills/technical-planning/references/steps/define-phases.md +4 -2
  36. package/skills/technical-planning/references/steps/define-tasks.md +4 -2
  37. package/skills/technical-planning/references/steps/plan-construction.md +4 -2
  38. package/skills/technical-planning/references/steps/resolve-dependencies.md +4 -2
  39. package/skills/technical-planning/references/steps/review-integrity.md +4 -2
  40. package/skills/technical-planning/references/steps/review-traceability.md +4 -2
  41. package/skills/technical-research/SKILL.md +4 -2
  42. package/skills/technical-review/references/invoke-task-verifiers.md +37 -47
  43. package/skills/technical-specification/references/specification-guide.md +11 -3
  44. package/skills/view-plan/SKILL.md +3 -1
@@ -6,6 +6,8 @@
6
6
 
7
7
  #### If no source discussions have individual specs
8
8
 
9
+ > *Output the next fenced block as a code block:*
10
+
9
11
  ```
10
12
  Creating specification: {Title Case Name}
11
13
 
@@ -16,16 +18,22 @@ Sources:
16
18
  Output: docs/workflow/specification/{kebab-case-name}.md
17
19
  ```
18
20
 
21
+ > *Output the next fenced block as markdown (not a code block):*
22
+
23
+ ```
19
24
  · · · · · · · · · · · ·
20
25
  Proceed?
21
26
  - **`y`/`yes`**
22
27
  - **`n`/`no`**
23
28
  · · · · · · · · · · · ·
29
+ ```
24
30
 
25
31
  #### If any source discussion has an individual spec
26
32
 
27
33
  Note the supersession (`has_individual_spec: true`):
28
34
 
35
+ > *Output the next fenced block as a code block:*
36
+
29
37
  ```
30
38
  Creating specification: {Title Case Name}
31
39
 
@@ -39,11 +47,15 @@ After completion:
39
47
  specification/{discussion-name}.md → marked as superseded
40
48
  ```
41
49
 
50
+ > *Output the next fenced block as markdown (not a code block):*
51
+
52
+ ```
42
53
  · · · · · · · · · · · ·
43
54
  Proceed?
44
55
  - **`y`/`yes`**
45
56
  - **`n`/`no`**
46
57
  · · · · · · · · · · · ·
58
+ ```
47
59
 
48
60
  **STOP.** Wait for user response.
49
61
 
@@ -61,12 +73,14 @@ Proceed?
61
73
 
62
74
  #### If single discussion (no menu to return to)
63
75
 
76
+ > *Output the next fenced block as a code block:*
77
+
64
78
  ```
65
79
  Understood. You can run /start-discussion to continue working on
66
80
  discussions, or re-run this command when ready.
67
81
  ```
68
82
 
69
- Command ends.
83
+ **STOP.** Do not proceed — terminal condition.
70
84
 
71
85
  #### If groupings or specs menu
72
86
 
@@ -4,6 +4,8 @@
4
4
 
5
5
  ---
6
6
 
7
+ > *Output the next fenced block as a code block:*
8
+
7
9
  ```
8
10
  Refining specification: {Title Case Name}
9
11
 
@@ -13,11 +15,15 @@ All sources extracted:
13
15
  • {discussion-name}
14
16
  ```
15
17
 
18
+ > *Output the next fenced block as markdown (not a code block):*
19
+
20
+ ```
16
21
  · · · · · · · · · · · ·
17
22
  Proceed?
18
23
  - **`y`/`yes`**
19
24
  - **`n`/`no`**
20
25
  · · · · · · · · · · · ·
26
+ ```
21
27
 
22
28
  **STOP.** Wait for user response.
23
29
 
@@ -29,12 +35,14 @@ Proceed?
29
35
 
30
36
  #### If single discussion (no menu to return to)
31
37
 
38
+ > *Output the next fenced block as a code block:*
39
+
32
40
  ```
33
41
  Understood. You can run /start-discussion to continue working on
34
42
  discussions, or re-run this command when ready.
35
43
  ```
36
44
 
37
- Command ends.
45
+ **STOP.** Do not proceed — terminal condition.
38
46
 
39
47
  #### If groupings or specs menu
40
48
 
@@ -6,6 +6,8 @@
6
6
 
7
7
  #### If existing specifications will be superseded
8
8
 
9
+ > *Output the next fenced block as a code block:*
10
+
9
11
  ```
10
12
  Creating specification: Unified
11
13
 
@@ -21,14 +23,20 @@ Existing specifications to incorporate:
21
23
  Output: docs/workflow/specification/unified.md
22
24
  ```
23
25
 
26
+ > *Output the next fenced block as markdown (not a code block):*
27
+
28
+ ```
24
29
  · · · · · · · · · · · ·
25
30
  Proceed?
26
31
  - **`y`/`yes`**
27
32
  - **`n`/`no`**
28
33
  · · · · · · · · · · · ·
34
+ ```
29
35
 
30
36
  #### If no existing specifications
31
37
 
38
+ > *Output the next fenced block as a code block:*
39
+
32
40
  ```
33
41
  Creating specification: Unified
34
42
 
@@ -40,11 +48,15 @@ Sources:
40
48
  Output: docs/workflow/specification/unified.md
41
49
  ```
42
50
 
51
+ > *Output the next fenced block as markdown (not a code block):*
52
+
53
+ ```
43
54
  · · · · · · · · · · · ·
44
55
  Proceed?
45
56
  - **`y`/`yes`**
46
57
  - **`n`/`no`**
47
58
  · · · · · · · · · · · ·
59
+ ```
48
60
 
49
61
  **STOP.** Wait for user response.
50
62
 
@@ -8,6 +8,8 @@ Prompted when multiple concluded discussions exist, no specifications exist, and
8
8
 
9
9
  ## Display
10
10
 
11
+ > *Output the next fenced block as a code block:*
12
+
11
13
  ```
12
14
  Specification Overview
13
15
 
@@ -23,11 +25,14 @@ List all concluded discussions from discovery output.
23
25
 
24
26
  ### If in-progress discussions exist
25
27
 
28
+ > *Output the next fenced block as a code block:*
29
+
26
30
  ```
27
31
  Discussions not ready for specification:
28
32
  These discussions are still in progress and must be concluded
29
33
  before they can be included in a specification.
30
- · {discussion-name} (in-progress)
34
+
35
+ • {discussion-name}
31
36
  ```
32
37
 
33
38
  ### Cache-Aware Message
@@ -36,20 +41,28 @@ No `---` separator before these messages.
36
41
 
37
42
  #### If cache status is "none"
38
43
 
44
+ > *Output the next fenced block as a code block:*
45
+
39
46
  ```
40
47
  These discussions will be analyzed for natural groupings to determine
41
48
  how they should be organized into specifications. Results are cached
42
49
  and reused until discussions change.
43
50
  ```
44
51
 
52
+ > *Output the next fenced block as markdown (not a code block):*
53
+
54
+ ```
45
55
  · · · · · · · · · · · ·
46
56
  Proceed with analysis?
47
57
  - **`y`/`yes`**
48
58
  - **`n`/`no`**
49
59
  · · · · · · · · · · · ·
60
+ ```
50
61
 
51
62
  #### If cache status is "stale"
52
63
 
64
+ > *Output the next fenced block as a code block:*
65
+
53
66
  ```
54
67
  A previous grouping analysis exists but is outdated — discussions
55
68
  have changed since it was created.
@@ -58,11 +71,15 @@ These discussions will be re-analyzed for natural groupings. Results
58
71
  are cached and reused until discussions change.
59
72
  ```
60
73
 
74
+ > *Output the next fenced block as markdown (not a code block):*
75
+
76
+ ```
61
77
  · · · · · · · · · · · ·
62
78
  Proceed with analysis?
63
79
  - **`y`/`yes`**
64
80
  - **`n`/`no`**
65
81
  · · · · · · · · · · · ·
82
+ ```
66
83
 
67
84
  **STOP.** Wait for user response.
68
85
 
@@ -77,9 +94,11 @@ rm docs/workflow/.cache/discussion-consolidation-analysis.md
77
94
 
78
95
  #### If user declines (n)
79
96
 
97
+ > *Output the next fenced block as a code block:*
98
+
80
99
  ```
81
100
  Understood. You can run /start-discussion to continue working on
82
101
  discussions, or re-run this command when ready.
83
102
  ```
84
103
 
85
- **Command ends.** Control returns to the user.
104
+ **STOP.** Do not proceed terminal condition.
@@ -8,8 +8,10 @@ Two terminal paths — the command stops and cannot proceed.
8
8
 
9
9
  ## If no discussions exist
10
10
 
11
+ > *Output the next fenced block as a code block:*
12
+
11
13
  ```
12
- Specification Phase
14
+ Specification Overview
13
15
 
14
16
  No discussions found.
15
17
 
@@ -20,18 +22,21 @@ that specifications are built upon.
20
22
  Run /start-discussion to begin documenting technical decisions.
21
23
  ```
22
24
 
23
- **STOP.** Wait for user acknowledgment. Command ends here.
25
+ **STOP.** Do not proceed terminal condition.
24
26
 
25
27
  ## If discussions exist but none concluded
26
28
 
29
+ > *Output the next fenced block as a code block:*
30
+
27
31
  ```
28
- Specification Phase
32
+ Specification Overview
29
33
 
30
34
  No concluded discussions found.
31
35
 
32
36
  The following discussions are still in progress:
33
- · {discussion-name} (in-progress)
34
- · {discussion-name} (in-progress)
37
+
38
+ {discussion-name}
39
+ • {discussion-name}
35
40
 
36
41
  Specifications can only be created from concluded discussions.
37
42
  Run /start-discussion to continue working on a discussion.
@@ -39,4 +44,4 @@ Run /start-discussion to continue working on a discussion.
39
44
 
40
45
  List all in-progress discussions from discovery output.
41
46
 
42
- **STOP.** Wait for user acknowledgment. Command ends here.
47
+ **STOP.** Do not proceed terminal condition.
@@ -50,38 +50,40 @@ For each discussion: status is `ready`. Spec status: `none`.
50
50
 
51
51
  All items are first-class — every grouping (including single-discussion entries) is a numbered item.
52
52
 
53
+ > *Output the next fenced block as a code block:*
54
+
53
55
  ```
54
56
  Specification Overview
55
57
 
56
58
  Recommended breakdown for specifications with their source discussions.
57
59
 
58
- 1. {Grouping Name}
59
- └─ Spec: {status} {(X of Y sources extracted) if applicable}
60
+ 1. {grouping_name:(titlecase)}
61
+ └─ Spec: @if(has_spec) {spec_status:[in-progress|concluded]} ({extraction_summary}) @else (no spec) @endif
60
62
  └─ Discussions:
61
- ├─ {discussion-name} ({status})
62
- └─ {discussion-name} ({status})
63
+ ├─ {discussion} ({status:[extracted|pending|ready|reopened]})
64
+ └─ ...
63
65
 
64
- 2. {Grouping Name}
65
- └─ Spec: none
66
- └─ Discussions:
67
- └─ {discussion-name} (ready)
66
+ 2. ...
68
67
  ```
69
68
 
70
- **Output in a fenced code block exactly as shown above.**
71
-
72
69
  ### If in-progress discussions exist
73
70
 
71
+ > *Output the next fenced block as a code block:*
72
+
74
73
  ```
75
74
  Discussions not ready for specification:
76
75
  These discussions are still in progress and must be concluded
77
76
  before they can be included in a specification.
78
- · {discussion-name} (in-progress)
77
+
78
+ • {discussion-name}
79
79
  ```
80
80
 
81
81
  ### Key/Legend
82
82
 
83
83
  Show only the statuses that appear in the current display. No `---` separator before this section.
84
84
 
85
+ > *Output the next fenced block as a code block:*
86
+
85
87
  ```
86
88
  Key:
87
89
 
@@ -92,7 +94,6 @@ Key:
92
94
  reopened — was extracted but discussion has regressed to in-progress
93
95
 
94
96
  Spec status:
95
- none — no specification file exists yet
96
97
  in-progress — specification work is ongoing
97
98
  concluded — specification is complete
98
99
  ```
@@ -101,6 +102,8 @@ Key:
101
102
 
102
103
  No `---` separator before this section.
103
104
 
105
+ > *Output the next fenced block as a code block:*
106
+
104
107
  ```
105
108
  Tip: To restructure groupings or pull a discussion into its own
106
109
  specification, choose "Re-analyze" and provide guidance.
@@ -127,6 +130,8 @@ After all grouping entries, append meta options:
127
130
 
128
131
  **Example assembled menu** (2 groupings, specs exist):
129
132
 
133
+ > *Output the next fenced block as markdown (not a code block):*
134
+
130
135
  ```
131
136
  · · · · · · · · · · · ·
132
137
  1. Start "Auth Flow" — 2 ready discussions
@@ -143,7 +148,9 @@ Select an option (enter number):
143
148
  · · · · · · · · · · · ·
144
149
  ```
145
150
 
146
- **Output in a fenced code block exactly as shown above.** Every meta option (Unify, Re-analyze) MUST include its description lines.
151
+ Recreate with actual topics and states from discovery.
152
+
153
+ Every meta option (Unify, Re-analyze) MUST include its description lines.
147
154
 
148
155
  **STOP.** Wait for user response.
149
156
 
@@ -15,33 +15,38 @@ Extraction count: X = sources with `status: incorporated`, Y = total source coun
15
15
 
16
16
  ## Display
17
17
 
18
+ > *Output the next fenced block as a code block:*
19
+
18
20
  ```
19
21
  Specification Overview
20
22
 
21
23
  Single concluded discussion found with existing multi-source specification.
22
24
 
23
- 1. {Spec Title Case Name}
24
- └─ Spec: {spec_status} ({X} of {Y} sources extracted)
25
+ 1. {topic:(titlecase)}
26
+ └─ Spec: {spec_status:[in-progress|concluded]} ({X} of {Y} sources extracted)
25
27
  └─ Discussions:
26
28
  ├─ {source-name} (extracted)
27
29
  └─ {source-name} (extracted, reopened)
28
30
  ```
29
31
 
30
- **Output in a fenced code block exactly as shown above.**
31
-
32
32
  ### If in-progress discussions exist
33
33
 
34
+ > *Output the next fenced block as a code block:*
35
+
34
36
  ```
35
37
  Discussions not ready for specification:
36
38
  These discussions are still in progress and must be concluded
37
39
  before they can be included in a specification.
38
- · {discussion-name} (in-progress)
40
+
41
+ • {discussion-name}
39
42
  ```
40
43
 
41
44
  ### Key/Legend
42
45
 
43
46
  Show only the statuses that appear in the current display. No `---` separator before this section.
44
47
 
48
+ > *Output the next fenced block as a code block:*
49
+
45
50
  ```
46
51
  Key:
47
52
 
@@ -57,8 +62,10 @@ Key:
57
62
 
58
63
  ## After Display
59
64
 
65
+ > *Output the next fenced block as a code block:*
66
+
60
67
  ```
61
- Automatically proceeding with "{Spec Title Case Name}".
68
+ Automatically proceeding with "{topic:(titlecase)}".
62
69
  ```
63
70
 
64
71
  Auto-proceed uses the spec name. Verb rule:
@@ -10,32 +10,37 @@ Determine extraction count: check the spec's `sources` array from discovery. Cou
10
10
 
11
11
  ## Display
12
12
 
13
+ > *Output the next fenced block as a code block:*
14
+
13
15
  ```
14
16
  Specification Overview
15
17
 
16
18
  Single concluded discussion found with existing specification.
17
19
 
18
- 1. {Title Case Name}
19
- └─ Spec: {spec_status} ({X} of {Y} sources extracted)
20
+ 1. {topic:(titlecase)}
21
+ └─ Spec: {spec_status:[in-progress|concluded]} ({X} of {Y} sources extracted)
20
22
  └─ Discussions:
21
23
  └─ {discussion-name} (extracted)
22
24
  ```
23
25
 
24
- **Output in a fenced code block exactly as shown above.**
25
-
26
26
  ### If in-progress discussions exist
27
27
 
28
+ > *Output the next fenced block as a code block:*
29
+
28
30
  ```
29
31
  Discussions not ready for specification:
30
32
  These discussions are still in progress and must be concluded
31
33
  before they can be included in a specification.
32
- · {discussion-name} (in-progress)
34
+
35
+ • {discussion-name}
33
36
  ```
34
37
 
35
38
  ### Key/Legend
36
39
 
37
40
  No `---` separator before this section.
38
41
 
42
+ > *Output the next fenced block as a code block:*
43
+
39
44
  ```
40
45
  Key:
41
46
 
@@ -43,13 +48,16 @@ Key:
43
48
  extracted — content has been incorporated into the specification
44
49
 
45
50
  Spec status:
46
- {spec_status} — {in-progress: "specification work is ongoing" | concluded: "specification is complete"}
51
+ in-progress specification work is ongoing
52
+ concluded — specification is complete
47
53
  ```
48
54
 
49
55
  ## After Display
50
56
 
57
+ > *Output the next fenced block as a code block:*
58
+
51
59
  ```
52
- Automatically proceeding with "{Title Case Name}".
60
+ Automatically proceeding with "{topic:(titlecase)}".
53
61
  ```
54
62
 
55
63
  Auto-proceed. Verb rule:
@@ -8,46 +8,50 @@ No specification exists for this discussion.
8
8
 
9
9
  ## Display
10
10
 
11
+ > *Output the next fenced block as a code block:*
12
+
11
13
  ```
12
14
  Specification Overview
13
15
 
14
16
  Single concluded discussion found.
15
17
 
16
- 1. {Title Case Name}
17
- └─ Spec: none
18
+ 1. {topic:(titlecase)}
19
+ └─ Spec: (no spec)
18
20
  └─ Discussions:
19
21
  └─ {discussion-name} (ready)
20
22
  ```
21
23
 
22
- **Output in a fenced code block exactly as shown above.**
23
-
24
24
  ### If in-progress discussions exist
25
25
 
26
+ > *Output the next fenced block as a code block:*
27
+
26
28
  ```
27
29
  Discussions not ready for specification:
28
30
  These discussions are still in progress and must be concluded
29
31
  before they can be included in a specification.
30
- · {discussion-name} (in-progress)
32
+
33
+ • {discussion-name}
31
34
  ```
32
35
 
33
36
  ### Key/Legend
34
37
 
35
38
  No `---` separator before this section.
36
39
 
40
+ > *Output the next fenced block as a code block:*
41
+
37
42
  ```
38
43
  Key:
39
44
 
40
45
  Discussion status:
41
46
  ready — concluded and available to be specified
42
-
43
- Spec status:
44
- none — no specification file exists yet
45
47
  ```
46
48
 
47
49
  ## After Display
48
50
 
51
+ > *Output the next fenced block as a code block:*
52
+
49
53
  ```
50
- Automatically proceeding with "{Title Case Name}".
54
+ Automatically proceeding with "{topic:(titlecase)}".
51
55
  ```
52
56
 
53
57
  Auto-proceed with verb **"Creating"**.
@@ -6,8 +6,6 @@
6
6
 
7
7
  Auto-proceed path — only one concluded discussion exists, so no selection menu is needed.
8
8
 
9
- Convert discussion filename to title case (`auth-flow` → `Auth Flow`).
10
-
11
9
  ## Route by Spec Coverage
12
10
 
13
11
  Check if a spec covers this discussion — either by name match (`has_individual_spec`) or by listing it in a spec's `sources` array.
@@ -8,6 +8,8 @@ Shows when multiple concluded discussions exist, specifications exist, and cache
8
8
 
9
9
  ## A. Display
10
10
 
11
+ > *Output the next fenced block as a code block:*
12
+
11
13
  ```
12
14
  Specification Overview
13
15
 
@@ -18,16 +20,16 @@ Existing specifications:
18
20
 
19
21
  For each non-superseded specification from discovery output, display as nested tree:
20
22
 
23
+ > *Output the next fenced block as a code block:*
24
+
21
25
  ```
22
- 1. {Spec Title Case Name}
23
- └─ Spec: {status} ({X} of {Y} sources extracted)
26
+ 1. {topic:(titlecase)}
27
+ └─ Spec: {spec_status:[in-progress|concluded]} ({X} of {Y} sources extracted)
24
28
  └─ Discussions:
25
29
  ├─ {source-name} (extracted)
26
30
  └─ {source-name} (extracted)
27
31
  ```
28
32
 
29
- **Output in a fenced code block exactly as shown above.**
30
-
31
33
  Determine discussion status from the spec's `sources` array:
32
34
  - `incorporated` + `discussion_status: concluded` or `not-found` → `extracted`
33
35
  - `incorporated` + `discussion_status: other` (e.g. `in-progress`) → `extracted, reopened`
@@ -39,6 +41,8 @@ Extraction count: X = sources with `status: incorporated`, Y = total source coun
39
41
 
40
42
  List concluded discussions that are not in any specification's `sources` array:
41
43
 
44
+ > *Output the next fenced block as a code block:*
45
+
42
46
  ```
43
47
  Concluded discussions not in a specification:
44
48
  • {discussion-name}
@@ -47,17 +51,22 @@ Concluded discussions not in a specification:
47
51
 
48
52
  ### If in-progress discussions exist
49
53
 
54
+ > *Output the next fenced block as a code block:*
55
+
50
56
  ```
51
57
  Discussions not ready for specification:
52
58
  These discussions are still in progress and must be concluded
53
59
  before they can be included in a specification.
54
- · {discussion-name} (in-progress)
60
+
61
+ • {discussion-name}
55
62
  ```
56
63
 
57
64
  ### Key/Legend
58
65
 
59
66
  Show only the statuses that appear in the current display. No `---` separator before this section.
60
67
 
68
+ > *Output the next fenced block as a code block:*
69
+
61
70
  ```
62
71
  Key:
63
72
 
@@ -76,12 +85,16 @@ No `---` separator before these messages.
76
85
 
77
86
  #### If cache status is "none"
78
87
 
88
+ > *Output the next fenced block as a code block:*
89
+
79
90
  ```
80
91
  No grouping analysis exists.
81
92
  ```
82
93
 
83
94
  #### If cache status is "stale"
84
95
 
96
+ > *Output the next fenced block as a code block:*
97
+
85
98
  ```
86
99
  A previous grouping analysis exists but is outdated — discussions
87
100
  have changed since it was created. Re-analysis is required.
@@ -101,6 +114,8 @@ List "Analyze for groupings (recommended)" first, then one entry per existing no
101
114
 
102
115
  **Example assembled menu** (2 specs exist):
103
116
 
117
+ > *Output the next fenced block as markdown (not a code block):*
118
+
104
119
  ```
105
120
  · · · · · · · · · · · ·
106
121
  1. Analyze for groupings (recommended)
@@ -114,7 +129,7 @@ Select an option (enter number):
114
129
  · · · · · · · · · · · ·
115
130
  ```
116
131
 
117
- **Output in a fenced code block exactly as shown above.**
132
+ Recreate with actual topics and states from discovery.
118
133
 
119
134
  Menu descriptions are wrapped in backticks to visually distinguish them from the choice labels.
120
135