aiwcli 0.12.6 → 0.12.8

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 (163) hide show
  1. package/bin/dev.cmd +3 -3
  2. package/bin/dev.js +16 -16
  3. package/bin/run.cmd +3 -3
  4. package/bin/run.js +21 -21
  5. package/dist/commands/branch.js +7 -2
  6. package/dist/lib/bmad-installer.js +37 -37
  7. package/dist/lib/terminal.d.ts +2 -0
  8. package/dist/lib/terminal.js +57 -7
  9. package/dist/templates/CLAUDE.md +232 -205
  10. package/dist/templates/_shared/.claude/settings.json +65 -65
  11. package/dist/templates/_shared/.claude/{commands/handoff.md → skills/handoff/SKILL.md} +13 -12
  12. package/dist/templates/_shared/.claude/{commands/handoff-resume.md → skills/handoff-resume/SKILL.md} +13 -12
  13. package/dist/templates/_shared/.codex/workflows/handoff.md +226 -226
  14. package/dist/templates/_shared/.windsurf/workflows/handoff.md +226 -226
  15. package/dist/templates/_shared/handoff-system/CLAUDE.md +15 -3
  16. package/dist/templates/_shared/handoff-system/lib/document-generator.ts +215 -215
  17. package/dist/templates/_shared/handoff-system/lib/handoff-reader.ts +158 -158
  18. package/dist/templates/_shared/handoff-system/scripts/resume_handoff.ts +373 -373
  19. package/dist/templates/_shared/handoff-system/scripts/save_handoff.ts +469 -469
  20. package/dist/templates/_shared/handoff-system/workflows/handoff-resume.md +66 -66
  21. package/dist/templates/_shared/handoff-system/workflows/handoff.md +254 -254
  22. package/dist/templates/_shared/hooks-ts/_utils/git-state.ts +2 -2
  23. package/dist/templates/_shared/hooks-ts/archive_plan.ts +159 -159
  24. package/dist/templates/_shared/hooks-ts/context_monitor.ts +147 -147
  25. package/dist/templates/_shared/hooks-ts/file-suggestion.ts +128 -128
  26. package/dist/templates/_shared/hooks-ts/pre_compact.ts +49 -49
  27. package/dist/templates/_shared/hooks-ts/session_end.ts +196 -196
  28. package/dist/templates/_shared/hooks-ts/session_start.ts +163 -163
  29. package/dist/templates/_shared/hooks-ts/task_create_capture.ts +48 -48
  30. package/dist/templates/_shared/hooks-ts/task_update_capture.ts +74 -74
  31. package/dist/templates/_shared/hooks-ts/user_prompt_submit.ts +93 -93
  32. package/dist/templates/_shared/lib-ts/CLAUDE.md +367 -367
  33. package/dist/templates/_shared/lib-ts/base/atomic-write.ts +138 -138
  34. package/dist/templates/_shared/lib-ts/base/constants.ts +24 -6
  35. package/dist/templates/_shared/lib-ts/base/git-state.ts +58 -58
  36. package/dist/templates/_shared/lib-ts/base/hook-utils.ts +582 -582
  37. package/dist/templates/_shared/lib-ts/base/inference.ts +301 -301
  38. package/dist/templates/_shared/lib-ts/base/logger.ts +247 -247
  39. package/dist/templates/_shared/lib-ts/base/state-io.ts +202 -202
  40. package/dist/templates/_shared/lib-ts/base/stop-words.ts +184 -184
  41. package/dist/templates/_shared/lib-ts/base/utils.ts +184 -184
  42. package/dist/templates/_shared/lib-ts/context/CLAUDE.md +134 -0
  43. package/dist/templates/_shared/lib-ts/context/context-formatter.ts +566 -566
  44. package/dist/templates/_shared/lib-ts/context/context-selector.ts +524 -524
  45. package/dist/templates/_shared/lib-ts/context/context-store.ts +712 -712
  46. package/dist/templates/_shared/lib-ts/context/plan-manager.ts +312 -312
  47. package/dist/templates/_shared/lib-ts/context/task-tracker.ts +185 -185
  48. package/dist/templates/_shared/lib-ts/package.json +20 -20
  49. package/dist/templates/_shared/lib-ts/templates/formatters.ts +102 -102
  50. package/dist/templates/_shared/lib-ts/templates/plan-context.ts +58 -58
  51. package/dist/templates/_shared/lib-ts/tsconfig.json +13 -13
  52. package/dist/templates/_shared/lib-ts/types.ts +186 -186
  53. package/dist/templates/_shared/scripts/resolve_context.ts +33 -33
  54. package/dist/templates/_shared/scripts/status_line.ts +687 -690
  55. package/dist/templates/cc-native/.claude/commands/cc-native/rlm/ask.md +136 -136
  56. package/dist/templates/cc-native/.claude/commands/cc-native/rlm/index.md +21 -21
  57. package/dist/templates/cc-native/.claude/commands/cc-native/rlm/overview.md +56 -56
  58. package/dist/templates/cc-native/.claude/commands/cc-native/specdev.md +10 -10
  59. package/dist/templates/cc-native/.claude/settings.json +3 -2
  60. package/dist/templates/cc-native/.windsurf/workflows/cc-native/fix.md +8 -8
  61. package/dist/templates/cc-native/.windsurf/workflows/cc-native/implement.md +8 -8
  62. package/dist/templates/cc-native/.windsurf/workflows/cc-native/research.md +8 -8
  63. package/dist/templates/cc-native/CC-NATIVE-README.md +189 -189
  64. package/dist/templates/cc-native/TEMPLATE-SCHEMA.md +304 -304
  65. package/dist/templates/cc-native/_cc-native/agents/CLAUDE.md +143 -143
  66. package/dist/templates/cc-native/_cc-native/agents/PLAN-ORCHESTRATOR.md +213 -213
  67. package/dist/templates/cc-native/_cc-native/agents/plan-questions/PLAN-QUESTIONER.md +70 -70
  68. package/dist/templates/cc-native/_cc-native/artifacts/CLAUDE.md +64 -0
  69. package/dist/templates/cc-native/_cc-native/{lib-ts/artifacts → artifacts/lib}/format.ts +1 -1
  70. package/dist/templates/cc-native/_cc-native/{lib-ts/artifacts → artifacts/lib}/write.ts +2 -2
  71. package/dist/templates/cc-native/_cc-native/cc-native.config.json +96 -96
  72. package/dist/templates/cc-native/_cc-native/hooks/CLAUDE.md +14 -24
  73. package/dist/templates/cc-native/_cc-native/hooks/cc-native-plan-review.ts +1 -1
  74. package/dist/templates/cc-native/_cc-native/hooks/enhance_plan_post_subagent.ts +54 -54
  75. package/dist/templates/cc-native/_cc-native/hooks/enhance_plan_post_write.ts +51 -51
  76. package/dist/templates/cc-native/_cc-native/hooks/mark_questions_asked.ts +53 -53
  77. package/dist/templates/cc-native/_cc-native/hooks/plan_questions_early.ts +61 -61
  78. package/dist/templates/cc-native/_cc-native/hooks/validate_task_prompt.ts +76 -0
  79. package/dist/templates/cc-native/_cc-native/lib-ts/aggregate-agents.ts +9 -2
  80. package/dist/templates/cc-native/_cc-native/lib-ts/cc-native-state.ts +319 -319
  81. package/dist/templates/cc-native/_cc-native/lib-ts/cli-output-parser.ts +144 -144
  82. package/dist/templates/cc-native/_cc-native/lib-ts/config.ts +57 -57
  83. package/dist/templates/cc-native/_cc-native/lib-ts/constants.ts +83 -83
  84. package/dist/templates/cc-native/_cc-native/lib-ts/debug.ts +79 -79
  85. package/dist/templates/cc-native/_cc-native/lib-ts/index.ts +4 -4
  86. package/dist/templates/cc-native/_cc-native/lib-ts/json-parser.ts +168 -168
  87. package/dist/templates/cc-native/_cc-native/lib-ts/plan-discovery.ts +80 -80
  88. package/dist/templates/cc-native/_cc-native/lib-ts/plan-enhancement.ts +41 -41
  89. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/CLAUDE.md +480 -480
  90. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/embedding-indexer.ts +287 -287
  91. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/hyde.ts +148 -148
  92. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/index.ts +54 -54
  93. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/logger.ts +58 -58
  94. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/ollama-client.ts +208 -208
  95. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/retrieval-pipeline.ts +460 -460
  96. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-indexer.ts +446 -446
  97. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-loader.ts +280 -280
  98. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-searcher.ts +274 -274
  99. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/types.ts +201 -201
  100. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/vector-store.ts +278 -278
  101. package/dist/templates/cc-native/_cc-native/lib-ts/settings.ts +184 -184
  102. package/dist/templates/cc-native/_cc-native/lib-ts/state.ts +275 -275
  103. package/dist/templates/cc-native/_cc-native/lib-ts/tsconfig.json +18 -18
  104. package/dist/templates/cc-native/_cc-native/lib-ts/types.ts +1 -1
  105. package/dist/templates/cc-native/_cc-native/plan-review/CLAUDE.md +149 -0
  106. package/dist/templates/cc-native/_cc-native/plan-review/agents/CLAUDE.md +143 -0
  107. package/dist/templates/cc-native/_cc-native/plan-review/agents/PLAN-ORCHESTRATOR.md +213 -0
  108. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-questions/PLAN-QUESTIONER.md +70 -0
  109. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ARCH-EVOLUTION.md +62 -0
  110. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ARCH-PATTERNS.md +61 -0
  111. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ARCH-STRUCTURE.md +62 -0
  112. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ASSUMPTION-TRACER.md +56 -0
  113. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/CLARITY-AUDITOR.md +53 -0
  114. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/COMPLETENESS-FEASIBILITY.md +66 -0
  115. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/COMPLETENESS-GAPS.md +70 -0
  116. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/COMPLETENESS-ORDERING.md +62 -0
  117. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/CONSTRAINT-VALIDATOR.md +72 -0
  118. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DESIGN-ADR-VALIDATOR.md +61 -0
  119. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DESIGN-SCALE-MATCHER.md +64 -0
  120. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DEVILS-ADVOCATE.md +56 -0
  121. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DOCUMENTATION-PHILOSOPHY.md +86 -0
  122. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/HANDOFF-READINESS.md +59 -0
  123. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/HIDDEN-COMPLEXITY.md +58 -0
  124. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/INCREMENTAL-DELIVERY.md +66 -0
  125. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-DEPENDENCY.md +62 -0
  126. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-FMEA.md +66 -0
  127. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-PREMORTEM.md +71 -0
  128. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-REVERSIBILITY.md +74 -0
  129. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/SCOPE-BOUNDARY.md +77 -0
  130. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/SIMPLICITY-GUARDIAN.md +62 -0
  131. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/SKEPTIC.md +68 -0
  132. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-BEHAVIOR-AUDITOR.md +61 -0
  133. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-CHARACTERIZATION.md +71 -0
  134. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-FIRST-VALIDATOR.md +61 -0
  135. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-PYRAMID-ANALYZER.md +61 -0
  136. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TRADEOFF-COSTS.md +67 -0
  137. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TRADEOFF-STAKEHOLDERS.md +65 -0
  138. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/VERIFY-COVERAGE.md +74 -0
  139. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/VERIFY-STRENGTH.md +69 -0
  140. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/agent-selection.ts +3 -3
  141. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/corroboration.ts +1 -1
  142. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/graduation.ts +1 -1
  143. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/orchestrator.ts +2 -2
  144. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/output-builder.ts +3 -3
  145. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/plan-questions.ts +6 -6
  146. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/review-pipeline.ts +15 -15
  147. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/agent.ts +5 -5
  148. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/base/base-agent.ts +4 -4
  149. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/providers/claude-agent.ts +4 -4
  150. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/providers/codex-agent.ts +6 -6
  151. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/providers/gemini-agent.ts +1 -1
  152. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/providers/orchestrator-claude-agent.ts +4 -4
  153. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/types.ts +3 -3
  154. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/verdict.ts +1 -1
  155. package/oclif.manifest.json +1 -1
  156. package/package.json +108 -108
  157. package/dist/templates/cc-native/_cc-native/lib-ts/artifacts.ts +0 -21
  158. package/dist/templates/cc-native/_cc-native/lib-ts/nul +0 -3
  159. /package/dist/templates/cc-native/_cc-native/{lib-ts/artifacts → artifacts/lib}/index.ts +0 -0
  160. /package/dist/templates/cc-native/_cc-native/{lib-ts/artifacts → artifacts/lib}/tracker.ts +0 -0
  161. /package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/index.ts +0 -0
  162. /package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/schemas.ts +0 -0
  163. /package/dist/templates/cc-native/_cc-native/{workflows → plan-review/workflows}/specdev.md +0 -0
