@leeovery/claude-technical-workflows 2.1.30 → 2.1.32

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 (43) hide show
  1. package/README.md +36 -5
  2. package/hooks/workflows/compact-recovery.sh +81 -0
  3. package/hooks/workflows/session-cleanup.sh +26 -0
  4. package/hooks/workflows/session-env.sh +17 -0
  5. package/hooks/workflows/system-check.sh +100 -0
  6. package/hooks/workflows/write-session-state.sh +66 -0
  7. package/package.json +1 -1
  8. package/skills/begin-implementation/SKILL.md +158 -0
  9. package/skills/begin-planning/SKILL.md +87 -0
  10. package/skills/continue-feature/SKILL.md +177 -0
  11. package/skills/continue-feature/references/detect-phase.md +92 -0
  12. package/skills/continue-feature/references/invoke-implementation.md +43 -0
  13. package/skills/continue-feature/references/invoke-planning.md +43 -0
  14. package/skills/continue-feature/references/invoke-specification.md +55 -0
  15. package/skills/continue-feature/references/phase-bridge.md +58 -0
  16. package/skills/continue-feature/scripts/discovery.sh +216 -0
  17. package/skills/link-dependencies/SKILL.md +6 -0
  18. package/skills/start-discussion/SKILL.md +22 -1
  19. package/skills/start-feature/SKILL.md +100 -38
  20. package/skills/start-feature/references/gather-feature-context.md +60 -0
  21. package/skills/start-feature/references/invoke-discussion.md +24 -0
  22. package/skills/start-feature/references/phase-bridge.md +37 -0
  23. package/skills/start-implementation/SKILL.md +22 -1
  24. package/skills/start-planning/SKILL.md +22 -1
  25. package/skills/start-research/SKILL.md +23 -1
  26. package/skills/start-review/SKILL.md +22 -1
  27. package/skills/start-specification/SKILL.md +8 -2
  28. package/skills/start-specification/references/handoffs/continue-concluded.md +15 -0
  29. package/skills/start-specification/references/handoffs/continue.md +15 -0
  30. package/skills/start-specification/references/handoffs/create-with-incorporation.md +15 -0
  31. package/skills/start-specification/references/handoffs/create.md +15 -0
  32. package/skills/start-specification/references/handoffs/unify-with-incorporation.md +15 -0
  33. package/skills/start-specification/references/handoffs/unify.md +15 -0
  34. package/skills/status/SKILL.md +7 -1
  35. package/skills/technical-planning/SKILL.md +2 -2
  36. package/skills/technical-planning/references/author-tasks.md +3 -1
  37. package/skills/technical-planning/references/define-tasks.md +35 -3
  38. package/skills/technical-planning/references/output-formats/tick/about.md +5 -0
  39. package/skills/technical-planning/references/output-formats/tick/authoring.md +11 -0
  40. package/skills/technical-planning/references/output-formats/tick/updating.md +2 -0
  41. package/skills/technical-planning/references/plan-construction.md +17 -8
  42. package/skills/technical-planning/references/plan-index-schema.md +6 -3
  43. package/skills/view-plan/SKILL.md +6 -0
@@ -2,6 +2,12 @@
2
2
  name: link-dependencies
3
3
  description: "Scan all plans and wire up cross-topic dependencies. Finds unresolved external dependencies, matches them to tasks in other plans, and updates both the plan index and output format."
4
4
  disable-model-invocation: true
5
+ hooks:
6
+ PreToolUse:
7
+ - hooks:
8
+ - type: command
9
+ command: "$CLAUDE_PROJECT_DIR/.claude/hooks/workflows/system-check.sh"
10
+ once: true
5
11
  ---
6
12
 
7
13
  Link cross-topic dependencies across all existing plans.
@@ -2,7 +2,13 @@
2
2
  name: start-discussion
3
3
  description: "Start a technical discussion. Discovers research and existing discussions, offers multiple entry paths, and invokes the technical-discussion skill."
4
4
  disable-model-invocation: true
