claude-code-workflow 6.1.4 → 6.2.2

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 (437) hide show
  1. package/.claude/CLAUDE.md +10 -0
  2. package/.claude/agents/action-planning-agent.md +857 -778
  3. package/.claude/agents/cli-execution-agent.md +266 -269
  4. package/.claude/agents/cli-explore-agent.md +2 -2
  5. package/.claude/agents/cli-lite-planning-agent.md +142 -92
  6. package/.claude/agents/cli-planning-agent.md +4 -4
  7. package/.claude/agents/code-developer.md +7 -6
  8. package/.claude/agents/conceptual-planning-agent.md +2 -2
  9. package/.claude/agents/context-search-agent.md +31 -32
  10. package/.claude/agents/doc-generator.md +4 -4
  11. package/.claude/agents/memory-bridge.md +93 -93
  12. package/.claude/agents/test-context-search-agent.md +8 -7
  13. package/.claude/agents/test-fix-agent.md +7 -6
  14. package/.claude/commands/clean.md +516 -0
  15. package/.claude/commands/memory/compact.md +383 -0
  16. package/.claude/commands/memory/docs-full-cli.md +471 -471
  17. package/.claude/commands/memory/docs-related-cli.md +386 -386
  18. package/.claude/commands/memory/docs.md +615 -615
  19. package/.claude/commands/memory/load.md +5 -5
  20. package/.claude/commands/memory/tech-research-rules.md +310 -0
  21. package/.claude/commands/memory/update-full.md +332 -332
  22. package/.claude/commands/memory/workflow-skill-memory.md +4 -4
  23. package/.claude/commands/task/create.md +151 -151
  24. package/.claude/commands/version.md +254 -254
  25. package/.claude/commands/workflow/brainstorm/api-designer.md +587 -585
  26. package/.claude/commands/workflow/brainstorm/artifacts.md +1 -0
  27. package/.claude/commands/workflow/brainstorm/auto-parallel.md +443 -443
  28. package/.claude/commands/workflow/brainstorm/data-architect.md +220 -220
  29. package/.claude/commands/workflow/brainstorm/product-manager.md +200 -200
  30. package/.claude/commands/workflow/brainstorm/product-owner.md +200 -200
  31. package/.claude/commands/workflow/brainstorm/scrum-master.md +200 -200
  32. package/.claude/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
  33. package/.claude/commands/workflow/brainstorm/system-architect.md +389 -387
  34. package/.claude/commands/workflow/brainstorm/ui-designer.md +221 -221
  35. package/.claude/commands/workflow/brainstorm/ux-expert.md +221 -221
  36. package/.claude/commands/workflow/debug.md +321 -0
  37. package/.claude/commands/workflow/execute.md +13 -0
  38. package/.claude/commands/workflow/init.md +165 -164
  39. package/.claude/commands/workflow/lite-execute.md +119 -13
  40. package/.claude/commands/workflow/lite-fix.md +623 -621
  41. package/.claude/commands/workflow/lite-plan.md +610 -592
  42. package/.claude/commands/workflow/plan.md +5 -5
  43. package/.claude/commands/workflow/review-module-cycle.md +2 -0
  44. package/.claude/commands/workflow/review-session-cycle.md +2 -0
  45. package/.claude/commands/workflow/review.md +297 -291
  46. package/.claude/commands/workflow/session/complete.md +153 -500
  47. package/.claude/commands/workflow/session/list.md +95 -95
  48. package/.claude/commands/workflow/session/resume.md +60 -60
  49. package/.claude/commands/workflow/session/start.md +199 -199
  50. package/.claude/commands/workflow/tdd-plan.md +3 -3
  51. package/.claude/commands/workflow/tdd-verify.md +23 -9
  52. package/.claude/commands/workflow/test-cycle-execute.md +2 -0
  53. package/.claude/commands/workflow/test-fix-gen.md +699 -699
  54. package/.claude/commands/workflow/tools/conflict-resolution.md +104 -18
  55. package/.claude/commands/workflow/tools/context-gather.md +436 -434
  56. package/.claude/commands/workflow/tools/task-generate-agent.md +490 -291
  57. package/.claude/commands/workflow/tools/task-generate-tdd.md +18 -10
  58. package/.claude/commands/workflow/tools/test-concept-enhanced.md +2 -1
  59. package/.claude/commands/workflow/tools/test-context-gather.md +1 -0
  60. package/.claude/commands/workflow/tools/test-task-generate.md +1 -0
  61. package/.claude/commands/workflow/ui-design/import-from-code.md +9 -6
  62. package/.claude/skills/command-guide/SKILL.md +5 -5
  63. package/.claude/skills/command-guide/index/all-commands.json +1 -1
  64. package/.claude/skills/command-guide/index/by-category.json +1 -1
  65. package/.claude/skills/command-guide/index/by-use-case.json +1 -1
  66. package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +857 -778
  67. package/.claude/skills/command-guide/reference/agents/cli-execution-agent.md +266 -269
  68. package/.claude/skills/command-guide/reference/agents/cli-explore-agent.md +2 -2
  69. package/.claude/skills/command-guide/reference/agents/cli-lite-planning-agent.md +142 -92
  70. package/.claude/skills/command-guide/reference/agents/cli-planning-agent.md +4 -4
  71. package/.claude/skills/command-guide/reference/agents/code-developer.md +7 -6
  72. package/.claude/skills/command-guide/reference/agents/conceptual-planning-agent.md +2 -2
  73. package/.claude/skills/command-guide/reference/agents/context-search-agent.md +31 -32
  74. package/.claude/skills/command-guide/reference/agents/doc-generator.md +4 -4
  75. package/.claude/skills/command-guide/reference/agents/memory-bridge.md +93 -93
  76. package/.claude/skills/command-guide/reference/agents/test-context-search-agent.md +8 -7
  77. package/.claude/skills/command-guide/reference/agents/test-fix-agent.md +7 -6
  78. package/.claude/skills/command-guide/reference/commands/memory/docs-full-cli.md +471 -471
  79. package/.claude/skills/command-guide/reference/commands/memory/docs-related-cli.md +386 -386
  80. package/.claude/skills/command-guide/reference/commands/memory/docs.md +17 -16
  81. package/.claude/skills/command-guide/reference/commands/memory/load.md +5 -5
  82. package/.claude/skills/command-guide/reference/commands/memory/tech-research.md +194 -357
  83. package/.claude/skills/command-guide/reference/commands/memory/update-full.md +332 -332
  84. package/.claude/skills/command-guide/reference/commands/memory/workflow-skill-memory.md +4 -4
  85. package/.claude/skills/command-guide/reference/commands/task/create.md +151 -151
  86. package/.claude/skills/command-guide/reference/commands/version.md +254 -254
  87. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/api-designer.md +585 -585
  88. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/auto-parallel.md +443 -443
  89. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/data-architect.md +220 -220
  90. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-manager.md +200 -200
  91. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-owner.md +200 -200
  92. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/scrum-master.md +200 -200
  93. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
  94. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/system-architect.md +387 -387
  95. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ui-designer.md +221 -221
  96. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ux-expert.md +221 -221
  97. package/.claude/skills/command-guide/reference/commands/workflow/execute.md +25 -20
  98. package/.claude/skills/command-guide/reference/commands/workflow/init.md +164 -164
  99. package/.claude/skills/command-guide/reference/commands/workflow/lite-execute.md +748 -686
  100. package/.claude/skills/command-guide/reference/commands/workflow/lite-fix.md +664 -621
  101. package/.claude/skills/command-guide/reference/commands/workflow/lite-plan.md +645 -592
  102. package/.claude/skills/command-guide/reference/commands/workflow/plan.md +5 -5
  103. package/.claude/skills/command-guide/reference/commands/workflow/review.md +25 -18
  104. package/.claude/skills/command-guide/reference/commands/workflow/session/complete.md +547 -500
  105. package/.claude/skills/command-guide/reference/commands/workflow/session/list.md +45 -27
  106. package/.claude/skills/command-guide/reference/commands/workflow/session/resume.md +35 -19
  107. package/.claude/skills/command-guide/reference/commands/workflow/session/start.md +90 -33
  108. package/.claude/skills/command-guide/reference/commands/workflow/tdd-plan.md +3 -3
  109. package/.claude/skills/command-guide/reference/commands/workflow/tdd-verify.md +23 -9
  110. package/.claude/skills/command-guide/reference/commands/workflow/test-fix-gen.md +699 -699
  111. package/.claude/skills/command-guide/reference/commands/workflow/tools/conflict-resolution.md +103 -17
  112. package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +434 -434
  113. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-agent.md +487 -291
  114. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +17 -10
  115. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-concept-enhanced.md +1 -1
  116. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/import-from-code.md +6 -6
  117. package/.claude/workflows/chinese-response.md +38 -0
  118. package/.claude/workflows/cli-templates/prompts/rules/rule-api.txt +122 -0
  119. package/.claude/workflows/cli-templates/prompts/rules/rule-components.txt +122 -0
  120. package/.claude/workflows/cli-templates/prompts/rules/rule-config.txt +89 -0
  121. package/.claude/workflows/cli-templates/prompts/rules/rule-core.txt +60 -0
  122. package/.claude/workflows/cli-templates/prompts/rules/rule-patterns.txt +70 -0
  123. package/.claude/workflows/cli-templates/prompts/rules/rule-testing.txt +81 -0
  124. package/.claude/workflows/cli-templates/prompts/rules/tech-rules-agent-prompt.txt +89 -0
  125. package/.claude/workflows/cli-templates/prompts/workflow/gemini-solution-design.txt +131 -131
  126. package/.claude/workflows/cli-templates/prompts/workflow/skill-conflict-patterns.txt +5 -9
  127. package/.claude/workflows/cli-templates/prompts/workflow/skill-lessons-learned.txt +5 -9
  128. package/.claude/workflows/cli-templates/protocols/analysis-protocol.md +112 -0
  129. package/.claude/workflows/cli-templates/protocols/write-protocol.md +201 -0
  130. package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +137 -0
  131. package/.claude/workflows/cli-templates/schemas/debug-log-json-schema.json +127 -0
  132. package/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json +25 -0
  133. package/.claude/workflows/cli-templates/schemas/plan-json-schema.json +25 -0
  134. package/.claude/workflows/cli-tools-usage.md +526 -0
  135. package/{CLAUDE.md → .claude/workflows/coding-philosophy.md} +24 -45
  136. package/.claude/workflows/context-tools.md +84 -0
  137. package/.claude/workflows/file-modification.md +64 -0
  138. package/.claude/workflows/tool-strategy.md +216 -79
  139. package/.claude/workflows/windows-platform.md +16 -0
  140. package/.claude/workflows/workflow-architecture.md +942 -942
  141. package/.codex/AGENTS.md +63 -330
  142. package/.codex/prompts/debug.md +318 -0
  143. package/.codex/prompts/execute.md +273 -0
  144. package/.codex/prompts/lite-execute.md +164 -0
  145. package/.codex/prompts/lite-plan.md +469 -0
  146. package/.codex/prompts.zip +0 -0
  147. package/.gemini/GEMINI.md +25 -164
  148. package/.qwen/QWEN.md +0 -139
  149. package/README.md +29 -9
  150. package/ccw/README.md +30 -6
  151. package/ccw/bin/ccw-mcp.js +7 -0
  152. package/ccw/bin/ccw.js +9 -9
  153. package/ccw/package.json +65 -47
  154. package/ccw/src/.workflow/.cli-history/history.db +0 -0
  155. package/ccw/src/.workflow/.cli-history/history.db-shm +0 -0
  156. package/ccw/src/.workflow/.cli-history/history.db-wal +0 -0
  157. package/ccw/src/cli.ts +244 -0
  158. package/ccw/src/commands/cli.ts +740 -0
  159. package/ccw/src/commands/core-memory.ts +770 -0
  160. package/ccw/src/commands/hook.ts +315 -0
  161. package/ccw/src/commands/install.ts +519 -0
  162. package/ccw/src/commands/{list.js → list.ts} +1 -1
  163. package/ccw/src/commands/memory.ts +1090 -0
  164. package/ccw/src/commands/{serve.js → serve.ts} +14 -5
  165. package/ccw/src/commands/session-path-resolver.ts +372 -0
  166. package/ccw/src/commands/session.ts +1141 -0
  167. package/ccw/src/commands/{stop.js → stop.ts} +16 -6
  168. package/ccw/src/commands/tool.ts +201 -0
  169. package/ccw/src/commands/{uninstall.js → uninstall.ts} +89 -40
  170. package/ccw/src/commands/{upgrade.js → upgrade.ts} +68 -23
  171. package/ccw/src/commands/{view.js → view.ts} +22 -8
  172. package/ccw/src/config/storage-paths.ts +670 -0
  173. package/ccw/src/core/cache-manager.ts +294 -0
  174. package/ccw/src/core/claude-freshness.ts +319 -0
  175. package/ccw/src/core/core-memory-store.ts +1528 -0
  176. package/ccw/src/core/{dashboard-generator-patch.js → dashboard-generator-patch.ts} +18 -0
  177. package/ccw/src/core/{dashboard-generator.js → dashboard-generator.ts} +69 -12
  178. package/ccw/src/core/data-aggregator.ts +584 -0
  179. package/ccw/src/core/history-importer.ts +625 -0
  180. package/ccw/src/core/{lite-scanner.js → lite-scanner-complete.ts} +162 -66
  181. package/ccw/src/core/lite-scanner.ts +469 -0
  182. package/ccw/src/core/{manifest.js → manifest.ts} +104 -34
  183. package/ccw/src/core/memory-embedder-bridge.ts +262 -0
  184. package/ccw/src/core/memory-store.ts +978 -0
  185. package/ccw/src/core/routes/ccw-routes.ts +96 -0
  186. package/ccw/src/core/routes/claude-routes.ts +1183 -0
  187. package/ccw/src/core/routes/cli-routes.ts +561 -0
  188. package/ccw/src/core/routes/codexlens-routes.ts +806 -0
  189. package/ccw/src/core/routes/core-memory-routes.ts +605 -0
  190. package/ccw/src/core/routes/files-routes.ts +428 -0
  191. package/ccw/src/core/routes/graph-routes.md +164 -0
  192. package/ccw/src/core/routes/graph-routes.ts +626 -0
  193. package/ccw/src/core/routes/help-routes.ts +308 -0
  194. package/ccw/src/core/routes/hooks-routes.ts +405 -0
  195. package/ccw/src/core/routes/mcp-routes.ts +1271 -0
  196. package/ccw/src/core/routes/mcp-routes.ts.backup +550 -0
  197. package/ccw/src/core/routes/mcp-templates-db.ts +268 -0
  198. package/ccw/src/core/routes/memory-routes.ts +1206 -0
  199. package/ccw/src/core/routes/rules-routes.ts +526 -0
  200. package/ccw/src/core/routes/session-routes.ts +467 -0
  201. package/ccw/src/core/routes/skills-routes.ts +599 -0
  202. package/ccw/src/core/routes/status-routes.ts +57 -0
  203. package/ccw/src/core/routes/system-routes.ts +427 -0
  204. package/ccw/src/core/server.ts +431 -0
  205. package/ccw/src/core/session-clustering-service.ts +1258 -0
  206. package/ccw/src/core/session-scanner.ts +283 -0
  207. package/ccw/src/core/websocket.ts +190 -0
  208. package/ccw/src/{index.js → index.ts} +1 -0
  209. package/ccw/src/mcp-server/index.ts +186 -0
  210. package/ccw/src/templates/assets/css/github-dark.min.css +10 -0
  211. package/ccw/src/templates/assets/css/github.min.css +10 -0
  212. package/ccw/src/templates/assets/js/cytoscape.min.js +32 -0
  213. package/ccw/src/templates/assets/js/d3.min.js +2 -0
  214. package/ccw/src/templates/assets/js/highlight.min.js +1244 -0
  215. package/ccw/src/templates/assets/js/lucide.min.js +12 -0
  216. package/ccw/src/templates/assets/js/marked.min.js +69 -0
  217. package/ccw/src/templates/assets/js/tailwind.js +83 -0
  218. package/ccw/src/templates/dashboard-css/01-base.css +11 -0
  219. package/ccw/src/templates/dashboard-css/02-session.css +22 -0
  220. package/ccw/src/templates/dashboard-css/04-lite-tasks.css +10 -0
  221. package/ccw/src/templates/dashboard-css/06-cards.css +10 -4
  222. package/ccw/src/templates/dashboard-css/07-managers.css +1178 -7
  223. package/ccw/src/templates/dashboard-css/09-explorer.css +23 -12
  224. package/ccw/src/templates/dashboard-css/10-cli-status.css +337 -0
  225. package/ccw/src/templates/dashboard-css/11-cli-history.css +271 -0
  226. package/ccw/src/templates/dashboard-css/12-cli-legacy.css +796 -0
  227. package/ccw/src/templates/dashboard-css/13-cli-ccw.css +199 -0
  228. package/ccw/src/templates/dashboard-css/14-cli-modals.css +258 -0
  229. package/ccw/src/templates/dashboard-css/15-cli-endpoints.css +305 -0
  230. package/ccw/src/templates/dashboard-css/16-cli-session.css +241 -0
  231. package/ccw/src/templates/dashboard-css/17-cli-conversation.css +283 -0
  232. package/ccw/src/templates/dashboard-css/18-cli-settings.css +160 -0
  233. package/ccw/src/templates/dashboard-css/19-cli-native-session.css +496 -0
  234. package/ccw/src/templates/dashboard-css/20-cli-taskqueue.css +188 -0
  235. package/ccw/src/templates/dashboard-css/21-cli-toolmgmt.css +310 -0
  236. package/ccw/src/templates/dashboard-css/22-cli-semantic.css +240 -0
  237. package/ccw/src/templates/dashboard-css/23-memory.css +2390 -0
  238. package/ccw/src/templates/dashboard-css/24-prompt-history.css +1089 -0
  239. package/ccw/src/templates/dashboard-css/25-skills-rules.css +326 -0
  240. package/ccw/src/templates/dashboard-css/26-claude-manager.css +908 -0
  241. package/ccw/src/templates/dashboard-css/27-graph-explorer.css +1678 -0
  242. package/ccw/src/templates/dashboard-css/28-mcp-manager.css +748 -0
  243. package/ccw/src/templates/dashboard-css/29-help.css +264 -0
  244. package/ccw/src/templates/dashboard-css/30-core-memory.css +1700 -0
  245. package/ccw/src/templates/dashboard-js/api.js +162 -142
  246. package/ccw/src/templates/dashboard-js/components/carousel.js +4 -4
  247. package/ccw/src/templates/dashboard-js/components/cli-history.js +876 -0
  248. package/ccw/src/templates/dashboard-js/components/cli-status.js +978 -0
  249. package/ccw/src/templates/dashboard-js/components/global-notifications.js +508 -219
  250. package/ccw/src/templates/dashboard-js/components/hook-manager.js +1277 -282
  251. package/ccw/src/templates/dashboard-js/components/index-manager.js +302 -0
  252. package/ccw/src/templates/dashboard-js/components/mcp-manager.js +718 -27
  253. package/ccw/src/templates/dashboard-js/components/modals.js +66 -0
  254. package/ccw/src/templates/dashboard-js/components/navigation.js +80 -12
  255. package/ccw/src/templates/dashboard-js/components/notifications.js +758 -194
  256. package/ccw/src/templates/dashboard-js/components/storage-manager.js +478 -0
  257. package/ccw/src/templates/dashboard-js/components/tabs-other.js +157 -6
  258. package/ccw/src/templates/dashboard-js/components/task-queue-sidebar.js +716 -0
  259. package/ccw/src/templates/dashboard-js/help-i18n.js +272 -0
  260. package/ccw/src/templates/dashboard-js/i18n.js +2807 -0
  261. package/ccw/src/templates/dashboard-js/main.js +15 -0
  262. package/ccw/src/templates/dashboard-js/state.js +243 -42
  263. package/ccw/src/templates/dashboard-js/utils.js +47 -1
  264. package/ccw/src/templates/dashboard-js/views/claude-manager.js +912 -0
  265. package/ccw/src/templates/dashboard-js/views/cli-manager.js +2272 -0
  266. package/ccw/src/templates/dashboard-js/views/codexlens-manager.js +964 -0
  267. package/ccw/src/templates/dashboard-js/views/core-memory-clusters.js +503 -0
  268. package/ccw/src/templates/dashboard-js/views/core-memory.js +782 -0
  269. package/ccw/src/templates/dashboard-js/views/explorer.js +888 -852
  270. package/ccw/src/templates/dashboard-js/views/graph-explorer.js +1157 -0
  271. package/ccw/src/templates/dashboard-js/views/help.js +856 -0
  272. package/ccw/src/templates/dashboard-js/views/history.js +337 -0
  273. package/ccw/src/templates/dashboard-js/views/home.js +61 -15
  274. package/ccw/src/templates/dashboard-js/views/hook-manager.js +311 -43
  275. package/ccw/src/templates/dashboard-js/views/lite-tasks.js +204 -28
  276. package/ccw/src/templates/dashboard-js/views/mcp-manager.js +2187 -411
  277. package/ccw/src/templates/dashboard-js/views/mcp-manager.js.backup +1729 -0
  278. package/ccw/src/templates/dashboard-js/views/mcp-manager.js.new +928 -0
  279. package/ccw/src/templates/dashboard-js/views/memory.js +1221 -0
  280. package/ccw/src/templates/dashboard-js/views/prompt-history.js +713 -0
  281. package/ccw/src/templates/dashboard-js/views/rules-manager.js +828 -0
  282. package/ccw/src/templates/dashboard-js/views/session-detail.js +54 -53
  283. package/ccw/src/templates/dashboard-js/views/skills-manager.js +819 -0
  284. package/ccw/src/templates/dashboard.html +185 -85
  285. package/ccw/src/templates/hooks-config-example.json +60 -0
  286. package/ccw/src/tools/classify-folders.ts +245 -0
  287. package/ccw/src/tools/cli-config-manager.ts +268 -0
  288. package/ccw/src/tools/cli-executor.ts +2014 -0
  289. package/ccw/src/tools/cli-history-store.ts +1195 -0
  290. package/ccw/src/tools/codex-lens.ts +1141 -0
  291. package/ccw/src/tools/{convert-tokens-to-css.js → convert-tokens-to-css.ts} +73 -23
  292. package/ccw/src/tools/core-memory.ts +444 -0
  293. package/ccw/src/tools/detect-changed-modules.ts +325 -0
  294. package/ccw/src/tools/{discover-design-files.js → discover-design-files.ts} +74 -24
  295. package/ccw/src/tools/edit-file.ts +568 -0
  296. package/ccw/src/tools/{generate-module-docs.js → generate-module-docs.ts} +207 -185
  297. package/ccw/src/tools/{get-modules-by-depth.js → get-modules-by-depth.ts} +120 -79
  298. package/ccw/src/tools/index.ts +370 -0
  299. package/ccw/src/tools/native-session-discovery.ts +795 -0
  300. package/ccw/src/tools/notifier.ts +129 -0
  301. package/ccw/src/tools/read-file.ts +410 -0
  302. package/ccw/src/tools/resume-strategy.ts +345 -0
  303. package/ccw/src/tools/session-content-parser.ts +619 -0
  304. package/ccw/src/tools/session-manager.ts +1026 -0
  305. package/ccw/src/tools/smart-context.ts +228 -0
  306. package/ccw/src/tools/smart-search.ts +2065 -0
  307. package/ccw/src/tools/smart-search.ts.backup +1233 -0
  308. package/ccw/src/tools/storage-manager.ts +455 -0
  309. package/ccw/src/tools/write-file.ts +222 -0
  310. package/ccw/src/types/config.ts +11 -0
  311. package/ccw/src/types/index.ts +3 -0
  312. package/ccw/src/types/session.ts +25 -0
  313. package/ccw/src/types/tool.ts +41 -0
  314. package/ccw/src/utils/{browser-launcher.js → browser-launcher.ts} +10 -8
  315. package/ccw/src/utils/file-utils.ts +48 -0
  316. package/ccw/src/utils/{path-resolver.js → path-resolver.ts} +114 -78
  317. package/ccw/src/utils/path-validator.ts +153 -0
  318. package/ccw/src/utils/{ui.js → ui.ts} +32 -25
  319. package/codex-lens/pyproject.toml +48 -0
  320. package/codex-lens/src/codexlens/.workflow/.cli-history/history.db +0 -0
  321. package/codex-lens/src/codexlens/__init__.py +28 -0
  322. package/codex-lens/src/codexlens/__main__.py +14 -0
  323. package/codex-lens/src/codexlens/__pycache__/__init__.cpython-313.pyc +0 -0
  324. package/codex-lens/src/codexlens/__pycache__/__main__.cpython-313.pyc +0 -0
  325. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  326. package/codex-lens/src/codexlens/__pycache__/entities.cpython-313.pyc +0 -0
  327. package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
  328. package/codex-lens/src/codexlens/cli/__init__.py +27 -0
  329. package/codex-lens/src/codexlens/cli/__pycache__/__init__.cpython-313.pyc +0 -0
  330. package/codex-lens/src/codexlens/cli/__pycache__/commands.cpython-313.pyc +0 -0
  331. package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
  332. package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
  333. package/codex-lens/src/codexlens/cli/__pycache__/output.cpython-313.pyc +0 -0
  334. package/codex-lens/src/codexlens/cli/commands.py +1931 -0
  335. package/codex-lens/src/codexlens/cli/embedding_manager.py +620 -0
  336. package/codex-lens/src/codexlens/cli/model_manager.py +289 -0
  337. package/codex-lens/src/codexlens/cli/output.py +124 -0
  338. package/codex-lens/src/codexlens/config.py +201 -0
  339. package/codex-lens/src/codexlens/entities.py +121 -0
  340. package/codex-lens/src/codexlens/errors.py +55 -0
  341. package/codex-lens/src/codexlens/indexing/README.md +77 -0
  342. package/codex-lens/src/codexlens/indexing/__init__.py +4 -0
  343. package/codex-lens/src/codexlens/indexing/__pycache__/__init__.cpython-313.pyc +0 -0
  344. package/codex-lens/src/codexlens/indexing/__pycache__/symbol_extractor.cpython-313.pyc +0 -0
  345. package/codex-lens/src/codexlens/indexing/symbol_extractor.py +243 -0
  346. package/codex-lens/src/codexlens/parsers/__init__.py +8 -0
  347. package/codex-lens/src/codexlens/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
  348. package/codex-lens/src/codexlens/parsers/__pycache__/encoding.cpython-313.pyc +0 -0
  349. package/codex-lens/src/codexlens/parsers/__pycache__/factory.cpython-313.pyc +0 -0
  350. package/codex-lens/src/codexlens/parsers/__pycache__/tokenizer.cpython-313.pyc +0 -0
  351. package/codex-lens/src/codexlens/parsers/__pycache__/treesitter_parser.cpython-313.pyc +0 -0
  352. package/codex-lens/src/codexlens/parsers/encoding.py +202 -0
  353. package/codex-lens/src/codexlens/parsers/factory.py +256 -0
  354. package/codex-lens/src/codexlens/parsers/tokenizer.py +98 -0
  355. package/codex-lens/src/codexlens/parsers/treesitter_parser.py +335 -0
  356. package/codex-lens/src/codexlens/search/__init__.py +15 -0
  357. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
  358. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  359. package/codex-lens/src/codexlens/search/__pycache__/enrichment.cpython-313.pyc +0 -0
  360. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  361. package/codex-lens/src/codexlens/search/__pycache__/query_parser.cpython-313.pyc +0 -0
  362. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  363. package/codex-lens/src/codexlens/search/chain_search.py +647 -0
  364. package/codex-lens/src/codexlens/search/enrichment.py +150 -0
  365. package/codex-lens/src/codexlens/search/hybrid_search.py +313 -0
  366. package/codex-lens/src/codexlens/search/query_parser.py +242 -0
  367. package/codex-lens/src/codexlens/search/ranking.py +274 -0
  368. package/codex-lens/src/codexlens/semantic/__init__.py +39 -0
  369. package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
  370. package/codex-lens/src/codexlens/semantic/__pycache__/ann_index.cpython-313.pyc +0 -0
  371. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
  372. package/codex-lens/src/codexlens/semantic/__pycache__/code_extractor.cpython-313.pyc +0 -0
  373. package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
  374. package/codex-lens/src/codexlens/semantic/__pycache__/graph_analyzer.cpython-313.pyc +0 -0
  375. package/codex-lens/src/codexlens/semantic/__pycache__/llm_enhancer.cpython-313.pyc +0 -0
  376. package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
  377. package/codex-lens/src/codexlens/semantic/ann_index.py +414 -0
  378. package/codex-lens/src/codexlens/semantic/chunker.py +448 -0
  379. package/codex-lens/src/codexlens/semantic/code_extractor.py +274 -0
  380. package/codex-lens/src/codexlens/semantic/embedder.py +185 -0
  381. package/codex-lens/src/codexlens/semantic/vector_store.py +955 -0
  382. package/codex-lens/src/codexlens/storage/__init__.py +29 -0
  383. package/codex-lens/src/codexlens/storage/__pycache__/__init__.cpython-313.pyc +0 -0
  384. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
  385. package/codex-lens/src/codexlens/storage/__pycache__/file_cache.cpython-313.pyc +0 -0
  386. package/codex-lens/src/codexlens/storage/__pycache__/index_tree.cpython-313.pyc +0 -0
  387. package/codex-lens/src/codexlens/storage/__pycache__/migration_manager.cpython-313.pyc +0 -0
  388. package/codex-lens/src/codexlens/storage/__pycache__/path_mapper.cpython-313.pyc +0 -0
  389. package/codex-lens/src/codexlens/storage/__pycache__/registry.cpython-313.pyc +0 -0
  390. package/codex-lens/src/codexlens/storage/__pycache__/sqlite_store.cpython-313.pyc +0 -0
  391. package/codex-lens/src/codexlens/storage/__pycache__/sqlite_utils.cpython-313.pyc +0 -0
  392. package/codex-lens/src/codexlens/storage/dir_index.py +1850 -0
  393. package/codex-lens/src/codexlens/storage/file_cache.py +32 -0
  394. package/codex-lens/src/codexlens/storage/index_tree.py +776 -0
  395. package/codex-lens/src/codexlens/storage/migration_manager.py +154 -0
  396. package/codex-lens/src/codexlens/storage/migrations/__init__.py +1 -0
  397. package/codex-lens/src/codexlens/storage/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
  398. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_001_normalize_keywords.cpython-313.pyc +0 -0
  399. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_002_add_token_metadata.cpython-313.pyc +0 -0
  400. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_003_code_relationships.cpython-313.pyc +0 -0
  401. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_004_dual_fts.cpython-313.pyc +0 -0
  402. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_005_cleanup_unused_fields.cpython-313.pyc +0 -0
  403. package/codex-lens/src/codexlens/storage/migrations/migration_001_normalize_keywords.py +123 -0
  404. package/codex-lens/src/codexlens/storage/migrations/migration_002_add_token_metadata.py +48 -0
  405. package/codex-lens/src/codexlens/storage/migrations/migration_004_dual_fts.py +232 -0
  406. package/codex-lens/src/codexlens/storage/migrations/migration_005_cleanup_unused_fields.py +196 -0
  407. package/codex-lens/src/codexlens/storage/path_mapper.py +274 -0
  408. package/codex-lens/src/codexlens/storage/registry.py +670 -0
  409. package/codex-lens/src/codexlens/storage/sqlite_store.py +576 -0
  410. package/codex-lens/src/codexlens/storage/sqlite_utils.py +64 -0
  411. package/package.json +4 -1
  412. package/.claude/commands/memory/tech-research.md +0 -477
  413. package/.claude/scripts/classify-folders.sh +0 -39
  414. package/.claude/scripts/convert_tokens_to_css.sh +0 -229
  415. package/.claude/scripts/detect_changed_modules.sh +0 -161
  416. package/.claude/scripts/discover-design-files.sh +0 -87
  417. package/.claude/scripts/extract-animations.js +0 -243
  418. package/.claude/scripts/extract-computed-styles.js +0 -118
  419. package/.claude/scripts/extract-layout-structure.js +0 -411
  420. package/.claude/scripts/generate_module_docs.sh +0 -717
  421. package/.claude/scripts/get_modules_by_depth.sh +0 -170
  422. package/.claude/scripts/ui-generate-preview.sh +0 -395
  423. package/.claude/scripts/ui-instantiate-prototypes.sh +0 -815
  424. package/.claude/scripts/update_module_claude.sh +0 -337
  425. package/.claude/workflows/context-search-strategy.md +0 -77
  426. package/.claude/workflows/intelligent-tools-strategy.md +0 -662
  427. package/ccw/src/cli.js +0 -119
  428. package/ccw/src/commands/install.js +0 -324
  429. package/ccw/src/commands/tool.js +0 -138
  430. package/ccw/src/core/data-aggregator.js +0 -409
  431. package/ccw/src/core/server.js +0 -2063
  432. package/ccw/src/core/session-scanner.js +0 -235
  433. package/ccw/src/tools/classify-folders.js +0 -204
  434. package/ccw/src/tools/detect-changed-modules.js +0 -288
  435. package/ccw/src/tools/edit-file.js +0 -266
  436. package/ccw/src/tools/index.js +0 -176
  437. package/ccw/src/utils/file-utils.js +0 -48
