claude-code-workflow 6.3.32 → 6.3.34

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 (476) hide show
  1. package/.claude/CLAUDE.md +6 -1
  2. package/.claude/agents/action-planning-agent.md +885 -885
  3. package/.claude/agents/cli-discuss-agent.md +391 -391
  4. package/.claude/agents/cli-execution-agent.md +7 -6
  5. package/.claude/agents/cli-lite-planning-agent.md +1 -1
  6. package/.claude/agents/cli-planning-agent.md +2 -2
  7. package/.claude/agents/code-developer.md +407 -403
  8. package/.claude/agents/conceptual-planning-agent.md +11 -0
  9. package/.claude/agents/debug-explore-agent.md +3 -3
  10. package/.claude/agents/doc-generator.md +3 -3
  11. package/.claude/agents/issue-plan-agent.md +333 -340
  12. package/.claude/agents/issue-queue-agent.md +1 -1
  13. package/.claude/agents/memory-bridge.md +95 -95
  14. package/.claude/agents/test-context-search-agent.md +402 -402
  15. package/.claude/agents/ui-design-agent.md +595 -595
  16. package/.claude/agents/universal-executor.md +134 -134
  17. package/.claude/commands/cli/codex-review.md +355 -0
  18. package/.claude/commands/issue/discover-by-prompt.md +1 -1
  19. package/.claude/commands/issue/execute.md +581 -581
  20. package/.claude/commands/issue/new.md +413 -413
  21. package/.claude/commands/issue/plan.md +1 -1
  22. package/.claude/commands/issue/queue.md +441 -382
  23. package/.claude/commands/memory/code-map-memory.md +687 -687
  24. package/.claude/commands/memory/compact.md +383 -383
  25. package/.claude/commands/memory/docs-full-cli.md +471 -471
  26. package/.claude/commands/memory/docs-related-cli.md +386 -386
  27. package/.claude/commands/memory/docs.md +615 -615
  28. package/.claude/commands/memory/load-skill-memory.md +182 -182
  29. package/.claude/commands/memory/skill-memory.md +525 -525
  30. package/.claude/commands/memory/style-skill-memory.md +396 -396
  31. package/.claude/commands/memory/swagger-docs.md +773 -773
  32. package/.claude/commands/memory/tech-research-rules.md +2 -2
  33. package/.claude/commands/memory/update-full.md +332 -332
  34. package/.claude/commands/memory/workflow-skill-memory.md +517 -517
  35. package/.claude/commands/task/create.md +151 -151
  36. package/.claude/commands/task/replan.md +436 -436
  37. package/.claude/commands/version.md +254 -254
  38. package/.claude/commands/workflow/brainstorm/api-designer.md +587 -587
  39. package/.claude/commands/workflow/brainstorm/auto-parallel.md +11 -0
  40. package/.claude/commands/workflow/brainstorm/data-architect.md +220 -220
  41. package/.claude/commands/workflow/brainstorm/product-manager.md +200 -200
  42. package/.claude/commands/workflow/brainstorm/product-owner.md +200 -200
  43. package/.claude/commands/workflow/brainstorm/scrum-master.md +200 -200
  44. package/.claude/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
  45. package/.claude/commands/workflow/brainstorm/system-architect.md +389 -389
  46. package/.claude/commands/workflow/brainstorm/ui-designer.md +221 -221
  47. package/.claude/commands/workflow/brainstorm/ux-expert.md +221 -221
  48. package/.claude/commands/workflow/debug-with-file.md +666 -0
  49. package/.claude/commands/workflow/debug.md +327 -327
  50. package/.claude/commands/workflow/execute.md +498 -498
  51. package/.claude/commands/workflow/lite-execute.md +23 -20
  52. package/.claude/commands/workflow/lite-fix.md +631 -631
  53. package/.claude/commands/workflow/lite-lite-lite.md +39 -11
  54. package/.claude/commands/workflow/lite-plan.md +4 -2
  55. package/.claude/commands/workflow/multi-cli-plan.md +97 -39
  56. package/.claude/commands/workflow/plan.md +551 -551
  57. package/.claude/commands/workflow/replan.md +515 -515
  58. package/.claude/commands/workflow/review-fix.md +610 -610
  59. package/.claude/commands/workflow/review-module-cycle.md +771 -771
  60. package/.claude/commands/workflow/review-session-cycle.md +782 -782
  61. package/.claude/commands/workflow/review.md +322 -322
  62. package/.claude/commands/workflow/session/list.md +95 -95
  63. package/.claude/commands/workflow/session/resume.md +60 -60
  64. package/.claude/commands/workflow/session/solidify.md +299 -299
  65. package/.claude/commands/workflow/tdd-plan.md +597 -460
  66. package/.claude/commands/workflow/test-cycle-execute.md +504 -504
  67. package/.claude/commands/workflow/test-fix-gen.md +699 -699
  68. package/.claude/commands/workflow/tools/conflict-resolution.md +2 -2
  69. package/.claude/commands/workflow/tools/task-generate-tdd.md +517 -517
  70. package/.claude/commands/workflow/tools/tdd-coverage-analysis.md +309 -309
  71. package/.claude/commands/workflow/tools/test-concept-enhanced.md +1 -1
  72. package/.claude/commands/workflow/tools/test-context-gather.md +235 -235
  73. package/.claude/commands/workflow/tools/test-task-generate.md +255 -255
  74. package/.claude/commands/workflow/ui-design/animation-extract.md +1150 -1150
  75. package/.claude/commands/workflow/ui-design/design-sync.md +454 -454
  76. package/.claude/commands/workflow/ui-design/explore-auto.md +678 -678
  77. package/.claude/commands/workflow/ui-design/imitate-auto.md +745 -745
  78. package/.claude/commands/workflow/ui-design/layout-extract.md +788 -788
  79. package/.claude/commands/workflow/ui-design/reference-page-generator.md +356 -356
  80. package/.claude/commands/workflow/ui-design/style-extract.md +773 -773
  81. package/.claude/skills/ccw/SKILL.md +522 -352
  82. package/.claude/skills/ccw/command.json +641 -547
  83. package/.claude/skills/ccw-help/SKILL.md +116 -116
  84. package/.claude/skills/ccw-help/command.json +520 -520
  85. package/.claude/skills/copyright-docs/phases/01.5-project-exploration.md +150 -150
  86. package/.claude/skills/copyright-docs/phases/02.5-consolidation.md +192 -192
  87. package/.claude/skills/copyright-docs/templates/agent-base.md +200 -200
  88. package/.claude/skills/project-analyze/phases/03.5-consolidation.md +233 -233
  89. package/.claude/skills/project-analyze/specs/writing-style.md +152 -152
  90. package/.claude/skills/review-code/phases/state-manager.md +752 -752
  91. package/.claude/skills/review-code/specs/rules/index.md +140 -140
  92. package/.claude/skills/skill-generator/specs/cli-integration.md +13 -19
  93. package/.claude/skills/skill-generator/specs/scripting-integration.md +265 -265
  94. package/.claude/skills/skill-generator/templates/code-analysis-action.md +503 -503
  95. package/.claude/skills/skill-generator/templates/llm-action.md +355 -355
  96. package/.claude/skills/skill-generator/templates/script-bash.md +277 -277
  97. package/.claude/skills/skill-generator/templates/script-python.md +198 -198
  98. package/.claude/skills/skill-generator/templates/skill-md.md +235 -235
  99. package/.claude/skills/skill-tuning/SKILL.md +303 -303
  100. package/.claude/skills/skill-tuning/phases/actions/action-abort.md +164 -164
  101. package/.claude/skills/skill-tuning/phases/actions/action-apply-fix.md +206 -206
  102. package/.claude/skills/skill-tuning/phases/actions/action-complete.md +195 -195
  103. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-agent.md +317 -317
  104. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-context.md +243 -243
  105. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-dataflow.md +318 -318
  106. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-memory.md +269 -269
  107. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-token-consumption.md +200 -200
  108. package/.claude/skills/skill-tuning/phases/actions/action-gemini-analysis.md +322 -322
  109. package/.claude/skills/skill-tuning/phases/actions/action-generate-report.md +228 -228
  110. package/.claude/skills/skill-tuning/phases/actions/action-init.md +149 -149
  111. package/.claude/skills/skill-tuning/phases/actions/action-propose-fixes.md +317 -317
  112. package/.claude/skills/skill-tuning/phases/actions/action-verify.md +222 -222
  113. package/.claude/skills/skill-tuning/phases/orchestrator.md +377 -377
  114. package/.claude/skills/skill-tuning/phases/state-schema.md +378 -378
  115. package/.claude/skills/skill-tuning/specs/problem-taxonomy.md +318 -318
  116. package/.claude/skills/skill-tuning/specs/quality-gates.md +263 -263
  117. package/.claude/skills/skill-tuning/specs/tuning-strategies.md +1537 -1537
  118. package/.claude/skills/skill-tuning/templates/diagnosis-report.md +153 -153
  119. package/.claude/skills/skill-tuning/templates/fix-proposal.md +204 -204
  120. package/.claude/skills/software-manual/SKILL.md +184 -184
  121. package/.claude/skills/software-manual/phases/01-requirements-discovery.md +162 -162
  122. package/.claude/skills/software-manual/phases/02-project-exploration.md +101 -101
  123. package/.claude/skills/software-manual/phases/03-parallel-analysis.md +183 -183
  124. package/.claude/skills/software-manual/phases/03.5-consolidation.md +82 -82
  125. package/.claude/skills/software-manual/phases/04-screenshot-capture.md +89 -89
  126. package/.claude/skills/software-manual/phases/05-html-assembly.md +132 -132
  127. package/.claude/skills/software-manual/phases/06-iterative-refinement.md +259 -259
  128. package/.claude/skills/software-manual/scripts/screenshot-helper.md +447 -447
  129. package/.claude/skills/software-manual/scripts/swagger-runner.md +419 -419
  130. package/.claude/skills/software-manual/scripts/typedoc-runner.md +357 -357
  131. package/.claude/skills/software-manual/specs/html-template.md +325 -325
  132. package/.claude/skills/software-manual/specs/quality-standards.md +253 -253
  133. package/.claude/skills/software-manual/specs/writing-style.md +298 -298
  134. package/.claude/skills/text-formatter/SKILL.md +196 -196
  135. package/.claude/skills/text-formatter/phases/01-input-collection.md +111 -111
  136. package/.claude/skills/text-formatter/phases/02-content-analysis.md +248 -248
  137. package/.claude/skills/text-formatter/phases/03-format-transform.md +245 -245
  138. package/.claude/skills/text-formatter/phases/04-output-preview.md +183 -183
  139. package/.claude/skills/text-formatter/specs/callout-types.md +293 -293
  140. package/.claude/skills/text-formatter/specs/element-mapping.md +226 -226
  141. package/.claude/skills/text-formatter/specs/format-rules.md +273 -273
  142. package/.claude/skills/text-formatter/templates/bbcode-template.md +350 -350
  143. package/.claude/workflows/chinese-response.md +25 -25
  144. package/.claude/workflows/cli-templates/memory/style-skill-memory/skill-md-template.md +299 -299
  145. package/.claude/workflows/cli-templates/planning-roles/product-owner.md +261 -261
  146. package/.claude/workflows/cli-templates/prompts/{analysis/03-analyze-performance.txt → analysis-analyze-performance.txt} +29 -29
  147. package/.claude/workflows/cli-templates/prompts/{analysis/03-assess-security-risks.txt → analysis-assess-security-risks.txt} +29 -29
  148. package/.claude/workflows/cli-templates/prompts/{analysis/02-review-architecture.txt → analysis-review-architecture.txt} +29 -29
  149. package/.claude/workflows/cli-templates/prompts/{analysis/02-review-code-quality.txt → analysis-review-code-quality.txt} +28 -28
  150. package/.claude/workflows/cli-templates/prompts/{analysis/03-review-quality-standards.txt → analysis-review-quality-standards.txt} +29 -29
  151. package/.claude/workflows/cli-templates/prompts/{analysis/01-trace-code-execution.txt → analysis-trace-code-execution.txt} +115 -115
  152. package/.claude/workflows/cli-templates/prompts/{documentation/api.txt → documentation-api.txt} +14 -14
  153. package/.claude/workflows/cli-templates/prompts/{documentation/folder-navigation.txt → documentation-folder-navigation.txt} +26 -26
  154. package/.claude/workflows/cli-templates/prompts/{documentation/project-architecture.txt → documentation-project-architecture.txt} +40 -40
  155. package/.claude/workflows/cli-templates/prompts/{documentation/project-examples.txt → documentation-project-examples.txt} +34 -34
  156. package/.claude/workflows/cli-templates/prompts/{documentation/project-readme.txt → documentation-project-readme.txt} +34 -34
  157. package/.claude/workflows/cli-templates/prompts/{documentation/swagger-api.txt → documentation-swagger-api.txt} +266 -266
  158. package/.claude/workflows/cli-templates/prompts/{planning/02-design-component-spec.txt → planning-design-component-spec.txt} +28 -28
  159. package/.claude/workflows/cli-templates/prompts/{verification/codex-technical.txt → verification-codex-technical.txt} +28 -28
  160. package/.claude/workflows/cli-templates/prompts/{verification/cross-validation.txt → verification-cross-validation.txt} +28 -28
  161. package/.claude/workflows/cli-templates/prompts/{verification/gemini-strategic.txt → verification-gemini-strategic.txt} +27 -27
  162. package/.claude/workflows/cli-templates/prompts/{workflow/analysis-results-structure.txt → workflow-analysis-results-structure.txt} +224 -224
  163. package/.claude/workflows/cli-templates/prompts/{workflow/impl-plan-template.txt → workflow-impl-plan-template.txt} +286 -286
  164. package/.claude/workflows/cli-templates/prompts/{workflow/skill-conflict-patterns.txt → workflow-skill-conflict-patterns.txt} +2 -2
  165. package/.claude/workflows/cli-templates/prompts/{workflow/skill-lessons-learned.txt → workflow-skill-lessons-learned.txt} +2 -2
  166. package/.claude/workflows/cli-templates/prompts/{workflow/task-json-agent-mode.txt → workflow-task-json-agent-mode.txt} +123 -123
  167. package/.claude/workflows/cli-templates/schemas/project-guidelines-schema.json +141 -141
  168. package/.claude/workflows/cli-tools-usage.md +113 -117
  169. package/.claude/workflows/coding-philosophy.md +69 -69
  170. package/.claude/workflows/context-tools.md +76 -76
  171. package/.claude/workflows/file-modification.md +64 -64
  172. package/.claude/workflows/review-directory-specification.md +336 -336
  173. package/.claude/workflows/windows-platform.md +19 -19
  174. package/.claude/workflows/workflow-architecture.md +942 -942
  175. package/.codex/prompts/issue-execute.md +176 -70
  176. package/README.md +250 -214
  177. package/ccw/dist/cli.d.ts.map +1 -1
  178. package/ccw/dist/cli.js +15 -0
  179. package/ccw/dist/cli.js.map +1 -1
  180. package/ccw/dist/commands/cli.d.ts +5 -0
  181. package/ccw/dist/commands/cli.d.ts.map +1 -1
  182. package/ccw/dist/commands/cli.js +116 -19
  183. package/ccw/dist/commands/cli.js.map +1 -1
  184. package/ccw/dist/commands/install.d.ts +17 -0
  185. package/ccw/dist/commands/install.d.ts.map +1 -1
  186. package/ccw/dist/commands/install.js +211 -2
  187. package/ccw/dist/commands/install.js.map +1 -1
  188. package/ccw/dist/commands/issue.d.ts.map +1 -1
  189. package/ccw/dist/commands/issue.js +208 -28
  190. package/ccw/dist/commands/issue.js.map +1 -1
  191. package/ccw/dist/commands/uninstall.d.ts.map +1 -1
  192. package/ccw/dist/commands/uninstall.js +22 -1
  193. package/ccw/dist/commands/uninstall.js.map +1 -1
  194. package/ccw/dist/commands/view.d.ts.map +1 -1
  195. package/ccw/dist/commands/view.js +3 -0
  196. package/ccw/dist/commands/view.js.map +1 -1
  197. package/ccw/dist/commands/workflow.d.ts +11 -0
  198. package/ccw/dist/commands/workflow.d.ts.map +1 -0
  199. package/ccw/dist/commands/workflow.js +294 -0
  200. package/ccw/dist/commands/workflow.js.map +1 -0
  201. package/ccw/dist/core/routes/claude-routes.d.ts.map +1 -1
  202. package/ccw/dist/core/routes/claude-routes.js +57 -3
  203. package/ccw/dist/core/routes/claude-routes.js.map +1 -1
  204. package/ccw/dist/core/routes/cli-routes.d.ts +13 -0
  205. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  206. package/ccw/dist/core/routes/cli-routes.js +46 -0
  207. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  208. package/ccw/dist/core/routes/hooks-routes.d.ts.map +1 -1
  209. package/ccw/dist/core/routes/hooks-routes.js +33 -0
  210. package/ccw/dist/core/routes/hooks-routes.js.map +1 -1
  211. package/ccw/dist/core/routes/issue-routes.d.ts.map +1 -1
  212. package/ccw/dist/core/routes/issue-routes.js +211 -29
  213. package/ccw/dist/core/routes/issue-routes.js.map +1 -1
  214. package/ccw/dist/core/routes/mcp-routes.d.ts.map +1 -1
  215. package/ccw/dist/core/routes/mcp-routes.js +4 -1
  216. package/ccw/dist/core/routes/mcp-routes.js.map +1 -1
  217. package/ccw/dist/core/routes/rules-routes.d.ts.map +1 -1
  218. package/ccw/dist/core/routes/rules-routes.js +22 -6
  219. package/ccw/dist/core/routes/rules-routes.js.map +1 -1
  220. package/ccw/dist/core/routes/session-routes.d.ts.map +1 -1
  221. package/ccw/dist/core/routes/session-routes.js +23 -1
  222. package/ccw/dist/core/routes/session-routes.js.map +1 -1
  223. package/ccw/dist/mcp-server/index.js +8 -2
  224. package/ccw/dist/mcp-server/index.js.map +1 -1
  225. package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -1
  226. package/ccw/dist/tools/claude-cli-tools.js +52 -28
  227. package/ccw/dist/tools/claude-cli-tools.js.map +1 -1
  228. package/ccw/dist/tools/cli-executor-core.d.ts.map +1 -1
  229. package/ccw/dist/tools/cli-executor-core.js +33 -8
  230. package/ccw/dist/tools/cli-executor-core.js.map +1 -1
  231. package/ccw/dist/tools/cli-executor-state.d.ts +2 -0
  232. package/ccw/dist/tools/cli-executor-state.d.ts.map +1 -1
  233. package/ccw/dist/tools/cli-executor-state.js.map +1 -1
  234. package/ccw/dist/tools/cli-executor-utils.d.ts +7 -0
  235. package/ccw/dist/tools/cli-executor-utils.d.ts.map +1 -1
  236. package/ccw/dist/tools/cli-executor-utils.js +18 -4
  237. package/ccw/dist/tools/cli-executor-utils.js.map +1 -1
  238. package/ccw/dist/tools/cli-history-store.d.ts +21 -0
  239. package/ccw/dist/tools/cli-history-store.d.ts.map +1 -1
  240. package/ccw/dist/tools/cli-history-store.js +106 -30
  241. package/ccw/dist/tools/cli-history-store.js.map +1 -1
  242. package/ccw/dist/tools/cli-output-converter.d.ts +2 -1
  243. package/ccw/dist/tools/cli-output-converter.d.ts.map +1 -1
  244. package/ccw/dist/tools/cli-output-converter.js +65 -10
  245. package/ccw/dist/tools/cli-output-converter.js.map +1 -1
  246. package/ccw/dist/tools/codex-lens-lsp.d.ts +61 -0
  247. package/ccw/dist/tools/codex-lens-lsp.d.ts.map +1 -0
  248. package/ccw/dist/tools/codex-lens-lsp.js +320 -0
  249. package/ccw/dist/tools/codex-lens-lsp.js.map +1 -0
  250. package/ccw/dist/tools/codex-lens.d.ts.map +1 -1
  251. package/ccw/dist/tools/codex-lens.js +74 -54
  252. package/ccw/dist/tools/codex-lens.js.map +1 -1
  253. package/ccw/dist/tools/index.d.ts.map +1 -1
  254. package/ccw/dist/tools/index.js +4 -0
  255. package/ccw/dist/tools/index.js.map +1 -1
  256. package/ccw/dist/tools/template-discovery.d.ts +85 -0
  257. package/ccw/dist/tools/template-discovery.d.ts.map +1 -0
  258. package/ccw/dist/tools/template-discovery.js +239 -0
  259. package/ccw/dist/tools/template-discovery.js.map +1 -0
  260. package/ccw/dist/tools/vscode-lsp.d.ts +57 -0
  261. package/ccw/dist/tools/vscode-lsp.d.ts.map +1 -0
  262. package/ccw/dist/tools/vscode-lsp.js +250 -0
  263. package/ccw/dist/tools/vscode-lsp.js.map +1 -0
  264. package/ccw/dist/utils/path-resolver.d.ts +16 -2
  265. package/ccw/dist/utils/path-resolver.d.ts.map +1 -1
  266. package/ccw/dist/utils/path-resolver.js +36 -6
  267. package/ccw/dist/utils/path-resolver.js.map +1 -1
  268. package/ccw/dist/utils/path-validator.d.ts +5 -0
  269. package/ccw/dist/utils/path-validator.d.ts.map +1 -1
  270. package/ccw/dist/utils/path-validator.js +16 -5
  271. package/ccw/dist/utils/path-validator.js.map +1 -1
  272. package/ccw/dist/utils/project-root.d.ts +25 -0
  273. package/ccw/dist/utils/project-root.d.ts.map +1 -0
  274. package/ccw/dist/utils/project-root.js +63 -0
  275. package/ccw/dist/utils/project-root.js.map +1 -0
  276. package/ccw/dist/utils/shell-escape.d.ts +47 -3
  277. package/ccw/dist/utils/shell-escape.d.ts.map +1 -1
  278. package/ccw/dist/utils/shell-escape.js +98 -15
  279. package/ccw/dist/utils/shell-escape.js.map +1 -1
  280. package/ccw/dist/utils/update-checker.d.ts +11 -0
  281. package/ccw/dist/utils/update-checker.d.ts.map +1 -0
  282. package/ccw/dist/utils/update-checker.js +167 -0
  283. package/ccw/dist/utils/update-checker.js.map +1 -0
  284. package/ccw/src/cli.ts +16 -0
  285. package/ccw/src/commands/cli.ts +126 -19
  286. package/ccw/src/commands/install.ts +239 -2
  287. package/ccw/src/commands/issue.ts +245 -31
  288. package/ccw/src/commands/uninstall.ts +23 -1
  289. package/ccw/src/commands/view.ts +4 -0
  290. package/ccw/src/commands/workflow.ts +348 -0
  291. package/ccw/src/core/routes/claude-routes.ts +64 -3
  292. package/ccw/src/core/routes/cli-routes.ts +58 -0
  293. package/ccw/src/core/routes/hooks-routes.ts +32 -0
  294. package/ccw/src/core/routes/issue-routes.ts +242 -28
  295. package/ccw/src/core/routes/mcp-routes.ts +6 -2
  296. package/ccw/src/core/routes/rules-routes.ts +24 -6
  297. package/ccw/src/core/routes/session-routes.ts +24 -1
  298. package/ccw/src/mcp-server/index.ts +7 -2
  299. package/ccw/src/templates/dashboard-css/26-claude-manager.css +179 -0
  300. package/ccw/src/templates/dashboard-css/32-issue-manager.css +3427 -3302
  301. package/ccw/src/templates/dashboard-css/33-cli-stream-viewer.css +3 -2
  302. package/ccw/src/templates/dashboard-js/components/cli-history.js +4 -1
  303. package/ccw/src/templates/dashboard-js/components/cli-stream-viewer.js +57 -21
  304. package/ccw/src/templates/dashboard-js/components/hook-manager.js +1492 -1492
  305. package/ccw/src/templates/dashboard-js/components/mcp-manager.js +107 -20
  306. package/ccw/src/templates/dashboard-js/components/version-check.js +135 -1
  307. package/ccw/src/templates/dashboard-js/i18n.js +42 -0
  308. package/ccw/src/templates/dashboard-js/views/claude-manager.js +168 -0
  309. package/ccw/src/templates/dashboard-js/views/cli-manager.js +1 -0
  310. package/ccw/src/templates/dashboard-js/views/issue-manager.js +201 -1
  311. package/ccw/src/templates/dashboard-js/views/lite-tasks.js +3502 -3478
  312. package/ccw/src/templates/dashboard-js/views/mcp-manager.js +16 -0
  313. package/ccw/src/templates/dashboard.html +112 -0
  314. package/ccw/src/tools/claude-cli-tools.ts +54 -28
  315. package/ccw/src/tools/cli-executor-core.ts +36 -8
  316. package/ccw/src/tools/cli-executor-state.ts +2 -0
  317. package/ccw/src/tools/cli-executor-utils.ts +26 -4
  318. package/ccw/src/tools/cli-history-store.ts +122 -31
  319. package/ccw/src/tools/cli-output-converter.ts +76 -12
  320. package/ccw/src/tools/codex-lens-lsp.ts +405 -0
  321. package/ccw/src/tools/codex-lens.ts +82 -59
  322. package/ccw/src/tools/index.ts +4 -0
  323. package/ccw/src/tools/template-discovery.ts +303 -0
  324. package/ccw/src/tools/vscode-lsp.ts +317 -0
  325. package/ccw/src/utils/path-resolver.ts +37 -6
  326. package/ccw/src/utils/path-validator.ts +17 -5
  327. package/ccw/src/utils/project-root.ts +73 -0
  328. package/ccw/src/utils/shell-escape.ts +103 -16
  329. package/ccw/src/utils/update-checker.ts +178 -0
  330. package/codex-lens/pyproject.toml +14 -0
  331. package/codex-lens/src/codexlens/__pycache__/config.cpython-312.pyc +0 -0
  332. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  333. package/codex-lens/src/codexlens/__pycache__/errors.cpython-312.pyc +0 -0
  334. package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
  335. package/codex-lens/src/codexlens/api/__init__.py +88 -0
  336. package/codex-lens/src/codexlens/api/__pycache__/__init__.cpython-312.pyc +0 -0
  337. package/codex-lens/src/codexlens/api/__pycache__/__init__.cpython-313.pyc +0 -0
  338. package/codex-lens/src/codexlens/api/__pycache__/definition.cpython-312.pyc +0 -0
  339. package/codex-lens/src/codexlens/api/__pycache__/definition.cpython-313.pyc +0 -0
  340. package/codex-lens/src/codexlens/api/__pycache__/file_context.cpython-312.pyc +0 -0
  341. package/codex-lens/src/codexlens/api/__pycache__/file_context.cpython-313.pyc +0 -0
  342. package/codex-lens/src/codexlens/api/__pycache__/hover.cpython-312.pyc +0 -0
  343. package/codex-lens/src/codexlens/api/__pycache__/hover.cpython-313.pyc +0 -0
  344. package/codex-lens/src/codexlens/api/__pycache__/models.cpython-312.pyc +0 -0
  345. package/codex-lens/src/codexlens/api/__pycache__/models.cpython-313.pyc +0 -0
  346. package/codex-lens/src/codexlens/api/__pycache__/references.cpython-312.pyc +0 -0
  347. package/codex-lens/src/codexlens/api/__pycache__/references.cpython-313.pyc +0 -0
  348. package/codex-lens/src/codexlens/api/__pycache__/semantic.cpython-312.pyc +0 -0
  349. package/codex-lens/src/codexlens/api/__pycache__/semantic.cpython-313.pyc +0 -0
  350. package/codex-lens/src/codexlens/api/__pycache__/symbols.cpython-312.pyc +0 -0
  351. package/codex-lens/src/codexlens/api/__pycache__/symbols.cpython-313.pyc +0 -0
  352. package/codex-lens/src/codexlens/api/__pycache__/utils.cpython-312.pyc +0 -0
  353. package/codex-lens/src/codexlens/api/__pycache__/utils.cpython-313.pyc +0 -0
  354. package/codex-lens/src/codexlens/api/definition.py +126 -0
  355. package/codex-lens/src/codexlens/api/file_context.py +271 -0
  356. package/codex-lens/src/codexlens/api/hover.py +148 -0
  357. package/codex-lens/src/codexlens/api/models.py +281 -0
  358. package/codex-lens/src/codexlens/api/references.py +345 -0
  359. package/codex-lens/src/codexlens/api/semantic.py +471 -0
  360. package/codex-lens/src/codexlens/api/symbols.py +146 -0
  361. package/codex-lens/src/codexlens/api/utils.py +153 -0
  362. package/codex-lens/src/codexlens/config.py +7 -0
  363. package/codex-lens/src/codexlens/errors.py +4 -0
  364. package/codex-lens/src/codexlens/hybrid_search/__init__.py +28 -0
  365. package/codex-lens/src/codexlens/hybrid_search/__pycache__/__init__.cpython-312.pyc +0 -0
  366. package/codex-lens/src/codexlens/hybrid_search/__pycache__/__init__.cpython-313.pyc +0 -0
  367. package/codex-lens/src/codexlens/hybrid_search/__pycache__/data_structures.cpython-312.pyc +0 -0
  368. package/codex-lens/src/codexlens/hybrid_search/__pycache__/data_structures.cpython-313.pyc +0 -0
  369. package/codex-lens/src/codexlens/hybrid_search/__pycache__/engine.cpython-313.pyc +0 -0
  370. package/codex-lens/src/codexlens/hybrid_search/data_structures.py +602 -0
  371. package/codex-lens/src/codexlens/lsp/__init__.py +34 -0
  372. package/codex-lens/src/codexlens/lsp/__pycache__/__init__.cpython-312.pyc +0 -0
  373. package/codex-lens/src/codexlens/lsp/__pycache__/__init__.cpython-313.pyc +0 -0
  374. package/codex-lens/src/codexlens/lsp/__pycache__/handlers.cpython-313.pyc +0 -0
  375. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_bridge.cpython-312.pyc +0 -0
  376. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_bridge.cpython-313.pyc +0 -0
  377. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_graph_builder.cpython-312.pyc +0 -0
  378. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_graph_builder.cpython-313.pyc +0 -0
  379. package/codex-lens/src/codexlens/lsp/__pycache__/providers.cpython-313.pyc +0 -0
  380. package/codex-lens/src/codexlens/lsp/__pycache__/server.cpython-313.pyc +0 -0
  381. package/codex-lens/src/codexlens/lsp/__pycache__/standalone_manager.cpython-313.pyc +0 -0
  382. package/codex-lens/src/codexlens/lsp/handlers.py +551 -0
  383. package/codex-lens/src/codexlens/lsp/lsp_bridge.py +834 -0
  384. package/codex-lens/src/codexlens/lsp/lsp_graph_builder.py +375 -0
  385. package/codex-lens/src/codexlens/lsp/providers.py +177 -0
  386. package/codex-lens/src/codexlens/lsp/server.py +263 -0
  387. package/codex-lens/src/codexlens/lsp/standalone_manager.py +1159 -0
  388. package/codex-lens/src/codexlens/mcp/__init__.py +20 -0
  389. package/codex-lens/src/codexlens/mcp/__pycache__/__init__.cpython-313.pyc +0 -0
  390. package/codex-lens/src/codexlens/mcp/__pycache__/hooks.cpython-313.pyc +0 -0
  391. package/codex-lens/src/codexlens/mcp/__pycache__/provider.cpython-313.pyc +0 -0
  392. package/codex-lens/src/codexlens/mcp/__pycache__/schema.cpython-313.pyc +0 -0
  393. package/codex-lens/src/codexlens/mcp/hooks.py +170 -0
  394. package/codex-lens/src/codexlens/mcp/provider.py +202 -0
  395. package/codex-lens/src/codexlens/mcp/schema.py +113 -0
  396. package/codex-lens/src/codexlens/search/__init__.py +53 -15
  397. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-312.pyc +0 -0
  398. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
  399. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-312.pyc +0 -0
  400. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  401. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-312.pyc +0 -0
  402. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  403. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-312.pyc +0 -0
  404. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  405. package/codex-lens/src/codexlens/search/association_tree/QUICK_START.md +257 -0
  406. package/codex-lens/src/codexlens/search/association_tree/README.md +188 -0
  407. package/codex-lens/src/codexlens/search/association_tree/__init__.py +21 -0
  408. package/codex-lens/src/codexlens/search/association_tree/__pycache__/__init__.cpython-313.pyc +0 -0
  409. package/codex-lens/src/codexlens/search/association_tree/__pycache__/builder.cpython-313.pyc +0 -0
  410. package/codex-lens/src/codexlens/search/association_tree/__pycache__/data_structures.cpython-313.pyc +0 -0
  411. package/codex-lens/src/codexlens/search/association_tree/__pycache__/deduplicator.cpython-313.pyc +0 -0
  412. package/codex-lens/src/codexlens/search/association_tree/builder.py +450 -0
  413. package/codex-lens/src/codexlens/search/association_tree/data_structures.py +191 -0
  414. package/codex-lens/src/codexlens/search/association_tree/deduplicator.py +301 -0
  415. package/codex-lens/src/codexlens/search/chain_search.py +864 -3
  416. package/codex-lens/src/codexlens/search/clustering/__init__.py +124 -0
  417. package/codex-lens/src/codexlens/search/clustering/__pycache__/__init__.cpython-312.pyc +0 -0
  418. package/codex-lens/src/codexlens/search/clustering/__pycache__/__init__.cpython-313.pyc +0 -0
  419. package/codex-lens/src/codexlens/search/clustering/__pycache__/base.cpython-312.pyc +0 -0
  420. package/codex-lens/src/codexlens/search/clustering/__pycache__/base.cpython-313.pyc +0 -0
  421. package/codex-lens/src/codexlens/search/clustering/__pycache__/dbscan_strategy.cpython-313.pyc +0 -0
  422. package/codex-lens/src/codexlens/search/clustering/__pycache__/factory.cpython-312.pyc +0 -0
  423. package/codex-lens/src/codexlens/search/clustering/__pycache__/factory.cpython-313.pyc +0 -0
  424. package/codex-lens/src/codexlens/search/clustering/__pycache__/frequency_strategy.cpython-312.pyc +0 -0
  425. package/codex-lens/src/codexlens/search/clustering/__pycache__/frequency_strategy.cpython-313.pyc +0 -0
  426. package/codex-lens/src/codexlens/search/clustering/__pycache__/hdbscan_strategy.cpython-313.pyc +0 -0
  427. package/codex-lens/src/codexlens/search/clustering/__pycache__/noop_strategy.cpython-312.pyc +0 -0
  428. package/codex-lens/src/codexlens/search/clustering/__pycache__/noop_strategy.cpython-313.pyc +0 -0
  429. package/codex-lens/src/codexlens/search/clustering/base.py +153 -0
  430. package/codex-lens/src/codexlens/search/clustering/dbscan_strategy.py +197 -0
  431. package/codex-lens/src/codexlens/search/clustering/factory.py +202 -0
  432. package/codex-lens/src/codexlens/search/clustering/frequency_strategy.py +263 -0
  433. package/codex-lens/src/codexlens/search/clustering/hdbscan_strategy.py +153 -0
  434. package/codex-lens/src/codexlens/search/clustering/noop_strategy.py +83 -0
  435. package/codex-lens/src/codexlens/search/hybrid_search.py +194 -2
  436. package/codex-lens/src/codexlens/search/ranking.py +6 -4
  437. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-312.pyc +0 -0
  438. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-312.pyc +0 -0
  439. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
  440. package/codex-lens/src/codexlens/storage/__pycache__/global_index.cpython-312.pyc +0 -0
  441. package/codex-lens/src/codexlens/storage/__pycache__/global_index.cpython-313.pyc +0 -0
  442. package/codex-lens/src/codexlens/storage/dir_index.py +172 -0
  443. package/codex-lens/src/codexlens/storage/global_index.py +33 -0
  444. package/package.json +92 -92
  445. /package/.claude/workflows/cli-templates/prompts/{analysis/02-analyze-code-patterns.txt → analysis-analyze-code-patterns.txt} +0 -0
  446. /package/.claude/workflows/cli-templates/prompts/{analysis/02-analyze-technical-document.txt → analysis-analyze-technical-document.txt} +0 -0
  447. /package/.claude/workflows/cli-templates/prompts/{analysis/01-diagnose-bug-root-cause.txt → analysis-diagnose-bug-root-cause.txt} +0 -0
  448. /package/.claude/workflows/cli-templates/prompts/{development/03-debug-runtime-issues.txt → development-debug-runtime-issues.txt} +0 -0
  449. /package/.claude/workflows/cli-templates/prompts/{development/02-generate-tests.txt → development-generate-tests.txt} +0 -0
  450. /package/.claude/workflows/cli-templates/prompts/{development/02-implement-component-ui.txt → development-implement-component-ui.txt} +0 -0
  451. /package/.claude/workflows/cli-templates/prompts/{development/02-implement-feature.txt → development-implement-feature.txt} +0 -0
  452. /package/.claude/workflows/cli-templates/prompts/{development/02-refactor-codebase.txt → development-refactor-codebase.txt} +0 -0
  453. /package/.claude/workflows/cli-templates/prompts/{documentation/module-readme.txt → documentation-module-readme.txt} +0 -0
  454. /package/.claude/workflows/cli-templates/prompts/{memory/02-document-module-structure.txt → memory-document-module-structure.txt} +0 -0
  455. /package/.claude/workflows/cli-templates/prompts/{planning/02-breakdown-task-steps.txt → planning-breakdown-task-steps.txt} +0 -0
  456. /package/.claude/workflows/cli-templates/prompts/{planning/03-evaluate-concept-feasibility.txt → planning-evaluate-concept-feasibility.txt} +0 -0
  457. /package/.claude/workflows/cli-templates/prompts/{planning/01-plan-architecture-design.txt → planning-plan-architecture-design.txt} +0 -0
  458. /package/.claude/workflows/cli-templates/prompts/{planning/03-plan-migration-strategy.txt → planning-plan-migration-strategy.txt} +0 -0
  459. /package/.claude/workflows/cli-templates/prompts/{rules/rule-api.txt → rules-rule-api.txt} +0 -0
  460. /package/.claude/workflows/cli-templates/prompts/{rules/rule-components.txt → rules-rule-components.txt} +0 -0
  461. /package/.claude/workflows/cli-templates/prompts/{rules/rule-config.txt → rules-rule-config.txt} +0 -0
  462. /package/.claude/workflows/cli-templates/prompts/{rules/rule-core.txt → rules-rule-core.txt} +0 -0
  463. /package/.claude/workflows/cli-templates/prompts/{rules/rule-patterns.txt → rules-rule-patterns.txt} +0 -0
  464. /package/.claude/workflows/cli-templates/prompts/{rules/rule-testing.txt → rules-rule-testing.txt} +0 -0
  465. /package/.claude/workflows/cli-templates/prompts/{rules/tech-rules-agent-prompt.txt → rules-tech-rules-agent-prompt.txt} +0 -0
  466. /package/.claude/workflows/cli-templates/prompts/{tech/tech-module-format.txt → tech-tech-module-format.txt} +0 -0
  467. /package/.claude/workflows/cli-templates/prompts/{tech/tech-skill-index.txt → tech-tech-skill-index.txt} +0 -0
  468. /package/.claude/workflows/cli-templates/prompts/{test/test-concept-analysis.txt → test-test-concept-analysis.txt} +0 -0
  469. /package/.claude/workflows/cli-templates/prompts/{universal/00-universal-creative-style.txt → universal-universal-creative-style.txt} +0 -0
  470. /package/.claude/workflows/cli-templates/prompts/{universal/00-universal-rigorous-style.txt → universal-universal-rigorous-style.txt} +0 -0
  471. /package/.claude/workflows/cli-templates/prompts/{workflow/codex-feasibility-validation.txt → workflow-codex-feasibility-validation.txt} +0 -0
  472. /package/.claude/workflows/cli-templates/prompts/{workflow/gemini-solution-design.txt → workflow-gemini-solution-design.txt} +0 -0
  473. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-aggregation.txt → workflow-skill-aggregation.txt} +0 -0
  474. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-index.txt → workflow-skill-index.txt} +0 -0
  475. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-sessions-timeline.txt → workflow-skill-sessions-timeline.txt} +0 -0
  476. /package/.claude/workflows/cli-templates/prompts/{workflow/task-json-cli-mode.txt → workflow-task-json-cli-mode.txt} +0 -0