5
- allowed-tools: Bash(.claude/skills/start-discussion/scripts/discovery.sh), Bash(mkdir -p docs/workflow/.cache), Bash(rm docs/workflow/.cache/research-analysis.md)
5
+ allowed-tools: Bash(.claude/skills/start-discussion/scripts/discovery.sh), Bash(mkdir -p docs/workflow/.cache), Bash(rm docs/workflow/.cache/research-analysis.md), Bash(.claude/hooks/workflows/write-session-state.sh)
6
+ hooks:
7
+ PreToolUse:
8
+ - hooks:
9
+ - type: command
10
+ command: "$CLAUDE_PROJECT_DIR/.claude/hooks/workflows/system-check.sh"
11
+ once: true
6
12
  ---
7
13
 
8
14
  Invoke the **technical-discussion** skill for this conversation.
@@ -162,5 +168,20 @@ Load **[gather-context.md](references/gather-context.md)** and follow its instru
162
168
 
163
169
  ## Step 7: Invoke the Skill
164
170
 
171
+ Before invoking the processing skill, save a session bookmark.
172
+
173
+ > *Output the next fenced block as a code block:*
174
+
175
+ ```
176
+ Saving session state so Claude can pick up where it left off if the conversation is compacted.
177
+ ```
178
+
179
+ ```bash
180
+ .claude/hooks/workflows/write-session-state.sh \
181
+ "{topic}" \
182
+ "skills/technical-discussion/SKILL.md" \
183
+ "docs/workflow/discussion/{topic}.md"
184
+ ```
185
+
165
186
  Load **[invoke-skill.md](references/invoke-skill.md)** and follow its instructions as written.
166
187
 
@@ -1,82 +1,144 @@
1
1
  ---
2
2
  name: start-feature
3
- description: "Start a feature specification directly, skipping formal discussion documentation. For adding features to existing projects where you already know what you're building."
3
+ description: "Start a new feature through the full pipeline. Gathers context via structured interview, creates a discussion, then bridges to continue-feature for specification, planning, and implementation."
4
4
  disable-model-invocation: true
5
+ allowed-tools: Bash(ls docs/workflow/discussion/), Bash(.claude/hooks/workflows/write-session-state.sh)
6
+ hooks:
7
+ PreToolUse:
8
+ - hooks:
9
+ - type: command
10
+ command: "$CLAUDE_PROJECT_DIR/.claude/hooks/workflows/system-check.sh"
11
+ once: true
5
12
  ---
6
13
 
7
- Invoke the **technical-specification** skill for this conversation with inline feature context.
14
+ Start a new feature and route it through the pipeline: Discussion Specification Planning Implementation.
15
+
16
+ > **⚠️ 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.
8
17
 
9
18
  ## Instructions
10
19
 
11
20
  Follow these steps EXACTLY as written. Do not skip steps or combine them.
12
21
 
13
- This skill is for **feature mode** - a streamlined path to specification when you already know what you're building and don't need formal discussion documentation.
22
+ **CRITICAL**: This guidance is mandatory.
23
+
24
+ - After each user interaction, STOP and wait for their response before proceeding
25
+ - Never assume or anticipate user choices
26
+ - Even if the user's initial prompt seems to answer a question, still confirm with them at the appropriate step
27
+ - Complete each step fully before moving to the next
28
+
29
+ ---
30
+
31
+ ## Step 0: Run Migrations
32
+
33
+ **This step is mandatory. You must complete it before proceeding.**
34
+
35
+ Invoke the `/migrate` skill and assess its output.
36
+
37
+ **If files were updated**: STOP and wait for the user to review the changes (e.g., via `git diff`) and confirm before proceeding to Step 1. Do not continue automatically.
38
+
39
+ **If no updates needed**: Proceed to Step 1.
40
+
41
+ ---
42
+
43
+ ## Resuming After Context Refresh
44
+
45
+ Context refresh (compaction) summarizes the conversation, losing procedural detail. When you detect a context refresh has occurred — the conversation feels abruptly shorter, you lack memory of recent steps, or a summary precedes this message — follow this recovery protocol:
46
+
47
+ 1. **Re-read this skill file completely.** Do not rely on your summary of it. The full process, steps, and rules must be reloaded.
48
+ 2. **Identify the topic.** Check conversation history for the topic name. If unknown, check `docs/workflow/discussion/` for recently modified files via `git log --oneline -5`.
49
+ 3. **Determine current step from artifacts:**
50
+ - No discussion file exists → resume at **Step 1**
51
+ - Discussion exists with `status: in-progress` → resume at **Step 3** (re-invoke technical-discussion)
52
+ - Discussion exists with `status: concluded` → resume at **Step 4** (phase bridge)
53
+ 4. **Announce your position** to the user before continuing: what step you believe you're at, what's been completed, and what comes next. Wait for confirmation.
54
+
55
+ Do not guess at progress or continue from memory. The files on disk and git history are authoritative — your recollection is not.
56
+
57
+ ---
14
58
 