@@ -1,500 +1,547 @@
1
- ---
2
- name: complete
3
- description: Mark active workflow session as complete, archive with lessons learned, update manifest, remove active flag
4
- examples:
5
- - /workflow:session:complete
6
- - /workflow:session:complete --detailed
7
- ---
8
-
9
- # Complete Workflow Session (/workflow:session:complete)
10
-
11
- ## Overview
12
- Mark the currently active workflow session as complete, analyze it for lessons learned, move it to the archive directory, and remove the active flag marker.
13
-
14
- ## Usage
15
- ```bash
16
- /workflow:session:complete # Complete current active session
17
- /workflow:session:complete --detailed # Show detailed completion summary
18
- ```
19
-
20
- ## Implementation Flow
21
-
22
- ### Phase 1: Pre-Archival Preparation (Transactional Setup)
23
-
24
- **Purpose**: Find active session, create archiving marker to prevent concurrent operations. Session remains in active location for agent processing.
25
-
26
- #### Step 1.1: Find Active Session and Get Name
27
- ```bash
28
- # Find active session directory
29
- bash(find .workflow/active/ -name "WFS-*" -type d | head -1)
30
-
31
- # Extract session name from directory path
32
- bash(basename .workflow/active/WFS-session-name)
33
- ```
34
- **Output**: Session name `WFS-session-name`
35
-
36
- #### Step 1.2: Check for Existing Archiving Marker (Resume Detection)
37
- ```bash
38
- # Check if session is already being archived
39
- bash(test -f .workflow/active/WFS-session-name/.archiving && echo "RESUMING" || echo "NEW")
40
- ```
41
-
42
- **If RESUMING**:
43
- - Previous archival attempt was interrupted
44
- - Skip to Phase 2 to resume agent analysis
45
-
46
- **If NEW**:
47
- - Continue to Step 1.3
48
-
49
- #### Step 1.3: Create Archiving Marker
50
- ```bash
51
- # Mark session as "archiving in progress"
52
- bash(touch .workflow/active/WFS-session-name/.archiving)
53
- ```
54
- **Purpose**:
55
- - Prevents concurrent operations on this session
56
- - Enables recovery if archival fails
57
- - Session remains in `.workflow/active/` for agent analysis
58
-
59
- **Result**: Session still at `.workflow/active/WFS-session-name/` with `.archiving` marker
60
-
61
- ### Phase 2: Agent Analysis (In-Place Processing)
62
-
63
- **Purpose**: Agent analyzes session WHILE STILL IN ACTIVE LOCATION. Generates metadata but does NOT move files or update manifest.
64
-
65
- #### Agent Invocation
66
-
67
- Invoke `universal-executor` agent to analyze session and prepare archive metadata.
68
-
69
- **Agent Task**:
70
- ```
71
- Task(
72
- subagent_type="universal-executor",
73
- description="Analyze session for archival",
74
- prompt=`
75
- Analyze workflow session for archival preparation. Session is STILL in active location.
76
-
77
- ## Context
78
- - Session: .workflow/active/WFS-session-name/
79
- - Status: Marked as archiving (.archiving marker present)
80
- - Location: Active sessions directory (NOT archived yet)
81
-
82
- ## Tasks
83
-
84
- 1. **Extract session data** from workflow-session.json
85
- - session_id, description/topic, started_at, completed_at, status
86
- - If status != "completed", update it with timestamp
87
-
88
- 2. **Count files**: tasks (.task/*.json) and summaries (.summaries/*.md)
89
-
90
- 3. **Extract review data** (if .review/ exists):
91
- - Count dimension results: .review/dimensions/*.json
92
- - Count deep-dive results: .review/iterations/*.json
93
- - Extract findings summary from dimension JSONs (total, critical, high, medium, low)
94
- - Check fix results if .review/fixes/ exists (fixed_count, failed_count)
95
- - Build review_metrics: {dimensions_analyzed, total_findings, severity_distribution, fix_success_rate}
96
-
97
- 4. **Generate lessons**: Use gemini with ~/.claude/workflows/cli-templates/prompts/archive/analysis-simple.txt
98
- - Return: {successes, challenges, watch_patterns}
99
- - If review data exists, include review-specific lessons (common issue patterns, effective fixes)
100
-
101
- 5. **Build archive entry**:
102
- - Calculate: duration_hours, success_rate, tags (3-5 keywords)
103
- - Construct complete JSON with session_id, description, archived_at, metrics, tags, lessons
104
- - Include archive_path: ".workflow/archives/WFS-session-name" (future location)
105
- - If review data exists, include review_metrics in metrics object
106
-
107
- 6. **Extract feature metadata** (for Phase 4):
108
- - Parse IMPL_PLAN.md for title (first # heading)
109
- - Extract description (first paragraph, max 200 chars)
110
- - Generate feature tags (3-5 keywords from content)
111
-
112
- 7. **Return result**: Complete metadata package for atomic commit
113
- {
114
- "status": "success",
115
- "session_id": "WFS-session-name",
116
- "archive_entry": {
117
- "session_id": "...",
118
- "description": "...",
119
- "archived_at": "...",
120
- "archive_path": ".workflow/archives/WFS-session-name",
121
- "metrics": {
122
- "duration_hours": 2.5,
123
- "tasks_completed": 5,
124
- "summaries_generated": 3,
125
- "review_metrics": { // Optional, only if .review/ exists
126
- "dimensions_analyzed": 4,
127
- "total_findings": 15,
128
- "severity_distribution": {"critical": 1, "high": 3, "medium": 8, "low": 3},
129
- "fix_success_rate": 0.87 // Optional, only if .review/fixes/ exists
130
- }
131
- },
132
- "tags": [...],
133
- "lessons": {...}
134
- },
135
- "feature_metadata": {
136
- "title": "...",
137
- "description": "...",
138
- "tags": [...]
139
- }
140
- }
141
-
142
- ## Important Constraints
143
- - DO NOT move or delete any files
144
- - DO NOT update manifest.json yet
145
- - Session remains in .workflow/active/ during analysis
146
- - Return complete metadata package for orchestrator to commit atomically
147
-
148
- ## Error Handling
149
- - On failure: return {"status": "error", "task": "...", "message": "..."}
150
- - Do NOT modify any files on error
151
- `
152
- )
153
- ```
154
-
155
- **Expected Output**:
156
- - Agent returns complete metadata package
157
- - Session remains in `.workflow/active/` with `.archiving` marker
158
- - No files moved or manifests updated yet
159
-
160
- ### Phase 3: Atomic Commit (Transactional File Operations)
161
-
162
- **Purpose**: Atomically commit all changes. Only execute if Phase 2 succeeds.
163
-
164
- #### Step 3.1: Create Archive Directory
165
- ```bash
166
- bash(mkdir -p .workflow/archives/)
167
- ```
168
-
169
- #### Step 3.2: Move Session to Archive
170
- ```bash
171
- bash(mv .workflow/active/WFS-session-name .workflow/archives/WFS-session-name)
172
- ```
173
- **Result**: Session now at `.workflow/archives/WFS-session-name/`
174
-
175
- #### Step 3.3: Update Manifest
176
- ```bash
177
- # Read current manifest (or create empty array if not exists)
178
- bash(test -f .workflow/archives/manifest.json && cat .workflow/archives/manifest.json || echo "[]")
179
- ```
180
-
181
- **JSON Update Logic**:
182
- ```javascript
183
- // Read agent result from Phase 2
184
- const agentResult = JSON.parse(agentOutput);
185
- const archiveEntry = agentResult.archive_entry;
186
-
187
- // Read existing manifest
188
- let manifest = [];
189
- try {
190
- const manifestContent = Read('.workflow/archives/manifest.json');
191
- manifest = JSON.parse(manifestContent);
192
- } catch {
193
- manifest = []; // Initialize if not exists
194
- }
195
-
196
- // Append new entry
197
- manifest.push(archiveEntry);
198
-
199
- // Write back
200
- Write('.workflow/archives/manifest.json', JSON.stringify(manifest, null, 2));
201
- ```
202
-
203
- #### Step 3.4: Remove Archiving Marker
204
- ```bash
205
- bash(rm .workflow/archives/WFS-session-name/.archiving)
206
- ```
207
- **Result**: Clean archived session without temporary markers
208
-
209
- **Output Confirmation**:
210
- ```
211
- Session "${sessionId}" archived successfully
212
- Location: .workflow/archives/WFS-session-name/
213
- Lessons: ${archiveEntry.lessons.successes.length} successes, ${archiveEntry.lessons.challenges.length} challenges
214
- Manifest: Updated with ${manifest.length} total sessions
215
- ${reviewMetrics ? `Review: ${reviewMetrics.total_findings} findings across ${reviewMetrics.dimensions_analyzed} dimensions, ${Math.round(reviewMetrics.fix_success_rate * 100)}% fixed` : ''}
216
- ```
217
-
218
- ### Phase 4: Update Project Feature Registry
219
-
220
- **Purpose**: Record completed session as a project feature in `.workflow/project.json`.
221
-
222
- **Execution**: Uses feature metadata from Phase 2 agent result to update project registry.
223
-
224
- #### Step 4.1: Check Project State Exists
225
- ```bash
226
- bash(test -f .workflow/project.json && echo "EXISTS" || echo "SKIP")
227
- ```
228
-
229
- **If SKIP**: Output warning and skip Phase 4
230
- ```
231
- WARNING: No project.json found. Run /workflow:session:start to initialize.
232
- ```
233
-
234
- #### Step 4.2: Extract Feature Information from Agent Result
235
-
236
- **Data Processing** (Uses Phase 2 agent output):
237
- ```javascript
238
- // Extract feature metadata from agent result
239
- const agentResult = JSON.parse(agentOutput);
240
- const featureMeta = agentResult.feature_metadata;
241
-
242
- // Data already prepared by agent:
243
- const title = featureMeta.title;
244
- const description = featureMeta.description;
245
- const tags = featureMeta.tags;
246
-
247
- // Create feature ID (lowercase slug)
248
- const featureId = title.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 50);
249
- ```
250
-
251
- #### Step 4.3: Update project.json
252
-
253
- ```bash
254
- # Read current project state
255
- bash(cat .workflow/project.json)
256
- ```
257
-
258
- **JSON Update Logic**:
259
- ```javascript
260
- // Read existing project.json (created by /workflow:init)
261
- // Note: overview field is managed by /workflow:init, not modified here
262
- const projectMeta = JSON.parse(Read('.workflow/project.json'));
263
- const currentTimestamp = new Date().toISOString();
264
- const currentDate = currentTimestamp.split('T')[0]; // YYYY-MM-DD
265
-
266
- // Extract tags from IMPL_PLAN.md (simple keyword extraction)
267
- const tags = extractTags(planContent); // e.g., ["auth", "security"]
268
-
269
- // Build feature object with complete metadata
270
- const newFeature = {
271
- id: featureId,
272
- title: title,
273
- description: description,
274
- status: "completed",
275
- tags: tags,
276
- timeline: {
277
- created_at: currentTimestamp,
278
- implemented_at: currentDate,
279
- updated_at: currentTimestamp
280
- },
281
- traceability: {
282
- session_id: sessionId,
283
- archive_path: archivePath, // e.g., ".workflow/archives/WFS-auth-system"
284
- commit_hash: getLatestCommitHash() || "" // Optional: git rev-parse HEAD
285
- },
286
- docs: [], // Placeholder for future doc links
287
- relations: [] // Placeholder for feature dependencies
288
- };
289
-
290
- // Add new feature to array
291
- projectMeta.features.push(newFeature);
292
-
293
- // Update statistics
294
- projectMeta.statistics.total_features = projectMeta.features.length;
295
- projectMeta.statistics.total_sessions += 1;
296
- projectMeta.statistics.last_updated = currentTimestamp;
297
-
298
- // Write back
299
- Write('.workflow/project.json', JSON.stringify(projectMeta, null, 2));
300
- ```
301
-
302
- **Helper Functions**:
303
- ```javascript
304
- // Extract tags from IMPL_PLAN.md content
305
- function extractTags(planContent) {
306
- const tags = [];
307
-
308
- // Look for common keywords
309
- const keywords = {
310
- 'auth': /authentication|login|oauth|jwt/i,
311
- 'security': /security|encrypt|hash|token/i,
312
- 'api': /api|endpoint|rest|graphql/i,
313
- 'ui': /component|page|interface|frontend/i,
314
- 'database': /database|schema|migration|sql/i,
315
- 'test': /test|testing|spec|coverage/i
316
- };
317
-
318
- for (const [tag, pattern] of Object.entries(keywords)) {
319
- if (pattern.test(planContent)) {
320
- tags.push(tag);
321
- }
322
- }
323
-
324
- return tags.slice(0, 5); // Max 5 tags
325
- }
326
-
327
- // Get latest git commit hash (optional)
328
- function getLatestCommitHash() {
329
- try {
330
- const result = Bash({
331
- command: "git rev-parse --short HEAD 2>/dev/null",
332
- description: "Get latest commit hash"
333
- });
334
- return result.trim();
335
- } catch {
336
- return "";
337
- }
338
- }
339
- ```
340
-
341
- #### Step 4.4: Output Confirmation
342
-
343
- ```
344
- Feature "${title}" added to project registry
345
- ID: ${featureId}
346
- Session: ${sessionId}
347
- Location: .workflow/project.json
348
- ```
349
-
350
- **Error Handling**:
351
- - If project.json malformed: Output error, skip update
352
- - If feature_metadata missing from agent result: Skip Phase 4
353
- - If extraction fails: Use minimal defaults
354
-
355
- **Phase 4 Total Commands**: 1 bash read + JSON manipulation
356
-
357
- ## Error Recovery
358
-
359
- ### If Agent Fails (Phase 2)
360
-
361
- **Symptoms**:
362
- - Agent returns `{"status": "error", ...}`
363
- - Agent crashes or times out
364
- - Analysis incomplete
365
-
366
- **Recovery Steps**:
367
- ```bash
368
- # Session still in .workflow/active/WFS-session-name
369
- # Remove archiving marker
370
- bash(rm .workflow/active/WFS-session-name/.archiving)
371
- ```
372
-
373
- **User Notification**:
374
- ```
375
- ERROR: Session archival failed during analysis phase
376
- Reason: [error message from agent]
377
- Session remains active in: .workflow/active/WFS-session-name
378
-
379
- Recovery:
380
- 1. Fix any issues identified in error message
381
- 2. Retry: /workflow:session:complete
382
-
383
- Session state: SAFE (no changes committed)
384
- ```
385
-
386
- ### If Move Fails (Phase 3)
387
-
388
- **Symptoms**:
389
- - `mv` command fails
390
- - Permission denied
391
- - Disk full
392
-
393
- **Recovery Steps**:
394
- ```bash
395
- # Archiving marker still present
396
- # Session still in .workflow/active/ (move failed)
397
- # No manifest updated yet
398
- ```
399
-
400
- **User Notification**:
401
- ```
402
- ERROR: Session archival failed during move operation
403
- Reason: [mv error message]
404
- Session remains in: .workflow/active/WFS-session-name
405
-
406
- Recovery:
407
- 1. Fix filesystem issues (permissions, disk space)
408
- 2. Retry: /workflow:session:complete
409
- - System will detect .archiving marker
410
- - Will resume from Phase 2 (agent analysis)
411
-
412
- Session state: SAFE (analysis complete, ready to retry move)
413
- ```
414
-
415
- ### If Manifest Update Fails (Phase 3)
416
-
417
- **Symptoms**:
418
- - JSON parsing error
419
- - Write permission denied
420
- - Session moved but manifest not updated
421
-
422
- **Recovery Steps**:
423
- ```bash
424
- # Session moved to .workflow/archives/WFS-session-name
425
- # Manifest NOT updated
426
- # Archiving marker still present in archived location
427
- ```
428
-
429
- **User Notification**:
430
- ```
431
- ERROR: Session archived but manifest update failed
432
- Reason: [error message]
433
- Session location: .workflow/archives/WFS-session-name
434
-
435
- Recovery:
436
- 1. Fix manifest.json issues (syntax, permissions)
437
- 2. Manual manifest update:
438
- - Add archive entry from agent output
439
- - Remove .archiving marker: rm .workflow/archives/WFS-session-name/.archiving
440
-
441
- Session state: PARTIALLY COMPLETE (session archived, manifest needs update)
442
- ```
443
-
444
- ## Workflow Execution Strategy
445
-
446
- ### Transactional Four-Phase Approach
447
-
448
- **Phase 1: Pre-Archival Preparation** (Marker creation)
449
- - Find active session and extract name
450
- - Check for existing `.archiving` marker (resume detection)
451
- - Create `.archiving` marker if new
452
- - **No data processing** - just state tracking
453
- - **Total**: 2-3 bash commands (find + marker check/create)
454
-
455
- **Phase 2: Agent Analysis** (Read-only data processing)
456
- - Extract all session data from active location
457
- - Count tasks and summaries
458
- - Extract review data if .review/ exists (dimension results, findings, fix results)
459
- - Generate lessons learned analysis (including review-specific lessons if applicable)
460
- - Extract feature metadata from IMPL_PLAN.md
461
- - Build complete archive + feature metadata package (with review_metrics if applicable)
462
- - **No file modifications** - pure analysis
463
- - **Total**: 1 agent invocation
464
-
465
- **Phase 3: Atomic Commit** (Transactional file operations)
466
- - Create archive directory
467
- - Move session to archive location
468
- - Update manifest.json with archive entry
469
- - Remove `.archiving` marker
470
- - **All-or-nothing**: Either all succeed or session remains in safe state
471
- - **Total**: 4 bash commands + JSON manipulation
472
-
473
- **Phase 4: Project Registry Update** (Optional feature tracking)
474
- - Check project.json exists
475
- - Use feature metadata from Phase 2 agent result
476
- - Build feature object with complete traceability
477
- - Update project statistics
478
- - **Independent**: Can fail without affecting archival
479
- - **Total**: 1 bash read + JSON manipulation
480
-
481
- ### Transactional Guarantees
482
-
483
- **State Consistency**:
484
- - Session NEVER in inconsistent state
485
- - `.archiving` marker enables safe resume
486
- - Agent failure leaves session in recoverable state
487
- - Move/manifest operations grouped in Phase 3
488
-
489
- **Failure Isolation**:
490
- - Phase 1 failure: No changes made
491
- - Phase 2 failure: Session still active, can retry
492
- - Phase 3 failure: Clear error state, manual recovery documented
493
- - Phase 4 failure: Does not affect archival success
494
-
495
- **Resume Capability**:
496
- - Detect interrupted archival via `.archiving` marker
497
- - Resume from Phase 2 (skip marker creation)
498
- - Idempotent operations (safe to retry)
499
-
500
-
1
+ ---
2
+ name: complete
3
+ description: Mark active workflow session as complete, archive with lessons learned, update manifest, remove active flag
4
+ examples:
5
+ - /workflow:session:complete
6
+ - /workflow:session:complete --detailed
7
+ ---
8
+
9
+ # Complete Workflow Session (/workflow:session:complete)
10
+
11
+ ## Overview
12
+ Mark the currently active workflow session as complete, analyze it for lessons learned, move it to the archive directory, and remove the active flag marker.
13
+
14
+ ## Usage
15
+ ```bash
16
+ /workflow:session:complete # Complete current active session
17
+ /workflow:session:complete --detailed # Show detailed completion summary
18
+ ```
19
+
20
+ ## Implementation Flow
21
+
22
+ ### Phase 1: Pre-Archival Preparation (Transactional Setup)
23
+
24
+ **Purpose**: Find active session, create archiving marker to prevent concurrent operations. Session remains in active location for agent processing.
25
+
26
+ #### Step 1.1: Find Active Session and Get Name
27
+ ```bash
28
+ # Find active session
29
+ ccw session list --location active
30
+ # Extract first session_id from result.active array
31
+ ```
32
+ **Output**: Session name `WFS-session-name`
33
+
34
+ #### Step 1.2: Check for Existing Archiving Marker (Resume Detection)
35
+ ```bash
36
+ # Check if session is already being archived (marker file exists)
37
+ ccw session WFS-session-name read .process/.archiving 2>/dev/null && echo "RESUMING" || echo "NEW"
38
+ ```
39
+
40
+ **If RESUMING**:
41
+ - Previous archival attempt was interrupted
42
+ - Skip to Phase 2 to resume agent analysis
43
+
44
+ **If NEW**:
45
+ - Continue to Step 1.3
46
+
47
+ #### Step 1.3: Create Archiving Marker
48
+ ```bash
49
+ # Mark session as "archiving in progress"
50
+ ccw session WFS-session-name write .process/.archiving ''
51
+ ```
52
+ **Purpose**:
53
+ - Prevents concurrent operations on this session
54
+ - Enables recovery if archival fails
55
+ - Session remains in `.workflow/active/` for agent analysis
56
+
57
+ **Result**: Session still at `.workflow/active/WFS-session-name/` with `.archiving` marker
58
+
59
+ ### Phase 2: Agent Analysis (In-Place Processing)
60
+
61
+ **Purpose**: Agent analyzes session WHILE STILL IN ACTIVE LOCATION. Generates metadata but does NOT move files or update manifest.
62
+
63
+ #### Agent Invocation
64
+
65
+ Invoke `universal-executor` agent to analyze session and prepare archive metadata.
66
+
67
+ **Agent Task**:
68
+ ```
69
+ Task(
70
+ subagent_type="universal-executor",
71
+ description="Analyze session for archival",
72
+ prompt=`
73
+ Analyze workflow session for archival preparation. Session is STILL in active location.
74
+
75
+ ## Context
76
+ - Session: .workflow/active/WFS-session-name/
77
+ - Status: Marked as archiving (.archiving marker present)
78
+ - Location: Active sessions directory (NOT archived yet)
79
+
80
+ ## Tasks
81
+
82
+ 1. **Extract session data** from workflow-session.json
83
+ - session_id, description/topic, started_at, completed_at, status
84
+ - If status != "completed", update it with timestamp
85
+
86
+ 2. **Count files**: tasks (.task/*.json) and summaries (.summaries/*.md)
87
+
88
+ 3. **Extract review data** (if .review/ exists):
89
+ - Count dimension results: .review/dimensions/*.json
90
+ - Count deep-dive results: .review/iterations/*.json
91
+ - Extract findings summary from dimension JSONs (total, critical, high, medium, low)
92
+ - Check fix results if .review/fixes/ exists (fixed_count, failed_count)
93
+ - Build review_metrics: {dimensions_analyzed, total_findings, severity_distribution, fix_success_rate}
94
+
95
+ 4. **Generate lessons**: Use gemini with ~/.claude/workflows/cli-templates/prompts/archive/analysis-simple.txt
96
+ - Return: {successes, challenges, watch_patterns}
97
+ - If review data exists, include review-specific lessons (common issue patterns, effective fixes)
98
+
99
+ 5. **Build archive entry**:
100
+ - Calculate: duration_hours, success_rate, tags (3-5 keywords)
101
+ - Construct complete JSON with session_id, description, archived_at, metrics, tags, lessons
102
+ - Include archive_path: ".workflow/archives/WFS-session-name" (future location)
103
+ - If review data exists, include review_metrics in metrics object
104
+
105
+ 6. **Extract feature metadata** (for Phase 4):
106
+ - Parse IMPL_PLAN.md for title (first # heading)
107
+ - Extract description (first paragraph, max 200 chars)
108
+ - Generate feature tags (3-5 keywords from content)
109
+
110
+ 7. **Return result**: Complete metadata package for atomic commit
111
+ {
112
+ "status": "success",
113
+ "session_id": "WFS-session-name",
114
+ "archive_entry": {
115
+ "session_id": "...",
116
+ "description": "...",
117
+ "archived_at": "...",
118
+ "archive_path": ".workflow/archives/WFS-session-name",
119
+ "metrics": {
120
+ "duration_hours": 2.5,
121
+ "tasks_completed": 5,
122
+ "summaries_generated": 3,
123
+ "review_metrics": { // Optional, only if .review/ exists
124
+ "dimensions_analyzed": 4,
125
+ "total_findings": 15,
126
+ "severity_distribution": {"critical": 1, "high": 3, "medium": 8, "low": 3},
127
+ "fix_success_rate": 0.87 // Optional, only if .review/fixes/ exists
128
+ }
129
+ },
130
+ "tags": [...],
131
+ "lessons": {...}
132
+ },
133
+ "feature_metadata": {
134
+ "title": "...",
135
+ "description": "...",
136
+ "tags": [...]
137
+ }
138
+ }
139
+
140
+ ## Important Constraints
141
+ - DO NOT move or delete any files
142
+ - DO NOT update manifest.json yet
143
+ - Session remains in .workflow/active/ during analysis
144
+ - Return complete metadata package for orchestrator to commit atomically
145
+
146
+ ## Error Handling
147
+ - On failure: return {"status": "error", "task": "...", "message": "..."}
148
+ - Do NOT modify any files on error
149
+ `
150
+ )
151
+ ```
152
+
153
+ **Expected Output**:
154
+ - Agent returns complete metadata package
155
+ - Session remains in `.workflow/active/` with `.archiving` marker
156
+ - No files moved or manifests updated yet
157
+
158
+ ### Phase 3: Atomic Commit (Transactional File Operations)
159
+
160
+ **Purpose**: Atomically commit all changes. Only execute if Phase 2 succeeds.
161
+
162
+ #### Step 3.1: Update Session Status and Archive
163
+ ```bash
164
+ # Archive session (updates status to "completed" and moves to archives)
165
+ ccw session archive WFS-session-name
166
+ # This operation atomically:
167
+ # 1. Updates workflow-session.json status to "completed"
168
+ # 2. Moves session from .workflow/active/ to .workflow/archives/
169
+ ```
170
+ **Result**: Session now at `.workflow/archives/WFS-session-name/`
171
+
172
+ #### Step 3.2: Update Manifest
173
+ ```bash
174
+ # Check if manifest exists
175
+ test -f .workflow/archives/manifest.json && echo "EXISTS" || echo "NOT_FOUND"
176
+ ```
177
+
178
+ **JSON Update Logic**:
179
+ ```javascript
180
+ // Read agent result from Phase 2
181
+ const agentResult = JSON.parse(agentOutput);
182
+ const archiveEntry = agentResult.archive_entry;
183
+
184
+ // Read existing manifest
185
+ let manifest = [];
186
+ try {
187
+ const manifestContent = Read('.workflow/archives/manifest.json');
188
+ manifest = JSON.parse(manifestContent);
189
+ } catch {
190
+ manifest = []; // Initialize if not exists
191
+ }
192
+
193
+ // Append new entry
194
+ manifest.push(archiveEntry);
195
+
196
+ // Write back
197
+ Write('.workflow/archives/manifest.json', JSON.stringify(manifest, null, 2));
198
+ ```
199
+
200
+ #### Step 3.5: Remove Archiving Marker
201
+ ```bash
202
+ # Remove archiving marker from archived session (use bash rm as ccw has no delete)
203
+ rm .workflow/archives/WFS-session-name/.process/.archiving 2>/dev/null || true
204
+ ```
205
+ **Result**: Clean archived session without temporary markers
206
+
207
+ **Output Confirmation**:
208
+ ```
209
+ Session "${sessionId}" archived successfully
210
+ Location: .workflow/archives/WFS-session-name/
211
+ Lessons: ${archiveEntry.lessons.successes.length} successes, ${archiveEntry.lessons.challenges.length} challenges
212
+ Manifest: Updated with ${manifest.length} total sessions
213
+ ${reviewMetrics ? `Review: ${reviewMetrics.total_findings} findings across ${reviewMetrics.dimensions_analyzed} dimensions, ${Math.round(reviewMetrics.fix_success_rate * 100)}% fixed` : ''}
214
+ ```
215
+
216
+ ### Phase 4: Update Project Feature Registry
217
+
218
+ **Purpose**: Record completed session as a project feature in `.workflow/project.json`.
219
+
220
+ **Execution**: Uses feature metadata from Phase 2 agent result to update project registry.
221
+
222
+ #### Step 4.1: Check Project State Exists
223
+ ```bash
224
+ # Check if project.json exists
225
+ test -f .workflow/project.json && echo "EXISTS" || echo "SKIP"
226
+ ```
227
+
228
+ **If SKIP**: Output warning and skip Phase 4
229
+ ```
230
+ WARNING: No project.json found. Run /workflow:session:start to initialize.
231
+ ```
232
+
233
+ #### Step 4.2: Extract Feature Information from Agent Result
234
+
235
+ **Data Processing** (Uses Phase 2 agent output):
236
+ ```javascript
237
+ // Extract feature metadata from agent result
238
+ const agentResult = JSON.parse(agentOutput);
239
+ const featureMeta = agentResult.feature_metadata;
240
+
241
+ // Data already prepared by agent:
242
+ const title = featureMeta.title;
243
+ const description = featureMeta.description;
244
+ const tags = featureMeta.tags;
245
+
246
+ // Create feature ID (lowercase slug)
247
+ const featureId = title.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 50);
248
+ ```
249
+
250
+ #### Step 4.3: Update project.json
251
+
252
+ **JSON Update Logic**:
253
+ ```javascript
254
+ // Read existing project.json (created by /workflow:init)
255
+ // Note: overview field is managed by /workflow:init, not modified here
256
+ const projectMeta = JSON.parse(Read('.workflow/project.json'));
257
+ const currentTimestamp = new Date().toISOString();
258
+ const currentDate = currentTimestamp.split('T')[0]; // YYYY-MM-DD
259
+
260
+ // Extract tags from IMPL_PLAN.md (simple keyword extraction)
261
+ const tags = extractTags(planContent); // e.g., ["auth", "security"]
262
+
263
+ // Build feature object with complete metadata
264
+ const newFeature = {
265
+ id: featureId,
266
+ title: title,
267
+ description: description,
268
+ status: "completed",
269
+ tags: tags,
270
+ timeline: {
271
+ created_at: currentTimestamp,
272
+ implemented_at: currentDate,
273
+ updated_at: currentTimestamp
274
+ },
275
+ traceability: {
276
+ session_id: sessionId,
277
+ archive_path: archivePath, // e.g., ".workflow/archives/WFS-auth-system"
278
+ commit_hash: getLatestCommitHash() || "" // Optional: git rev-parse HEAD
279
+ },
280
+ docs: [], // Placeholder for future doc links
281
+ relations: [] // Placeholder for feature dependencies
282
+ };
283
+
284
+ // Add new feature to array
285
+ projectMeta.features.push(newFeature);
286
+
287
+ // Update statistics
288
+ projectMeta.statistics.total_features = projectMeta.features.length;
289
+ projectMeta.statistics.total_sessions += 1;
290
+ projectMeta.statistics.last_updated = currentTimestamp;
291
+
292
+ // Write back
293
+ Write('.workflow/project.json', JSON.stringify(projectMeta, null, 2));
294
+ ```
295
+
296
+ **Helper Functions**:
297
+ ```javascript
298
+ // Extract tags from IMPL_PLAN.md content
299
+ function extractTags(planContent) {
300
+ const tags = [];
301
+
302
+ // Look for common keywords
303
+ const keywords = {
304
+ 'auth': /authentication|login|oauth|jwt/i,
305
+ 'security': /security|encrypt|hash|token/i,
306
+ 'api': /api|endpoint|rest|graphql/i,
307
+ 'ui': /component|page|interface|frontend/i,
308
+ 'database': /database|schema|migration|sql/i,
309
+ 'test': /test|testing|spec|coverage/i
310
+ };
311
+
312
+ for (const [tag, pattern] of Object.entries(keywords)) {
313
+ if (pattern.test(planContent)) {
314
+ tags.push(tag);
315
+ }
316
+ }
317
+
318
+ return tags.slice(0, 5); // Max 5 tags
319
+ }
320
+
321
+ // Get latest git commit hash (optional)
322
+ function getLatestCommitHash() {
323
+ try {
324
+ const result = Bash({
325
+ command: "git rev-parse --short HEAD 2>/dev/null",
326
+ description: "Get latest commit hash"
327
+ });
328
+ return result.trim();
329
+ } catch {
330
+ return "";
331
+ }
332
+ }
333
+ ```
334
+
335
+ #### Step 4.4: Output Confirmation
336
+
337
+ ```
338
+ ✓ Feature "${title}" added to project registry
339
+ ID: ${featureId}
340
+ Session: ${sessionId}
341
+ Location: .workflow/project.json
342
+ ```
343
+
344
+ **Error Handling**:
345
+ - If project.json malformed: Output error, skip update
346
+ - If feature_metadata missing from agent result: Skip Phase 4
347
+ - If extraction fails: Use minimal defaults
348
+
349
+ **Phase 4 Total Commands**: 1 bash read + JSON manipulation
350
+
351
+ ## Error Recovery
352
+
353
+ ### If Agent Fails (Phase 2)
354
+
355
+ **Symptoms**:
356
+ - Agent returns `{"status": "error", ...}`
357
+ - Agent crashes or times out
358
+ - Analysis incomplete
359
+
360
+ **Recovery Steps**:
361
+ ```bash
362
+ # Session still in .workflow/active/WFS-session-name
363
+ # Remove archiving marker using bash
364
+ rm .workflow/active/WFS-session-name/.process/.archiving 2>/dev/null || true
365
+ ```
366
+
367
+ **User Notification**:
368
+ ```
369
+ ERROR: Session archival failed during analysis phase
370
+ Reason: [error message from agent]
371
+ Session remains active in: .workflow/active/WFS-session-name
372
+
373
+ Recovery:
374
+ 1. Fix any issues identified in error message
375
+ 2. Retry: /workflow:session:complete
376
+
377
+ Session state: SAFE (no changes committed)
378
+ ```
379
+
380
+ ### If Move Fails (Phase 3)
381
+
382
+ **Symptoms**:
383
+ - `mv` command fails
384
+ - Permission denied
385
+ - Disk full
386
+
387
+ **Recovery Steps**:
388
+ ```bash
389
+ # Archiving marker still present
390
+ # Session still in .workflow/active/ (move failed)
391
+ # No manifest updated yet
392
+ ```
393
+
394
+ **User Notification**:
395
+ ```
396
+ ERROR: Session archival failed during move operation
397
+ Reason: [mv error message]
398
+ Session remains in: .workflow/active/WFS-session-name
399
+
400
+ Recovery:
401
+ 1. Fix filesystem issues (permissions, disk space)
402
+ 2. Retry: /workflow:session:complete
403
+ - System will detect .archiving marker
404
+ - Will resume from Phase 2 (agent analysis)
405
+
406
+ Session state: SAFE (analysis complete, ready to retry move)
407
+ ```
408
+
409
+ ### If Manifest Update Fails (Phase 3)
410
+
411
+ **Symptoms**:
412
+ - JSON parsing error
413
+ - Write permission denied
414
+ - Session moved but manifest not updated
415
+
416
+ **Recovery Steps**:
417
+ ```bash
418
+ # Session moved to .workflow/archives/WFS-session-name
419
+ # Manifest NOT updated
420
+ # Archiving marker still present in archived location
421
+ ```
422
+
423
+ **User Notification**:
424
+ ```
425
+ ERROR: Session archived but manifest update failed
426
+ Reason: [error message]
427
+ Session location: .workflow/archives/WFS-session-name
428
+
429
+ Recovery:
430
+ 1. Fix manifest.json issues (syntax, permissions)
431
+ 2. Manual manifest update:
432
+ - Add archive entry from agent output
433
+ - Remove .archiving marker: rm .workflow/archives/WFS-session-name/.archiving
434
+
435
+ Session state: PARTIALLY COMPLETE (session archived, manifest needs update)
436
+ ```
437
+
438
+ ## Workflow Execution Strategy
439
+
440
+ ### Transactional Four-Phase Approach
441
+
442
+ **Phase 1: Pre-Archival Preparation** (Marker creation)
443
+ - Find active session and extract name
444
+ - Check for existing `.archiving` marker (resume detection)
445
+ - Create `.archiving` marker if new
446
+ - **No data processing** - just state tracking
447
+ - **Total**: 2-3 bash commands (find + marker check/create)
448
+
449
+ **Phase 2: Agent Analysis** (Read-only data processing)
450
+ - Extract all session data from active location
451
+ - Count tasks and summaries
452
+ - Extract review data if .review/ exists (dimension results, findings, fix results)
453
+ - Generate lessons learned analysis (including review-specific lessons if applicable)
454
+ - Extract feature metadata from IMPL_PLAN.md
455
+ - Build complete archive + feature metadata package (with review_metrics if applicable)
456
+ - **No file modifications** - pure analysis
457
+ - **Total**: 1 agent invocation
458
+
459
+ **Phase 3: Atomic Commit** (Transactional file operations)
460
+ - Create archive directory
461
+ - Update session status to "completed"
462
+ - Move session to archive location
463
+ - Update manifest.json with archive entry
464
+ - Remove `.archiving` marker
465
+ - **All-or-nothing**: Either all succeed or session remains in safe state
466
+ - **Total**: 5 bash commands + JSON manipulation
467
+
468
+ **Phase 4: Project Registry Update** (Optional feature tracking)
469
+ - Check project.json exists
470
+ - Use feature metadata from Phase 2 agent result
471
+ - Build feature object with complete traceability
472
+ - Update project statistics
473
+ - **Independent**: Can fail without affecting archival
474
+ - **Total**: 1 bash read + JSON manipulation
475
+
476
+ ### Transactional Guarantees
477
+
478
+ **State Consistency**:
479
+ - Session NEVER in inconsistent state
480
+ - `.archiving` marker enables safe resume
481
+ - Agent failure leaves session in recoverable state
482
+ - Move/manifest operations grouped in Phase 3
483
+
484
+ **Failure Isolation**:
485
+ - Phase 1 failure: No changes made
486
+ - Phase 2 failure: Session still active, can retry
487
+ - Phase 3 failure: Clear error state, manual recovery documented
488
+ - Phase 4 failure: Does not affect archival success
489
+
490
+ **Resume Capability**:
491
+ - Detect interrupted archival via `.archiving` marker
492
+ - Resume from Phase 2 (skip marker creation)
493
+ - Idempotent operations (safe to retry)
494
+
495
+
496
+
497
+ ## session_manager Tool Alternative
498
+
499
+ Use `ccw tool exec session_manager` for session completion operations:
500
+
501
+ ### List Active Sessions
502
+ ```bash
503
+ ccw tool exec session_manager '{"operation":"list","location":"active"}'
504
+ ```
505
+
506
+ ### Update Session Status to Completed
507
+ ```bash
508
+ ccw tool exec session_manager '{
509
+ "operation": "update",
510
+ "session_id": "WFS-xxx",
511
+ "content_type": "session",
512
+ "content": {
513
+ "status": "completed",
514
+ "archived_at": "2025-12-10T08:00:00Z"
515
+ }
516
+ }'
517
+ ```
518
+
519
+ ### Archive Session
520
+ ```bash
521
+ ccw tool exec session_manager '{"operation":"archive","session_id":"WFS-xxx"}'
522
+
523
+ # This operation:
524
+ # 1. Updates status to "completed" if update_status=true (default)
525
+ # 2. Moves session from .workflow/active/ to .workflow/archives/
526
+ ```
527
+
528
+ ### Read Session Data
529
+ ```bash
530
+ # Read workflow-session.json
531
+ ccw tool exec session_manager '{"operation":"read","session_id":"WFS-xxx","content_type":"session"}'
532
+
533
+ # Read IMPL_PLAN.md
534
+ ccw tool exec session_manager '{"operation":"read","session_id":"WFS-xxx","content_type":"plan"}'
535
+ ```
536
+
537
+ ### Write Archiving Marker
538
+ ```bash
539
+ ccw tool exec session_manager '{
540
+ "operation": "write",
541
+ "session_id": "WFS-xxx",
542
+ "content_type": "process",
543
+ "path_params": {"filename": ".archiving"},
544
+ "content": ""
545
+ }'
546
+ ```
547
+