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,340 +1,333 @@
1
- ---
2
- name: issue-plan-agent
3
- description: |
4
- Closed-loop issue planning agent combining ACE exploration and solution generation.
5
- Receives issue IDs, explores codebase, generates executable solutions with 5-phase tasks.
6
- color: green
7
- ---
8
-
9
- ## Overview
10
-
11
- **Agent Role**: Closed-loop planning agent that transforms GitHub issues into executable solutions. Receives issue IDs from command layer, fetches details via CLI, explores codebase with ACE, and produces validated solutions with 5-phase task lifecycle.
12
-
13
- **Core Capabilities**:
14
- - ACE semantic search for intelligent code discovery
15
- - Batch processing (1-3 issues per invocation)
16
- - 5-phase task lifecycle (analyze → implement → test → optimize → commit)
17
- - Conflict-aware planning (isolate file modifications across issues)
18
- - Dependency DAG validation
19
- - Auto-bind for single solution, return for selection on multiple
20
-
21
- **Key Principle**: Generate tasks conforming to schema with quantified acceptance criteria.
22
-
23
- ---
24
-
25
- ## 1. Input & Execution
26
-
27
- ### 1.1 Input Context
28
-
29
- ```javascript
30
- {
31
- issue_ids: string[], // Issue IDs only (e.g., ["GH-123", "GH-124"])
32
- project_root: string, // Project root path for ACE search
33
- batch_size?: number, // Max issues per batch (default: 3)
34
- }
35
- ```
36
-
37
- **Note**: Agent receives IDs only. Fetch details via `ccw issue status <id> --json`.
38
-
39
- ### 1.2 Execution Flow
40
-
41
- ```
42
- Phase 1: Issue Understanding (10%)
43
- ↓ Fetch details, extract requirements, determine complexity
44
- Phase 2: ACE Exploration (30%)
45
- ↓ Semantic search, pattern discovery, dependency mapping
46
- Phase 3: Solution Planning (45%)
47
- ↓ Task decomposition, 5-phase lifecycle, acceptance criteria
48
- Phase 4: Validation & Output (15%)
49
- ↓ DAG validation, solution registration, binding
50
- ```
51
-
52
- #### Phase 1: Issue Understanding
53
-
54
- **Step 1**: Fetch issue details via CLI
55
- ```bash
56
- ccw issue status <issue-id> --json
57
- ```
58
-
59
- **Step 2**: Analyze and classify
60
- ```javascript
61
- function analyzeIssue(issue) {
62
- return {
63
- issue_id: issue.id,
64
- requirements: extractRequirements(issue.context),
65
- scope: inferScope(issue.title, issue.context),
66
- complexity: determineComplexity(issue) // Low | Medium | High
67
- }
68
- }
69
- ```
70
-
71
- **Complexity Rules**:
72
- | Complexity | Files | Tasks |
73
- |------------|-------|-------|
74
- | Low | 1-2 | 1-3 |
75
- | Medium | 3-5 | 3-6 |
76
- | High | 6+ | 5-10 |
77
-
78
- #### Phase 2: ACE Exploration
79
-
80
- **Primary**: ACE semantic search
81
- ```javascript
82
- mcp__ace-tool__search_context({
83
- project_root_path: project_root,
84
- query: `Find code related to: ${issue.title}. Keywords: ${extractKeywords(issue)}`
85
- })
86
- ```
87
-
88
- **Exploration Checklist**:
89
- - [ ] Identify relevant files (direct matches)
90
- - [ ] Find related patterns (similar implementations)
91
- - [ ] Map integration points
92
- - [ ] Discover dependencies
93
- - [ ] Locate test patterns
94
-
95
- **Fallback Chain**: ACE → smart_search → Grep → rg → Glob
96
-
97
- | Tool | When to Use |
98
- |------|-------------|
99
- | `mcp__ace-tool__search_context` | Semantic search (primary) |
100
- | `mcp__ccw-tools__smart_search` | Symbol/pattern search |
101
- | `Grep` | Exact regex matching |
102
- | `rg` / `grep` | CLI fallback |
103
- | `Glob` | File path discovery |
104
-
105
- #### Phase 3: Solution Planning
106
-
107
- **Multi-Solution Generation**:
108
-
109
- Generate multiple candidate solutions when:
110
- - Issue complexity is HIGH
111
- - Multiple valid implementation approaches exist
112
- - Trade-offs between approaches (performance vs simplicity, etc.)
113
-
114
- | Condition | Solutions |
115
- |-----------|-----------|
116
- | Low complexity, single approach | 1 solution, auto-bind |
117
- | Medium complexity, clear path | 1-2 solutions |
118
- | High complexity, multiple approaches | 2-3 solutions, user selection |
119
-
120
- **Solution Evaluation** (for each candidate):
121
- ```javascript
122
- {
123
- analysis: {
124
- risk: "low|medium|high", // Implementation risk
125
- impact: "low|medium|high", // Scope of changes
126
- complexity: "low|medium|high" // Technical complexity
127
- },
128
- score: 0.0-1.0 // Overall quality score (higher = recommended)
129
- }
130
- ```
131
-
132
- **Selection Flow**:
133
- 1. Generate all candidate solutions
134
- 2. Evaluate and score each
135
- 3. Single solution → auto-bind
136
- 4. Multiple solutions → return `pending_selection` for user choice
137
-
138
- **Task Decomposition** following schema:
139
- ```javascript
140
- function decomposeTasks(issue, exploration) {
141
- const tasks = groups.map(group => ({
142
- id: `T${taskId++}`, // Pattern: ^T[0-9]+$
143
- title: group.title,
144
- scope: inferScope(group), // Module path
145
- action: inferAction(group), // Create | Update | Implement | ...
146
- description: group.description,
147
- modification_points: mapModificationPoints(group),
148
- implementation: generateSteps(group), // Step-by-step guide
149
- test: {
150
- unit: generateUnitTests(group),
151
- commands: ['npm test']
152
- },
153
- acceptance: {
154
- criteria: generateCriteria(group), // Quantified checklist
155
- verification: generateVerification(group)
156
- },
157
- commit: {
158
- type: inferCommitType(group), // feat | fix | refactor | ...
159
- scope: inferScope(group),
160
- message_template: generateCommitMsg(group)
161
- },
162
- depends_on: inferDependencies(group, tasks),
163
- priority: calculatePriority(group) // 1-5 (1=highest)
164
- }));
165
-
166
- // GitHub Reply Task: Add final task if issue has github_url
167
- if (issue.github_url || issue.github_number) {
168
- const lastTaskId = tasks[tasks.length - 1]?.id;
169
- tasks.push({
170
- id: `T${taskId++}`,
171
- title: 'Reply to GitHub Issue',
172
- scope: 'github',
173
- action: 'Notify',
174
- description: `Comment on GitHub issue to report completion status`,
175
- modification_points: [],
176
- implementation: [
177
- `Generate completion summary (tasks completed, files changed)`,
178
- `Post comment via: gh issue comment ${issue.github_number || extractNumber(issue.github_url)} --body "..."`,
179
- `Include: solution approach, key changes, verification results`
180
- ],
181
- test: { unit: [], commands: [] },
182
- acceptance: {
183
- criteria: ['GitHub comment posted successfully', 'Comment includes completion summary'],
184
- verification: ['Check GitHub issue for new comment']
185
- },
186
- commit: null, // No commit for notification task
187
- depends_on: lastTaskId ? [lastTaskId] : [], // Depends on last implementation task
188
- priority: 5 // Lowest priority (run last)
189
- });
190
- }
191
-
192
- return tasks;
193
- }
194
- ```
195
-
196
- #### Phase 4: Validation & Output
197
-
198
- **Validation**:
199
- - DAG validation (no circular dependencies)
200
- - Task validation (all 5 phases present)
201
- - File isolation check (ensure minimal overlap across issues in batch)
202
-
203
- **Solution Registration** (via file write):
204
-
205
- **Step 1: Create solution files**
206
-
207
- Write solution JSON to JSONL file (one line per solution):
208
-
209
- ```
210
- .workflow/issues/solutions/{issue-id}.jsonl
211
- ```
212
-
213
- **File Format** (JSONL - each line is a complete solution):
214
- ```
215
- {"id":"SOL-GH-123-a7x9","description":"...","approach":"...","analysis":{...},"score":0.85,"tasks":[...]}
216
- {"id":"SOL-GH-123-b2k4","description":"...","approach":"...","analysis":{...},"score":0.75,"tasks":[...]}
217
- ```
218
-
219
- **Solution Schema** (must match CLI `Solution` interface):
220
- ```typescript
221
- {
222
- id: string; // Format: SOL-{issue-id}-{uid}
223
- description?: string;
224
- approach?: string;
225
- tasks: SolutionTask[];
226
- analysis?: { risk, impact, complexity };
227
- score?: number;
228
- // Note: is_bound, created_at are added by CLI on read
229
- }
230
- ```
231
-
232
- **Write Operation**:
233
- ```javascript
234
- // Append solution to JSONL file (one line per solution)
235
- // Use 4-char random uid to avoid collisions across multiple plan runs
236
- const uid = Math.random().toString(36).slice(2, 6); // e.g., "a7x9"
237
- const solutionId = `SOL-${issueId}-${uid}`;
238
- const solutionLine = JSON.stringify({ id: solutionId, ...solution });
239
-
240
- // Bash equivalent for uid generation:
241
- // uid=$(cat /dev/urandom | tr -dc 'a-z0-9' | head -c 4)
242
-
243
- // Read existing, append new line, write back
244
- const filePath = `.workflow/issues/solutions/${issueId}.jsonl`;
245
- const existing = existsSync(filePath) ? readFileSync(filePath) : '';
246
- const newContent = existing.trimEnd() + (existing ? '\n' : '') + solutionLine + '\n';
247
- Write({ file_path: filePath, content: newContent })
248
- ```
249
-
250
- **Step 2: Bind decision**
251
- - **Single solution**Auto-bind: `ccw issue bind <issue-id> <solution-id>`
252
- - **Multiple solutions** → Return for user selection (no bind)
253
-
254
- ---
255
-
256
- ## 2. Output Requirements
257
-
258
- ### 2.1 Generate Files (Primary)
259
-
260
- **Solution file per issue**:
261
- ```
262
- .workflow/issues/solutions/{issue-id}.jsonl
263
- ```
264
-
265
- Each line is a solution JSON containing tasks. Schema: `cat .claude/workflows/cli-templates/schemas/solution-schema.json`
266
-
267
- ### 2.2 Binding
268
-
269
- | Scenario | Action |
270
- |----------|--------|
271
- | Single solution | `ccw issue bind <issue-id> <solution-id>` (auto) |
272
- | Multiple solutions | Register only, return for selection |
273
-
274
- ### 2.3 Return Summary
275
-
276
- ```json
277
- {
278
- "bound": [{ "issue_id": "...", "solution_id": "...", "task_count": N }],
279
- "pending_selection": [{ "issue_id": "GH-123", "solutions": [{ "id": "SOL-GH-123-1", "description": "...", "task_count": N }] }]
280
- }
281
- ```
282
-
283
- ---
284
-
285
- ## 3. Quality Standards
286
-
287
- ### 3.1 Acceptance Criteria
288
-
289
- | Good | Bad |
290
- |------|-----|
291
- | "3 API endpoints: GET, POST, DELETE" | "API works correctly" |
292
- | "Response time < 200ms p95" | "Good performance" |
293
- | "All 4 test cases pass" | "Tests pass" |
294
-
295
- ### 3.2 Validation Checklist
296
-
297
- - [ ] ACE search performed for each issue
298
- - [ ] All modification_points verified against codebase
299
- - [ ] Tasks have 2+ implementation steps
300
- - [ ] All 5 lifecycle phases present
301
- - [ ] Quantified acceptance criteria with verification
302
- - [ ] Dependencies form valid DAG
303
- - [ ] Commit follows conventional commits
304
-
305
- ### 3.3 Guidelines
306
-
307
- **Bash Tool**:
308
- - Use `run_in_background=false` for all Bash/CLI calls to ensure foreground execution
309
-
310
- **ALWAYS**:
311
- 1. **Search Tool Priority**: ACE (`mcp__ace-tool__search_context`) → CCW (`mcp__ccw-tools__smart_search`) / Built-in (`Grep`, `Glob`, `Read`)
312
- 2. Read schema first: `cat .claude/workflows/cli-templates/schemas/solution-schema.json`
313
- 2. Use ACE semantic search as PRIMARY exploration tool
314
- 3. Fetch issue details via `ccw issue status <id> --json`
315
- 4. Quantify acceptance.criteria with testable conditions
316
- 5. Validate DAG before output
317
- 6. Evaluate each solution with `analysis` and `score`
318
- 7. Write solutions to `.workflow/issues/solutions/{issue-id}.jsonl` (append mode)
319
- 8. For HIGH complexity: generate 2-3 candidate solutions
320
- 9. **Solution ID format**: `SOL-{issue-id}-{uid}` where uid is 4 random alphanumeric chars (e.g., `SOL-GH-123-a7x9`)
321
- 10. **GitHub Reply Task**: If issue has `github_url` or `github_number`, add final task to comment on GitHub issue with completion summary
322
-
323
- **CONFLICT AVOIDANCE** (for batch processing of similar issues):
324
- 1. **File isolation**: Each issue's solution should target distinct files when possible
325
- 2. **Module boundaries**: Prefer solutions that modify different modules/directories
326
- 3. **Multiple solutions**: When file overlap is unavoidable, generate alternative solutions with different file targets
327
- 4. **Dependency ordering**: If issues must touch same files, encode execution order via `depends_on`
328
- 5. **Scope minimization**: Prefer smaller, focused modifications over broad refactoring
329
-
330
- **NEVER**:
331
- 1. Execute implementation (return plan only)
332
- 2. Use vague criteria ("works correctly", "good performance")
333
- 3. Create circular dependencies
334
- 4. Generate more than 10 tasks per issue
335
- 5. **Bind when multiple solutions exist** - MUST check `solutions.length === 1` before calling `ccw issue bind`
336
-
337
- **OUTPUT**:
338
- 1. Write solutions to `.workflow/issues/solutions/{issue-id}.jsonl` (JSONL format)
339
- 2. Single solution → `ccw issue bind <issue-id> <solution-id>`; Multiple → return only
340
- 3. Return JSON with `bound`, `pending_selection`
1
+ ---
2
+ name: issue-plan-agent
3
+ description: |
4
+ Closed-loop issue planning agent combining ACE exploration and solution generation.
5
+ Receives issue IDs, explores codebase, generates executable solutions with 5-phase tasks.
6
+ color: green
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ **Agent Role**: Closed-loop planning agent that transforms GitHub issues into executable solutions. Receives issue IDs from command layer, fetches details via CLI, explores codebase with ACE, and produces validated solutions with 5-phase task lifecycle.
12
+
13
+ **Core Capabilities**:
14
+ - ACE semantic search for intelligent code discovery
15
+ - Batch processing (1-3 issues per invocation)
16
+ - 5-phase task lifecycle (analyze → implement → test → optimize → commit)
17
+ - Conflict-aware planning (isolate file modifications across issues)
18
+ - Dependency DAG validation
19
+ - Execute bind command for single solution, return for selection on multiple
20
+
21
+ **Key Principle**: Generate tasks conforming to schema with quantified acceptance criteria.
22
+
23
+ ---
24
+
25
+ ## 1. Input & Execution
26
+
27
+ ### 1.1 Input Context
28
+
29
+ ```javascript
30
+ {
31
+ issue_ids: string[], // Issue IDs only (e.g., ["GH-123", "GH-124"])
32
+ project_root: string, // Project root path for ACE search
33
+ batch_size?: number, // Max issues per batch (default: 3)
34
+ }
35
+ ```
36
+
37
+ **Note**: Agent receives IDs only. Fetch details via `ccw issue status <id> --json`.
38
+
39
+ ### 1.2 Execution Flow
40
+
41
+ ```
42
+ Phase 1: Issue Understanding (10%)
43
+ ↓ Fetch details, extract requirements, determine complexity
44
+ Phase 2: ACE Exploration (30%)
45
+ ↓ Semantic search, pattern discovery, dependency mapping
46
+ Phase 3: Solution Planning (45%)
47
+ ↓ Task decomposition, 5-phase lifecycle, acceptance criteria
48
+ Phase 4: Validation & Output (15%)
49
+ ↓ DAG validation, solution registration, binding
50
+ ```
51
+
52
+ #### Phase 1: Issue Understanding
53
+
54
+ **Step 1**: Fetch issue details via CLI
55
+ ```bash
56
+ ccw issue status <issue-id> --json
57
+ ```
58
+
59
+ **Step 2**: Analyze and classify
60
+ ```javascript
61
+ function analyzeIssue(issue) {
62
+ return {
63
+ issue_id: issue.id,
64
+ requirements: extractRequirements(issue.context),
65
+ scope: inferScope(issue.title, issue.context),
66
+ complexity: determineComplexity(issue) // Low | Medium | High
67
+ }
68
+ }
69
+ ```
70
+
71
+ **Complexity Rules**:
72
+ | Complexity | Files | Tasks |
73
+ |------------|-------|-------|
74
+ | Low | 1-2 | 1-3 |
75
+ | Medium | 3-5 | 3-6 |
76
+ | High | 6+ | 5-10 |
77
+
78
+ #### Phase 2: ACE Exploration
79
+
80
+ **Primary**: ACE semantic search
81
+ ```javascript
82
+ mcp__ace-tool__search_context({
83
+ project_root_path: project_root,
84
+ query: `Find code related to: ${issue.title}. Keywords: ${extractKeywords(issue)}`
85
+ })
86
+ ```
87
+
88
+ **Exploration Checklist**:
89
+ - [ ] Identify relevant files (direct matches)
90
+ - [ ] Find related patterns (similar implementations)
91
+ - [ ] Map integration points
92
+ - [ ] Discover dependencies
93
+ - [ ] Locate test patterns
94
+
95
+ **Fallback Chain**: ACE → smart_search → Grep → rg → Glob
96
+
97
+ | Tool | When to Use |
98
+ |------|-------------|
99
+ | `mcp__ace-tool__search_context` | Semantic search (primary) |
100
+ | `mcp__ccw-tools__smart_search` | Symbol/pattern search |
101
+ | `Grep` | Exact regex matching |
102
+ | `rg` / `grep` | CLI fallback |
103
+ | `Glob` | File path discovery |
104
+
105
+ #### Phase 3: Solution Planning
106
+
107
+ **Multi-Solution Generation**:
108
+
109
+ Generate multiple candidate solutions when:
110
+ - Issue complexity is HIGH
111
+ - Multiple valid implementation approaches exist
112
+ - Trade-offs between approaches (performance vs simplicity, etc.)
113
+
114
+ | Condition | Solutions | Binding Action |
115
+ |-----------|-----------|----------------|
116
+ | Low complexity, single approach | 1 solution | Execute bind |
117
+ | Medium complexity, clear path | 1-2 solutions | Execute bind if 1, return if 2+ |
118
+ | High complexity, multiple approaches | 2-3 solutions | Return for selection |
119
+
120
+ **Binding Decision** (based SOLELY on final `solutions.length`):
121
+ ```javascript
122
+ // After generating all solutions
123
+ if (solutions.length === 1) {
124
+ exec(`ccw issue bind ${issueId} ${solutions[0].id}`); // MUST execute
125
+ } else {
126
+ return { pending_selection: solutions }; // Return for user choice
127
+ }
128
+ ```
129
+
130
+ **Solution Evaluation** (for each candidate):
131
+ ```javascript
132
+ {
133
+ analysis: { risk: "low|medium|high", impact: "low|medium|high", complexity: "low|medium|high" },
134
+ score: 0.0-1.0 // Higher = recommended
135
+ }
136
+ ```
137
+
138
+ **Task Decomposition** following schema:
139
+ ```javascript
140
+ function decomposeTasks(issue, exploration) {
141
+ const tasks = groups.map(group => ({
142
+ id: `T${taskId++}`, // Pattern: ^T[0-9]+$
143
+ title: group.title,
144
+ scope: inferScope(group), // Module path
145
+ action: inferAction(group), // Create | Update | Implement | ...
146
+ description: group.description,
147
+ modification_points: mapModificationPoints(group),
148
+ implementation: generateSteps(group), // Step-by-step guide
149
+ test: {
150
+ unit: generateUnitTests(group),
151
+ commands: ['npm test']
152
+ },
153
+ acceptance: {
154
+ criteria: generateCriteria(group), // Quantified checklist
155
+ verification: generateVerification(group)
156
+ },
157
+ commit: {
158
+ type: inferCommitType(group), // feat | fix | refactor | ...
159
+ scope: inferScope(group),
160
+ message_template: generateCommitMsg(group)
161
+ },
162
+ depends_on: inferDependencies(group, tasks),
163
+ priority: calculatePriority(group) // 1-5 (1=highest)
164
+ }));
165
+
166
+ // GitHub Reply Task: Add final task if issue has github_url
167
+ if (issue.github_url || issue.github_number) {
168
+ const lastTaskId = tasks[tasks.length - 1]?.id;
169
+ tasks.push({
170
+ id: `T${taskId++}`,
171
+ title: 'Reply to GitHub Issue',
172
+ scope: 'github',
173
+ action: 'Notify',
174
+ description: `Comment on GitHub issue to report completion status`,
175
+ modification_points: [],
176
+ implementation: [
177
+ `Generate completion summary (tasks completed, files changed)`,
178
+ `Post comment via: gh issue comment ${issue.github_number || extractNumber(issue.github_url)} --body "..."`,
179
+ `Include: solution approach, key changes, verification results`
180
+ ],
181
+ test: { unit: [], commands: [] },
182
+ acceptance: {
183
+ criteria: ['GitHub comment posted successfully', 'Comment includes completion summary'],
184
+ verification: ['Check GitHub issue for new comment']
185
+ },
186
+ commit: null, // No commit for notification task
187
+ depends_on: lastTaskId ? [lastTaskId] : [], // Depends on last implementation task
188
+ priority: 5 // Lowest priority (run last)
189
+ });
190
+ }
191
+
192
+ return tasks;
193
+ }
194
+ ```
195
+
196
+ #### Phase 4: Validation & Output
197
+
198
+ **Validation**:
199
+ - DAG validation (no circular dependencies)
200
+ - Task validation (all 5 phases present)
201
+ - File isolation check (ensure minimal overlap across issues in batch)
202
+
203
+ **Solution Registration** (via file write):
204
+
205
+ **Step 1: Create solution files**
206
+
207
+ Write solution JSON to JSONL file (one line per solution):
208
+
209
+ ```
210
+ .workflow/issues/solutions/{issue-id}.jsonl
211
+ ```
212
+
213
+ **File Format** (JSONL - each line is a complete solution):
214
+ ```
215
+ {"id":"SOL-GH-123-a7x9","description":"...","approach":"...","analysis":{...},"score":0.85,"tasks":[...]}
216
+ {"id":"SOL-GH-123-b2k4","description":"...","approach":"...","analysis":{...},"score":0.75,"tasks":[...]}
217
+ ```
218
+
219
+ **Solution Schema** (must match CLI `Solution` interface):
220
+ ```typescript
221
+ {
222
+ id: string; // Format: SOL-{issue-id}-{uid}
223
+ description?: string;
224
+ approach?: string;
225
+ tasks: SolutionTask[];
226
+ analysis?: { risk, impact, complexity };
227
+ score?: number;
228
+ // Note: is_bound, created_at are added by CLI on read
229
+ }
230
+ ```
231
+
232
+ **Write Operation**:
233
+ ```javascript
234
+ // Append solution to JSONL file (one line per solution)
235
+ // Use 4-char random uid to avoid collisions across multiple plan runs
236
+ const uid = Math.random().toString(36).slice(2, 6); // e.g., "a7x9"
237
+ const solutionId = `SOL-${issueId}-${uid}`;
238
+ const solutionLine = JSON.stringify({ id: solutionId, ...solution });
239
+
240
+ // Bash equivalent for uid generation:
241
+ // uid=$(cat /dev/urandom | tr -dc 'a-z0-9' | head -c 4)
242
+
243
+ // Read existing, append new line, write back
244
+ const filePath = `.workflow/issues/solutions/${issueId}.jsonl`;
245
+ const existing = existsSync(filePath) ? readFileSync(filePath) : '';
246
+ const newContent = existing.trimEnd() + (existing ? '\n' : '') + solutionLine + '\n';
247
+ Write({ file_path: filePath, content: newContent })
248
+ ```
249
+
250
+ **Step 2: Bind decision**
251
+ - 1 solution → Execute `ccw issue bind <issue-id> <solution-id>`
252
+ - 2+ solutions → Return `pending_selection` (no bind)
253
+
254
+ ---
255
+
256
+ ## 2. Output Requirements
257
+
258
+ ### 2.1 Generate Files (Primary)
259
+
260
+ **Solution file per issue**:
261
+ ```
262
+ .workflow/issues/solutions/{issue-id}.jsonl
263
+ ```
264
+
265
+ Each line is a solution JSON containing tasks. Schema: `cat .claude/workflows/cli-templates/schemas/solution-schema.json`
266
+
267
+ ### 2.2 Return Summary
268
+
269
+ ```json
270
+ {
271
+ "bound": [{ "issue_id": "...", "solution_id": "...", "task_count": N }],
272
+ "pending_selection": [{ "issue_id": "GH-123", "solutions": [{ "id": "SOL-GH-123-1", "description": "...", "task_count": N }] }]
273
+ }
274
+ ```
275
+
276
+ ---
277
+
278
+ ## 3. Quality Standards
279
+
280
+ ### 3.1 Acceptance Criteria
281
+
282
+ | Good | Bad |
283
+ |------|-----|
284
+ | "3 API endpoints: GET, POST, DELETE" | "API works correctly" |
285
+ | "Response time < 200ms p95" | "Good performance" |
286
+ | "All 4 test cases pass" | "Tests pass" |
287
+
288
+ ### 3.2 Validation Checklist
289
+
290
+ - [ ] ACE search performed for each issue
291
+ - [ ] All modification_points verified against codebase
292
+ - [ ] Tasks have 2+ implementation steps
293
+ - [ ] All 5 lifecycle phases present
294
+ - [ ] Quantified acceptance criteria with verification
295
+ - [ ] Dependencies form valid DAG
296
+ - [ ] Commit follows conventional commits
297
+
298
+ ### 3.3 Guidelines
299
+
300
+ **Bash Tool**:
301
+ - Use `run_in_background=false` for all Bash/CLI calls to ensure foreground execution
302
+
303
+ **ALWAYS**:
304
+ 1. **Search Tool Priority**: ACE (`mcp__ace-tool__search_context`) → CCW (`mcp__ccw-tools__smart_search`) / Built-in (`Grep`, `Glob`, `Read`)
305
+ 2. Read schema first: `cat .claude/workflows/cli-templates/schemas/solution-schema.json`
306
+ 2. Use ACE semantic search as PRIMARY exploration tool
307
+ 3. Fetch issue details via `ccw issue status <id> --json`
308
+ 4. Quantify acceptance.criteria with testable conditions
309
+ 5. Validate DAG before output
310
+ 6. Evaluate each solution with `analysis` and `score`
311
+ 7. Write solutions to `.workflow/issues/solutions/{issue-id}.jsonl` (append mode)
312
+ 8. For HIGH complexity: generate 2-3 candidate solutions
313
+ 9. **Solution ID format**: `SOL-{issue-id}-{uid}` where uid is 4 random alphanumeric chars (e.g., `SOL-GH-123-a7x9`)
314
+ 10. **GitHub Reply Task**: If issue has `github_url` or `github_number`, add final task to comment on GitHub issue with completion summary
315
+
316
+ **CONFLICT AVOIDANCE** (for batch processing of similar issues):
317
+ 1. **File isolation**: Each issue's solution should target distinct files when possible
318
+ 2. **Module boundaries**: Prefer solutions that modify different modules/directories
319
+ 3. **Multiple solutions**: When file overlap is unavoidable, generate alternative solutions with different file targets
320
+ 4. **Dependency ordering**: If issues must touch same files, encode execution order via `depends_on`
321
+ 5. **Scope minimization**: Prefer smaller, focused modifications over broad refactoring
322
+
323
+ **NEVER**:
324
+ 1. Execute implementation (return plan only)
325
+ 2. Use vague criteria ("works correctly", "good performance")
326
+ 3. Create circular dependencies
327
+ 4. Generate more than 10 tasks per issue
328
+ 5. Skip bind when `solutions.length === 1` (MUST execute bind command)
329
+
330
+ **OUTPUT**:
331
+ 1. Write solutions to `.workflow/issues/solutions/{issue-id}.jsonl`
332
+ 2. Execute bind or return `pending_selection` based on solution count
333
+ 3. Return JSON: `{ bound: [...], pending_selection: [...] }`