15
59
  ## Step 1: Gather Feature Context
16
60
 
17
- Ask the user these questions (can be combined into one prompt):
61
+ Load **[gather-feature-context.md](references/gather-feature-context.md)** and follow its instructions.
18
62
 
19
- 1. **What feature are you adding?**
20
- - Brief description of what you're building
63
+ Proceed to **Step 2**.
21
64
 
22
- 2. **What's the scope?**
23
- - Core functionality to implement
24
- - Edge cases you're already aware of
65
+ ---
25
66
 
26
- 3. **Any constraints or integration points?**
27
- - How this integrates with existing code
28
- - Technical decisions already made
29
- - Conventions to follow
67
+ ## Step 2: Topic Name and Conflict Check
30
68
 
31
- **Note**: If the user has already provided this context in their initial message, don't ask again - acknowledge what they've shared and proceed.
69
+ Based on the feature description, suggest a topic name:
32
70
 
33
- ## Step 2: Suggest a Topic Name
71
+ > *Output the next fenced block as a code block:*
34
72
 
35
- Based on the feature description, suggest a topic name for the specification file:
73
+ ```
74
+ Suggested topic name: {suggested-topic:(kebabcase)}
36
75
 
76
+ This will create: docs/workflow/discussion/{suggested-topic}.md
37
77
  ```
38
- Based on what you've described, I'd suggest the topic name: {suggested-topic}
39
78
 
40
- This will create: docs/workflow/specification/{suggested-topic}/specification.md
79
+ > *Output the next fenced block as markdown (not a code block):*
41
80
 
81
+ ```
82
+ · · · · · · · · · · · ·
42
83
  Is this name okay, or would you prefer something else?
84
+ · · · · · · · · · · · ·
43
85
  ```
44
86
 
45
- ## Step 3: Check for Existing Specifications
87
+ **STOP.** Wait for user response.
46
88
 
47
- Look in `docs/workflow/specification/` for naming conflicts:
89
+ Once the topic name is confirmed, check for naming conflicts:
48
90
 
49
91
  ```bash
50
- ls docs/workflow/specification/
92
+ ls docs/workflow/discussion/
51
93
  ```
52
94
 
53
- If a specification with the same name exists, inform the user and ask how to proceed:
54
- - Append to existing specification
55
- - Choose a different name
56
- - Replace existing specification
95
+ If a discussion with the same name exists, inform the user:
57
96
 
58
- ## Step 4: Invoke Specification Skill
97
+ > *Output the next fenced block as markdown (not a code block):*
59
98
 
60
- Pass the gathered context to the [technical-specification](../technical-specification/SKILL.md) skill:
99
+ ```
100
+ · · · · · · · · · · · ·
101
+ A discussion named "{topic}" already exists.
61
102
 
103
+ - **`r`/`resume`** — Resume the existing discussion
104
+ - **`n`/`new`** — Choose a different name
105
+ · · · · · · · · · · · ·
62
106
  ```
63
- Feature specification for: {topic}
64
107
 
65
- ## Feature Context (from user)
108
+ **STOP.** Wait for user response.
66
109
 
