claude-code-workflow 6.3.32 → 6.3.36

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 (483) 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 +68 -6
  5. package/.claude/agents/cli-lite-planning-agent.md +323 -37
  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 +417 -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 +361 -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 +21 -7
  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 +74 -31
  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/issues-jsonl-schema.json +29 -0
  168. package/.claude/workflows/cli-templates/schemas/plan-json-schema.json +200 -0
  169. package/.claude/workflows/cli-templates/schemas/project-guidelines-schema.json +141 -141
  170. package/.claude/workflows/cli-tools-usage.md +113 -117
  171. package/.claude/workflows/coding-philosophy.md +69 -69
  172. package/.claude/workflows/context-tools.md +76 -76
  173. package/.claude/workflows/file-modification.md +64 -64
  174. package/.claude/workflows/review-directory-specification.md +336 -336
  175. package/.claude/workflows/windows-platform.md +19 -19
  176. package/.claude/workflows/workflow-architecture.md +942 -942
  177. package/.codex/prompts/debug-with-file.md +609 -0
  178. package/.codex/prompts/issue-execute.md +176 -70
  179. package/README.md +250 -214
  180. package/ccw/dist/cli.d.ts.map +1 -1
  181. package/ccw/dist/cli.js +15 -0
  182. package/ccw/dist/cli.js.map +1 -1
  183. package/ccw/dist/commands/cli.d.ts +5 -0
  184. package/ccw/dist/commands/cli.d.ts.map +1 -1
  185. package/ccw/dist/commands/cli.js +114 -18
  186. package/ccw/dist/commands/cli.js.map +1 -1
  187. package/ccw/dist/commands/install.d.ts +17 -0
  188. package/ccw/dist/commands/install.d.ts.map +1 -1
  189. package/ccw/dist/commands/install.js +211 -2
  190. package/ccw/dist/commands/install.js.map +1 -1
  191. package/ccw/dist/commands/issue.d.ts.map +1 -1
  192. package/ccw/dist/commands/issue.js +245 -32
  193. package/ccw/dist/commands/issue.js.map +1 -1
  194. package/ccw/dist/commands/uninstall.d.ts.map +1 -1
  195. package/ccw/dist/commands/uninstall.js +22 -1
  196. package/ccw/dist/commands/uninstall.js.map +1 -1
  197. package/ccw/dist/commands/view.d.ts.map +1 -1
  198. package/ccw/dist/commands/view.js +3 -0
  199. package/ccw/dist/commands/view.js.map +1 -1
  200. package/ccw/dist/commands/workflow.d.ts +11 -0
  201. package/ccw/dist/commands/workflow.d.ts.map +1 -0
  202. package/ccw/dist/commands/workflow.js +294 -0
  203. package/ccw/dist/commands/workflow.js.map +1 -0
  204. package/ccw/dist/core/routes/claude-routes.d.ts.map +1 -1
  205. package/ccw/dist/core/routes/claude-routes.js +57 -3
  206. package/ccw/dist/core/routes/claude-routes.js.map +1 -1
  207. package/ccw/dist/core/routes/cli-routes.d.ts +13 -0
  208. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  209. package/ccw/dist/core/routes/cli-routes.js +46 -0
  210. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  211. package/ccw/dist/core/routes/hooks-routes.d.ts.map +1 -1
  212. package/ccw/dist/core/routes/hooks-routes.js +36 -0
  213. package/ccw/dist/core/routes/hooks-routes.js.map +1 -1
  214. package/ccw/dist/core/routes/issue-routes.d.ts.map +1 -1
  215. package/ccw/dist/core/routes/issue-routes.js +211 -29
  216. package/ccw/dist/core/routes/issue-routes.js.map +1 -1
  217. package/ccw/dist/core/routes/mcp-routes.d.ts.map +1 -1
  218. package/ccw/dist/core/routes/mcp-routes.js +4 -1
  219. package/ccw/dist/core/routes/mcp-routes.js.map +1 -1
  220. package/ccw/dist/core/routes/rules-routes.d.ts.map +1 -1
  221. package/ccw/dist/core/routes/rules-routes.js +22 -6
  222. package/ccw/dist/core/routes/rules-routes.js.map +1 -1
  223. package/ccw/dist/core/routes/session-routes.d.ts.map +1 -1
  224. package/ccw/dist/core/routes/session-routes.js +23 -1
  225. package/ccw/dist/core/routes/session-routes.js.map +1 -1
  226. package/ccw/dist/mcp-server/index.js +8 -2
  227. package/ccw/dist/mcp-server/index.js.map +1 -1
  228. package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -1
  229. package/ccw/dist/tools/claude-cli-tools.js +52 -28
  230. package/ccw/dist/tools/claude-cli-tools.js.map +1 -1
  231. package/ccw/dist/tools/cli-executor-core.d.ts.map +1 -1
  232. package/ccw/dist/tools/cli-executor-core.js +33 -8
  233. package/ccw/dist/tools/cli-executor-core.js.map +1 -1
  234. package/ccw/dist/tools/cli-executor-state.d.ts +2 -0
  235. package/ccw/dist/tools/cli-executor-state.d.ts.map +1 -1
  236. package/ccw/dist/tools/cli-executor-state.js.map +1 -1
  237. package/ccw/dist/tools/cli-executor-utils.d.ts +7 -0
  238. package/ccw/dist/tools/cli-executor-utils.d.ts.map +1 -1
  239. package/ccw/dist/tools/cli-executor-utils.js +18 -4
  240. package/ccw/dist/tools/cli-executor-utils.js.map +1 -1
  241. package/ccw/dist/tools/cli-history-store.d.ts +21 -0
  242. package/ccw/dist/tools/cli-history-store.d.ts.map +1 -1
  243. package/ccw/dist/tools/cli-history-store.js +106 -30
  244. package/ccw/dist/tools/cli-history-store.js.map +1 -1
  245. package/ccw/dist/tools/cli-output-converter.d.ts +2 -1
  246. package/ccw/dist/tools/cli-output-converter.d.ts.map +1 -1
  247. package/ccw/dist/tools/cli-output-converter.js +65 -10
  248. package/ccw/dist/tools/cli-output-converter.js.map +1 -1
  249. package/ccw/dist/tools/codex-lens-lsp.d.ts +61 -0
  250. package/ccw/dist/tools/codex-lens-lsp.d.ts.map +1 -0
  251. package/ccw/dist/tools/codex-lens-lsp.js +320 -0
  252. package/ccw/dist/tools/codex-lens-lsp.js.map +1 -0
  253. package/ccw/dist/tools/codex-lens.d.ts.map +1 -1
  254. package/ccw/dist/tools/codex-lens.js +130 -91
  255. package/ccw/dist/tools/codex-lens.js.map +1 -1
  256. package/ccw/dist/tools/index.d.ts.map +1 -1
  257. package/ccw/dist/tools/index.js +4 -0
  258. package/ccw/dist/tools/index.js.map +1 -1
  259. package/ccw/dist/tools/template-discovery.d.ts +85 -0
  260. package/ccw/dist/tools/template-discovery.d.ts.map +1 -0
  261. package/ccw/dist/tools/template-discovery.js +239 -0
  262. package/ccw/dist/tools/template-discovery.js.map +1 -0
  263. package/ccw/dist/tools/vscode-lsp.d.ts +57 -0
  264. package/ccw/dist/tools/vscode-lsp.d.ts.map +1 -0
  265. package/ccw/dist/tools/vscode-lsp.js +250 -0
  266. package/ccw/dist/tools/vscode-lsp.js.map +1 -0
  267. package/ccw/dist/utils/path-resolver.d.ts +16 -2
  268. package/ccw/dist/utils/path-resolver.d.ts.map +1 -1
  269. package/ccw/dist/utils/path-resolver.js +36 -6
  270. package/ccw/dist/utils/path-resolver.js.map +1 -1
  271. package/ccw/dist/utils/path-validator.d.ts +5 -0
  272. package/ccw/dist/utils/path-validator.d.ts.map +1 -1
  273. package/ccw/dist/utils/path-validator.js +16 -5
  274. package/ccw/dist/utils/path-validator.js.map +1 -1
  275. package/ccw/dist/utils/project-root.d.ts +25 -0
  276. package/ccw/dist/utils/project-root.d.ts.map +1 -0
  277. package/ccw/dist/utils/project-root.js +63 -0
  278. package/ccw/dist/utils/project-root.js.map +1 -0
  279. package/ccw/dist/utils/shell-escape.d.ts +47 -3
  280. package/ccw/dist/utils/shell-escape.d.ts.map +1 -1
  281. package/ccw/dist/utils/shell-escape.js +98 -15
  282. package/ccw/dist/utils/shell-escape.js.map +1 -1
  283. package/ccw/dist/utils/update-checker.d.ts +11 -0
  284. package/ccw/dist/utils/update-checker.d.ts.map +1 -0
  285. package/ccw/dist/utils/update-checker.js +167 -0
  286. package/ccw/dist/utils/update-checker.js.map +1 -0
  287. package/ccw/scripts/IMPLEMENTATION-SUMMARY.md +2 -2
  288. package/ccw/scripts/QUICK-REFERENCE.md +1 -1
  289. package/ccw/scripts/README-memory-embedder.md +1 -1
  290. package/ccw/scripts/memory_embedder.py +1 -1
  291. package/ccw/src/cli.ts +16 -0
  292. package/ccw/src/commands/cli.ts +124 -18
  293. package/ccw/src/commands/install.ts +239 -2
  294. package/ccw/src/commands/issue.ts +286 -36
  295. package/ccw/src/commands/uninstall.ts +23 -1
  296. package/ccw/src/commands/view.ts +4 -0
  297. package/ccw/src/commands/workflow.ts +348 -0
  298. package/ccw/src/core/routes/claude-routes.ts +64 -3
  299. package/ccw/src/core/routes/cli-routes.ts +58 -0
  300. package/ccw/src/core/routes/hooks-routes.ts +35 -0
  301. package/ccw/src/core/routes/issue-routes.ts +242 -28
  302. package/ccw/src/core/routes/mcp-routes.ts +6 -2
  303. package/ccw/src/core/routes/rules-routes.ts +24 -6
  304. package/ccw/src/core/routes/session-routes.ts +24 -1
  305. package/ccw/src/mcp-server/index.ts +7 -2
  306. package/ccw/src/templates/dashboard-css/26-claude-manager.css +179 -0
  307. package/ccw/src/templates/dashboard-css/32-issue-manager.css +3587 -3302
  308. package/ccw/src/templates/dashboard-css/33-cli-stream-viewer.css +1 -0
  309. package/ccw/src/templates/dashboard-js/components/cli-history.js +4 -1
  310. package/ccw/src/templates/dashboard-js/components/cli-stream-viewer.js +57 -21
  311. package/ccw/src/templates/dashboard-js/components/hook-manager.js +1492 -1492
  312. package/ccw/src/templates/dashboard-js/components/mcp-manager.js +107 -20
  313. package/ccw/src/templates/dashboard-js/components/version-check.js +135 -1
  314. package/ccw/src/templates/dashboard-js/i18n.js +42 -0
  315. package/ccw/src/templates/dashboard-js/views/claude-manager.js +168 -0
  316. package/ccw/src/templates/dashboard-js/views/cli-manager.js +1 -0
  317. package/ccw/src/templates/dashboard-js/views/issue-manager.js +360 -1
  318. package/ccw/src/templates/dashboard-js/views/lite-tasks.js +3502 -3478
  319. package/ccw/src/templates/dashboard-js/views/mcp-manager.js +16 -0
  320. package/ccw/src/templates/dashboard.html +112 -0
  321. package/ccw/src/tools/claude-cli-tools.ts +54 -28
  322. package/ccw/src/tools/cli-executor-core.ts +36 -8
  323. package/ccw/src/tools/cli-executor-state.ts +2 -0
  324. package/ccw/src/tools/cli-executor-utils.ts +26 -4
  325. package/ccw/src/tools/cli-history-store.ts +122 -31
  326. package/ccw/src/tools/cli-output-converter.ts +76 -12
  327. package/ccw/src/tools/codex-lens-lsp.ts +405 -0
  328. package/ccw/src/tools/codex-lens.ts +143 -93
  329. package/ccw/src/tools/index.ts +4 -0
  330. package/ccw/src/tools/template-discovery.ts +303 -0
  331. package/ccw/src/tools/vscode-lsp.ts +317 -0
  332. package/ccw/src/utils/path-resolver.ts +37 -6
  333. package/ccw/src/utils/path-validator.ts +17 -5
  334. package/ccw/src/utils/project-root.ts +73 -0
  335. package/ccw/src/utils/shell-escape.ts +103 -16
  336. package/ccw/src/utils/update-checker.ts +178 -0
  337. package/codex-lens/pyproject.toml +14 -0
  338. package/codex-lens/src/codexlens/__pycache__/config.cpython-312.pyc +0 -0
  339. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  340. package/codex-lens/src/codexlens/__pycache__/errors.cpython-312.pyc +0 -0
  341. package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
  342. package/codex-lens/src/codexlens/api/__init__.py +88 -0
  343. package/codex-lens/src/codexlens/api/__pycache__/__init__.cpython-312.pyc +0 -0
  344. package/codex-lens/src/codexlens/api/__pycache__/__init__.cpython-313.pyc +0 -0
  345. package/codex-lens/src/codexlens/api/__pycache__/definition.cpython-312.pyc +0 -0
  346. package/codex-lens/src/codexlens/api/__pycache__/definition.cpython-313.pyc +0 -0
  347. package/codex-lens/src/codexlens/api/__pycache__/file_context.cpython-312.pyc +0 -0
  348. package/codex-lens/src/codexlens/api/__pycache__/file_context.cpython-313.pyc +0 -0
  349. package/codex-lens/src/codexlens/api/__pycache__/hover.cpython-312.pyc +0 -0
  350. package/codex-lens/src/codexlens/api/__pycache__/hover.cpython-313.pyc +0 -0
  351. package/codex-lens/src/codexlens/api/__pycache__/models.cpython-312.pyc +0 -0
  352. package/codex-lens/src/codexlens/api/__pycache__/models.cpython-313.pyc +0 -0
  353. package/codex-lens/src/codexlens/api/__pycache__/references.cpython-312.pyc +0 -0
  354. package/codex-lens/src/codexlens/api/__pycache__/references.cpython-313.pyc +0 -0
  355. package/codex-lens/src/codexlens/api/__pycache__/semantic.cpython-312.pyc +0 -0
  356. package/codex-lens/src/codexlens/api/__pycache__/semantic.cpython-313.pyc +0 -0
  357. package/codex-lens/src/codexlens/api/__pycache__/symbols.cpython-312.pyc +0 -0
  358. package/codex-lens/src/codexlens/api/__pycache__/symbols.cpython-313.pyc +0 -0
  359. package/codex-lens/src/codexlens/api/__pycache__/utils.cpython-312.pyc +0 -0
  360. package/codex-lens/src/codexlens/api/__pycache__/utils.cpython-313.pyc +0 -0
  361. package/codex-lens/src/codexlens/api/definition.py +126 -0
  362. package/codex-lens/src/codexlens/api/file_context.py +271 -0
  363. package/codex-lens/src/codexlens/api/hover.py +148 -0
  364. package/codex-lens/src/codexlens/api/models.py +281 -0
  365. package/codex-lens/src/codexlens/api/references.py +345 -0
  366. package/codex-lens/src/codexlens/api/semantic.py +471 -0
  367. package/codex-lens/src/codexlens/api/symbols.py +146 -0
  368. package/codex-lens/src/codexlens/api/utils.py +153 -0
  369. package/codex-lens/src/codexlens/config.py +7 -0
  370. package/codex-lens/src/codexlens/errors.py +4 -0
  371. package/codex-lens/src/codexlens/hybrid_search/__init__.py +28 -0
  372. package/codex-lens/src/codexlens/hybrid_search/__pycache__/__init__.cpython-312.pyc +0 -0
  373. package/codex-lens/src/codexlens/hybrid_search/__pycache__/__init__.cpython-313.pyc +0 -0
  374. package/codex-lens/src/codexlens/hybrid_search/__pycache__/data_structures.cpython-312.pyc +0 -0
  375. package/codex-lens/src/codexlens/hybrid_search/__pycache__/data_structures.cpython-313.pyc +0 -0
  376. package/codex-lens/src/codexlens/hybrid_search/__pycache__/engine.cpython-313.pyc +0 -0
  377. package/codex-lens/src/codexlens/hybrid_search/data_structures.py +602 -0
  378. package/codex-lens/src/codexlens/lsp/__init__.py +34 -0
  379. package/codex-lens/src/codexlens/lsp/__pycache__/__init__.cpython-312.pyc +0 -0
  380. package/codex-lens/src/codexlens/lsp/__pycache__/__init__.cpython-313.pyc +0 -0
  381. package/codex-lens/src/codexlens/lsp/__pycache__/handlers.cpython-313.pyc +0 -0
  382. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_bridge.cpython-312.pyc +0 -0
  383. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_bridge.cpython-313.pyc +0 -0
  384. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_graph_builder.cpython-312.pyc +0 -0
  385. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_graph_builder.cpython-313.pyc +0 -0
  386. package/codex-lens/src/codexlens/lsp/__pycache__/providers.cpython-313.pyc +0 -0
  387. package/codex-lens/src/codexlens/lsp/__pycache__/server.cpython-313.pyc +0 -0
  388. package/codex-lens/src/codexlens/lsp/__pycache__/standalone_manager.cpython-313.pyc +0 -0
  389. package/codex-lens/src/codexlens/lsp/handlers.py +551 -0
  390. package/codex-lens/src/codexlens/lsp/lsp_bridge.py +834 -0
  391. package/codex-lens/src/codexlens/lsp/lsp_graph_builder.py +375 -0
  392. package/codex-lens/src/codexlens/lsp/providers.py +177 -0
  393. package/codex-lens/src/codexlens/lsp/server.py +263 -0
  394. package/codex-lens/src/codexlens/lsp/standalone_manager.py +1159 -0
  395. package/codex-lens/src/codexlens/mcp/__init__.py +20 -0
  396. package/codex-lens/src/codexlens/mcp/__pycache__/__init__.cpython-313.pyc +0 -0
  397. package/codex-lens/src/codexlens/mcp/__pycache__/hooks.cpython-313.pyc +0 -0
  398. package/codex-lens/src/codexlens/mcp/__pycache__/provider.cpython-313.pyc +0 -0
  399. package/codex-lens/src/codexlens/mcp/__pycache__/schema.cpython-313.pyc +0 -0
  400. package/codex-lens/src/codexlens/mcp/hooks.py +170 -0
  401. package/codex-lens/src/codexlens/mcp/provider.py +202 -0
  402. package/codex-lens/src/codexlens/mcp/schema.py +113 -0
  403. package/codex-lens/src/codexlens/search/__init__.py +53 -15
  404. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-312.pyc +0 -0
  405. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
  406. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-312.pyc +0 -0
  407. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  408. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-312.pyc +0 -0
  409. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  410. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-312.pyc +0 -0
  411. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  412. package/codex-lens/src/codexlens/search/association_tree/QUICK_START.md +257 -0
  413. package/codex-lens/src/codexlens/search/association_tree/README.md +188 -0
  414. package/codex-lens/src/codexlens/search/association_tree/__init__.py +21 -0
  415. package/codex-lens/src/codexlens/search/association_tree/__pycache__/__init__.cpython-313.pyc +0 -0
  416. package/codex-lens/src/codexlens/search/association_tree/__pycache__/builder.cpython-313.pyc +0 -0
  417. package/codex-lens/src/codexlens/search/association_tree/__pycache__/data_structures.cpython-313.pyc +0 -0
  418. package/codex-lens/src/codexlens/search/association_tree/__pycache__/deduplicator.cpython-313.pyc +0 -0
  419. package/codex-lens/src/codexlens/search/association_tree/builder.py +450 -0
  420. package/codex-lens/src/codexlens/search/association_tree/data_structures.py +191 -0
  421. package/codex-lens/src/codexlens/search/association_tree/deduplicator.py +301 -0
  422. package/codex-lens/src/codexlens/search/chain_search.py +864 -3
  423. package/codex-lens/src/codexlens/search/clustering/__init__.py +124 -0
  424. package/codex-lens/src/codexlens/search/clustering/__pycache__/__init__.cpython-312.pyc +0 -0
  425. package/codex-lens/src/codexlens/search/clustering/__pycache__/__init__.cpython-313.pyc +0 -0
  426. package/codex-lens/src/codexlens/search/clustering/__pycache__/base.cpython-312.pyc +0 -0
  427. package/codex-lens/src/codexlens/search/clustering/__pycache__/base.cpython-313.pyc +0 -0
  428. package/codex-lens/src/codexlens/search/clustering/__pycache__/dbscan_strategy.cpython-313.pyc +0 -0
  429. package/codex-lens/src/codexlens/search/clustering/__pycache__/factory.cpython-312.pyc +0 -0
  430. package/codex-lens/src/codexlens/search/clustering/__pycache__/factory.cpython-313.pyc +0 -0
  431. package/codex-lens/src/codexlens/search/clustering/__pycache__/frequency_strategy.cpython-312.pyc +0 -0
  432. package/codex-lens/src/codexlens/search/clustering/__pycache__/frequency_strategy.cpython-313.pyc +0 -0
  433. package/codex-lens/src/codexlens/search/clustering/__pycache__/hdbscan_strategy.cpython-313.pyc +0 -0
  434. package/codex-lens/src/codexlens/search/clustering/__pycache__/noop_strategy.cpython-312.pyc +0 -0
  435. package/codex-lens/src/codexlens/search/clustering/__pycache__/noop_strategy.cpython-313.pyc +0 -0
  436. package/codex-lens/src/codexlens/search/clustering/base.py +153 -0
  437. package/codex-lens/src/codexlens/search/clustering/dbscan_strategy.py +197 -0
  438. package/codex-lens/src/codexlens/search/clustering/factory.py +202 -0
  439. package/codex-lens/src/codexlens/search/clustering/frequency_strategy.py +263 -0
  440. package/codex-lens/src/codexlens/search/clustering/hdbscan_strategy.py +153 -0
  441. package/codex-lens/src/codexlens/search/clustering/noop_strategy.py +83 -0
  442. package/codex-lens/src/codexlens/search/hybrid_search.py +194 -2
  443. package/codex-lens/src/codexlens/search/ranking.py +6 -4
  444. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-312.pyc +0 -0
  445. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-312.pyc +0 -0
  446. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
  447. package/codex-lens/src/codexlens/storage/__pycache__/global_index.cpython-312.pyc +0 -0
  448. package/codex-lens/src/codexlens/storage/__pycache__/global_index.cpython-313.pyc +0 -0
  449. package/codex-lens/src/codexlens/storage/dir_index.py +172 -0
  450. package/codex-lens/src/codexlens/storage/global_index.py +33 -0
  451. package/package.json +92 -92
  452. /package/.claude/workflows/cli-templates/prompts/{analysis/02-analyze-code-patterns.txt → analysis-analyze-code-patterns.txt} +0 -0
  453. /package/.claude/workflows/cli-templates/prompts/{analysis/02-analyze-technical-document.txt → analysis-analyze-technical-document.txt} +0 -0
  454. /package/.claude/workflows/cli-templates/prompts/{analysis/01-diagnose-bug-root-cause.txt → analysis-diagnose-bug-root-cause.txt} +0 -0
  455. /package/.claude/workflows/cli-templates/prompts/{development/03-debug-runtime-issues.txt → development-debug-runtime-issues.txt} +0 -0
  456. /package/.claude/workflows/cli-templates/prompts/{development/02-generate-tests.txt → development-generate-tests.txt} +0 -0
  457. /package/.claude/workflows/cli-templates/prompts/{development/02-implement-component-ui.txt → development-implement-component-ui.txt} +0 -0
  458. /package/.claude/workflows/cli-templates/prompts/{development/02-implement-feature.txt → development-implement-feature.txt} +0 -0
  459. /package/.claude/workflows/cli-templates/prompts/{development/02-refactor-codebase.txt → development-refactor-codebase.txt} +0 -0
  460. /package/.claude/workflows/cli-templates/prompts/{documentation/module-readme.txt → documentation-module-readme.txt} +0 -0
  461. /package/.claude/workflows/cli-templates/prompts/{memory/02-document-module-structure.txt → memory-document-module-structure.txt} +0 -0
  462. /package/.claude/workflows/cli-templates/prompts/{planning/02-breakdown-task-steps.txt → planning-breakdown-task-steps.txt} +0 -0
  463. /package/.claude/workflows/cli-templates/prompts/{planning/03-evaluate-concept-feasibility.txt → planning-evaluate-concept-feasibility.txt} +0 -0
  464. /package/.claude/workflows/cli-templates/prompts/{planning/01-plan-architecture-design.txt → planning-plan-architecture-design.txt} +0 -0
  465. /package/.claude/workflows/cli-templates/prompts/{planning/03-plan-migration-strategy.txt → planning-plan-migration-strategy.txt} +0 -0
  466. /package/.claude/workflows/cli-templates/prompts/{rules/rule-api.txt → rules-rule-api.txt} +0 -0
  467. /package/.claude/workflows/cli-templates/prompts/{rules/rule-components.txt → rules-rule-components.txt} +0 -0
  468. /package/.claude/workflows/cli-templates/prompts/{rules/rule-config.txt → rules-rule-config.txt} +0 -0
  469. /package/.claude/workflows/cli-templates/prompts/{rules/rule-core.txt → rules-rule-core.txt} +0 -0
  470. /package/.claude/workflows/cli-templates/prompts/{rules/rule-patterns.txt → rules-rule-patterns.txt} +0 -0
  471. /package/.claude/workflows/cli-templates/prompts/{rules/rule-testing.txt → rules-rule-testing.txt} +0 -0
  472. /package/.claude/workflows/cli-templates/prompts/{rules/tech-rules-agent-prompt.txt → rules-tech-rules-agent-prompt.txt} +0 -0
  473. /package/.claude/workflows/cli-templates/prompts/{tech/tech-module-format.txt → tech-tech-module-format.txt} +0 -0
  474. /package/.claude/workflows/cli-templates/prompts/{tech/tech-skill-index.txt → tech-tech-skill-index.txt} +0 -0
  475. /package/.claude/workflows/cli-templates/prompts/{test/test-concept-analysis.txt → test-test-concept-analysis.txt} +0 -0
  476. /package/.claude/workflows/cli-templates/prompts/{universal/00-universal-creative-style.txt → universal-universal-creative-style.txt} +0 -0
  477. /package/.claude/workflows/cli-templates/prompts/{universal/00-universal-rigorous-style.txt → universal-universal-rigorous-style.txt} +0 -0
  478. /package/.claude/workflows/cli-templates/prompts/{workflow/codex-feasibility-validation.txt → workflow-codex-feasibility-validation.txt} +0 -0
  479. /package/.claude/workflows/cli-templates/prompts/{workflow/gemini-solution-design.txt → workflow-gemini-solution-design.txt} +0 -0
  480. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-aggregation.txt → workflow-skill-aggregation.txt} +0 -0
  481. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-index.txt → workflow-skill-index.txt} +0 -0
  482. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-sessions-timeline.txt → workflow-skill-sessions-timeline.txt} +0 -0
  483. /package/.claude/workflows/cli-templates/prompts/{workflow/task-json-cli-mode.txt → workflow-task-json-cli-mode.txt} +0 -0