@@ -1,226 +1,226 @@
1
- # Handoff Workflow
2
-
3
- Generate a handoff document summarizing the current session's work, decisions, and pending items. Optionally update a plan document to track completed vs remaining tasks.
4
-
5
- ## Triggers
6
-
7
- - `/handoff` command
8
- - `/handoff path/to/PLAN.md` - with plan document integration
9
- - Phrases like "write a handoff", "create a session summary", "document what we did", "end session with notes"
10
-
11
- ## Arguments
12
-
13
- - `$ARGUMENTS` - Optional path to a plan document. If provided, the handoff will:
14
- 1. Mark completed items in the plan with `[x]`
15
- 2. Add notes about partial progress
16
- 3. Append a "Session Progress" section to the plan
17
-
18
- ## Process
19
-
20
- ### Step 1: Get Context ID
21
-
22
- Extract the `context_id` from the system reminder injected by the context enforcer hook.
23
-
24
- Look for the pattern in the system reminder:
25
- ```
26
- Active Context: {context_id}
27
- ```
28
-
29
- If no active context is found, inform the user and stop - handoffs require an active context.
30
-
31
- ### Step 2: Gather Information
32
-
33
- 1. Review conversation history for:
34
- - Completed tasks and implementations
35
- - Key decisions and their rationale
36
- - Failed approaches (to avoid repeating)
37
- - External context (deadlines, stakeholder requirements)
38
-
39
- 2. Check git status if available:
40
- ```bash
41
- git status --short
42
- git diff --stat
43
- ```
44
-
45
- 3. Look for TODOs/FIXMEs mentioned in session
46
-
47
- 4. **If plan document provided**: Read the plan and identify:
48
- - Tasks that are now completed
49
- - Tasks that are partially done
50
- - Tasks that were attempted but blocked
51
- - New tasks discovered during implementation
52
-
53
- ### Step 3: Generate Document
54
-
55
- Use this template. The `<!-- SECTION: name -->` markers are required for the save script to parse sections into sharded files.
56
-
57
- ```markdown
58
- ---
59
- title: Session Handoff
60
- date: {ISO timestamp}
61
- session_id: {conversation ID if available}
62
- project: {project name from package.json, Cargo.toml, or directory name}
63
- context_id: {context_id from Step 1}
64
- plan_document: {path to plan if provided, or "none"}
65
- ---
66
-
67
- # Session Handoff — {Date}
68
-
69
- <!-- SECTION: summary -->
70
- ## Summary
71
- {2-3 sentences: what's different now vs. session start}
72
-
73
- <!-- SECTION: completed -->
74
- ## Work Completed
75
- {Grouped by category if multiple areas. Specific file:function references.}
76
-
77
- <!-- SECTION: dead-ends -->
78
- ## Dead Ends — Do Not Retry
79
-
80
- These approaches were attempted and failed. Do not retry without addressing the root cause.
81
-
82
- | Approach | Why It Failed | Time Spent | Alternative |
83
- |----------|---------------|------------|-------------|
84
- | {What was attempted} | {Specific reason} | {Rough estimate} | {What to try instead} |
85
-
86
- <!-- SECTION: decisions -->
87
- ## Key Decisions
88
- {Technical choices with rationale. Format: **Decision**: Rationale. Trade-off: X.}
89
-
90
- <!-- SECTION: pending -->
91
- ## Pending Issues
92
- - [ ] {Issue} — {severity: HIGH/MED/LOW} {optional workaround note}
93
-
94
- <!-- SECTION: next-steps -->
95
- ## Next Steps
96
- 1. {Actionable item with file:line reference if applicable}
97
-
98
- <!-- SECTION: files -->
99
- ## Files Modified
100
- {Significant changes only. Skip formatting-only edits.}
101
-
102
- <!-- SECTION: context -->
103
- ## Context for Future Sessions
104
- {Non-obvious context: env quirks, stakeholder requirements}
105
-
106
- ```
107
-
108
- ### Step 4: Update Plan Document (if provided)
109
-
110
- If a plan document path was provided in `$ARGUMENTS`:
111
-
112
- 1. **Read the plan document**
113
- 2. **Identify completed items**:
114
- - Find checkboxes `- [ ]` that match completed work
115
- - Change them to `- [x]`
116
- 3. **Add progress notes** to items that are partially complete:
117
- - Append `(partial: {brief status})` to the line
118
- 4. **Append Session Progress section** at the bottom:
119
-
120
- ```markdown
121
-
122
- ---
123
-
124
- ## Session Progress Log
125
-
126
- ### {Date} — Session {session_id or timestamp}
127
-
128
- **Completed this session:**
129
- - [x] {Task from plan that was completed}
130
- - [x] {Another completed task}
131
-
132
- **Partially completed:**
133
- - {Task} — {current state, what remains}
134
-
135
- **Blocked/Deferred:**
136
- - {Task} — {reason, what's needed}
137
-
138
- **New items discovered:**
139
- - [ ] {New task not in original plan}
140
- - [ ] {Another new task}
141
-
142
- ---
143
- ```
144
-
145
- 5. **If no plan document was provided**:
146
- - Skip plan creation - the handoff document serves as the session record
147
-
148
- ### Step 5: Save and Update Status
149
-
150
- Instead of writing the file directly, pipe your handoff content to the save script:
151
-
152
- ```bash
153
- bun .aiwcli/_shared/handoff-system/scripts/save_handoff.ts "{context_id}" <<'EOF'
154
- {Your complete handoff markdown content from Step 3}
155
- EOF
156
- ```
157
-
158
- This script:
159
- 1. Creates a folder at `_output/contexts/{context_id}/handoffs/{YYYY-MM-DD-HHMM}/`
160
- 2. Parses sections and writes sharded files (index.md, completed-work.md, dead-ends.md, etc.)
161
- 3. Copies the current plan (if any) to plan.md
162
- 4. Records the event in the context's event log (informational only)
163
-
164
- Use the handoff folder for context in the next session.
165
-
166
- ## Dead Ends Section Guidelines
167
-
168
- This section is critical for preventing context rot across sessions. Be specific:
169
-
170
- **Bad (too vague):**
171
- > - Tried using library X, didn't work
172
-
173
- **Good (actionable):**
174
- > ### Fixing the race condition in SessionStore
175
- > | Approach Tried | Why It Failed |
176
- > |----------------|---------------|
177
- > | `async-mutex` package | Deadlock when nested calls to `getSession()` |
178
- > | Redis WATCH/MULTI | Our Redis 6.x cluster doesn't support WATCH in cluster mode |
179
- > | In-memory lock Map | Works single-node but breaks in horizontal scaling |
180
- >
181
- > **What to try instead**: Upgrade to Redis 7.x which supports WATCH in cluster mode, or use Redlock algorithm
182
-
183
- **Capture these dead ends:**
184
- - Packages/libraries that had incompatibilities
185
- - Approaches that caused new bugs or regressions
186
- - Solutions that worked locally but failed in CI/staging/prod
187
- - Configurations that conflicted with existing setup
188
- - Rabbit holes that consumed significant time without progress
189
-
190
- ## Post-Generation Output
191
-
192
- After creating file, output:
193
-
194
- ```
195
- ✓ Created handoff folder: _output/contexts/{context_id}/handoffs/{YYYY-MM-DD-HHMM}/
196
- - index.md (entry point with navigation)
197
- - completed-work.md, dead-ends.md, decisions.md, pending.md, context.md
198
- - plan.md (copy of current plan, if any)
199
-
200
- To continue next session:
201
- The index.md will be automatically suggested when you start a new session.
202
- Read dead-ends.md first to avoid repeating failed approaches.
203
-
204
- ⚠️ {N} dead ends documented — avoid re-attempting these approaches
205
- ```
206
-
207
- If plan was updated:
208
- ```
209
- ✓ Updated plan document: {path}
210
- - {N} items marked complete
211
- - {N} items partially complete
212
- - {N} new items added
213
- ```
214
-
215
- ## Success Criteria
216
-
217
- - [ ] Handoff folder created at `handoffs/{YYYY-MM-DD-HHMM}/`
218
- - [ ] index.md contains summary and navigation table
219
- - [ ] All section files created (completed-work.md, dead-ends.md, etc.)
220
- - [ ] Dead ends use structured table format for quick scanning
221
- - [ ] plan.md copied from context if plan exists
222
- - [ ] Next steps are actionable with file references
223
- - [ ] Git status included in index.md
224
- - [ ] If plan provided: checkboxes updated to reflect completion status
225
- - [ ] If plan provided: Session Progress Log appended
226
- - [ ] Context state updated to indicate handoff pending
1
+ # Handoff Workflow
2
+
3
+ Generate a handoff document summarizing the current session's work, decisions, and pending items. Optionally update a plan document to track completed vs remaining tasks.
4
+
5
+ ## Triggers
6
+
7
+ - `/handoff` command
8
+ - `/handoff path/to/PLAN.md` - with plan document integration
9
+ - Phrases like "write a handoff", "create a session summary", "document what we did", "end session with notes"
10
+
11
+ ## Arguments
12
+
13
+ - `$ARGUMENTS` - Optional path to a plan document. If provided, the handoff will:
14
+ 1. Mark completed items in the plan with `[x]`
15
+ 2. Add notes about partial progress
16
+ 3. Append a "Session Progress" section to the plan
17
+
18
+ ## Process
19
+
20
+ ### Step 1: Get Context ID
21
+
22
+ Extract the `context_id` from the system reminder injected by the context enforcer hook.
23
+
24
+ Look for the pattern in the system reminder:
25
+ ```
26
+ Active Context: {context_id}
27
+ ```
28
+
29
+ If no active context is found, inform the user and stop - handoffs require an active context.
30
+
31
+ ### Step 2: Gather Information
32
+
33
+ 1. Review conversation history for:
34
+ - Completed tasks and implementations
35
+ - Key decisions and their rationale
36
+ - Failed approaches (to avoid repeating)
37
+ - External context (deadlines, stakeholder requirements)
38
+
39
+ 2. Check git status if available:
40
+ ```bash
41
+ git status --short
42
+ git diff --stat
43
+ ```
44
+
45
+ 3. Look for TODOs/FIXMEs mentioned in session
46
+
47
+ 4. **If plan document provided**: Read the plan and identify:
48
+ - Tasks that are now completed
49
+ - Tasks that are partially done
50
+ - Tasks that were attempted but blocked
51
+ - New tasks discovered during implementation
52
+
53
+ ### Step 3: Generate Document
54
+
55
+ Use this template. The `<!-- SECTION: name -->` markers are required for the save script to parse sections into sharded files.
56
+
57
+ ```markdown
58
+ ---
59
+ title: Session Handoff
60
+ date: {ISO timestamp}
61
+ session_id: {conversation ID if available}
62
+ project: {project name from package.json, Cargo.toml, or directory name}
63
+ context_id: {context_id from Step 1}
64
+ plan_document: {path to plan if provided, or "none"}
65
+ ---
66
+
67
+ # Session Handoff — {Date}
68
+
69
+ <!-- SECTION: summary -->
70
+ ## Summary
71
+ {2-3 sentences: what's different now vs. session start}
72
+
73
+ <!-- SECTION: completed -->
74
+ ## Work Completed
75
+ {Grouped by category if multiple areas. Specific file:function references.}
76
+
77
+ <!-- SECTION: dead-ends -->
78
+ ## Dead Ends — Do Not Retry
79
+
80
+ These approaches were attempted and failed. Do not retry without addressing the root cause.
81
+
82
+ | Approach | Why It Failed | Time Spent | Alternative |
83
+ |----------|---------------|------------|-------------|
84
+ | {What was attempted} | {Specific reason} | {Rough estimate} | {What to try instead} |
85
+
86
+ <!-- SECTION: decisions -->
87
+ ## Key Decisions
88
+ {Technical choices with rationale. Format: **Decision**: Rationale. Trade-off: X.}
89
+
90
+ <!-- SECTION: pending -->
91
+ ## Pending Issues
92
+ - [ ] {Issue} — {severity: HIGH/MED/LOW} {optional workaround note}
93
+
94
+ <!-- SECTION: next-steps -->
95
+ ## Next Steps
96
+ 1. {Actionable item with file:line reference if applicable}
97
+
98
+ <!-- SECTION: files -->
99
+ ## Files Modified
100
+ {Significant changes only. Skip formatting-only edits.}
101
+
102
+ <!-- SECTION: context -->
103
+ ## Context for Future Sessions
104
+ {Non-obvious context: env quirks, stakeholder requirements}
105
+
106
+ ```
107
+
108
+ ### Step 4: Update Plan Document (if provided)
109
+
110
+ If a plan document path was provided in `$ARGUMENTS`:
111
+
112
+ 1. **Read the plan document**
113
+ 2. **Identify completed items**:
114
+ - Find checkboxes `- [ ]` that match completed work
115
+ - Change them to `- [x]`
116
+ 3. **Add progress notes** to items that are partially complete:
117
+ - Append `(partial: {brief status})` to the line
118
+ 4. **Append Session Progress section** at the bottom:
119
+
120
+ ```markdown
121
+
122
+ ---
123
+
124
+ ## Session Progress Log
125
+
126
+ ### {Date} — Session {session_id or timestamp}
127
+
128
+ **Completed this session:**
129
+ - [x] {Task from plan that was completed}
130
+ - [x] {Another completed task}
131
+
132
+ **Partially completed:**
133
+ - {Task} — {current state, what remains}
134
+
135
+ **Blocked/Deferred:**
136
+ - {Task} — {reason, what's needed}
137
+
138
+ **New items discovered:**
139
+ - [ ] {New task not in original plan}
140
+ - [ ] {Another new task}
141
+
142
+ ---
143
+ ```
144
+
145
+ 5. **If no plan document was provided**:
146
+ - Skip plan creation - the handoff document serves as the session record
147
+
148
+ ### Step 5: Save and Update Status
149
+
150
+ Instead of writing the file directly, pipe your handoff content to the save script:
151
+
152
+ ```bash
153
+ bun .aiwcli/_shared/handoff-system/scripts/save_handoff.ts "{context_id}" <<'EOF'
154
+ {Your complete handoff markdown content from Step 3}
155
+ EOF
156
+ ```
157
+
158
+ This script:
159
+ 1. Creates a folder at `_output/contexts/{context_id}/handoffs/{YYYY-MM-DD-HHMM}/`
160
+ 2. Parses sections and writes sharded files (index.md, completed-work.md, dead-ends.md, etc.)
161
+ 3. Copies the current plan (if any) to plan.md
162
+ 4. Records the event in the context's event log (informational only)
163
+
164
+ Use the handoff folder for context in the next session.
165
+
166
+ ## Dead Ends Section Guidelines
167
+
168
+ This section is critical for preventing context rot across sessions. Be specific:
169
+
170
+ **Bad (too vague):**
171
+ > - Tried using library X, didn't work
172
+
173
+ **Good (actionable):**
174
+ > ### Fixing the race condition in SessionStore
175
+ > | Approach Tried | Why It Failed |
176
+ > |----------------|---------------|
177
+ > | `async-mutex` package | Deadlock when nested calls to `getSession()` |
178
+ > | Redis WATCH/MULTI | Our Redis 6.x cluster doesn't support WATCH in cluster mode |
179
+ > | In-memory lock Map | Works single-node but breaks in horizontal scaling |
180
+ >
181
+ > **What to try instead**: Upgrade to Redis 7.x which supports WATCH in cluster mode, or use Redlock algorithm
182
+
183
+ **Capture these dead ends:**
184
+ - Packages/libraries that had incompatibilities
185
+ - Approaches that caused new bugs or regressions
186
+ - Solutions that worked locally but failed in CI/staging/prod
187
+ - Configurations that conflicted with existing setup
188
+ - Rabbit holes that consumed significant time without progress
189
+
190
+ ## Post-Generation Output
191
+
192
+ After creating file, output:
193
+
194
+ ```
195
+ ✓ Created handoff folder: _output/contexts/{context_id}/handoffs/{YYYY-MM-DD-HHMM}/
196
+ - index.md (entry point with navigation)
197
+ - completed-work.md, dead-ends.md, decisions.md, pending.md, context.md
198
+ - plan.md (copy of current plan, if any)
199
+
200
+ To continue next session:
201
+ The index.md will be automatically suggested when you start a new session.
202
+ Read dead-ends.md first to avoid repeating failed approaches.
203
+
204
+ ⚠️ {N} dead ends documented — avoid re-attempting these approaches
205
+ ```
206
+
207
+ If plan was updated:
208
+ ```
209
+ ✓ Updated plan document: {path}
210
+ - {N} items marked complete
211
+ - {N} items partially complete
212
+ - {N} new items added
213
+ ```
214
+
215
+ ## Success Criteria
216
+
217
+ - [ ] Handoff folder created at `handoffs/{YYYY-MM-DD-HHMM}/`
218
+ - [ ] index.md contains summary and navigation table
219
+ - [ ] All section files created (completed-work.md, dead-ends.md, etc.)
220
+ - [ ] Dead ends use structured table format for quick scanning
221
+ - [ ] plan.md copied from context if plan exists
222
+ - [ ] Next steps are actionable with file references
223
+ - [ ] Git status included in index.md
224
+ - [ ] If plan provided: checkboxes updated to reflect completion status
225
+ - [ ] If plan provided: Session Progress Log appended
226
+ - [ ] Context state updated to indicate handoff pending
@@ -311,15 +311,15 @@ function buildDeadEndsSection(deadEnds: DeadEnd[]): string
311
311
 