67
- {paste the gathered feature description, scope, and constraints}
110
+ If resuming, check the discussion status. If concluded skip to Step 4. If in-progress → proceed to Step 3.
111
+
112
+ → Proceed to **Step 3**.
68
113
 
69
114
  ---
70
115
 
71
- Begin specification building using the technical-specification skill.
116
+ ## Step 3: Invoke Discussion
117
+
118
+ Before invoking the processing skill, save a session bookmark.
119
+
120
+ > *Output the next fenced block as a code block:*
121
+
122
+ ```
123
+ Saving session state so Claude can pick up where it left off and continue the feature pipeline if the conversation is compacted.
124
+ ```
72
125
 
73
- This is feature mode - there is no discussion document to reference.
74
- Work from the inline context provided above.
126
+ ```bash
127
+ .claude/hooks/workflows/write-session-state.sh \
128
+ "{topic}" \
129
+ "skills/technical-discussion/SKILL.md" \
130
+ "docs/workflow/discussion/{topic}.md" \
131
+ --pipeline "This session is part of the feature pipeline. After the discussion concludes, load and follow the phase bridge at skills/start-feature/references/phase-bridge.md for topic '{topic}'."
75
132
  ```
76
133
 
77
- ## Notes
134
+ Load **[invoke-discussion.md](references/invoke-discussion.md)** and follow its instructions.
135
+
136
+ **CRITICAL**: When the discussion concludes (status becomes "concluded"), you MUST proceed to **Step 4** below. Do not end the session — the feature pipeline continues to specification via the phase bridge.
137
+
138
+ ---
139
+
140
+ ## Step 4: Phase Bridge
141
+
142
+ Load **[phase-bridge.md](references/phase-bridge.md)** and follow its instructions.
78
143
 
