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
@@ -0,0 +1,516 @@
1
+ ---
2
+ name: clean
3
+ description: Intelligent code cleanup with mainline detection, stale artifact discovery, and safe execution
4
+ argument-hint: "[--dry-run] [\"focus area\"]"
5
+ allowed-tools: TodoWrite(*), Task(*), AskUserQuestion(*), Read(*), Glob(*), Bash(*), Write(*)
6
+ ---
7
+
8
+ # Clean Command (/clean)
9
+
10
+ ## Overview
11
+
12
+ Intelligent cleanup command that explores the codebase to identify the development mainline, discovers artifacts that have drifted from it, and safely removes stale sessions, abandoned documents, and dead code.
13
+
14
+ **Core capabilities:**
15
+ - Mainline detection: Identify active development branches and core modules
16
+ - Drift analysis: Find sessions, documents, and code that deviate from mainline
17
+ - Intelligent discovery: cli-explore-agent based artifact scanning
18
+ - Safe execution: Confirmation-based cleanup with dry-run preview
19
+
20
+ ## Usage
21
+
22
+ ```bash
23
+ /clean # Full intelligent cleanup (explore → analyze → confirm → execute)
24
+ /clean --dry-run # Explore and analyze only, no execution
25
+ /clean "auth module" # Focus cleanup on specific area
26
+ ```
27
+
28
+ ## Execution Process
29
+
30
+ ```
31
+ Phase 1: Mainline Detection
32
+ ├─ Analyze git history for development trends
33
+ ├─ Identify core modules (high commit frequency)
34
+ ├─ Map active vs stale branches
35
+ └─ Build mainline profile
36
+
37
+ Phase 2: Drift Discovery (cli-explore-agent)
38
+ ├─ Scan workflow sessions for orphaned artifacts
39
+ ├─ Identify documents drifted from mainline
40
+ ├─ Detect dead code and unused exports
41
+ └─ Generate cleanup manifest
42
+
43
+ Phase 3: Confirmation
44
+ ├─ Display cleanup summary by category
45
+ ├─ Show impact analysis (files, size, risk)
46
+ └─ AskUserQuestion: Select categories to clean
47
+
48
+ Phase 4: Execution (unless --dry-run)
49
+ ├─ Execute cleanup by category
50
+ ├─ Update manifests and indexes
51
+ └─ Report results
52
+ ```
53
+
54
+ ## Implementation
55
+
56
+ ### Phase 1: Mainline Detection
57
+
58
+ **Session Setup**:
59
+ ```javascript
60
+ const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
61
+
62
+ const dateStr = getUtc8ISOString().substring(0, 10)
63
+ const sessionId = `clean-${dateStr}`
64
+ const sessionFolder = `.workflow/.clean/${sessionId}`
65
+
66
+ Bash(`mkdir -p ${sessionFolder}`)
67
+ ```
68
+
69
+ **Step 1.1: Git History Analysis**
70
+ ```bash
71
+ # Get commit frequency by directory (last 30 days)
72
+ bash(git log --since="30 days ago" --name-only --pretty=format: | grep -v "^$" | cut -d/ -f1-2 | sort | uniq -c | sort -rn | head -20)
73
+
74
+ # Get recent active branches
75
+ bash(git for-each-ref --sort=-committerdate refs/heads/ --format='%(refname:short) %(committerdate:relative)' | head -10)
76
+
77
+ # Get files with most recent changes
78
+ bash(git log --since="7 days ago" --name-only --pretty=format: | grep -v "^$" | sort | uniq -c | sort -rn | head -30)
79
+ ```
80
+
81
+ **Step 1.2: Build Mainline Profile**
82
+ ```javascript
83
+ const mainlineProfile = {
84
+ coreModules: [], // High-frequency directories
85
+ activeFiles: [], // Recently modified files
86
+ activeBranches: [], // Branches with recent commits
87
+ staleThreshold: {
88
+ sessions: 7, // Days
89
+ branches: 30,
90
+ documents: 14
91
+ },
92
+ timestamp: getUtc8ISOString()
93
+ }
94
+
95
+ // Parse git log output to identify core modules
96
+ // Modules with >5 commits in last 30 days = core
97
+ // Modules with 0 commits in last 30 days = potentially stale
98
+
99
+ Write(`${sessionFolder}/mainline-profile.json`, JSON.stringify(mainlineProfile, null, 2))
100
+ ```
101
+
102
+ ---
103
+
104
+ ### Phase 2: Drift Discovery
105
+
106
+ **Launch cli-explore-agent for intelligent artifact scanning**:
107
+
108
+ ```javascript
109
+ Task(
110
+ subagent_type="cli-explore-agent",
111
+ run_in_background=false,
112
+ description="Discover stale artifacts",
113
+ prompt=`
114
+ ## Task Objective
115
+ Discover artifacts that have drifted from the development mainline. Identify stale sessions, abandoned documents, and dead code for cleanup.
116
+
117
+ ## Context
118
+ - **Session Folder**: ${sessionFolder}
119
+ - **Mainline Profile**: ${sessionFolder}/mainline-profile.json
120
+ - **Focus Area**: ${focusArea || "全项目"}
121
+
122
+ ## Discovery Categories
123
+
124
+ ### Category 1: Stale Workflow Sessions
125
+ Scan and analyze workflow session directories:
126
+
127
+ **Locations to scan**:
128
+ - .workflow/active/WFS-* (active sessions)
129
+ - .workflow/archives/WFS-* (archived sessions)
130
+ - .workflow/.lite-plan/* (lite-plan sessions)
131
+ - .workflow/.debug/DBG-* (debug sessions)
132
+
133
+ **Staleness criteria**:
134
+ - Active sessions: No modification >7 days + no related git commits
135
+ - Archives: >30 days old + no feature references in project.json
136
+ - Lite-plan: >7 days old + plan.json not executed
137
+ - Debug: >3 days old + issue not in recent commits
138
+
139
+ **Analysis steps**:
140
+ 1. List all session directories with modification times
141
+ 2. Cross-reference with git log (are session topics in recent commits?)
142
+ 3. Check manifest.json for orphan entries
143
+ 4. Identify sessions with .archiving marker (interrupted)
144
+
145
+ ### Category 2: Drifted Documents
146
+ Scan documentation that no longer aligns with code:
147
+
148
+ **Locations to scan**:
149
+ - .claude/rules/tech/* (generated tech rules)
150
+ - .workflow/.scratchpad/* (temporary notes)
151
+ - **/CLAUDE.md (module documentation)
152
+ - **/README.md (outdated descriptions)
153
+
154
+ **Drift criteria**:
155
+ - Tech rules: Referenced files no longer exist
156
+ - Scratchpad: Any file (always temporary)
157
+ - Module docs: Describe functions/classes that were removed
158
+ - READMEs: Reference deleted directories
159
+
160
+ **Analysis steps**:
161
+ 1. Parse document content for file/function references
162
+ 2. Verify referenced entities still exist in codebase
163
+ 3. Flag documents with >30% broken references
164
+
165
+ ### Category 3: Dead Code
166
+ Identify code that is no longer used:
167
+
168
+ **Scan patterns**:
169
+ - Unused exports (exported but never imported)
170
+ - Orphan files (not imported anywhere)
171
+ - Commented-out code blocks (>10 lines)
172
+ - TODO/FIXME comments >90 days old
173
+
174
+ **Analysis steps**:
175
+ 1. Build import graph using rg/grep
176
+ 2. Identify exports with no importers
177
+ 3. Find files not in import graph
178
+ 4. Scan for large comment blocks
179
+
180
+ ## Output Format
181
+
182
+ Write to: ${sessionFolder}/cleanup-manifest.json
183
+
184
+ \`\`\`json
185
+ {
186
+ "generated_at": "ISO timestamp",
187
+ "mainline_summary": {
188
+ "core_modules": ["src/core", "src/api"],
189
+ "active_branches": ["main", "feature/auth"],
190
+ "health_score": 0.85
191
+ },
192
+ "discoveries": {
193
+ "stale_sessions": [
194
+ {
195
+ "path": ".workflow/active/WFS-old-feature",
196
+ "type": "active",
197
+ "age_days": 15,
198
+ "reason": "No related commits in 15 days",
199
+ "size_kb": 1024,
200
+ "risk": "low"
201
+ }
202
+ ],
203
+ "drifted_documents": [
204
+ {
205
+ "path": ".claude/rules/tech/deprecated-lib",
206
+ "type": "tech_rules",
207
+ "broken_references": 5,
208
+ "total_references": 6,
209
+ "drift_percentage": 83,
210
+ "reason": "Referenced library removed",
211
+ "risk": "low"
212
+ }
213
+ ],
214
+ "dead_code": [
215
+ {
216
+ "path": "src/utils/legacy.ts",
217
+ "type": "orphan_file",
218
+ "reason": "Not imported by any file",
219
+ "last_modified": "2025-10-01",
220
+ "risk": "medium"
221
+ }
222
+ ]
223
+ },
224
+ "summary": {
225
+ "total_items": 12,
226
+ "total_size_mb": 45.2,
227
+ "by_category": {
228
+ "stale_sessions": 5,
229
+ "drifted_documents": 4,
230
+ "dead_code": 3
231
+ },
232
+ "by_risk": {
233
+ "low": 8,
234
+ "medium": 3,
235
+ "high": 1
236
+ }
237
+ }
238
+ }
239
+ \`\`\`
240
+
241
+ ## Execution Commands
242
+
243
+ \`\`\`bash
244
+ # Session directories
245
+ find .workflow -type d -name "WFS-*" -o -name "DBG-*" 2>/dev/null
246
+
247
+ # Check modification times (Linux/Mac)
248
+ stat -c "%Y %n" .workflow/active/WFS-* 2>/dev/null
249
+
250
+ # Check modification times (Windows PowerShell via bash)
251
+ powershell -Command "Get-ChildItem '.workflow/active/WFS-*' | ForEach-Object { Write-Output \"$($_.LastWriteTime) $($_.FullName)\" }"
252
+
253
+ # Find orphan exports (TypeScript)
254
+ rg "export (const|function|class|interface|type)" --type ts -l
255
+
256
+ # Find imports
257
+ rg "import.*from" --type ts
258
+
259
+ # Find large comment blocks
260
+ rg "^\\s*/\\*" -A 10 --type ts
261
+
262
+ # Find old TODOs
263
+ rg "TODO|FIXME" --type ts -n
264
+ \`\`\`
265
+
266
+ ## Success Criteria
267
+ - [ ] All session directories scanned with age calculation
268
+ - [ ] Documents cross-referenced with existing code
269
+ - [ ] Dead code detection via import graph analysis
270
+ - [ ] cleanup-manifest.json written with complete data
271
+ - [ ] Each item has risk level and cleanup reason
272
+ `
273
+ )
274
+ ```
275
+
276
+ ---
277
+
278
+ ### Phase 3: Confirmation
279
+
280
+ **Step 3.1: Display Summary**
281
+ ```javascript
282
+ const manifest = JSON.parse(Read(`${sessionFolder}/cleanup-manifest.json`))
283
+
284
+ console.log(`
285
+ ## Cleanup Discovery Report
286
+
287
+ **Mainline Health**: ${Math.round(manifest.mainline_summary.health_score * 100)}%
288
+ **Core Modules**: ${manifest.mainline_summary.core_modules.join(', ')}
289
+
290
+ ### Summary
291
+ | Category | Count | Size | Risk |
292
+ |----------|-------|------|------|
293
+ | Stale Sessions | ${manifest.summary.by_category.stale_sessions} | - | ${getRiskSummary('sessions')} |
294
+ | Drifted Documents | ${manifest.summary.by_category.drifted_documents} | - | ${getRiskSummary('documents')} |
295
+ | Dead Code | ${manifest.summary.by_category.dead_code} | - | ${getRiskSummary('code')} |
296
+
297
+ **Total**: ${manifest.summary.total_items} items, ~${manifest.summary.total_size_mb} MB
298
+
299
+ ### Stale Sessions
300
+ ${manifest.discoveries.stale_sessions.map(s =>
301
+ `- ${s.path} (${s.age_days}d, ${s.risk}): ${s.reason}`
302
+ ).join('\n')}
303
+
304
+ ### Drifted Documents
305
+ ${manifest.discoveries.drifted_documents.map(d =>
306
+ `- ${d.path} (${d.drift_percentage}% broken, ${d.risk}): ${d.reason}`
307
+ ).join('\n')}
308
+
309
+ ### Dead Code
310
+ ${manifest.discoveries.dead_code.map(c =>
311
+ `- ${c.path} (${c.type}, ${c.risk}): ${c.reason}`
312
+ ).join('\n')}
313
+ `)
314
+ ```
315
+
316
+ **Step 3.2: Dry-Run Exit**
317
+ ```javascript
318
+ if (flags.includes('--dry-run')) {
319
+ console.log(`
320
+ ---
321
+ **Dry-run mode**: No changes made.
322
+ Manifest saved to: ${sessionFolder}/cleanup-manifest.json
323
+
324
+ To execute cleanup: /clean
325
+ `)
326
+ return
327
+ }
328
+ ```
329
+
330
+ **Step 3.3: User Confirmation**
331
+ ```javascript
332
+ AskUserQuestion({
333
+ questions: [
334
+ {
335
+ question: "Which categories to clean?",
336
+ header: "Categories",
337
+ multiSelect: true,
338
+ options: [
339
+ {
340
+ label: "Sessions",
341
+ description: `${manifest.summary.by_category.stale_sessions} stale workflow sessions`
342
+ },
343
+ {
344
+ label: "Documents",
345
+ description: `${manifest.summary.by_category.drifted_documents} drifted documents`
346
+ },
347
+ {
348
+ label: "Dead Code",
349
+ description: `${manifest.summary.by_category.dead_code} unused code files`
350
+ }
351
+ ]
352
+ },
353
+ {
354
+ question: "Risk level to include?",
355
+ header: "Risk",
356
+ multiSelect: false,
357
+ options: [
358
+ { label: "Low only", description: "Safest - only obviously stale items" },
359
+ { label: "Low + Medium", description: "Recommended - includes likely unused items" },
360
+ { label: "All", description: "Aggressive - includes high-risk items" }
361
+ ]
362
+ }
363
+ ]
364
+ })
365
+ ```
366
+
367
+ ---
368
+
369
+ ### Phase 4: Execution
370
+
371
+ **Step 4.1: Filter Items by Selection**
372
+ ```javascript
373
+ const selectedCategories = userSelection.categories // ['Sessions', 'Documents', ...]
374
+ const riskLevel = userSelection.risk // 'Low only', 'Low + Medium', 'All'
375
+
376
+ const riskFilter = {
377
+ 'Low only': ['low'],
378
+ 'Low + Medium': ['low', 'medium'],
379
+ 'All': ['low', 'medium', 'high']
380
+ }[riskLevel]
381
+
382
+ const itemsToClean = []
383
+
384
+ if (selectedCategories.includes('Sessions')) {
385
+ itemsToClean.push(...manifest.discoveries.stale_sessions.filter(s => riskFilter.includes(s.risk)))
386
+ }
387
+ if (selectedCategories.includes('Documents')) {
388
+ itemsToClean.push(...manifest.discoveries.drifted_documents.filter(d => riskFilter.includes(d.risk)))
389
+ }
390
+ if (selectedCategories.includes('Dead Code')) {
391
+ itemsToClean.push(...manifest.discoveries.dead_code.filter(c => riskFilter.includes(c.risk)))
392
+ }
393
+
394
+ TodoWrite({
395
+ todos: itemsToClean.map(item => ({
396
+ content: `Clean: ${item.path}`,
397
+ status: "pending",
398
+ activeForm: `Cleaning ${item.path}`
399
+ }))
400
+ })
401
+ ```
402
+
403
+ **Step 4.2: Execute Cleanup**
404
+ ```javascript
405
+ const results = { deleted: [], failed: [], skipped: [] }
406
+
407
+ for (const item of itemsToClean) {
408
+ TodoWrite({ todos: [...] }) // Mark current as in_progress
409
+
410
+ try {
411
+ if (item.type === 'orphan_file' || item.type === 'dead_export') {
412
+ // Dead code: Delete file or remove export
413
+ Bash({ command: `rm -rf "${item.path}"` })
414
+ } else {
415
+ // Sessions and documents: Delete directory/file
416
+ Bash({ command: `rm -rf "${item.path}"` })
417
+ }
418
+
419
+ results.deleted.push(item.path)
420
+ TodoWrite({ todos: [...] }) // Mark as completed
421
+ } catch (error) {
422
+ results.failed.push({ path: item.path, error: error.message })
423
+ }
424
+ }
425
+ ```
426
+
427
+ **Step 4.3: Update Manifests**
428
+ ```javascript
429
+ // Update archives manifest if sessions were deleted
430
+ if (selectedCategories.includes('Sessions')) {
431
+ const archiveManifestPath = '.workflow/archives/manifest.json'
432
+ if (fileExists(archiveManifestPath)) {
433
+ const archiveManifest = JSON.parse(Read(archiveManifestPath))
434
+ const deletedSessionIds = results.deleted
435
+ .filter(p => p.includes('WFS-'))
436
+ .map(p => p.split('/').pop())
437
+
438
+ const updatedManifest = archiveManifest.filter(entry =>
439
+ !deletedSessionIds.includes(entry.session_id)
440
+ )
441
+
442
+ Write(archiveManifestPath, JSON.stringify(updatedManifest, null, 2))
443
+ }
444
+ }
445
+
446
+ // Update project.json if features referenced deleted sessions
447
+ const projectPath = '.workflow/project.json'
448
+ if (fileExists(projectPath)) {
449
+ const project = JSON.parse(Read(projectPath))
450
+ const deletedPaths = new Set(results.deleted)
451
+
452
+ project.features = project.features.filter(f =>
453
+ !deletedPaths.has(f.traceability?.archive_path)
454
+ )
455
+
456
+ project.statistics.total_features = project.features.length
457
+ project.statistics.last_updated = getUtc8ISOString()
458
+
459
+ Write(projectPath, JSON.stringify(project, null, 2))
460
+ }
461
+ ```
462
+
463
+ **Step 4.4: Report Results**
464
+ ```javascript
465
+ console.log(`
466
+ ## Cleanup Complete
467
+
468
+ **Deleted**: ${results.deleted.length} items
469
+ **Failed**: ${results.failed.length} items
470
+ **Skipped**: ${results.skipped.length} items
471
+
472
+ ### Deleted Items
473
+ ${results.deleted.map(p => `- ${p}`).join('\n')}
474
+
475
+ ${results.failed.length > 0 ? `
476
+ ### Failed Items
477
+ ${results.failed.map(f => `- ${f.path}: ${f.error}`).join('\n')}
478
+ ` : ''}
479
+
480
+ Cleanup manifest archived to: ${sessionFolder}/cleanup-manifest.json
481
+ `)
482
+ ```
483
+
484
+ ---
485
+
486
+ ## Session Folder Structure
487
+
488
+ ```
489
+ .workflow/.clean/{YYYY-MM-DD}/
490
+ ├── mainline-profile.json # Git history analysis
491
+ └── cleanup-manifest.json # Discovery results
492
+ ```
493
+
494
+ ## Risk Level Definitions
495
+
496
+ | Risk | Description | Examples |
497
+ |------|-------------|----------|
498
+ | **Low** | Safe to delete, no dependencies | Empty sessions, scratchpad files, 100% broken docs |
499
+ | **Medium** | Likely unused, verify before delete | Orphan files, old archives, partially broken docs |
500
+ | **High** | May have hidden dependencies | Files with some imports, recent modifications |
501
+
502
+ ## Error Handling
503
+
504
+ | Situation | Action |
505
+ |-----------|--------|
506
+ | No git repository | Skip mainline detection, use file timestamps only |
507
+ | Session in use (.archiving) | Skip with warning |
508
+ | Permission denied | Report error, continue with others |
509
+ | Manifest parse error | Regenerate from filesystem scan |
510
+ | Empty discovery | Report "codebase is clean" |
511
+
512
+ ## Related Commands
513
+
514
+ - `/workflow:session:complete` - Properly archive active sessions
515
+ - `/memory:compact` - Save session memory before cleanup
516
+ - `/workflow:status` - View current workflow state