312
312
  **Note:** Currently not imported by any files. Moved here for logical grouping and completeness.
313
313
 
314
- ## Command Integration
314
+ ## Skill Integration
315
315
 
316
316
  **Thin pointer pattern:**
317
317
 
318
- `.claude/commands/handoff.md` (user-facing, discoverable via `/`)
318
+ `.claude/skills/handoff/SKILL.md` (user-facing, discoverable via `/`, `user-invocable: true`)
319
319
  → References `.aiwcli/_shared/handoff-system/workflows/handoff.md` (detailed procedural steps)
320
320
 
321
321
  **Benefits:**
322
- - Command files stay concise (easy to scan in `/` menu)
322
+ - Skill files stay concise (easy to scan in `/` menu)
323
323
  - Workflow files can expand without bloating command discovery
324
324
  - Single source of truth for procedural details
325
325
 
@@ -369,6 +369,18 @@ Expected: No import errors, clean execution.
369
369
  - Prevents `session_end` from re-staging same artifact
370
370
  - Reset to `false` when new artifact created
371
371
 
372
+ ## Plan-Specific Behaviors
373
+
374
+ **Critical: Auto-paste bypasses hooks.** After ExitPlanMode "clear context", Claude Code runs `/clear` and auto-pastes the plan content. This auto-paste is an internal mechanism that does NOT trigger UserPromptSubmit. The `session_start.ts` handler for `source=clear` bridges this gap.
375
+
376
+ **One plan per session assumption:** Plan review iteration state resets across sessions but NOT within a session. When a plan is rejected by reviewers and the user creates a new plan in the same session, the iteration state (agent graduation, pass streaks) persists. This allows the review framework to work correctly: rejection within a session means "fix and retry," not "start completely fresh." Only when starting a new planning session (new session ID) does iteration state reset to allow full fresh review.
377
+
378
+ **Rejection handling:** `archive_plan` archives the file on PermissionRequest (before accept/reject decision). If rejected, the archive exists but `session_end`'s fallback may assign plan_hash. This is acceptable — rejected plans with hash set don't cause harm because plan matching in context_selector requires content match.
379
+
380
+ **Two restore paths:**
381
+ - **source=clear** (plan/handoff acceptance): Plan auto-pasted by Claude Code (plans only). Hook injects task/git context and handoff content (dispatch by `next_artifact_type`).
382
+ - **source=compact** (auto-compaction): Plan NOT auto-pasted. Hook inlines plan content via `buildRestoreSections(inline_plan=True)`.
383
+
372
384
  ## Architecture Decisions
373
385
 
374
386
  **Why folder sharding (not single file)?**