79
- - The specification skill contains instructions for synthesizing the inline context, presenting it for validation, and building the specification
80
- - Output is a standard specification file at `docs/workflow/specification/{topic}/specification.md`
81
- - From there, the user can proceed to `/start-planning` as normal
82
- - This path skips formal discussion documentation - use the full workflow for complex features that need debate captured
144
+ The bridge will enter plan mode with instructions to invoke continue-feature for the topic in the next session.
@@ -0,0 +1,60 @@
1
+ # Gather Feature Context
2
+
3
+ *Reference for **[start-feature](../SKILL.md)***
4
+
5
+ ---
6
+
7
+ Gather context about the feature through a structured interview. Ask questions one at a time with STOP gates between each.
8
+
9
+ **Note**: If the user has already provided context in their initial message, acknowledge what they've shared and skip questions that are already answered. Only ask what's missing.
10
+
11
+ ## Question 1: What are you building?
12
+
13
+ > *Output the next fenced block as a code block:*
14
+
15
+ ```
16
+ What feature are you adding?
17
+
18
+ - Brief description of what you're building
19
+ - What problem does it solve?
20
+ ```
21
+
22
+ **STOP.** Wait for user response.
23
+
24
+ ## Question 2: What's the scope?
25
+
26
+ > *Output the next fenced block as a code block:*
27
+
28
+ ```
29
+ What's the scope?
30
+
31
+ - Core functionality to implement
32
+ - Known edge cases or constraints
33
+ - What's explicitly out of scope?
34
+ ```
35
+
36
+ **STOP.** Wait for user response.
37
+
38
+ ## Question 3: Integration and constraints
39
+
40
+ > *Output the next fenced block as a code block:*
41
+
42
+ ```
43
+ Any constraints or integration points?
44
+
45
+ - How does this integrate with existing code?
46
+ - Technical decisions already made
47
+ - Conventions or patterns to follow
48
+ - External dependencies or APIs
49
+ ```
50
+
51
+ **STOP.** Wait for user response.
52
+
53
+ ## Compile Context
54
+
55
+ After gathering answers, compile the feature context into a structured summary that will be passed to the discussion skill. Do not output the summary — it will be used in the next step.
56
+
57
+ The compiled context should capture:
58
+ - **Feature**: What is being built and why
59
+ - **Scope**: Core functionality, edge cases, out-of-scope
60
+ - **Constraints**: Integration points, decisions, conventions
@@ -0,0 +1,24 @@
1
+ # Invoke Discussion
2
+
3
+ *Reference for **[start-feature](../SKILL.md)***
4
+
5
+ ---
6
+
7
+ Invoke the discussion skill with the gathered feature context.
8
+
9
+ ## Handoff
10
+
11
+ Invoke the [technical-discussion](../../technical-discussion/SKILL.md) skill:
12
+
13
+ ```
14
+ Technical discussion for: {topic}
15
+
16
+ {compiled feature context from gather-feature-context}
17
+
18
+ PIPELINE CONTINUATION — When this discussion concludes (status: concluded),
19
+ you MUST return to the start-feature skill and execute Step 4 (Phase Bridge).
20
+ Load: skills/start-feature/references/phase-bridge.md
21
+ Do not end the session after the discussion — the feature pipeline continues.
22
+
23
+ Invoke the technical-discussion skill.
24
+ ```
@@ -0,0 +1,37 @@
1
+ # Phase Bridge
2
+
3
+ *Reference for **[start-feature](../SKILL.md)***
4
+
5
+ ---
6
+
7
+ The phase bridge clears context between the discussion phase and the rest of the pipeline. This is necessary because discussion can consume significant context, and starting fresh prevents degradation.
8
+
9
+ ## Enter Plan Mode
10
+
11
+ Enter plan mode and write the following plan:
12
+
13
+ ```
14
+ # Continue Feature: {topic}
15
+
16
+ The discussion for "{topic}" has concluded. The next session should
17
+ continue the feature pipeline from specification onwards.
18
+
19
+ ## Instructions
20
+
21
+ 1. Invoke the `/continue-feature` skill for topic "{topic}"
22
+ 2. The skill will detect that a concluded discussion exists and route to specification
23
+
24
+ ## Context
25
+
26
+ - Topic: {topic}
27
+ - Completed phase: discussion
28
+ - Expected next phase: specification
29
+ - Discussion: docs/workflow/discussion/{topic}.md
30
+
31
+ ## How to proceed
32
+
33
+ Clear context and continue. Claude will invoke continue-feature
34
+ with the topic above and route to the specification phase automatically.
35
+ ```
36
+
37
+ Exit plan mode. The user will approve and clear context, and the fresh session will pick up with continue-feature routing to specification.
@@ -2,7 +2,13 @@
2
2
  name: start-implementation
3
3
  description: "Start an implementation session from an existing plan. Discovers available plans, checks environment setup, and invokes the technical-implementation skill."
4
4
  disable-model-invocation: true
5
- allowed-tools: Bash(.claude/skills/start-implementation/scripts/discovery.sh)
5
+ allowed-tools: Bash(.claude/skills/start-implementation/scripts/discovery.sh), Bash(.claude/hooks/workflows/write-session-state.sh)
6
+ hooks:
7
+ PreToolUse:
8
+ - hooks:
9
+ - type: command
10
+ command: "$CLAUDE_PROJECT_DIR/.claude/hooks/workflows/system-check.sh"
11
+ once: true
6
12
  ---
7
13
 
8
14
  Invoke the **technical-implementation** skill for this conversation.
@@ -387,6 +393,21 @@ Are there any environment setup instructions I should follow before implementati
387
393
 
388
394
  ## Step 6: Invoke the Skill
389
395
 
396
+ Before invoking the processing skill, save a session bookmark.
397
+
398
+ > *Output the next fenced block as a code block:*
399
+
400
+ ```
401
+ Saving session state so Claude can pick up where it left off if the conversation is compacted.
402
+ ```
403
+
404
+ ```bash
405
+ .claude/hooks/workflows/write-session-state.sh \
406
+ "{topic}" \
407
+ "skills/technical-implementation/SKILL.md" \
408
+ "docs/workflow/implementation/{topic}/tracking.md"
409
+ ```
410
+
390
411
  After completing the steps above, this skill's purpose is fulfilled.