@@ -1,317 +1,317 @@
1
- # Action: Diagnose Agent Coordination
2
-
3
- Analyze target skill for agent coordination failures - call chain fragility and result passing issues.
4
-
5
- ## Purpose
6
-
7
- - Detect fragile agent call patterns
8
- - Identify result passing issues
9
- - Find missing error handling in agent calls
10
- - Analyze agent return format consistency
11
-
12
- ## Preconditions
13
-
14
- - [ ] state.status === 'running'
15
- - [ ] state.target_skill.path is set
16
- - [ ] 'agent' in state.focus_areas OR state.focus_areas is empty
17
-
18
- ## Detection Patterns
19
-
20
- ### Pattern 1: Unhandled Agent Failures
21
-
22
- ```regex
23
- # Task calls without try-catch or error handling
24
- /Task\s*\(\s*\{[^}]*\}\s*\)(?![^;]*catch)/
25
- ```
26
-
27
- ### Pattern 2: Missing Return Validation
28
-
29
- ```regex
30
- # Agent result used directly without validation
31
- /const\s+\w+\s*=\s*await?\s*Task\([^)]+\);\s*(?!.*(?:if|try|JSON\.parse))/
32
- ```
33
-
34
- ### Pattern 3: Inconsistent Agent Configuration
35
-
36
- ```regex
37
- # Different agent configurations in same skill
38
- /subagent_type:\s*['"](\w+)['"]/g
39
- ```
40
-
41
- ### Pattern 4: Deeply Nested Agent Calls
42
-
43
- ```regex
44
- # Agent calling another agent (nested)
45
- /Task\s*\([^)]*prompt:[^)]*Task\s*\(/
46
- ```
47
-
48
- ## Execution
49
-
50
- ```javascript
51
- async function execute(state, workDir) {
52
- const skillPath = state.target_skill.path;
53
- const startTime = Date.now();
54
- const issues = [];
55
- const evidence = [];
56
-
57
- console.log(`Diagnosing agent coordination in ${skillPath}...`);
58
-
59
- // 1. Find all Task/agent calls
60
- const allFiles = Glob(`${skillPath}/**/*.md`);
61
- const agentCalls = [];
62
- const agentTypes = new Set();
63
-
64
- for (const file of allFiles) {
65
- const content = Read(file);
66
- const relativePath = file.replace(skillPath + '/', '');
67
-
68
- // Find Task calls
69
- const taskMatches = content.matchAll(/Task\s*\(\s*\{([^}]+)\}/g);
70
- for (const match of taskMatches) {
71
- const config = match[1];
72
-
73
- // Extract agent type
74
- const typeMatch = config.match(/subagent_type:\s*['"]([^'"]+)['"]/);
75
- const agentType = typeMatch ? typeMatch[1] : 'unknown';
76
- agentTypes.add(agentType);
77
-
78
- // Check for error handling context
79
- const hasErrorHandling = /try\s*\{.*Task|\.catch\(|await\s+Task.*\.then/s.test(
80
- content.slice(Math.max(0, match.index - 100), match.index + match[0].length + 100)
81
- );
82
-
83
- // Check for result validation
84
- const hasResultValidation = /JSON\.parse|if\s*\(\s*result|result\s*\?\./s.test(
85
- content.slice(match.index, match.index + match[0].length + 200)
86
- );
87
-
88
- // Check for background execution
89
- const runsInBackground = /run_in_background:\s*true/.test(config);
90
-
91
- agentCalls.push({
92
- file: relativePath,
93
- agentType,
94
- hasErrorHandling,
95
- hasResultValidation,
96
- runsInBackground,
97
- config: config.slice(0, 200)
98
- });
99
- }
100
- }
101
-
102
- // 2. Analyze agent call patterns
103
- const totalCalls = agentCalls.length;
104
- const callsWithoutErrorHandling = agentCalls.filter(c => !c.hasErrorHandling);
105
- const callsWithoutValidation = agentCalls.filter(c => !c.hasResultValidation);
106
-
107
- // Issue: Missing error handling
108
- if (callsWithoutErrorHandling.length > 0) {
109
- issues.push({
110
- id: `AGT-${issues.length + 1}`,
111
- type: 'agent_failure',
112
- severity: callsWithoutErrorHandling.length > 2 ? 'high' : 'medium',
113
- location: { file: 'multiple' },
114
- description: `${callsWithoutErrorHandling.length}/${totalCalls} agent calls lack error handling`,
115
- evidence: callsWithoutErrorHandling.slice(0, 3).map(c =>
116
- `${c.file}: ${c.agentType}`
117
- ),
118
- root_cause: 'Agent failures not caught, may crash workflow',
119
- impact: 'Unhandled agent errors cause cascading failures',
120
- suggested_fix: 'Wrap Task calls in try-catch with graceful fallback'
121
- });
122
- evidence.push({
123
- file: 'multiple',
124
- pattern: 'missing_error_handling',
125
- context: `${callsWithoutErrorHandling.length} calls affected`,
126
- severity: 'high'
127
- });
128
- }
129
-
130
- // Issue: Missing result validation
131
- if (callsWithoutValidation.length > 0) {
132
- issues.push({
133
- id: `AGT-${issues.length + 1}`,
134
- type: 'agent_failure',
135
- severity: 'medium',
136
- location: { file: 'multiple' },
137
- description: `${callsWithoutValidation.length}/${totalCalls} agent calls lack result validation`,
138
- evidence: callsWithoutValidation.slice(0, 3).map(c =>
139
- `${c.file}: ${c.agentType} result not validated`
140
- ),
141
- root_cause: 'Agent results used directly without type checking',
142
- impact: 'Invalid agent output may corrupt state',
143
- suggested_fix: 'Add JSON.parse with try-catch and schema validation'
144
- });
145
- }
146
-
147
- // 3. Check for inconsistent agent types usage
148
- if (agentTypes.size > 3 && state.target_skill.execution_mode === 'autonomous') {
149
- issues.push({
150
- id: `AGT-${issues.length + 1}`,
151
- type: 'agent_failure',
152
- severity: 'low',
153
- location: { file: 'multiple' },
154
- description: `Using ${agentTypes.size} different agent types`,
155
- evidence: [...agentTypes].slice(0, 5),
156
- root_cause: 'Multiple agent types increase coordination complexity',
157
- impact: 'Different agent behaviors may cause inconsistency',
158
- suggested_fix: 'Standardize on fewer agent types with clear roles'
159
- });
160
- }
161
-
162
- // 4. Check for nested agent calls
163
- for (const file of allFiles) {
164
- const content = Read(file);
165
- const relativePath = file.replace(skillPath + '/', '');
166
-
167
- // Detect nested Task calls
168
- const hasNestedTask = /Task\s*\([^)]*prompt:[^)]*Task\s*\(/s.test(content);
169
-
170
- if (hasNestedTask) {
171
- issues.push({
172
- id: `AGT-${issues.length + 1}`,
173
- type: 'agent_failure',
174
- severity: 'high',
175
- location: { file: relativePath },
176
- description: 'Nested agent calls detected',
177
- evidence: ['Agent prompt contains another Task call'],
178
- root_cause: 'Agent calls another agent, creating deep nesting',
179
- impact: 'Context explosion, hard to debug, unpredictable behavior',
180
- suggested_fix: 'Flatten agent calls, use orchestrator to coordinate'
181
- });
182
- }
183
- }
184
-
185
- // 5. Check SKILL.md for agent configuration consistency
186
- const skillMd = Read(`${skillPath}/SKILL.md`);
187
-
188
- // Check if allowed-tools includes Task
189
- const allowedTools = skillMd.match(/allowed-tools:\s*([^\n]+)/i);
190
- if (allowedTools && !allowedTools[1].includes('Task') && totalCalls > 0) {
191
- issues.push({
192
- id: `AGT-${issues.length + 1}`,
193
- type: 'agent_failure',
194
- severity: 'medium',
195
- location: { file: 'SKILL.md' },
196
- description: 'Task tool used but not declared in allowed-tools',
197
- evidence: [`${totalCalls} Task calls found, but Task not in allowed-tools`],
198
- root_cause: 'Tool declaration mismatch',
199
- impact: 'May cause runtime permission issues',
200
- suggested_fix: 'Add Task to allowed-tools in SKILL.md front matter'
201
- });
202
- }
203
-
204
- // 6. Check for agent result format consistency
205
- const returnFormats = new Set();
206
- for (const file of allFiles) {
207
- const content = Read(file);
208
-
209
- // Look for return format definitions
210
- const returnMatch = content.match(/\[RETURN\][^[]*|return\s*\{[^}]+\}/gi);
211
- if (returnMatch) {
212
- returnMatch.forEach(r => {
213
- const format = r.includes('JSON') ? 'json' :
214
- r.includes('summary') ? 'summary' :
215
- r.includes('file') ? 'file_path' : 'other';
216
- returnFormats.add(format);
217
- });
218
- }
219
- }
220
-
221
- if (returnFormats.size > 2) {
222
- issues.push({
223
- id: `AGT-${issues.length + 1}`,
224
- type: 'agent_failure',
225
- severity: 'medium',
226
- location: { file: 'multiple' },
227
- description: 'Inconsistent agent return formats',
228
- evidence: [...returnFormats],
229
- root_cause: 'Different agents return data in different formats',
230
- impact: 'Orchestrator must handle multiple format types',
231
- suggested_fix: 'Standardize return format: {status, output_file, summary}'
232
- });
233
- }
234
-
235
- // 7. Calculate severity
236
- const criticalCount = issues.filter(i => i.severity === 'critical').length;
237
- const highCount = issues.filter(i => i.severity === 'high').length;
238
- const severity = criticalCount > 0 ? 'critical' :
239
- highCount > 1 ? 'high' :
240
- highCount > 0 ? 'medium' :
241
- issues.length > 0 ? 'low' : 'none';
242
-
243
- // 8. Write diagnosis result
244
- const diagnosisResult = {
245
- status: 'completed',
246
- issues_found: issues.length,
247
- severity: severity,
248
- execution_time_ms: Date.now() - startTime,
249
- details: {
250
- patterns_checked: [
251
- 'error_handling',
252
- 'result_validation',
253
- 'agent_type_consistency',
254
- 'nested_calls',
255
- 'return_format_consistency'
256
- ],
257
- patterns_matched: evidence.map(e => e.pattern),
258
- evidence: evidence,
259
- agent_analysis: {
260
- total_agent_calls: totalCalls,
261
- unique_agent_types: agentTypes.size,
262
- calls_without_error_handling: callsWithoutErrorHandling.length,
263
- calls_without_validation: callsWithoutValidation.length,
264
- agent_types_used: [...agentTypes]
265
- },
266
- recommendations: [
267
- callsWithoutErrorHandling.length > 0
268
- ? 'Add try-catch to all Task calls' : null,
269
- callsWithoutValidation.length > 0
270
- ? 'Add result validation with JSON.parse and schema check' : null,
271
- agentTypes.size > 3
272
- ? 'Consolidate agent types for consistency' : null
273
- ].filter(Boolean)
274
- }
275
- };
276
-
277
- Write(`${workDir}/diagnosis/agent-diagnosis.json`,
278
- JSON.stringify(diagnosisResult, null, 2));
279
-
280
- return {
281
- stateUpdates: {
282
- 'diagnosis.agent': diagnosisResult,
283
- issues: [...state.issues, ...issues]
284
- },
285
- outputFiles: [`${workDir}/diagnosis/agent-diagnosis.json`],
286
- summary: `Agent diagnosis: ${issues.length} issues found (severity: ${severity})`
287
- };
288
- }
289
- ```
290
-
291
- ## State Updates
292
-
293
- ```javascript
294
- return {
295
- stateUpdates: {
296
- 'diagnosis.agent': {
297
- status: 'completed',
298
- issues_found: <count>,
299
- severity: '<critical|high|medium|low|none>',
300
- // ... full diagnosis result
301
- },
302
- issues: [...existingIssues, ...newIssues]
303
- }
304
- };
305
- ```
306
-
307
- ## Error Handling
308
-
309
- | Error Type | Recovery |
310
- |------------|----------|
311
- | Regex match error | Use simpler patterns |
312
- | File access error | Skip and continue |
313
-
314
- ## Next Actions
315
-
316
- - Success: action-generate-report
317
- - Skipped: If 'agent' not in focus_areas
1
+ # Action: Diagnose Agent Coordination
2
+
3
+ Analyze target skill for agent coordination failures - call chain fragility and result passing issues.
4
+
5
+ ## Purpose
6
+
7
+ - Detect fragile agent call patterns
8
+ - Identify result passing issues
9
+ - Find missing error handling in agent calls
10
+ - Analyze agent return format consistency
11
+
12
+ ## Preconditions
13
+
14
+ - [ ] state.status === 'running'
15
+ - [ ] state.target_skill.path is set
16
+ - [ ] 'agent' in state.focus_areas OR state.focus_areas is empty
17
+
18
+ ## Detection Patterns
19
+
20
+ ### Pattern 1: Unhandled Agent Failures
21
+
22
+ ```regex
23
+ # Task calls without try-catch or error handling
24
+ /Task\s*\(\s*\{[^}]*\}\s*\)(?![^;]*catch)/
25
+ ```
26
+
27
+ ### Pattern 2: Missing Return Validation
28
+
29
+ ```regex
30
+ # Agent result used directly without validation
31
+ /const\s+\w+\s*=\s*await?\s*Task\([^)]+\);\s*(?!.*(?:if|try|JSON\.parse))/
32
+ ```
33
+
34
+ ### Pattern 3: Inconsistent Agent Configuration
35
+
36
+ ```regex
37
+ # Different agent configurations in same skill
38
+ /subagent_type:\s*['"](\w+)['"]/g
39
+ ```
40
+
41
+ ### Pattern 4: Deeply Nested Agent Calls
42
+
43
+ ```regex
44
+ # Agent calling another agent (nested)
45
+ /Task\s*\([^)]*prompt:[^)]*Task\s*\(/
46
+ ```
47
+
48
+ ## Execution
49
+
50
+ ```javascript
51
+ async function execute(state, workDir) {
52
+ const skillPath = state.target_skill.path;
53
+ const startTime = Date.now();
54
+ const issues = [];
55
+ const evidence = [];
56
+
57
+ console.log(`Diagnosing agent coordination in ${skillPath}...`);
58
+
59
+ // 1. Find all Task/agent calls
60
+ const allFiles = Glob(`${skillPath}/**/*.md`);
61
+ const agentCalls = [];
62
+ const agentTypes = new Set();
63
+
64
+ for (const file of allFiles) {
65
+ const content = Read(file);
66
+ const relativePath = file.replace(skillPath + '/', '');
67
+
68
+ // Find Task calls
69
+ const taskMatches = content.matchAll(/Task\s*\(\s*\{([^}]+)\}/g);
70
+ for (const match of taskMatches) {
71
+ const config = match[1];
72
+
73
+ // Extract agent type
74
+ const typeMatch = config.match(/subagent_type:\s*['"]([^'"]+)['"]/);
75
+ const agentType = typeMatch ? typeMatch[1] : 'unknown';
76
+ agentTypes.add(agentType);
77
+
78
+ // Check for error handling context
79
+ const hasErrorHandling = /try\s*\{.*Task|\.catch\(|await\s+Task.*\.then/s.test(
80
+ content.slice(Math.max(0, match.index - 100), match.index + match[0].length + 100)
81
+ );
82
+
83
+ // Check for result validation
84
+ const hasResultValidation = /JSON\.parse|if\s*\(\s*result|result\s*\?\./s.test(
85
+ content.slice(match.index, match.index + match[0].length + 200)
86
+ );
87
+
88
+ // Check for background execution
89
+ const runsInBackground = /run_in_background:\s*true/.test(config);
90
+
91
+ agentCalls.push({
92
+ file: relativePath,
93
+ agentType,
94
+ hasErrorHandling,
95
+ hasResultValidation,
96
+ runsInBackground,
97
+ config: config.slice(0, 200)
98
+ });
99
+ }
100
+ }
101
+
102
+ // 2. Analyze agent call patterns
103
+ const totalCalls = agentCalls.length;
104
+ const callsWithoutErrorHandling = agentCalls.filter(c => !c.hasErrorHandling);
105
+ const callsWithoutValidation = agentCalls.filter(c => !c.hasResultValidation);
106
+
107
+ // Issue: Missing error handling
108
+ if (callsWithoutErrorHandling.length > 0) {
109
+ issues.push({
110
+ id: `AGT-${issues.length + 1}`,
111
+ type: 'agent_failure',
112
+ severity: callsWithoutErrorHandling.length > 2 ? 'high' : 'medium',
113
+ location: { file: 'multiple' },
114
+ description: `${callsWithoutErrorHandling.length}/${totalCalls} agent calls lack error handling`,
115
+ evidence: callsWithoutErrorHandling.slice(0, 3).map(c =>
116
+ `${c.file}: ${c.agentType}`
117
+ ),
118
+ root_cause: 'Agent failures not caught, may crash workflow',
119
+ impact: 'Unhandled agent errors cause cascading failures',
120
+ suggested_fix: 'Wrap Task calls in try-catch with graceful fallback'
121
+ });
122
+ evidence.push({
123
+ file: 'multiple',
124
+ pattern: 'missing_error_handling',
125
+ context: `${callsWithoutErrorHandling.length} calls affected`,
126
+ severity: 'high'
127
+ });
128
+ }
129
+
130
+ // Issue: Missing result validation
131
+ if (callsWithoutValidation.length > 0) {
132
+ issues.push({
133
+ id: `AGT-${issues.length + 1}`,
134
+ type: 'agent_failure',
135
+ severity: 'medium',
136
+ location: { file: 'multiple' },
137
+ description: `${callsWithoutValidation.length}/${totalCalls} agent calls lack result validation`,
138
+ evidence: callsWithoutValidation.slice(0, 3).map(c =>
139
+ `${c.file}: ${c.agentType} result not validated`
140
+ ),
141
+ root_cause: 'Agent results used directly without type checking',
142
+ impact: 'Invalid agent output may corrupt state',
143
+ suggested_fix: 'Add JSON.parse with try-catch and schema validation'
144
+ });
145
+ }
146
+
147
+ // 3. Check for inconsistent agent types usage
148
+ if (agentTypes.size > 3 && state.target_skill.execution_mode === 'autonomous') {
149
+ issues.push({
150
+ id: `AGT-${issues.length + 1}`,
151
+ type: 'agent_failure',
152
+ severity: 'low',
153
+ location: { file: 'multiple' },
154
+ description: `Using ${agentTypes.size} different agent types`,
155
+ evidence: [...agentTypes].slice(0, 5),
156
+ root_cause: 'Multiple agent types increase coordination complexity',
157
+ impact: 'Different agent behaviors may cause inconsistency',
158
+ suggested_fix: 'Standardize on fewer agent types with clear roles'
159
+ });
160
+ }
161
+
162
+ // 4. Check for nested agent calls
163
+ for (const file of allFiles) {
164
+ const content = Read(file);
165
+ const relativePath = file.replace(skillPath + '/', '');
166
+
167
+ // Detect nested Task calls
168
+ const hasNestedTask = /Task\s*\([^)]*prompt:[^)]*Task\s*\(/s.test(content);
169
+
170
+ if (hasNestedTask) {
171
+ issues.push({
172
+ id: `AGT-${issues.length + 1}`,
173
+ type: 'agent_failure',
174
+ severity: 'high',
175
+ location: { file: relativePath },
176
+ description: 'Nested agent calls detected',
177
+ evidence: ['Agent prompt contains another Task call'],
178
+ root_cause: 'Agent calls another agent, creating deep nesting',
179
+ impact: 'Context explosion, hard to debug, unpredictable behavior',
180
+ suggested_fix: 'Flatten agent calls, use orchestrator to coordinate'
181
+ });
182
+ }
183
+ }
184
+
185
+ // 5. Check SKILL.md for agent configuration consistency
186
+ const skillMd = Read(`${skillPath}/SKILL.md`);
187
+
188
+ // Check if allowed-tools includes Task
189
+ const allowedTools = skillMd.match(/allowed-tools:\s*([^\n]+)/i);
190
+ if (allowedTools && !allowedTools[1].includes('Task') && totalCalls > 0) {
191
+ issues.push({
192
+ id: `AGT-${issues.length + 1}`,
193
+ type: 'agent_failure',
194
+ severity: 'medium',
195
+ location: { file: 'SKILL.md' },
196
+ description: 'Task tool used but not declared in allowed-tools',
197
+ evidence: [`${totalCalls} Task calls found, but Task not in allowed-tools`],
198
+ root_cause: 'Tool declaration mismatch',
199
+ impact: 'May cause runtime permission issues',
200
+ suggested_fix: 'Add Task to allowed-tools in SKILL.md front matter'
201
+ });
202
+ }
203
+
204
+ // 6. Check for agent result format consistency
205
+ const returnFormats = new Set();
206
+ for (const file of allFiles) {
207
+ const content = Read(file);
208
+
209
+ // Look for return format definitions
210
+ const returnMatch = content.match(/\[RETURN\][^[]*|return\s*\{[^}]+\}/gi);
211
+ if (returnMatch) {
212
+ returnMatch.forEach(r => {
213
+ const format = r.includes('JSON') ? 'json' :
214
+ r.includes('summary') ? 'summary' :
215
+ r.includes('file') ? 'file_path' : 'other';
216
+ returnFormats.add(format);
217
+ });
218
+ }
219
+ }
220
+
221
+ if (returnFormats.size > 2) {
222
+ issues.push({
223
+ id: `AGT-${issues.length + 1}`,
224
+ type: 'agent_failure',
225
+ severity: 'medium',
226
+ location: { file: 'multiple' },
227
+ description: 'Inconsistent agent return formats',
228
+ evidence: [...returnFormats],
229
+ root_cause: 'Different agents return data in different formats',
230
+ impact: 'Orchestrator must handle multiple format types',
231
+ suggested_fix: 'Standardize return format: {status, output_file, summary}'
232
+ });
233
+ }
234
+
235
+ // 7. Calculate severity
236
+ const criticalCount = issues.filter(i => i.severity === 'critical').length;
237
+ const highCount = issues.filter(i => i.severity === 'high').length;
238
+ const severity = criticalCount > 0 ? 'critical' :
239
+ highCount > 1 ? 'high' :
240
+ highCount > 0 ? 'medium' :
241
+ issues.length > 0 ? 'low' : 'none';
242
+
243
+ // 8. Write diagnosis result
244
+ const diagnosisResult = {
245
+ status: 'completed',
246
+ issues_found: issues.length,
247
+ severity: severity,
248
+ execution_time_ms: Date.now() - startTime,
249
+ details: {
250
+ patterns_checked: [
251
+ 'error_handling',
252
+ 'result_validation',
253
+ 'agent_type_consistency',
254
+ 'nested_calls',
255
+ 'return_format_consistency'
256
+ ],
257
+ patterns_matched: evidence.map(e => e.pattern),
258
+ evidence: evidence,
259
+ agent_analysis: {
260
+ total_agent_calls: totalCalls,
261
+ unique_agent_types: agentTypes.size,
262
+ calls_without_error_handling: callsWithoutErrorHandling.length,
263
+ calls_without_validation: callsWithoutValidation.length,
264
+ agent_types_used: [...agentTypes]
265
+ },
266
+ recommendations: [
267
+ callsWithoutErrorHandling.length > 0
268
+ ? 'Add try-catch to all Task calls' : null,
269
+ callsWithoutValidation.length > 0
270
+ ? 'Add result validation with JSON.parse and schema check' : null,
271
+ agentTypes.size > 3
272
+ ? 'Consolidate agent types for consistency' : null
273
+ ].filter(Boolean)
274
+ }
275
+ };
276
+
277
+ Write(`${workDir}/diagnosis/agent-diagnosis.json`,
278
+ JSON.stringify(diagnosisResult, null, 2));
279
+
280
+ return {
281
+ stateUpdates: {
282
+ 'diagnosis.agent': diagnosisResult,
283
+ issues: [...state.issues, ...issues]
284
+ },
285
+ outputFiles: [`${workDir}/diagnosis/agent-diagnosis.json`],
286
+ summary: `Agent diagnosis: ${issues.length} issues found (severity: ${severity})`
287
+ };
288
+ }
289
+ ```
290
+
291
+ ## State Updates
292
+
293
+ ```javascript
294
+ return {
295
+ stateUpdates: {
296
+ 'diagnosis.agent': {
297
+ status: 'completed',
298
+ issues_found: <count>,
299
+ severity: '<critical|high|medium|low|none>',
300
+ // ... full diagnosis result
301
+ },
302
+ issues: [...existingIssues, ...newIssues]
303
+ }
304
+ };
305
+ ```
306
+
307
+ ## Error Handling
308
+
309
+ | Error Type | Recovery |
310
+ |------------|----------|
311
+ | Regex match error | Use simpler patterns |
312
+ | File access error | Skip and continue |
313
+
314
+ ## Next Actions
315
+
316
+ - Success: action-generate-report
317
+ - Skipped: If 'agent' not in focus_areas