@@ -1,631 +1,631 @@
1
- ---
2
- name: lite-fix
3
- description: Lightweight bug diagnosis and fix workflow with intelligent severity assessment and optional hotfix mode for production incidents
4
- argument-hint: "[--hotfix] \"bug description or issue reference\""
5
- allowed-tools: TodoWrite(*), Task(*), SlashCommand(*), AskUserQuestion(*)
6
- ---
7
-
8
- # Workflow Lite-Fix Command (/workflow:lite-fix)
9
-
10
- ## Overview
11
-
12
- Intelligent lightweight bug fixing command with dynamic workflow adaptation based on severity assessment. Focuses on diagnosis phases (root cause analysis, impact assessment, fix planning, confirmation) and delegates execution to `/workflow:lite-execute`.
13
-
14
- **Core capabilities:**
15
- - Intelligent bug analysis with automatic severity detection
16
- - Dynamic code diagnosis (cli-explore-agent) for root cause identification
17
- - Interactive clarification after diagnosis to gather missing information
18
- - Adaptive fix planning strategy (direct Claude vs cli-lite-planning-agent) based on complexity
19
- - Two-step confirmation: fix-plan display -> multi-dimensional input collection
20
- - Execution execute with complete context handoff to lite-execute
21
-
22
- ## Usage
23
-
24
- ```bash
25
- /workflow:lite-fix [FLAGS] <BUG_DESCRIPTION>
26
-
27
- # Flags
28
- --hotfix, -h Production hotfix mode (minimal diagnosis, fast fix)
29
-
30
- # Arguments
31
- <bug-description> Bug description, error message, or path to .md file (required)
32
- ```
33
-
34
- ## Execution Process
35
-
36
- ```
37
- Phase 1: Bug Analysis & Diagnosis
38
- |- Parse input (description, error message, or .md file)
39
- |- Intelligent severity pre-assessment (Low/Medium/High/Critical)
40
- |- Diagnosis decision (auto-detect or --hotfix flag)
41
- |- Context protection: If file reading >=50k chars -> force cli-explore-agent
42
- +- Decision:
43
- |- needsDiagnosis=true -> Launch parallel cli-explore-agents (1-4 based on severity)
44
- +- needsDiagnosis=false (hotfix) -> Skip directly to Phase 3 (Fix Planning)
45
-
46
- Phase 2: Clarification (optional, multi-round)
47
- |- Aggregate clarification_needs from all diagnosis angles
48
- |- Deduplicate similar questions
49
- +- Decision:
50
- |- Has clarifications -> AskUserQuestion (max 4 questions per round, multiple rounds allowed)
51
- +- No clarifications -> Skip to Phase 3
52
-
53
- Phase 3: Fix Planning (NO CODE EXECUTION - planning only)
54
- +- Decision (based on Phase 1 severity):
55
- |- Low/Medium -> Load schema: cat ~/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json -> Direct Claude planning (following schema) -> fix-plan.json -> MUST proceed to Phase 4
56
- +- High/Critical -> cli-lite-planning-agent -> fix-plan.json -> MUST proceed to Phase 4
57
-
58
- Phase 4: Confirmation & Selection
59
- |- Display fix-plan summary (tasks, severity, estimated time)
60
- +- AskUserQuestion:
61
- |- Confirm: Allow / Modify / Cancel
62
- |- Execution: Agent / Codex / Auto
63
- +- Review: Gemini / Agent / Skip
64
-
65
- Phase 5: Execute
66
- |- Build executionContext (fix-plan + diagnoses + clarifications + selections)
67
- +- SlashCommand("/workflow:lite-execute --in-memory --mode bugfix")
68
- ```
69
-
70
- ## Implementation
71
-
72
- ### Phase 1: Intelligent Multi-Angle Diagnosis
73
-
74
- **Session Setup** (MANDATORY - follow exactly):
75
- ```javascript
76
- // Helper: Get UTC+8 (China Standard Time) ISO string
77
- const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
78
-
79
- const bugSlug = bug_description.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
80
- const dateStr = getUtc8ISOString().substring(0, 10) // Format: 2025-11-29
81
-
82
- const sessionId = `${bugSlug}-${dateStr}` // e.g., "user-avatar-upload-fails-2025-11-29"
83
- const sessionFolder = `.workflow/.lite-fix/${sessionId}`
84
-
85
- bash(`mkdir -p ${sessionFolder} && test -d ${sessionFolder} && echo "SUCCESS: ${sessionFolder}" || echo "FAILED: ${sessionFolder}"`)
86
- ```
87
-
88
- **Diagnosis Decision Logic**:
89
- ```javascript
90
- const hotfixMode = $ARGUMENTS.includes('--hotfix') || $ARGUMENTS.includes('-h')
91
-
92
- needsDiagnosis = (
93
- !hotfixMode &&
94
- (
95
- bug.lacks_specific_error_message ||
96
- bug.requires_codebase_context ||
97
- bug.needs_execution_tracing ||
98
- bug.root_cause_unclear
99
- )
100
- )
101
-
102
- if (!needsDiagnosis) {
103
- // Skip to Phase 2 (Clarification) or Phase 3 (Fix Planning)
104
- proceed_to_next_phase()
105
- }
106
- ```
107
-
108
- **Context Protection**: File reading >=50k chars -> force `needsDiagnosis=true` (delegate to cli-explore-agent)
109
-
110
- **Severity Pre-Assessment** (Intelligent Analysis):
111
- ```javascript
112
- // Analyzes bug severity based on:
113
- // - Symptoms: Error messages, crash reports, user complaints
114
- // - Scope: How many users/features are affected?
115
- // - Urgency: Production down vs minor inconvenience
116
- // - Impact: Data loss, security, business impact
117
-
118
- const severity = analyzeBugSeverity(bug_description)
119
- // Returns: 'Low' | 'Medium' | 'High' | 'Critical'
120
- // Low: Minor UI issue, localized, no data impact
121
- // Medium: Multiple users affected, degraded functionality
122
- // High: Significant functionality broken, many users affected
123
- // Critical: Production down, data loss risk, security issue
124
-
125
- // Angle assignment based on bug type (orchestrator decides, not agent)
126
- const DIAGNOSIS_ANGLE_PRESETS = {
127
- runtime_error: ['error-handling', 'dataflow', 'state-management', 'edge-cases'],
128
- performance: ['performance', 'bottlenecks', 'caching', 'data-access'],
129
- security: ['security', 'auth-patterns', 'dataflow', 'validation'],
130
- data_corruption: ['data-integrity', 'state-management', 'transactions', 'validation'],
131
- ui_bug: ['state-management', 'event-handling', 'rendering', 'data-binding'],
132
- integration: ['api-contracts', 'error-handling', 'timeouts', 'fallbacks']
133
- }
134
-
135
- function selectDiagnosisAngles(bugDescription, count) {
136
- const text = bugDescription.toLowerCase()
137
- let preset = 'runtime_error' // default
138
-
139
- if (/slow|timeout|performance|lag|hang/.test(text)) preset = 'performance'
140
- else if (/security|auth|permission|access|token/.test(text)) preset = 'security'
141
- else if (/corrupt|data|lost|missing|inconsistent/.test(text)) preset = 'data_corruption'
142
- else if (/ui|display|render|style|click|button/.test(text)) preset = 'ui_bug'
143
- else if (/api|integration|connect|request|response/.test(text)) preset = 'integration'
144
-
145
- return DIAGNOSIS_ANGLE_PRESETS[preset].slice(0, count)
146
- }
147
-
148
- const selectedAngles = selectDiagnosisAngles(bug_description, severity === 'Critical' ? 4 : (severity === 'High' ? 3 : (severity === 'Medium' ? 2 : 1)))
149
-
150
- console.log(`
151
- ## Diagnosis Plan
152
-
153
- Bug Severity: ${severity}
154
- Selected Angles: ${selectedAngles.join(', ')}
155
-
156
- Launching ${selectedAngles.length} parallel diagnoses...
157
- `)
158
- ```
159
-
160
- **Launch Parallel Diagnoses** - Orchestrator assigns angle to each agent:
161
-
162
- ```javascript
163
- // Launch agents with pre-assigned diagnosis angles
164
- const diagnosisTasks = selectedAngles.map((angle, index) =>
165
- Task(
166
- subagent_type="cli-explore-agent",
167
- run_in_background=false,
168
- description=`Diagnose: ${angle}`,
169
- prompt=`
170
- ## Task Objective
171
- Execute **${angle}** diagnosis for bug root cause analysis. Analyze codebase from this specific angle to discover root cause, affected paths, and fix hints.
172
-
173
- ## Assigned Context
174
- - **Diagnosis Angle**: ${angle}
175
- - **Bug Description**: ${bug_description}
176
- - **Diagnosis Index**: ${index + 1} of ${selectedAngles.length}
177
- - **Output File**: ${sessionFolder}/diagnosis-${angle}.json
178
-
179
- ## MANDATORY FIRST STEPS (Execute by Agent)
180
- **You (cli-explore-agent) MUST execute these steps in order:**
181
- 1. Run: ccw tool exec get_modules_by_depth '{}' (project structure)
182
- 2. Run: rg -l "{error_keyword_from_bug}" --type ts (locate relevant files)
183
- 3. Execute: cat ~/.claude/workflows/cli-templates/schemas/diagnosis-json-schema.json (get output schema reference)
184
- 4. Read: .workflow/project-tech.json (technology stack and architecture context)
185
- 5. Read: .workflow/project-guidelines.json (user-defined constraints and conventions)
186
-
187
- ## Diagnosis Strategy (${angle} focus)
188
-
189
- **Step 1: Error Tracing** (Bash)
190
- - rg for error messages, stack traces, log patterns
191
- - git log --since='2 weeks ago' for recent changes
192
- - Trace execution path in affected modules
193
-
194
- **Step 2: Root Cause Analysis** (Gemini CLI)
195
- - What code paths lead to this ${angle} issue?
196
- - What edge cases are not handled from ${angle} perspective?
197
- - What recent changes might have introduced this bug?
198
-
199
- **Step 3: Write Output**
200
- - Consolidate ${angle} findings into JSON
201
- - Identify ${angle}-specific clarification needs
202
- - Provide fix hints based on ${angle} analysis
203
-
204
- ## Expected Output
205
-
206
- **File**: ${sessionFolder}/diagnosis-${angle}.json
207
-
208
- **Schema Reference**: Schema obtained in MANDATORY FIRST STEPS step 3, follow schema exactly
209
-
210
- **Required Fields** (all ${angle} focused):
211
- - symptom: Bug symptoms and error messages
212
- - root_cause: Root cause hypothesis from ${angle} perspective
213
- **IMPORTANT**: Use structured format:
214
- \`{file: "src/module/file.ts", line_range: "45-60", issue: "Description", confidence: 0.85}\`
215
- - affected_files: Files involved from ${angle} perspective
216
- **IMPORTANT**: Use object format with relevance scores:
217
- \`[{path: "src/file.ts", relevance: 0.85, rationale: "Contains ${angle} logic"}]\`
218
- - reproduction_steps: Steps to reproduce the bug
219
- - fix_hints: Suggested fix approaches from ${angle} viewpoint
220
- - dependencies: Dependencies relevant to ${angle} diagnosis
221
- - constraints: ${angle}-specific limitations affecting fix
222
- - clarification_needs: ${angle}-related ambiguities (options array + recommended index)
223
- - _metadata.diagnosis_angle: "${angle}"
224
- - _metadata.diagnosis_index: ${index + 1}
225
-
226
- ## Success Criteria
227
- - [ ] Schema obtained via cat diagnosis-json-schema.json
228
- - [ ] get_modules_by_depth.sh executed
229
- - [ ] Root cause identified with confidence score
230
- - [ ] At least 3 affected files identified with ${angle} rationale
231
- - [ ] Fix hints are actionable (specific code changes, not generic advice)
232
- - [ ] Reproduction steps are verifiable
233
- - [ ] JSON output follows schema exactly
234
- - [ ] clarification_needs includes options + recommended
235
-
236
- ## Output
237
- Write: ${sessionFolder}/diagnosis-${angle}.json
238
- Return: 2-3 sentence summary of ${angle} diagnosis findings
239
- `
240
- )
241
- )
242
-
243
- // Execute all diagnosis tasks in parallel
244
- ```
245
-
246
- **Auto-discover Generated Diagnosis Files**:
247
- ```javascript
248
- // After diagnoses complete, auto-discover all diagnosis-*.json files
249
- const diagnosisFiles = bash(`find ${sessionFolder} -name "diagnosis-*.json" -type f`)
250
- .split('\n')
251
- .filter(f => f.trim())
252
-
253
- // Read metadata to build manifest
254
- const diagnosisManifest = {
255
- session_id: sessionId,
256
- bug_description: bug_description,
257
- timestamp: getUtc8ISOString(),
258
- severity: severity,
259
- diagnosis_count: diagnosisFiles.length,
260
- diagnoses: diagnosisFiles.map(file => {
261
- const data = JSON.parse(Read(file))
262
- const filename = path.basename(file)
263
- return {
264
- angle: data._metadata.diagnosis_angle,
265
- file: filename,
266
- path: file,
267
- index: data._metadata.diagnosis_index
268
- }
269
- })
270
- }
271
-
272
- Write(`${sessionFolder}/diagnoses-manifest.json`, JSON.stringify(diagnosisManifest, null, 2))
273
-
274
- console.log(`
275
- ## Diagnosis Complete
276
-
277
- Generated diagnosis files in ${sessionFolder}:
278
- ${diagnosisManifest.diagnoses.map(d => `- diagnosis-${d.angle}.json (angle: ${d.angle})`).join('\n')}
279
-
280
- Manifest: diagnoses-manifest.json
281
- Angles diagnosed: ${diagnosisManifest.diagnoses.map(d => d.angle).join(', ')}
282
- `)
283
- ```
284
-
285
- **Output**:
286
- - `${sessionFolder}/diagnosis-{angle1}.json`
287
- - `${sessionFolder}/diagnosis-{angle2}.json`
288
- - ... (1-4 files based on severity)
289
- - `${sessionFolder}/diagnoses-manifest.json`
290
-
291
- ---
292
-
293
- ### Phase 2: Clarification (Optional, Multi-Round)
294
-
295
- **Skip if**: No diagnosis or `clarification_needs` is empty across all diagnoses
296
-
297
- **⚠️ CRITICAL**: AskUserQuestion tool limits max 4 questions per call. **MUST execute multiple rounds** to exhaust all clarification needs - do NOT stop at round 1.
298
-
299
- **Aggregate clarification needs from all diagnosis angles**:
300
- ```javascript
301
- // Load manifest and all diagnosis files
302
- const manifest = JSON.parse(Read(`${sessionFolder}/diagnoses-manifest.json`))
303
- const diagnoses = manifest.diagnoses.map(diag => ({
304
- angle: diag.angle,
305
- data: JSON.parse(Read(diag.path))
306
- }))
307
-
308
- // Aggregate clarification needs from all diagnoses
309
- const allClarifications = []
310
- diagnoses.forEach(diag => {
311
- if (diag.data.clarification_needs?.length > 0) {
312
- diag.data.clarification_needs.forEach(need => {
313
- allClarifications.push({
314
- ...need,
315
- source_angle: diag.angle
316
- })
317
- })
318
- }
319
- })
320
-
321
- // Deduplicate by question similarity
322
- function deduplicateClarifications(clarifications) {
323
- const unique = []
324
- clarifications.forEach(c => {
325
- const isDuplicate = unique.some(u =>
326
- u.question.toLowerCase() === c.question.toLowerCase()
327
- )
328
- if (!isDuplicate) unique.push(c)
329
- })
330
- return unique
331
- }
332
-
333
- const uniqueClarifications = deduplicateClarifications(allClarifications)
334
-
335
- // Multi-round clarification: batch questions (max 4 per round)
336
- // ⚠️ MUST execute ALL rounds until uniqueClarifications exhausted
337
- if (uniqueClarifications.length > 0) {
338
- const BATCH_SIZE = 4
339
- const totalRounds = Math.ceil(uniqueClarifications.length / BATCH_SIZE)
340
-
341
- for (let i = 0; i < uniqueClarifications.length; i += BATCH_SIZE) {
342
- const batch = uniqueClarifications.slice(i, i + BATCH_SIZE)
343
- const currentRound = Math.floor(i / BATCH_SIZE) + 1
344
-
345
- console.log(`### Clarification Round ${currentRound}/${totalRounds}`)
346
-
347
- AskUserQuestion({
348
- questions: batch.map(need => ({
349
- question: `[${need.source_angle}] ${need.question}\n\nContext: ${need.context}`,
350
- header: need.source_angle,
351
- multiSelect: false,
352
- options: need.options.map((opt, index) => {
353
- const isRecommended = need.recommended === index
354
- return {
355
- label: isRecommended ? `${opt} ★` : opt,
356
- description: isRecommended ? `Use ${opt} approach (Recommended)` : `Use ${opt} approach`
357
- }
358
- })
359
- }))
360
- })
361
-
362
- // Store batch responses in clarificationContext before next round
363
- }
364
- }
365
- ```
366
-
367
- **Output**: `clarificationContext` (in-memory)
368
-
369
- ---
370
-
371
- ### Phase 3: Fix Planning
372
-
373
- **Planning Strategy Selection** (based on Phase 1 severity):
374
-
375
- **IMPORTANT**: Phase 3 is **planning only** - NO code execution. All execution happens in Phase 5 via lite-execute.
376
-
377
- **Low/Medium Severity** - Direct planning by Claude:
378
- ```javascript
379
- // Step 1: Read schema
380
- const schema = Bash(`cat ~/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json`)
381
-
382
- // Step 2: Generate fix-plan following schema (Claude directly, no agent)
383
- const fixPlan = {
384
- summary: "...",
385
- root_cause: "...",
386
- strategy: "immediate_patch|comprehensive_fix|refactor",
387
- tasks: [...], // Each task: { id, title, scope, ..., depends_on, complexity }
388
- estimated_time: "...",
389
- recommended_execution: "Agent",
390
- severity: severity,
391
- risk_level: "...",
392
- _metadata: { timestamp: getUtc8ISOString(), source: "direct-planning", planning_mode: "direct" }
393
- }
394
-
395
- // Step 3: Write fix-plan to session folder
396
- Write(`${sessionFolder}/fix-plan.json`, JSON.stringify(fixPlan, null, 2))
397
-
398
- // Step 4: MUST continue to Phase 4 (Confirmation) - DO NOT execute code here
399
- ```
400
-
401
- **High/Critical Severity** - Invoke cli-lite-planning-agent:
402
-
403
- ```javascript
404
- Task(
405
- subagent_type="cli-lite-planning-agent",
406
- run_in_background=false,
407
- description="Generate detailed fix plan",
408
- prompt=`
409
- Generate fix plan and write fix-plan.json.
410
-
411
- ## Output Schema Reference
412
- Execute: cat ~/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json (get schema reference before generating plan)
413
-
414
- ## Project Context (MANDATORY - Read Both Files)
415
- 1. Read: .workflow/project-tech.json (technology stack, architecture, key components)
416
- 2. Read: .workflow/project-guidelines.json (user-defined constraints and conventions)
417
-
418
- **CRITICAL**: All fix tasks MUST comply with constraints in project-guidelines.json
419
-
420
- ## Bug Description
421
- ${bug_description}
422
-
423
- ## Multi-Angle Diagnosis Context
424
-
425
- ${manifest.diagnoses.map(diag => `### Diagnosis: ${diag.angle} (${diag.file})
426
- Path: ${diag.path}
427
-
428
- Read this file for detailed ${diag.angle} analysis.`).join('\n\n')}
429
-
430
- Total diagnoses: ${manifest.diagnosis_count}
431
- Angles covered: ${manifest.diagnoses.map(d => d.angle).join(', ')}
432
-
433
- Manifest: ${sessionFolder}/diagnoses-manifest.json
434
-
435
- ## User Clarifications
436
- ${JSON.stringify(clarificationContext) || "None"}
437
-
438
- ## Severity Level
439
- ${severity}
440
-
441
- ## Requirements
442
- Generate fix-plan.json with:
443
- - summary: 2-3 sentence overview of the fix
444
- - root_cause: Consolidated root cause from all diagnoses
445
- - strategy: "immediate_patch" | "comprehensive_fix" | "refactor"
446
- - tasks: 1-5 structured fix tasks (**IMPORTANT: group by fix area, NOT by file**)
447
- - **Task Granularity Principle**: Each task = one complete fix unit
448
- - title: action verb + target (e.g., "Fix token validation edge case")
449
- - scope: module path (src/auth/) or feature name
450
- - action: "Fix" | "Update" | "Refactor" | "Add" | "Delete"
451
- - description
452
- - modification_points: ALL files to modify for this fix (group related changes)
453
- - implementation (2-5 steps covering all modification_points)
454
- - verification (test criteria)
455
- - depends_on: task IDs this task depends on (use sparingly)
456
- - estimated_time, recommended_execution, severity, risk_level
457
- - _metadata:
458
- - timestamp, source, planning_mode
459
- - diagnosis_angles: ${JSON.stringify(manifest.diagnoses.map(d => d.angle))}
460
-
461
- ## Task Grouping Rules
462
- 1. **Group by fix area**: All changes for one fix = one task (even if 2-3 files)
463
- 2. **Avoid file-per-task**: Do NOT create separate tasks for each file
464
- 3. **Substantial tasks**: Each task should represent 10-45 minutes of work
465
- 4. **True dependencies only**: Only use depends_on when Task B cannot start without Task A's output
466
- 5. **Prefer parallel**: Most tasks should be independent (no depends_on)
467
-
468
- ## Execution
469
- 1. Read ALL diagnosis files for comprehensive context
470
- 2. Execute CLI planning using Gemini (Qwen fallback)
471
- 3. Synthesize findings from multiple diagnosis angles
472
- 4. Parse output and structure fix-plan
473
- 5. Write JSON: Write('${sessionFolder}/fix-plan.json', jsonContent)
474
- 6. Return brief completion summary
475
- `
476
- )
477
- ```
478
-
479
- **Output**: `${sessionFolder}/fix-plan.json`
480
-
481
- ---
482
-
483
- ### Phase 4: Task Confirmation & Execution Selection
484
-
485
- **Step 4.1: Display Fix Plan**
486
- ```javascript
487
- const fixPlan = JSON.parse(Read(`${sessionFolder}/fix-plan.json`))
488
-
489
- console.log(`
490
- ## Fix Plan
491
-
492
- **Summary**: ${fixPlan.summary}
493
- **Root Cause**: ${fixPlan.root_cause}
494
- **Strategy**: ${fixPlan.strategy}
495
-
496
- **Tasks** (${fixPlan.tasks.length}):
497
- ${fixPlan.tasks.map((t, i) => `${i+1}. ${t.title} (${t.scope})`).join('\n')}
498
-
499
- **Severity**: ${fixPlan.severity}
500
- **Risk Level**: ${fixPlan.risk_level}
501
- **Estimated Time**: ${fixPlan.estimated_time}
502
- **Recommended**: ${fixPlan.recommended_execution}
503
- `)
504
- ```
505
-
506
- **Step 4.2: Collect Confirmation**
507
- ```javascript
508
- AskUserQuestion({
509
- questions: [
510
- {
511
- question: `Confirm fix plan? (${fixPlan.tasks.length} tasks, ${fixPlan.severity} severity)`,
512
- header: "Confirm",
513
- multiSelect: true,
514
- options: [
515
- { label: "Allow", description: "Proceed as-is" },
516
- { label: "Modify", description: "Adjust before execution" },
517
- { label: "Cancel", description: "Abort workflow" }
518
- ]
519
- },
520
- {
521
- question: "Execution method:",
522
- header: "Execution",
523
- multiSelect: false,
524
- options: [
525
- { label: "Agent", description: "@code-developer agent" },
526
- { label: "Codex", description: "codex CLI tool" },
527
- { label: "Auto", description: `Auto: ${fixPlan.severity === 'Low' ? 'Agent' : 'Codex'}` }
528
- ]
529
- },
530
- {
531
- question: "Code review after fix?",
532
- header: "Review",
533
- multiSelect: false,
534
- options: [
535
- { label: "Gemini Review", description: "Gemini CLI" },
536
- { label: "Agent Review", description: "@code-reviewer" },
537
- { label: "Skip", description: "No review" }
538
- ]
539
- }
540
- ]
541
- })
542
- ```
543
-
544
- ---
545
-
546
- ### Phase 5: Execute to Execution
547
-
548
- **CRITICAL**: lite-fix NEVER executes code directly. ALL execution MUST go through lite-execute.
549
-
550
- **Step 5.1: Build executionContext**
551
-
552
- ```javascript
553
- // Load manifest and all diagnosis files
554
- const manifest = JSON.parse(Read(`${sessionFolder}/diagnoses-manifest.json`))
555
- const diagnoses = {}
556
-
557
- manifest.diagnoses.forEach(diag => {
558
- if (file_exists(diag.path)) {
559
- diagnoses[diag.angle] = JSON.parse(Read(diag.path))
560
- }
561
- })
562
-
563
- const fixPlan = JSON.parse(Read(`${sessionFolder}/fix-plan.json`))
564
-
565
- executionContext = {
566
- mode: "bugfix",
567
- severity: fixPlan.severity,
568
- planObject: fixPlan,
569
- diagnosisContext: diagnoses,
570
- diagnosisAngles: manifest.diagnoses.map(d => d.angle),
571
- diagnosisManifest: manifest,
572
- clarificationContext: clarificationContext || null,
573
- executionMethod: userSelection.execution_method,
574
- codeReviewTool: userSelection.code_review_tool,
575
- originalUserInput: bug_description,
576
- session: {
577
- id: sessionId,
578
- folder: sessionFolder,
579
- artifacts: {
580
- diagnoses: manifest.diagnoses.map(diag => ({
581
- angle: diag.angle,
582
- path: diag.path
583
- })),
584
- diagnoses_manifest: `${sessionFolder}/diagnoses-manifest.json`,
585
- fix_plan: `${sessionFolder}/fix-plan.json`
586
- }
587
- }
588
- }
589
- ```
590
-
591
- **Step 5.2: Execute**
592
-
593
- ```javascript
594
- SlashCommand(command="/workflow:lite-execute --in-memory --mode bugfix")
595
- ```
596
-
597
- ## Session Folder Structure
598
-
599
- ```
600
- .workflow/.lite-fix/{bug-slug}-{YYYY-MM-DD}/
601
- |- diagnosis-{angle1}.json # Diagnosis angle 1
602
- |- diagnosis-{angle2}.json # Diagnosis angle 2
603
- |- diagnosis-{angle3}.json # Diagnosis angle 3 (if applicable)
604
- |- diagnosis-{angle4}.json # Diagnosis angle 4 (if applicable)
605
- |- diagnoses-manifest.json # Diagnosis index
606
- +- fix-plan.json # Fix plan
607
- ```
608
-
609
- **Example**:
610
- ```
611
- .workflow/.lite-fix/user-avatar-upload-fails-413-2025-11-25-14-30-25/
612
- |- diagnosis-error-handling.json
613
- |- diagnosis-dataflow.json
614
- |- diagnosis-validation.json
615
- |- diagnoses-manifest.json
616
- +- fix-plan.json
617
- ```
618
-
619
- ## Error Handling
620
-
621
- | Error | Resolution |
622
- |-------|------------|
623
- | Diagnosis agent failure | Skip diagnosis, continue with bug description only |
624
- | Planning agent failure | Fallback to direct planning by Claude |
625
- | Clarification timeout | Use diagnosis findings as-is |
626
- | Confirmation timeout | Save context, display resume instructions |
627
- | Modify loop > 3 times | Suggest breaking task or using /workflow:plan |
628
- | Root cause unclear | Extend diagnosis time or use broader angles |
629
- | Too complex for lite-fix | Escalate to /workflow:plan --mode bugfix |
630
-
631
-
1
+ ---
2
+ name: lite-fix
3
+ description: Lightweight bug diagnosis and fix workflow with intelligent severity assessment and optional hotfix mode for production incidents
4
+ argument-hint: "[--hotfix] \"bug description or issue reference\""
5
+ allowed-tools: TodoWrite(*), Task(*), SlashCommand(*), AskUserQuestion(*)
6
+ ---
7
+
8
+ # Workflow Lite-Fix Command (/workflow:lite-fix)
9
+
10
+ ## Overview
11
+
12
+ Intelligent lightweight bug fixing command with dynamic workflow adaptation based on severity assessment. Focuses on diagnosis phases (root cause analysis, impact assessment, fix planning, confirmation) and delegates execution to `/workflow:lite-execute`.
13
+
14
+ **Core capabilities:**
15
+ - Intelligent bug analysis with automatic severity detection
16
+ - Dynamic code diagnosis (cli-explore-agent) for root cause identification
17
+ - Interactive clarification after diagnosis to gather missing information
18
+ - Adaptive fix planning strategy (direct Claude vs cli-lite-planning-agent) based on complexity
19
+ - Two-step confirmation: fix-plan display -> multi-dimensional input collection
20
+ - Execution execute with complete context handoff to lite-execute
21
+
22
+ ## Usage
23
+
24
+ ```bash
25
+ /workflow:lite-fix [FLAGS] <BUG_DESCRIPTION>
26
+
27
+ # Flags
28
+ --hotfix, -h Production hotfix mode (minimal diagnosis, fast fix)
29
+
30
+ # Arguments
31
+ <bug-description> Bug description, error message, or path to .md file (required)
32
+ ```
33
+
34
+ ## Execution Process
35
+
36
+ ```
37
+ Phase 1: Bug Analysis & Diagnosis
38
+ |- Parse input (description, error message, or .md file)
39
+ |- Intelligent severity pre-assessment (Low/Medium/High/Critical)
40
+ |- Diagnosis decision (auto-detect or --hotfix flag)
41
+ |- Context protection: If file reading >=50k chars -> force cli-explore-agent
42
+ +- Decision:
43
+ |- needsDiagnosis=true -> Launch parallel cli-explore-agents (1-4 based on severity)
44
+ +- needsDiagnosis=false (hotfix) -> Skip directly to Phase 3 (Fix Planning)
45
+
46
+ Phase 2: Clarification (optional, multi-round)
47
+ |- Aggregate clarification_needs from all diagnosis angles
48
+ |- Deduplicate similar questions
49
+ +- Decision:
50
+ |- Has clarifications -> AskUserQuestion (max 4 questions per round, multiple rounds allowed)
51
+ +- No clarifications -> Skip to Phase 3
52
+
53
+ Phase 3: Fix Planning (NO CODE EXECUTION - planning only)
54
+ +- Decision (based on Phase 1 severity):
55
+ |- Low/Medium -> Load schema: cat ~/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json -> Direct Claude planning (following schema) -> fix-plan.json -> MUST proceed to Phase 4
56
+ +- High/Critical -> cli-lite-planning-agent -> fix-plan.json -> MUST proceed to Phase 4
57
+
58
+ Phase 4: Confirmation & Selection
59
+ |- Display fix-plan summary (tasks, severity, estimated time)
60
+ +- AskUserQuestion:
61
+ |- Confirm: Allow / Modify / Cancel
62
+ |- Execution: Agent / Codex / Auto
63
+ +- Review: Gemini / Agent / Skip
64
+
65
+ Phase 5: Execute
66
+ |- Build executionContext (fix-plan + diagnoses + clarifications + selections)
67
+ +- SlashCommand("/workflow:lite-execute --in-memory --mode bugfix")
68
+ ```
69
+
70
+ ## Implementation
71
+
72
+ ### Phase 1: Intelligent Multi-Angle Diagnosis
73
+
74
+ **Session Setup** (MANDATORY - follow exactly):
75
+ ```javascript
76
+ // Helper: Get UTC+8 (China Standard Time) ISO string
77
+ const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
78
+
79
+ const bugSlug = bug_description.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
80
+ const dateStr = getUtc8ISOString().substring(0, 10) // Format: 2025-11-29
81
+
82
+ const sessionId = `${bugSlug}-${dateStr}` // e.g., "user-avatar-upload-fails-2025-11-29"
83
+ const sessionFolder = `.workflow/.lite-fix/${sessionId}`
84
+
85
+ bash(`mkdir -p ${sessionFolder} && test -d ${sessionFolder} && echo "SUCCESS: ${sessionFolder}" || echo "FAILED: ${sessionFolder}"`)
86
+ ```
87
+
88
+ **Diagnosis Decision Logic**:
89
+ ```javascript
90
+ const hotfixMode = $ARGUMENTS.includes('--hotfix') || $ARGUMENTS.includes('-h')
91
+
92
+ needsDiagnosis = (
93
+ !hotfixMode &&
94
+ (
95
+ bug.lacks_specific_error_message ||
96
+ bug.requires_codebase_context ||
97
+ bug.needs_execution_tracing ||
98
+ bug.root_cause_unclear
99
+ )
100
+ )
101
+
102
+ if (!needsDiagnosis) {
103
+ // Skip to Phase 2 (Clarification) or Phase 3 (Fix Planning)
104
+ proceed_to_next_phase()
105
+ }
106
+ ```
107
+
108
+ **Context Protection**: File reading >=50k chars -> force `needsDiagnosis=true` (delegate to cli-explore-agent)
109
+
110
+ **Severity Pre-Assessment** (Intelligent Analysis):
111
+ ```javascript
112
+ // Analyzes bug severity based on:
113
+ // - Symptoms: Error messages, crash reports, user complaints
114
+ // - Scope: How many users/features are affected?
115
+ // - Urgency: Production down vs minor inconvenience
116
+ // - Impact: Data loss, security, business impact
117
+
118
+ const severity = analyzeBugSeverity(bug_description)
119
+ // Returns: 'Low' | 'Medium' | 'High' | 'Critical'
120
+ // Low: Minor UI issue, localized, no data impact
121
+ // Medium: Multiple users affected, degraded functionality
122
+ // High: Significant functionality broken, many users affected
123
+ // Critical: Production down, data loss risk, security issue
124
+
125
+ // Angle assignment based on bug type (orchestrator decides, not agent)
126
+ const DIAGNOSIS_ANGLE_PRESETS = {
127
+ runtime_error: ['error-handling', 'dataflow', 'state-management', 'edge-cases'],
128
+ performance: ['performance', 'bottlenecks', 'caching', 'data-access'],
129
+ security: ['security', 'auth-patterns', 'dataflow', 'validation'],
130
+ data_corruption: ['data-integrity', 'state-management', 'transactions', 'validation'],
131
+ ui_bug: ['state-management', 'event-handling', 'rendering', 'data-binding'],
132
+ integration: ['api-contracts', 'error-handling', 'timeouts', 'fallbacks']
133
+ }
134
+
135
+ function selectDiagnosisAngles(bugDescription, count) {
136
+ const text = bugDescription.toLowerCase()
137
+ let preset = 'runtime_error' // default
138
+
139
+ if (/slow|timeout|performance|lag|hang/.test(text)) preset = 'performance'
140
+ else if (/security|auth|permission|access|token/.test(text)) preset = 'security'
141
+ else if (/corrupt|data|lost|missing|inconsistent/.test(text)) preset = 'data_corruption'
142
+ else if (/ui|display|render|style|click|button/.test(text)) preset = 'ui_bug'
143
+ else if (/api|integration|connect|request|response/.test(text)) preset = 'integration'
144
+
145
+ return DIAGNOSIS_ANGLE_PRESETS[preset].slice(0, count)
146
+ }
147
+
148
+ const selectedAngles = selectDiagnosisAngles(bug_description, severity === 'Critical' ? 4 : (severity === 'High' ? 3 : (severity === 'Medium' ? 2 : 1)))
149
+
150
+ console.log(`
151
+ ## Diagnosis Plan
152
+
153
+ Bug Severity: ${severity}
154
+ Selected Angles: ${selectedAngles.join(', ')}
155
+
156
+ Launching ${selectedAngles.length} parallel diagnoses...
157
+ `)
158
+ ```
159
+
160
+ **Launch Parallel Diagnoses** - Orchestrator assigns angle to each agent:
161
+
162
+ ```javascript
163
+ // Launch agents with pre-assigned diagnosis angles
164
+ const diagnosisTasks = selectedAngles.map((angle, index) =>
165
+ Task(
166
+ subagent_type="cli-explore-agent",
167
+ run_in_background=false,
168
+ description=`Diagnose: ${angle}`,
169
+ prompt=`
170
+ ## Task Objective
171
+ Execute **${angle}** diagnosis for bug root cause analysis. Analyze codebase from this specific angle to discover root cause, affected paths, and fix hints.
172
+
173
+ ## Assigned Context
174
+ - **Diagnosis Angle**: ${angle}
175
+ - **Bug Description**: ${bug_description}
176
+ - **Diagnosis Index**: ${index + 1} of ${selectedAngles.length}
177
+ - **Output File**: ${sessionFolder}/diagnosis-${angle}.json
178
+
179
+ ## MANDATORY FIRST STEPS (Execute by Agent)
180
+ **You (cli-explore-agent) MUST execute these steps in order:**
181
+ 1. Run: ccw tool exec get_modules_by_depth '{}' (project structure)
182
+ 2. Run: rg -l "{error_keyword_from_bug}" --type ts (locate relevant files)
183
+ 3. Execute: cat ~/.claude/workflows/cli-templates/schemas/diagnosis-json-schema.json (get output schema reference)
184
+ 4. Read: .workflow/project-tech.json (technology stack and architecture context)
185
+ 5. Read: .workflow/project-guidelines.json (user-defined constraints and conventions)
186
+
187
+ ## Diagnosis Strategy (${angle} focus)
188
+
189
+ **Step 1: Error Tracing** (Bash)
190
+ - rg for error messages, stack traces, log patterns
191
+ - git log --since='2 weeks ago' for recent changes
192
+ - Trace execution path in affected modules
193
+
194
+ **Step 2: Root Cause Analysis** (Gemini CLI)
195
+ - What code paths lead to this ${angle} issue?
196
+ - What edge cases are not handled from ${angle} perspective?
197
+ - What recent changes might have introduced this bug?
198
+
199
+ **Step 3: Write Output**
200
+ - Consolidate ${angle} findings into JSON
201
+ - Identify ${angle}-specific clarification needs
202
+ - Provide fix hints based on ${angle} analysis
203
+
204
+ ## Expected Output
205
+
206
+ **File**: ${sessionFolder}/diagnosis-${angle}.json
207
+
208
+ **Schema Reference**: Schema obtained in MANDATORY FIRST STEPS step 3, follow schema exactly
209
+
210
+ **Required Fields** (all ${angle} focused):
211
+ - symptom: Bug symptoms and error messages
212
+ - root_cause: Root cause hypothesis from ${angle} perspective
213
+ **IMPORTANT**: Use structured format:
214
+ \`{file: "src/module/file.ts", line_range: "45-60", issue: "Description", confidence: 0.85}\`
215
+ - affected_files: Files involved from ${angle} perspective
216
+ **IMPORTANT**: Use object format with relevance scores:
217
+ \`[{path: "src/file.ts", relevance: 0.85, rationale: "Contains ${angle} logic"}]\`
218
+ - reproduction_steps: Steps to reproduce the bug
219
+ - fix_hints: Suggested fix approaches from ${angle} viewpoint
220
+ - dependencies: Dependencies relevant to ${angle} diagnosis
221
+ - constraints: ${angle}-specific limitations affecting fix
222
+ - clarification_needs: ${angle}-related ambiguities (options array + recommended index)
223
+ - _metadata.diagnosis_angle: "${angle}"
224
+ - _metadata.diagnosis_index: ${index + 1}
225
+
226
+ ## Success Criteria
227
+ - [ ] Schema obtained via cat diagnosis-json-schema.json
228
+ - [ ] get_modules_by_depth.sh executed
229
+ - [ ] Root cause identified with confidence score
230
+ - [ ] At least 3 affected files identified with ${angle} rationale
231
+ - [ ] Fix hints are actionable (specific code changes, not generic advice)
232
+ - [ ] Reproduction steps are verifiable
233
+ - [ ] JSON output follows schema exactly
234
+ - [ ] clarification_needs includes options + recommended
235
+
236
+ ## Output
237
+ Write: ${sessionFolder}/diagnosis-${angle}.json
238
+ Return: 2-3 sentence summary of ${angle} diagnosis findings
239
+ `
240
+ )
241
+ )
242
+
243
+ // Execute all diagnosis tasks in parallel
244
+ ```
245
+
246
+ **Auto-discover Generated Diagnosis Files**:
247
+ ```javascript
248
+ // After diagnoses complete, auto-discover all diagnosis-*.json files
249
+ const diagnosisFiles = bash(`find ${sessionFolder} -name "diagnosis-*.json" -type f`)
250
+ .split('\n')
251
+ .filter(f => f.trim())
252
+
253
+ // Read metadata to build manifest
254
+ const diagnosisManifest = {
255
+ session_id: sessionId,
256
+ bug_description: bug_description,
257
+ timestamp: getUtc8ISOString(),
258
+ severity: severity,
259
+ diagnosis_count: diagnosisFiles.length,
260
+ diagnoses: diagnosisFiles.map(file => {
261
+ const data = JSON.parse(Read(file))
262
+ const filename = path.basename(file)
263
+ return {
264
+ angle: data._metadata.diagnosis_angle,
265
+ file: filename,
266
+ path: file,
267
+ index: data._metadata.diagnosis_index
268
+ }
269
+ })
270
+ }
271
+
272
+ Write(`${sessionFolder}/diagnoses-manifest.json`, JSON.stringify(diagnosisManifest, null, 2))
273
+
274
+ console.log(`
275
+ ## Diagnosis Complete
276
+
277
+ Generated diagnosis files in ${sessionFolder}:
278
+ ${diagnosisManifest.diagnoses.map(d => `- diagnosis-${d.angle}.json (angle: ${d.angle})`).join('\n')}
279
+
280
+ Manifest: diagnoses-manifest.json
281
+ Angles diagnosed: ${diagnosisManifest.diagnoses.map(d => d.angle).join(', ')}
282
+ `)
283
+ ```
284
+
285
+ **Output**:
286
+ - `${sessionFolder}/diagnosis-{angle1}.json`
287
+ - `${sessionFolder}/diagnosis-{angle2}.json`
288
+ - ... (1-4 files based on severity)
289
+ - `${sessionFolder}/diagnoses-manifest.json`
290
+
291
+ ---
292
+
293
+ ### Phase 2: Clarification (Optional, Multi-Round)
294
+
295
+ **Skip if**: No diagnosis or `clarification_needs` is empty across all diagnoses
296
+
297
+ **⚠️ CRITICAL**: AskUserQuestion tool limits max 4 questions per call. **MUST execute multiple rounds** to exhaust all clarification needs - do NOT stop at round 1.
298
+
299
+ **Aggregate clarification needs from all diagnosis angles**:
300
+ ```javascript
301
+ // Load manifest and all diagnosis files
302
+ const manifest = JSON.parse(Read(`${sessionFolder}/diagnoses-manifest.json`))
303
+ const diagnoses = manifest.diagnoses.map(diag => ({
304
+ angle: diag.angle,
305
+ data: JSON.parse(Read(diag.path))
306
+ }))
307
+
308
+ // Aggregate clarification needs from all diagnoses
309
+ const allClarifications = []
310
+ diagnoses.forEach(diag => {
311
+ if (diag.data.clarification_needs?.length > 0) {
312
+ diag.data.clarification_needs.forEach(need => {
313
+ allClarifications.push({
314
+ ...need,
315
+ source_angle: diag.angle
316
+ })
317
+ })
318
+ }
319
+ })
320
+
321
+ // Deduplicate by question similarity
322
+ function deduplicateClarifications(clarifications) {
323
+ const unique = []
324
+ clarifications.forEach(c => {
325
+ const isDuplicate = unique.some(u =>
326
+ u.question.toLowerCase() === c.question.toLowerCase()
327
+ )
328
+ if (!isDuplicate) unique.push(c)
329
+ })
330
+ return unique
331
+ }
332
+
333
+ const uniqueClarifications = deduplicateClarifications(allClarifications)
334
+
335
+ // Multi-round clarification: batch questions (max 4 per round)
336
+ // ⚠️ MUST execute ALL rounds until uniqueClarifications exhausted
337
+ if (uniqueClarifications.length > 0) {
338
+ const BATCH_SIZE = 4
339
+ const totalRounds = Math.ceil(uniqueClarifications.length / BATCH_SIZE)
340
+
341
+ for (let i = 0; i < uniqueClarifications.length; i += BATCH_SIZE) {
342
+ const batch = uniqueClarifications.slice(i, i + BATCH_SIZE)
343
+ const currentRound = Math.floor(i / BATCH_SIZE) + 1
344
+
345
+ console.log(`### Clarification Round ${currentRound}/${totalRounds}`)
346
+
347
+ AskUserQuestion({
348
+ questions: batch.map(need => ({
349
+ question: `[${need.source_angle}] ${need.question}\n\nContext: ${need.context}`,
350
+ header: need.source_angle,
351
+ multiSelect: false,
352
+ options: need.options.map((opt, index) => {
353
+ const isRecommended = need.recommended === index
354
+ return {
355
+ label: isRecommended ? `${opt} ★` : opt,
356
+ description: isRecommended ? `Use ${opt} approach (Recommended)` : `Use ${opt} approach`
357
+ }
358
+ })
359
+ }))
360
+ })
361
+
362
+ // Store batch responses in clarificationContext before next round
363
+ }
364
+ }
365
+ ```
366
+
367
+ **Output**: `clarificationContext` (in-memory)
368
+
369
+ ---
370
+
371
+ ### Phase 3: Fix Planning
372
+
373
+ **Planning Strategy Selection** (based on Phase 1 severity):
374
+
375
+ **IMPORTANT**: Phase 3 is **planning only** - NO code execution. All execution happens in Phase 5 via lite-execute.
376
+
377
+ **Low/Medium Severity** - Direct planning by Claude:
378
+ ```javascript
379
+ // Step 1: Read schema
380
+ const schema = Bash(`cat ~/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json`)
381
+
382
+ // Step 2: Generate fix-plan following schema (Claude directly, no agent)
383
+ const fixPlan = {
384
+ summary: "...",
385
+ root_cause: "...",
386
+ strategy: "immediate_patch|comprehensive_fix|refactor",
387
+ tasks: [...], // Each task: { id, title, scope, ..., depends_on, complexity }
388
+ estimated_time: "...",
389
+ recommended_execution: "Agent",
390
+ severity: severity,
391
+ risk_level: "...",
392
+ _metadata: { timestamp: getUtc8ISOString(), source: "direct-planning", planning_mode: "direct" }
393
+ }
394
+
395
+ // Step 3: Write fix-plan to session folder
396
+ Write(`${sessionFolder}/fix-plan.json`, JSON.stringify(fixPlan, null, 2))
397
+
398
+ // Step 4: MUST continue to Phase 4 (Confirmation) - DO NOT execute code here
399
+ ```
400
+
401
+ **High/Critical Severity** - Invoke cli-lite-planning-agent:
402
+
403
+ ```javascript
404
+ Task(
405
+ subagent_type="cli-lite-planning-agent",
406
+ run_in_background=false,
407
+ description="Generate detailed fix plan",
408
+ prompt=`
409
+ Generate fix plan and write fix-plan.json.
410
+
411
+ ## Output Schema Reference
412
+ Execute: cat ~/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json (get schema reference before generating plan)
413
+
414
+ ## Project Context (MANDATORY - Read Both Files)
415
+ 1. Read: .workflow/project-tech.json (technology stack, architecture, key components)
416
+ 2. Read: .workflow/project-guidelines.json (user-defined constraints and conventions)
417
+
418
+ **CRITICAL**: All fix tasks MUST comply with constraints in project-guidelines.json
419
+
420
+ ## Bug Description
421
+ ${bug_description}
422
+
423
+ ## Multi-Angle Diagnosis Context
424
+
425
+ ${manifest.diagnoses.map(diag => `### Diagnosis: ${diag.angle} (${diag.file})
426
+ Path: ${diag.path}
427
+
428
+ Read this file for detailed ${diag.angle} analysis.`).join('\n\n')}
429
+
430
+ Total diagnoses: ${manifest.diagnosis_count}
431
+ Angles covered: ${manifest.diagnoses.map(d => d.angle).join(', ')}
432
+
433
+ Manifest: ${sessionFolder}/diagnoses-manifest.json
434
+
435
+ ## User Clarifications
436
+ ${JSON.stringify(clarificationContext) || "None"}
437
+
438
+ ## Severity Level
439
+ ${severity}
440
+
441
+ ## Requirements
442
+ Generate fix-plan.json with:
443
+ - summary: 2-3 sentence overview of the fix
444
+ - root_cause: Consolidated root cause from all diagnoses
445
+ - strategy: "immediate_patch" | "comprehensive_fix" | "refactor"
446
+ - tasks: 1-5 structured fix tasks (**IMPORTANT: group by fix area, NOT by file**)
447
+ - **Task Granularity Principle**: Each task = one complete fix unit
448
+ - title: action verb + target (e.g., "Fix token validation edge case")
449
+ - scope: module path (src/auth/) or feature name
450
+ - action: "Fix" | "Update" | "Refactor" | "Add" | "Delete"
451
+ - description
452
+ - modification_points: ALL files to modify for this fix (group related changes)
453
+ - implementation (2-5 steps covering all modification_points)
454
+ - verification (test criteria)
455
+ - depends_on: task IDs this task depends on (use sparingly)
456
+ - estimated_time, recommended_execution, severity, risk_level
457
+ - _metadata:
458
+ - timestamp, source, planning_mode
459
+ - diagnosis_angles: ${JSON.stringify(manifest.diagnoses.map(d => d.angle))}
460
+
461
+ ## Task Grouping Rules
462
+ 1. **Group by fix area**: All changes for one fix = one task (even if 2-3 files)
463
+ 2. **Avoid file-per-task**: Do NOT create separate tasks for each file
464
+ 3. **Substantial tasks**: Each task should represent 10-45 minutes of work
465
+ 4. **True dependencies only**: Only use depends_on when Task B cannot start without Task A's output
466
+ 5. **Prefer parallel**: Most tasks should be independent (no depends_on)
467
+
468
+ ## Execution
469
+ 1. Read ALL diagnosis files for comprehensive context
470
+ 2. Execute CLI planning using Gemini (Qwen fallback)
471
+ 3. Synthesize findings from multiple diagnosis angles
472
+ 4. Parse output and structure fix-plan
473
+ 5. Write JSON: Write('${sessionFolder}/fix-plan.json', jsonContent)
474
+ 6. Return brief completion summary
475
+ `
476
+ )
477
+ ```
478
+
479
+ **Output**: `${sessionFolder}/fix-plan.json`
480
+
481
+ ---
482
+
483
+ ### Phase 4: Task Confirmation & Execution Selection
484
+
485
+ **Step 4.1: Display Fix Plan**
486
+ ```javascript
487
+ const fixPlan = JSON.parse(Read(`${sessionFolder}/fix-plan.json`))
488
+
489
+ console.log(`
490
+ ## Fix Plan
491
+
492
+ **Summary**: ${fixPlan.summary}
493
+ **Root Cause**: ${fixPlan.root_cause}
494
+ **Strategy**: ${fixPlan.strategy}
495
+
496
+ **Tasks** (${fixPlan.tasks.length}):
497
+ ${fixPlan.tasks.map((t, i) => `${i+1}. ${t.title} (${t.scope})`).join('\n')}
498
+
499
+ **Severity**: ${fixPlan.severity}
500
+ **Risk Level**: ${fixPlan.risk_level}
501
+ **Estimated Time**: ${fixPlan.estimated_time}
502
+ **Recommended**: ${fixPlan.recommended_execution}
503
+ `)
504
+ ```
505
+
506
+ **Step 4.2: Collect Confirmation**
507
+ ```javascript
508
+ AskUserQuestion({
509
+ questions: [
510
+ {
511
+ question: `Confirm fix plan? (${fixPlan.tasks.length} tasks, ${fixPlan.severity} severity)`,
512
+ header: "Confirm",
513
+ multiSelect: true,
514
+ options: [
515
+ { label: "Allow", description: "Proceed as-is" },
516
+ { label: "Modify", description: "Adjust before execution" },
517
+ { label: "Cancel", description: "Abort workflow" }
518
+ ]
519
+ },
520
+ {
521
+ question: "Execution method:",
522
+ header: "Execution",
523
+ multiSelect: false,
524
+ options: [
525
+ { label: "Agent", description: "@code-developer agent" },
526
+ { label: "Codex", description: "codex CLI tool" },
527
+ { label: "Auto", description: `Auto: ${fixPlan.severity === 'Low' ? 'Agent' : 'Codex'}` }
528
+ ]
529
+ },
530
+ {
531
+ question: "Code review after fix?",
532
+ header: "Review",
533
+ multiSelect: false,
534
+ options: [
535
+ { label: "Gemini Review", description: "Gemini CLI" },
536
+ { label: "Agent Review", description: "@code-reviewer" },
537
+ { label: "Skip", description: "No review" }
538
+ ]
539
+ }
540
+ ]
541
+ })
542
+ ```
543
+
544
+ ---
545
+
546
+ ### Phase 5: Execute to Execution
547
+
548
+ **CRITICAL**: lite-fix NEVER executes code directly. ALL execution MUST go through lite-execute.
549
+
550
+ **Step 5.1: Build executionContext**
551
+
552
+ ```javascript
553
+ // Load manifest and all diagnosis files
554
+ const manifest = JSON.parse(Read(`${sessionFolder}/diagnoses-manifest.json`))
555
+ const diagnoses = {}
556
+
557
+ manifest.diagnoses.forEach(diag => {
558
+ if (file_exists(diag.path)) {
559
+ diagnoses[diag.angle] = JSON.parse(Read(diag.path))
560
+ }
561
+ })
562
+
563
+ const fixPlan = JSON.parse(Read(`${sessionFolder}/fix-plan.json`))
564
+
565
+ executionContext = {
566
+ mode: "bugfix",
567
+ severity: fixPlan.severity,
568
+ planObject: fixPlan,
569
+ diagnosisContext: diagnoses,
570
+ diagnosisAngles: manifest.diagnoses.map(d => d.angle),
571
+ diagnosisManifest: manifest,
572
+ clarificationContext: clarificationContext || null,
573
+ executionMethod: userSelection.execution_method,
574
+ codeReviewTool: userSelection.code_review_tool,
575
+ originalUserInput: bug_description,
576
+ session: {
577
+ id: sessionId,
578
+ folder: sessionFolder,
579
+ artifacts: {
580
+ diagnoses: manifest.diagnoses.map(diag => ({
581
+ angle: diag.angle,
582
+ path: diag.path
583
+ })),
584
+ diagnoses_manifest: `${sessionFolder}/diagnoses-manifest.json`,
585
+ fix_plan: `${sessionFolder}/fix-plan.json`
586
+ }
587
+ }
588
+ }
589
+ ```
590
+
591
+ **Step 5.2: Execute**
592
+
593
+ ```javascript
594
+ SlashCommand(command="/workflow:lite-execute --in-memory --mode bugfix")
595
+ ```
596
+
597
+ ## Session Folder Structure
598
+
599
+ ```
600
+ .workflow/.lite-fix/{bug-slug}-{YYYY-MM-DD}/
601
+ |- diagnosis-{angle1}.json # Diagnosis angle 1
602
+ |- diagnosis-{angle2}.json # Diagnosis angle 2
603
+ |- diagnosis-{angle3}.json # Diagnosis angle 3 (if applicable)
604
+ |- diagnosis-{angle4}.json # Diagnosis angle 4 (if applicable)
605
+ |- diagnoses-manifest.json # Diagnosis index
606
+ +- fix-plan.json # Fix plan
607
+ ```
608
+
609
+ **Example**:
610
+ ```
611
+ .workflow/.lite-fix/user-avatar-upload-fails-413-2025-11-25-14-30-25/
612
+ |- diagnosis-error-handling.json
613
+ |- diagnosis-dataflow.json
614
+ |- diagnosis-validation.json
615
+ |- diagnoses-manifest.json
616
+ +- fix-plan.json
617
+ ```
618
+
619
+ ## Error Handling
620
+
621
+ | Error | Resolution |
622
+ |-------|------------|
623
+ | Diagnosis agent failure | Skip diagnosis, continue with bug description only |
624
+ | Planning agent failure | Fallback to direct planning by Claude |
625
+ | Clarification timeout | Use diagnosis findings as-is |
626
+ | Confirmation timeout | Save context, display resume instructions |
627
+ | Modify loop > 3 times | Suggest breaking task or using /workflow:plan |
628
+ | Root cause unclear | Extend diagnosis time or use broader angles |
629
+ | Too complex for lite-fix | Escalate to /workflow:plan --mode bugfix |
630
+
631
+