391
412
 
392
413
  Invoke the [technical-implementation](../technical-implementation/SKILL.md) skill for your next instructions. Do not act on the gathered information until the skill is loaded - it contains the instructions for how to proceed.
@@ -2,7 +2,13 @@
2
2
  name: start-planning
3
3
  description: "Start a planning session from an existing specification. Discovers available specifications, gathers context, and invokes the technical-planning skill."
4
4
  disable-model-invocation: true
5
- allowed-tools: Bash(.claude/skills/start-planning/scripts/discovery.sh)
5
+ allowed-tools: Bash(.claude/skills/start-planning/scripts/discovery.sh), Bash(.claude/hooks/workflows/write-session-state.sh)
6
+ hooks:
7
+ PreToolUse:
8
+ - hooks:
9
+ - type: command
10
+ command: "$CLAUDE_PROJECT_DIR/.claude/hooks/workflows/system-check.sh"
11
+ once: true
6
12
  ---
7
13
 
8
14
  Invoke the **technical-planning** skill for this conversation.
@@ -177,4 +183,19 @@ Load **[cross-cutting-context.md](references/cross-cutting-context.md)** and fol
177
183
 
178
184
  ## Step 7: Invoke the Skill
179
185
 
186
+ Before invoking the processing skill, save a session bookmark.
187
+
188
+ > *Output the next fenced block as a code block:*
189
+
190
+ ```
191
+ Saving session state so Claude can pick up where it left off if the conversation is compacted.
192
+ ```
193
+
194
+ ```bash
195
+ .claude/hooks/workflows/write-session-state.sh \
196
+ "{topic}" \
197
+ "skills/technical-planning/SKILL.md" \
198
+ "docs/workflow/planning/{topic}/plan.md"
199
+ ```
200
+
180
201
  Load **[invoke-skill.md](references/invoke-skill.md)** and follow its instructions as written.
@@ -2,6 +2,13 @@
2
2
  name: start-research
3
3
  description: "Start a research exploration using the technical-research skill. For early-stage ideas, feasibility checks, and broad exploration before formal discussion."
4
4
  disable-model-invocation: true
5
+ allowed-tools: Bash(.claude/hooks/workflows/write-session-state.sh)
6
+ hooks:
7
+ PreToolUse:
8
+ - hooks:
9
+ - type: command
10
+ command: "$CLAUDE_PROJECT_DIR/.claude/hooks/workflows/system-check.sh"
11
+ once: true
5
12
  ---
6
13
 
7
14
  Invoke the **technical-research** skill for this conversation.
@@ -43,7 +50,7 @@ Follow these steps EXACTLY as written. Do not skip steps or combine them. Presen
43
50
 
44
51
  Invoke the `/migrate` skill and assess its output.
45
52
 
46
- **If files were updated**: STOP and wait for the user to review the changes (e.g., via `git diff`) and confirm before proceeding to Step 1.
53
+ **If files were updated**: STOP and wait for the user to review the changes (e.g., via `git diff`) and confirm before proceeding to Step 1. Do not continue automatically.
47
54
 
48
55
  **If no updates needed**: Proceed to Step 1.
49
56
 
@@ -59,4 +66,19 @@ Load **[gather-context.md](references/gather-context.md)** and follow its instru
59
66
 
60
67
  ## Step 2: Invoke the Skill
61
68
 
69
+ Before invoking the processing skill, save a session bookmark.
70
+
71
+ > *Output the next fenced block as a code block:*
72
+
73
+ ```
74
+ Saving session state so Claude can pick up where it left off if the conversation is compacted.
75
+ ```
76
+
77
+ ```bash
78
+ .claude/hooks/workflows/write-session-state.sh \
79
+ "{topic}" \
80
+ "skills/technical-research/SKILL.md" \
81
+ "docs/workflow/research/{topic}.md"
82
+ ```
83
+
62
84
  Load **[invoke-skill.md](references/invoke-skill.md)** and follow its instructions as written.
@@ -2,7 +2,13 @@
2
2
  name: start-review
3
3
  description: "Start a review session from an existing plan and implementation. Discovers available plans, validates implementation exists, and invokes the technical-review skill."
4
4
  disable-model-invocation: true
5
- allowed-tools: Bash(.claude/skills/start-review/scripts/discovery.sh)
5
+ allowed-tools: Bash(.claude/skills/start-review/scripts/discovery.sh), Bash(.claude/hooks/workflows/write-session-state.sh)
6
+ hooks:
7
+ PreToolUse:
8
+ - hooks:
9
+ - type: command
10
+ command: "$CLAUDE_PROJECT_DIR/.claude/hooks/workflows/system-check.sh"
11
+ once: true
6
12
  ---
7
13
 
8
14
  Invoke the **technical-review** skill for this conversation.
@@ -130,4 +136,19 @@ Load **[select-plans.md](references/select-plans.md)** and follow its instructio
130
136
 
131
137
  ## Step 5: Invoke the Skill
132
138
 
139
+ Before invoking the processing skill, save a session bookmark.
140
+
141
+ > *Output the next fenced block as a code block:*
142
+
143
+ ```
144
+ Saving session state so Claude can pick up where it left off if the conversation is compacted.
145
+ ```
146
+
147
+ ```bash
148
+ .claude/hooks/workflows/write-session-state.sh \
149
+ "{topic}" \
150
+ "skills/technical-review/SKILL.md" \
151
+ "docs/workflow/review/{topic}.md"
152
+ ```
153
+
133
154
  Load **[invoke-skill.md](references/invoke-skill.md)** and follow its instructions as written.
@@ -2,7 +2,13 @@
2
2
  name: start-specification
3
3
  description: "Start a specification session from concluded discussions. Discovers available discussions, offers consolidation assessment for multiple discussions, and invokes the technical-specification skill."
4
4
  disable-model-invocation: true
5
- allowed-tools: Bash(.claude/skills/start-specification/scripts/discovery.sh), Bash(mkdir -p docs/workflow/.cache), Bash(rm docs/workflow/.cache/discussion-consolidation-analysis.md)
5
+ allowed-tools: Bash(.claude/skills/start-specification/scripts/discovery.sh), Bash(mkdir -p docs/workflow/.cache), Bash(rm docs/workflow/.cache/discussion-consolidation-analysis.md), Bash(.claude/hooks/workflows/write-session-state.sh)
6
+ hooks:
7
+ PreToolUse:
8
+ - hooks:
9
+ - type: command
10
+ command: "$CLAUDE_PROJECT_DIR/.claude/hooks/workflows/system-check.sh"
11
+ once: true
6
12
  ---
7
13
 
8
14
  Invoke the **technical-specification** skill for this conversation.
@@ -46,7 +52,7 @@ Follow these steps EXACTLY as written. Do not skip steps or combine them. Presen
46
52
 
47
53
  Invoke the `/migrate` skill and assess its output.
48
54
 
49
- **If files were updated**: STOP and wait for the user to review the changes (e.g., via `git diff`) and confirm before proceeding to Step 1.
55
+ **If files were updated**: STOP and wait for the user to review the changes (e.g., via `git diff`) and confirm before proceeding to Step 1. Do not continue automatically.
50
56
 
51
57
  **If no updates needed**: Proceed to Step 1.
52
58
 
@@ -6,6 +6,21 @@
6
6
 
7
7
  Before invoking the skill, reset `finding_gate_mode` to `gated` in the specification frontmatter if present. Commit if changed: `spec({topic}): reset gate mode`
8
8
 
9
+ Before invoking the processing skill, save a session bookmark.
10
+
11
+ > *Output the next fenced block as a code block:*
12
+
13
+ ```
14
+ Saving session state so Claude can pick up where it left off if the conversation is compacted.
15
+ ```
16
+
17
+ ```bash
18
+ .claude/hooks/workflows/write-session-state.sh \
19
+ "{topic}" \
20
+ "skills/technical-specification/SKILL.md" \
21
+ "docs/workflow/specification/{topic}/specification.md"
22
+ ```
23
+
9
24
  This skill's purpose is now fulfilled. Invoke the [technical-specification](../../../technical-specification/SKILL.md) skill for your next instructions. Do not act on the gathered information until the skill is loaded — it contains the instructions for how to proceed.
10
25
 
11
26
  ```
@@ -6,6 +6,21 @@
6
6
 
7
7
  Before invoking the skill, reset `finding_gate_mode` to `gated` in the specification frontmatter if present. Commit if changed: `spec({topic}): reset gate mode`
8
8
 
9
+ Before invoking the processing skill, save a session bookmark.
10
+
11
+ > *Output the next fenced block as a code block:*
12
+
13
+ ```
14
+ Saving session state so Claude can pick up where it left off if the conversation is compacted.
15
+ ```
16
+
17
+ ```bash
18
+ .claude/hooks/workflows/write-session-state.sh \
19
+ "{topic}" \
20
+ "skills/technical-specification/SKILL.md" \
21
+ "docs/workflow/specification/{topic}/specification.md"
22
+ ```
23
+
9
24
  This skill's purpose is now fulfilled. Invoke the [technical-specification](../../../technical-specification/SKILL.md) skill for your next instructions. Do not act on the gathered information until the skill is loaded — it contains the instructions for how to proceed.
10
25
 
11
26
  ```
@@ -4,6 +4,21 @@
4
4
 
5
5
  ---
6
6
 
7
+ Before invoking the processing skill, save a session bookmark.
8
+
9
+ > *Output the next fenced block as a code block:*
10
+
11
+ ```
12
+ Saving session state so Claude can pick up where it left off if the conversation is compacted.
13
+ ```
14
+
15
+ ```bash
16
+ .claude/hooks/workflows/write-session-state.sh \
17
+ "{topic}" \
18
+ "skills/technical-specification/SKILL.md" \
19
+ "docs/workflow/specification/{topic}/specification.md"
20
+ ```
21
+
7
22
  This skill's purpose is now fulfilled. Invoke the [technical-specification](../../../technical-specification/SKILL.md) skill for your next instructions. Do not act on the gathered information until the skill is loaded — it contains the instructions for how to proceed.
8
23
 
9
24
  ```
@@ -4,6 +4,21 @@
4
4
 
5
5
  ---
6
6
 
7
+ Before invoking the processing skill, save a session bookmark.
8
+
9
+ > *Output the next fenced block as a code block:*
10
+
11
+ ```
12
+ Saving session state so Claude can pick up where it left off if the conversation is compacted.
13
+ ```
14
+
15
+ ```bash
16
+ .claude/hooks/workflows/write-session-state.sh \
17
+ "{topic}" \
18
+ "skills/technical-specification/SKILL.md" \
19
+ "docs/workflow/specification/{topic}/specification.md"
20
+ ```
21
+
7
22
  This skill's purpose is now fulfilled. Invoke the [technical-specification](../../../technical-specification/SKILL.md) skill for your next instructions. Do not act on the gathered information until the skill is loaded — it contains the instructions for how to proceed.
8
23
 
9
24
  ```
@@ -4,6 +4,21 @@
4
4
 
5
5
  ---
6
6
 
7
+ Before invoking the processing skill, save a session bookmark.
8
+
9
+ > *Output the next fenced block as a code block:*
10
+
11
+ ```
12
+ Saving session state so Claude can pick up where it left off if the conversation is compacted.
13
+ ```
14
+
15
+ ```bash
16
+ .claude/hooks/workflows/write-session-state.sh \
17
+ "unified" \
18
+ "skills/technical-specification/SKILL.md" \
19
+ "docs/workflow/specification/unified/specification.md"
20
+ ```
21
+
7
22
  This skill's purpose is now fulfilled. Invoke the [technical-specification](../../../technical-specification/SKILL.md) skill for your next instructions. Do not act on the gathered information until the skill is loaded — it contains the instructions for how to proceed.
8
23
 
9
24
  ```