claude-code-workflow 6.3.31 → 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 (492) hide show
  1. package/.claude/CLAUDE.md +7 -3
  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/clean.md +3 -3
  49. package/.claude/commands/workflow/debug-with-file.md +666 -0
  50. package/.claude/commands/workflow/debug.md +327 -327
  51. package/.claude/commands/workflow/execute.md +498 -498
  52. package/.claude/commands/workflow/init.md +25 -12
  53. package/.claude/commands/workflow/lite-execute.md +25 -22
  54. package/.claude/commands/workflow/lite-fix.md +631 -631
  55. package/.claude/commands/workflow/lite-lite-lite.md +39 -11
  56. package/.claude/commands/workflow/lite-plan.md +4 -2
  57. package/.claude/commands/workflow/multi-cli-plan.md +97 -39
  58. package/.claude/commands/workflow/plan.md +551 -551
  59. package/.claude/commands/workflow/replan.md +515 -515
  60. package/.claude/commands/workflow/review-fix.md +610 -610
  61. package/.claude/commands/workflow/review-module-cycle.md +771 -771
  62. package/.claude/commands/workflow/review-session-cycle.md +782 -782
  63. package/.claude/commands/workflow/review.md +322 -322
  64. package/.claude/commands/workflow/session/complete.md +31 -4
  65. package/.claude/commands/workflow/session/list.md +95 -95
  66. package/.claude/commands/workflow/session/resume.md +60 -60
  67. package/.claude/commands/workflow/session/solidify.md +299 -299
  68. package/.claude/commands/workflow/session/start.md +1 -1
  69. package/.claude/commands/workflow/tdd-plan.md +597 -460
  70. package/.claude/commands/workflow/test-cycle-execute.md +504 -504
  71. package/.claude/commands/workflow/test-fix-gen.md +699 -699
  72. package/.claude/commands/workflow/tools/conflict-resolution.md +2 -2
  73. package/.claude/commands/workflow/tools/context-gather.md +2 -2
  74. package/.claude/commands/workflow/tools/task-generate-tdd.md +517 -517
  75. package/.claude/commands/workflow/tools/tdd-coverage-analysis.md +309 -309
  76. package/.claude/commands/workflow/tools/test-concept-enhanced.md +1 -1
  77. package/.claude/commands/workflow/tools/test-context-gather.md +235 -235
  78. package/.claude/commands/workflow/tools/test-task-generate.md +255 -255
  79. package/.claude/commands/workflow/ui-design/animation-extract.md +1150 -1150
  80. package/.claude/commands/workflow/ui-design/design-sync.md +454 -454
  81. package/.claude/commands/workflow/ui-design/explore-auto.md +678 -678
  82. package/.claude/commands/workflow/ui-design/imitate-auto.md +745 -745
  83. package/.claude/commands/workflow/ui-design/layout-extract.md +788 -788
  84. package/.claude/commands/workflow/ui-design/reference-page-generator.md +356 -356
  85. package/.claude/commands/workflow/ui-design/style-extract.md +773 -773
  86. package/.claude/skills/ccw/SKILL.md +522 -352
  87. package/.claude/skills/ccw/command.json +641 -547
  88. package/.claude/skills/ccw-help/SKILL.md +116 -116
  89. package/.claude/skills/ccw-help/command.json +520 -511
  90. package/.claude/skills/copyright-docs/phases/01.5-project-exploration.md +150 -150
  91. package/.claude/skills/copyright-docs/phases/02.5-consolidation.md +192 -192
  92. package/.claude/skills/copyright-docs/templates/agent-base.md +200 -200
  93. package/.claude/skills/project-analyze/phases/03.5-consolidation.md +233 -233
  94. package/.claude/skills/project-analyze/specs/writing-style.md +152 -152
  95. package/.claude/skills/review-code/phases/state-manager.md +752 -752
  96. package/.claude/skills/review-code/specs/rules/index.md +140 -140
  97. package/.claude/skills/skill-generator/specs/cli-integration.md +13 -19
  98. package/.claude/skills/skill-generator/specs/scripting-integration.md +265 -265
  99. package/.claude/skills/skill-generator/templates/code-analysis-action.md +503 -503
  100. package/.claude/skills/skill-generator/templates/llm-action.md +355 -355
  101. package/.claude/skills/skill-generator/templates/script-bash.md +277 -277
  102. package/.claude/skills/skill-generator/templates/script-python.md +198 -198
  103. package/.claude/skills/skill-generator/templates/skill-md.md +235 -235
  104. package/.claude/skills/skill-tuning/SKILL.md +303 -303
  105. package/.claude/skills/skill-tuning/phases/actions/action-abort.md +164 -164
  106. package/.claude/skills/skill-tuning/phases/actions/action-apply-fix.md +206 -206
  107. package/.claude/skills/skill-tuning/phases/actions/action-complete.md +195 -195
  108. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-agent.md +317 -317
  109. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-context.md +243 -243
  110. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-dataflow.md +318 -318
  111. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-memory.md +269 -269
  112. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-token-consumption.md +200 -200
  113. package/.claude/skills/skill-tuning/phases/actions/action-gemini-analysis.md +322 -322
  114. package/.claude/skills/skill-tuning/phases/actions/action-generate-report.md +228 -228
  115. package/.claude/skills/skill-tuning/phases/actions/action-init.md +149 -149
  116. package/.claude/skills/skill-tuning/phases/actions/action-propose-fixes.md +317 -317
  117. package/.claude/skills/skill-tuning/phases/actions/action-verify.md +222 -222
  118. package/.claude/skills/skill-tuning/phases/orchestrator.md +377 -377
  119. package/.claude/skills/skill-tuning/phases/state-schema.md +378 -378
  120. package/.claude/skills/skill-tuning/specs/problem-taxonomy.md +318 -318
  121. package/.claude/skills/skill-tuning/specs/quality-gates.md +263 -263
  122. package/.claude/skills/skill-tuning/specs/tuning-strategies.md +1537 -1537
  123. package/.claude/skills/skill-tuning/templates/diagnosis-report.md +153 -153
  124. package/.claude/skills/skill-tuning/templates/fix-proposal.md +204 -204
  125. package/.claude/skills/software-manual/SKILL.md +184 -184
  126. package/.claude/skills/software-manual/phases/01-requirements-discovery.md +162 -162
  127. package/.claude/skills/software-manual/phases/02-project-exploration.md +101 -101
  128. package/.claude/skills/software-manual/phases/03-parallel-analysis.md +183 -183
  129. package/.claude/skills/software-manual/phases/03.5-consolidation.md +82 -82
  130. package/.claude/skills/software-manual/phases/04-screenshot-capture.md +89 -89
  131. package/.claude/skills/software-manual/phases/05-html-assembly.md +132 -132
  132. package/.claude/skills/software-manual/phases/06-iterative-refinement.md +259 -259
  133. package/.claude/skills/software-manual/scripts/screenshot-helper.md +447 -447
  134. package/.claude/skills/software-manual/scripts/swagger-runner.md +419 -419
  135. package/.claude/skills/software-manual/scripts/typedoc-runner.md +357 -357
  136. package/.claude/skills/software-manual/specs/html-template.md +325 -325
  137. package/.claude/skills/software-manual/specs/quality-standards.md +253 -253
  138. package/.claude/skills/software-manual/specs/writing-style.md +298 -298
  139. package/.claude/skills/text-formatter/SKILL.md +196 -196
  140. package/.claude/skills/text-formatter/phases/01-input-collection.md +111 -111
  141. package/.claude/skills/text-formatter/phases/02-content-analysis.md +248 -248
  142. package/.claude/skills/text-formatter/phases/03-format-transform.md +245 -245
  143. package/.claude/skills/text-formatter/phases/04-output-preview.md +183 -183
  144. package/.claude/skills/text-formatter/specs/callout-types.md +293 -293
  145. package/.claude/skills/text-formatter/specs/element-mapping.md +226 -226
  146. package/.claude/skills/text-formatter/specs/format-rules.md +273 -273
  147. package/.claude/skills/text-formatter/templates/bbcode-template.md +350 -350
  148. package/.claude/workflows/chinese-response.md +25 -25
  149. package/.claude/workflows/cli-templates/memory/style-skill-memory/skill-md-template.md +299 -299
  150. package/.claude/workflows/cli-templates/planning-roles/product-owner.md +261 -261
  151. package/.claude/workflows/cli-templates/prompts/{analysis/03-analyze-performance.txt → analysis-analyze-performance.txt} +29 -29
  152. package/.claude/workflows/cli-templates/prompts/{analysis/03-assess-security-risks.txt → analysis-assess-security-risks.txt} +29 -29
  153. package/.claude/workflows/cli-templates/prompts/{analysis/02-review-architecture.txt → analysis-review-architecture.txt} +29 -29
  154. package/.claude/workflows/cli-templates/prompts/{analysis/02-review-code-quality.txt → analysis-review-code-quality.txt} +28 -28
  155. package/.claude/workflows/cli-templates/prompts/{analysis/03-review-quality-standards.txt → analysis-review-quality-standards.txt} +29 -29
  156. package/.claude/workflows/cli-templates/prompts/{analysis/01-trace-code-execution.txt → analysis-trace-code-execution.txt} +115 -115
  157. package/.claude/workflows/cli-templates/prompts/{documentation/api.txt → documentation-api.txt} +14 -14
  158. package/.claude/workflows/cli-templates/prompts/{documentation/folder-navigation.txt → documentation-folder-navigation.txt} +26 -26
  159. package/.claude/workflows/cli-templates/prompts/{documentation/project-architecture.txt → documentation-project-architecture.txt} +40 -40
  160. package/.claude/workflows/cli-templates/prompts/{documentation/project-examples.txt → documentation-project-examples.txt} +34 -34
  161. package/.claude/workflows/cli-templates/prompts/{documentation/project-readme.txt → documentation-project-readme.txt} +34 -34
  162. package/.claude/workflows/cli-templates/prompts/{documentation/swagger-api.txt → documentation-swagger-api.txt} +266 -266
  163. package/.claude/workflows/cli-templates/prompts/{planning/02-design-component-spec.txt → planning-design-component-spec.txt} +28 -28
  164. package/.claude/workflows/cli-templates/prompts/{verification/codex-technical.txt → verification-codex-technical.txt} +28 -28
  165. package/.claude/workflows/cli-templates/prompts/{verification/cross-validation.txt → verification-cross-validation.txt} +28 -28
  166. package/.claude/workflows/cli-templates/prompts/{verification/gemini-strategic.txt → verification-gemini-strategic.txt} +27 -27
  167. package/.claude/workflows/cli-templates/prompts/{workflow/analysis-results-structure.txt → workflow-analysis-results-structure.txt} +224 -224
  168. package/.claude/workflows/cli-templates/prompts/{workflow/impl-plan-template.txt → workflow-impl-plan-template.txt} +286 -286
  169. package/.claude/workflows/cli-templates/prompts/{workflow/skill-conflict-patterns.txt → workflow-skill-conflict-patterns.txt} +2 -2
  170. package/.claude/workflows/cli-templates/prompts/{workflow/skill-lessons-learned.txt → workflow-skill-lessons-learned.txt} +2 -2
  171. package/.claude/workflows/cli-templates/prompts/{workflow/task-json-agent-mode.txt → workflow-task-json-agent-mode.txt} +123 -123
  172. package/.claude/workflows/cli-templates/schemas/project-guidelines-schema.json +141 -0
  173. package/.claude/workflows/cli-templates/schemas/{project-json-schema.json → project-tech-schema.json} +2 -2
  174. package/.claude/workflows/cli-tools-usage.md +135 -115
  175. package/.claude/workflows/coding-philosophy.md +69 -69
  176. package/.claude/workflows/context-tools.md +76 -76
  177. package/.claude/workflows/file-modification.md +64 -64
  178. package/.claude/workflows/review-directory-specification.md +336 -336
  179. package/.claude/workflows/windows-platform.md +19 -19
  180. package/.claude/workflows/workflow-architecture.md +942 -942
  181. package/.codex/prompts/issue-execute.md +176 -70
  182. package/README.md +250 -214
  183. package/ccw/dist/cli.d.ts.map +1 -1
  184. package/ccw/dist/cli.js +15 -0
  185. package/ccw/dist/cli.js.map +1 -1
  186. package/ccw/dist/commands/cli.d.ts +5 -0
  187. package/ccw/dist/commands/cli.d.ts.map +1 -1
  188. package/ccw/dist/commands/cli.js +117 -20
  189. package/ccw/dist/commands/cli.js.map +1 -1
  190. package/ccw/dist/commands/install.d.ts +17 -0
  191. package/ccw/dist/commands/install.d.ts.map +1 -1
  192. package/ccw/dist/commands/install.js +211 -2
  193. package/ccw/dist/commands/install.js.map +1 -1
  194. package/ccw/dist/commands/issue.d.ts.map +1 -1
  195. package/ccw/dist/commands/issue.js +208 -28
  196. package/ccw/dist/commands/issue.js.map +1 -1
  197. package/ccw/dist/commands/uninstall.d.ts.map +1 -1
  198. package/ccw/dist/commands/uninstall.js +22 -1
  199. package/ccw/dist/commands/uninstall.js.map +1 -1
  200. package/ccw/dist/commands/view.d.ts.map +1 -1
  201. package/ccw/dist/commands/view.js +3 -0
  202. package/ccw/dist/commands/view.js.map +1 -1
  203. package/ccw/dist/commands/workflow.d.ts +11 -0
  204. package/ccw/dist/commands/workflow.d.ts.map +1 -0
  205. package/ccw/dist/commands/workflow.js +294 -0
  206. package/ccw/dist/commands/workflow.js.map +1 -0
  207. package/ccw/dist/core/data-aggregator.d.ts +13 -2
  208. package/ccw/dist/core/data-aggregator.d.ts.map +1 -1
  209. package/ccw/dist/core/data-aggregator.js +10 -16
  210. package/ccw/dist/core/data-aggregator.js.map +1 -1
  211. package/ccw/dist/core/routes/claude-routes.d.ts.map +1 -1
  212. package/ccw/dist/core/routes/claude-routes.js +57 -3
  213. package/ccw/dist/core/routes/claude-routes.js.map +1 -1
  214. package/ccw/dist/core/routes/cli-routes.d.ts +13 -0
  215. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  216. package/ccw/dist/core/routes/cli-routes.js +46 -0
  217. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  218. package/ccw/dist/core/routes/help-routes.d.ts.map +1 -1
  219. package/ccw/dist/core/routes/help-routes.js +156 -58
  220. package/ccw/dist/core/routes/help-routes.js.map +1 -1
  221. package/ccw/dist/core/routes/hooks-routes.d.ts.map +1 -1
  222. package/ccw/dist/core/routes/hooks-routes.js +33 -0
  223. package/ccw/dist/core/routes/hooks-routes.js.map +1 -1
  224. package/ccw/dist/core/routes/issue-routes.d.ts.map +1 -1
  225. package/ccw/dist/core/routes/issue-routes.js +211 -29
  226. package/ccw/dist/core/routes/issue-routes.js.map +1 -1
  227. package/ccw/dist/core/routes/mcp-routes.d.ts.map +1 -1
  228. package/ccw/dist/core/routes/mcp-routes.js +4 -1
  229. package/ccw/dist/core/routes/mcp-routes.js.map +1 -1
  230. package/ccw/dist/core/routes/rules-routes.d.ts.map +1 -1
  231. package/ccw/dist/core/routes/rules-routes.js +22 -6
  232. package/ccw/dist/core/routes/rules-routes.js.map +1 -1
  233. package/ccw/dist/core/routes/session-routes.d.ts.map +1 -1
  234. package/ccw/dist/core/routes/session-routes.js +23 -1
  235. package/ccw/dist/core/routes/session-routes.js.map +1 -1
  236. package/ccw/dist/mcp-server/index.js +8 -2
  237. package/ccw/dist/mcp-server/index.js.map +1 -1
  238. package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -1
  239. package/ccw/dist/tools/claude-cli-tools.js +52 -28
  240. package/ccw/dist/tools/claude-cli-tools.js.map +1 -1
  241. package/ccw/dist/tools/cli-executor-core.d.ts.map +1 -1
  242. package/ccw/dist/tools/cli-executor-core.js +38 -12
  243. package/ccw/dist/tools/cli-executor-core.js.map +1 -1
  244. package/ccw/dist/tools/cli-executor-state.d.ts +2 -0
  245. package/ccw/dist/tools/cli-executor-state.d.ts.map +1 -1
  246. package/ccw/dist/tools/cli-executor-state.js.map +1 -1
  247. package/ccw/dist/tools/cli-executor-utils.d.ts +7 -0
  248. package/ccw/dist/tools/cli-executor-utils.d.ts.map +1 -1
  249. package/ccw/dist/tools/cli-executor-utils.js +31 -2
  250. package/ccw/dist/tools/cli-executor-utils.js.map +1 -1
  251. package/ccw/dist/tools/cli-history-store.d.ts +21 -0
  252. package/ccw/dist/tools/cli-history-store.d.ts.map +1 -1
  253. package/ccw/dist/tools/cli-history-store.js +106 -30
  254. package/ccw/dist/tools/cli-history-store.js.map +1 -1
  255. package/ccw/dist/tools/cli-output-converter.d.ts +2 -1
  256. package/ccw/dist/tools/cli-output-converter.d.ts.map +1 -1
  257. package/ccw/dist/tools/cli-output-converter.js +65 -10
  258. package/ccw/dist/tools/cli-output-converter.js.map +1 -1
  259. package/ccw/dist/tools/codex-lens-lsp.d.ts +61 -0
  260. package/ccw/dist/tools/codex-lens-lsp.d.ts.map +1 -0
  261. package/ccw/dist/tools/codex-lens-lsp.js +320 -0
  262. package/ccw/dist/tools/codex-lens-lsp.js.map +1 -0
  263. package/ccw/dist/tools/codex-lens.d.ts.map +1 -1
  264. package/ccw/dist/tools/codex-lens.js +74 -54
  265. package/ccw/dist/tools/codex-lens.js.map +1 -1
  266. package/ccw/dist/tools/index.d.ts.map +1 -1
  267. package/ccw/dist/tools/index.js +4 -0
  268. package/ccw/dist/tools/index.js.map +1 -1
  269. package/ccw/dist/tools/template-discovery.d.ts +85 -0
  270. package/ccw/dist/tools/template-discovery.d.ts.map +1 -0
  271. package/ccw/dist/tools/template-discovery.js +239 -0
  272. package/ccw/dist/tools/template-discovery.js.map +1 -0
  273. package/ccw/dist/tools/vscode-lsp.d.ts +57 -0
  274. package/ccw/dist/tools/vscode-lsp.d.ts.map +1 -0
  275. package/ccw/dist/tools/vscode-lsp.js +250 -0
  276. package/ccw/dist/tools/vscode-lsp.js.map +1 -0
  277. package/ccw/dist/utils/path-resolver.d.ts +16 -2
  278. package/ccw/dist/utils/path-resolver.d.ts.map +1 -1
  279. package/ccw/dist/utils/path-resolver.js +36 -6
  280. package/ccw/dist/utils/path-resolver.js.map +1 -1
  281. package/ccw/dist/utils/path-validator.d.ts +5 -0
  282. package/ccw/dist/utils/path-validator.d.ts.map +1 -1
  283. package/ccw/dist/utils/path-validator.js +16 -5
  284. package/ccw/dist/utils/path-validator.js.map +1 -1
  285. package/ccw/dist/utils/project-root.d.ts +25 -0
  286. package/ccw/dist/utils/project-root.d.ts.map +1 -0
  287. package/ccw/dist/utils/project-root.js +63 -0
  288. package/ccw/dist/utils/project-root.js.map +1 -0
  289. package/ccw/dist/utils/shell-escape.d.ts +47 -3
  290. package/ccw/dist/utils/shell-escape.d.ts.map +1 -1
  291. package/ccw/dist/utils/shell-escape.js +98 -15
  292. package/ccw/dist/utils/shell-escape.js.map +1 -1
  293. package/ccw/dist/utils/update-checker.d.ts +11 -0
  294. package/ccw/dist/utils/update-checker.d.ts.map +1 -0
  295. package/ccw/dist/utils/update-checker.js +167 -0
  296. package/ccw/dist/utils/update-checker.js.map +1 -0
  297. package/ccw/src/cli.ts +16 -0
  298. package/ccw/src/commands/cli.ts +127 -20
  299. package/ccw/src/commands/install.ts +239 -2
  300. package/ccw/src/commands/issue.ts +245 -31
  301. package/ccw/src/commands/uninstall.ts +23 -1
  302. package/ccw/src/commands/view.ts +4 -0
  303. package/ccw/src/commands/workflow.ts +348 -0
  304. package/ccw/src/core/data-aggregator.ts +25 -19
  305. package/ccw/src/core/routes/claude-routes.ts +64 -3
  306. package/ccw/src/core/routes/cli-routes.ts +58 -0
  307. package/ccw/src/core/routes/help-routes.ts +172 -60
  308. package/ccw/src/core/routes/hooks-routes.ts +32 -0
  309. package/ccw/src/core/routes/issue-routes.ts +242 -28
  310. package/ccw/src/core/routes/mcp-routes.ts +6 -2
  311. package/ccw/src/core/routes/rules-routes.ts +24 -6
  312. package/ccw/src/core/routes/session-routes.ts +24 -1
  313. package/ccw/src/mcp-server/index.ts +7 -2
  314. package/ccw/src/templates/dashboard-css/26-claude-manager.css +179 -0
  315. package/ccw/src/templates/dashboard-css/32-issue-manager.css +3427 -3302
  316. package/ccw/src/templates/dashboard-css/33-cli-stream-viewer.css +3 -2
  317. package/ccw/src/templates/dashboard-js/components/cli-history.js +4 -1
  318. package/ccw/src/templates/dashboard-js/components/cli-stream-viewer.js +57 -21
  319. package/ccw/src/templates/dashboard-js/components/hook-manager.js +1492 -1372
  320. package/ccw/src/templates/dashboard-js/components/mcp-manager.js +107 -20
  321. package/ccw/src/templates/dashboard-js/components/version-check.js +135 -1
  322. package/ccw/src/templates/dashboard-js/i18n.js +42 -0
  323. package/ccw/src/templates/dashboard-js/views/claude-manager.js +168 -0
  324. package/ccw/src/templates/dashboard-js/views/cli-manager.js +1 -0
  325. package/ccw/src/templates/dashboard-js/views/hook-manager.js +21 -5
  326. package/ccw/src/templates/dashboard-js/views/issue-manager.js +201 -1
  327. package/ccw/src/templates/dashboard-js/views/lite-tasks.js +3502 -3478
  328. package/ccw/src/templates/dashboard-js/views/mcp-manager.js +16 -0
  329. package/ccw/src/templates/dashboard.html +112 -0
  330. package/ccw/src/tools/claude-cli-tools.ts +54 -28
  331. package/ccw/src/tools/cli-executor-core.ts +42 -13
  332. package/ccw/src/tools/cli-executor-state.ts +2 -0
  333. package/ccw/src/tools/cli-executor-utils.ts +38 -2
  334. package/ccw/src/tools/cli-history-store.ts +122 -31
  335. package/ccw/src/tools/cli-output-converter.ts +76 -12
  336. package/ccw/src/tools/codex-lens-lsp.ts +405 -0
  337. package/ccw/src/tools/codex-lens.ts +82 -59
  338. package/ccw/src/tools/index.ts +4 -0
  339. package/ccw/src/tools/template-discovery.ts +303 -0
  340. package/ccw/src/tools/vscode-lsp.ts +317 -0
  341. package/ccw/src/utils/path-resolver.ts +37 -6
  342. package/ccw/src/utils/path-validator.ts +17 -5
  343. package/ccw/src/utils/project-root.ts +73 -0
  344. package/ccw/src/utils/shell-escape.ts +103 -16
  345. package/ccw/src/utils/update-checker.ts +178 -0
  346. package/codex-lens/pyproject.toml +14 -0
  347. package/codex-lens/src/codexlens/__pycache__/config.cpython-312.pyc +0 -0
  348. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  349. package/codex-lens/src/codexlens/__pycache__/errors.cpython-312.pyc +0 -0
  350. package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
  351. package/codex-lens/src/codexlens/api/__init__.py +88 -0
  352. package/codex-lens/src/codexlens/api/__pycache__/__init__.cpython-312.pyc +0 -0
  353. package/codex-lens/src/codexlens/api/__pycache__/__init__.cpython-313.pyc +0 -0
  354. package/codex-lens/src/codexlens/api/__pycache__/definition.cpython-312.pyc +0 -0
  355. package/codex-lens/src/codexlens/api/__pycache__/definition.cpython-313.pyc +0 -0
  356. package/codex-lens/src/codexlens/api/__pycache__/file_context.cpython-312.pyc +0 -0
  357. package/codex-lens/src/codexlens/api/__pycache__/file_context.cpython-313.pyc +0 -0
  358. package/codex-lens/src/codexlens/api/__pycache__/hover.cpython-312.pyc +0 -0
  359. package/codex-lens/src/codexlens/api/__pycache__/hover.cpython-313.pyc +0 -0
  360. package/codex-lens/src/codexlens/api/__pycache__/models.cpython-312.pyc +0 -0
  361. package/codex-lens/src/codexlens/api/__pycache__/models.cpython-313.pyc +0 -0
  362. package/codex-lens/src/codexlens/api/__pycache__/references.cpython-312.pyc +0 -0
  363. package/codex-lens/src/codexlens/api/__pycache__/references.cpython-313.pyc +0 -0
  364. package/codex-lens/src/codexlens/api/__pycache__/semantic.cpython-312.pyc +0 -0
  365. package/codex-lens/src/codexlens/api/__pycache__/semantic.cpython-313.pyc +0 -0
  366. package/codex-lens/src/codexlens/api/__pycache__/symbols.cpython-312.pyc +0 -0
  367. package/codex-lens/src/codexlens/api/__pycache__/symbols.cpython-313.pyc +0 -0
  368. package/codex-lens/src/codexlens/api/__pycache__/utils.cpython-312.pyc +0 -0
  369. package/codex-lens/src/codexlens/api/__pycache__/utils.cpython-313.pyc +0 -0
  370. package/codex-lens/src/codexlens/api/definition.py +126 -0
  371. package/codex-lens/src/codexlens/api/file_context.py +271 -0
  372. package/codex-lens/src/codexlens/api/hover.py +148 -0
  373. package/codex-lens/src/codexlens/api/models.py +281 -0
  374. package/codex-lens/src/codexlens/api/references.py +345 -0
  375. package/codex-lens/src/codexlens/api/semantic.py +471 -0
  376. package/codex-lens/src/codexlens/api/symbols.py +146 -0
  377. package/codex-lens/src/codexlens/api/utils.py +153 -0
  378. package/codex-lens/src/codexlens/config.py +7 -0
  379. package/codex-lens/src/codexlens/errors.py +4 -0
  380. package/codex-lens/src/codexlens/hybrid_search/__init__.py +28 -0
  381. package/codex-lens/src/codexlens/hybrid_search/__pycache__/__init__.cpython-312.pyc +0 -0
  382. package/codex-lens/src/codexlens/hybrid_search/__pycache__/__init__.cpython-313.pyc +0 -0
  383. package/codex-lens/src/codexlens/hybrid_search/__pycache__/data_structures.cpython-312.pyc +0 -0
  384. package/codex-lens/src/codexlens/hybrid_search/__pycache__/data_structures.cpython-313.pyc +0 -0
  385. package/codex-lens/src/codexlens/hybrid_search/__pycache__/engine.cpython-313.pyc +0 -0
  386. package/codex-lens/src/codexlens/hybrid_search/data_structures.py +602 -0
  387. package/codex-lens/src/codexlens/lsp/__init__.py +34 -0
  388. package/codex-lens/src/codexlens/lsp/__pycache__/__init__.cpython-312.pyc +0 -0
  389. package/codex-lens/src/codexlens/lsp/__pycache__/__init__.cpython-313.pyc +0 -0
  390. package/codex-lens/src/codexlens/lsp/__pycache__/handlers.cpython-313.pyc +0 -0
  391. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_bridge.cpython-312.pyc +0 -0
  392. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_bridge.cpython-313.pyc +0 -0
  393. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_graph_builder.cpython-312.pyc +0 -0
  394. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_graph_builder.cpython-313.pyc +0 -0
  395. package/codex-lens/src/codexlens/lsp/__pycache__/providers.cpython-313.pyc +0 -0
  396. package/codex-lens/src/codexlens/lsp/__pycache__/server.cpython-313.pyc +0 -0
  397. package/codex-lens/src/codexlens/lsp/__pycache__/standalone_manager.cpython-313.pyc +0 -0
  398. package/codex-lens/src/codexlens/lsp/handlers.py +551 -0
  399. package/codex-lens/src/codexlens/lsp/lsp_bridge.py +834 -0
  400. package/codex-lens/src/codexlens/lsp/lsp_graph_builder.py +375 -0
  401. package/codex-lens/src/codexlens/lsp/providers.py +177 -0
  402. package/codex-lens/src/codexlens/lsp/server.py +263 -0
  403. package/codex-lens/src/codexlens/lsp/standalone_manager.py +1159 -0
  404. package/codex-lens/src/codexlens/mcp/__init__.py +20 -0
  405. package/codex-lens/src/codexlens/mcp/__pycache__/__init__.cpython-313.pyc +0 -0
  406. package/codex-lens/src/codexlens/mcp/__pycache__/hooks.cpython-313.pyc +0 -0
  407. package/codex-lens/src/codexlens/mcp/__pycache__/provider.cpython-313.pyc +0 -0
  408. package/codex-lens/src/codexlens/mcp/__pycache__/schema.cpython-313.pyc +0 -0
  409. package/codex-lens/src/codexlens/mcp/hooks.py +170 -0
  410. package/codex-lens/src/codexlens/mcp/provider.py +202 -0
  411. package/codex-lens/src/codexlens/mcp/schema.py +113 -0
  412. package/codex-lens/src/codexlens/search/__init__.py +53 -15
  413. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-312.pyc +0 -0
  414. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
  415. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-312.pyc +0 -0
  416. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  417. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-312.pyc +0 -0
  418. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  419. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-312.pyc +0 -0
  420. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  421. package/codex-lens/src/codexlens/search/association_tree/QUICK_START.md +257 -0
  422. package/codex-lens/src/codexlens/search/association_tree/README.md +188 -0
  423. package/codex-lens/src/codexlens/search/association_tree/__init__.py +21 -0
  424. package/codex-lens/src/codexlens/search/association_tree/__pycache__/__init__.cpython-313.pyc +0 -0
  425. package/codex-lens/src/codexlens/search/association_tree/__pycache__/builder.cpython-313.pyc +0 -0
  426. package/codex-lens/src/codexlens/search/association_tree/__pycache__/data_structures.cpython-313.pyc +0 -0
  427. package/codex-lens/src/codexlens/search/association_tree/__pycache__/deduplicator.cpython-313.pyc +0 -0
  428. package/codex-lens/src/codexlens/search/association_tree/builder.py +450 -0
  429. package/codex-lens/src/codexlens/search/association_tree/data_structures.py +191 -0
  430. package/codex-lens/src/codexlens/search/association_tree/deduplicator.py +301 -0
  431. package/codex-lens/src/codexlens/search/chain_search.py +864 -3
  432. package/codex-lens/src/codexlens/search/clustering/__init__.py +124 -0
  433. package/codex-lens/src/codexlens/search/clustering/__pycache__/__init__.cpython-312.pyc +0 -0
  434. package/codex-lens/src/codexlens/search/clustering/__pycache__/__init__.cpython-313.pyc +0 -0
  435. package/codex-lens/src/codexlens/search/clustering/__pycache__/base.cpython-312.pyc +0 -0
  436. package/codex-lens/src/codexlens/search/clustering/__pycache__/base.cpython-313.pyc +0 -0
  437. package/codex-lens/src/codexlens/search/clustering/__pycache__/dbscan_strategy.cpython-313.pyc +0 -0
  438. package/codex-lens/src/codexlens/search/clustering/__pycache__/factory.cpython-312.pyc +0 -0
  439. package/codex-lens/src/codexlens/search/clustering/__pycache__/factory.cpython-313.pyc +0 -0
  440. package/codex-lens/src/codexlens/search/clustering/__pycache__/frequency_strategy.cpython-312.pyc +0 -0
  441. package/codex-lens/src/codexlens/search/clustering/__pycache__/frequency_strategy.cpython-313.pyc +0 -0
  442. package/codex-lens/src/codexlens/search/clustering/__pycache__/hdbscan_strategy.cpython-313.pyc +0 -0
  443. package/codex-lens/src/codexlens/search/clustering/__pycache__/noop_strategy.cpython-312.pyc +0 -0
  444. package/codex-lens/src/codexlens/search/clustering/__pycache__/noop_strategy.cpython-313.pyc +0 -0
  445. package/codex-lens/src/codexlens/search/clustering/base.py +153 -0
  446. package/codex-lens/src/codexlens/search/clustering/dbscan_strategy.py +197 -0
  447. package/codex-lens/src/codexlens/search/clustering/factory.py +202 -0
  448. package/codex-lens/src/codexlens/search/clustering/frequency_strategy.py +263 -0
  449. package/codex-lens/src/codexlens/search/clustering/hdbscan_strategy.py +153 -0
  450. package/codex-lens/src/codexlens/search/clustering/noop_strategy.py +83 -0
  451. package/codex-lens/src/codexlens/search/hybrid_search.py +194 -2
  452. package/codex-lens/src/codexlens/search/ranking.py +6 -4
  453. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-312.pyc +0 -0
  454. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-312.pyc +0 -0
  455. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
  456. package/codex-lens/src/codexlens/storage/__pycache__/global_index.cpython-312.pyc +0 -0
  457. package/codex-lens/src/codexlens/storage/__pycache__/global_index.cpython-313.pyc +0 -0
  458. package/codex-lens/src/codexlens/storage/dir_index.py +172 -0
  459. package/codex-lens/src/codexlens/storage/global_index.py +33 -0
  460. package/package.json +92 -92
  461. /package/.claude/workflows/cli-templates/prompts/{analysis/02-analyze-code-patterns.txt → analysis-analyze-code-patterns.txt} +0 -0
  462. /package/.claude/workflows/cli-templates/prompts/{analysis/02-analyze-technical-document.txt → analysis-analyze-technical-document.txt} +0 -0
  463. /package/.claude/workflows/cli-templates/prompts/{analysis/01-diagnose-bug-root-cause.txt → analysis-diagnose-bug-root-cause.txt} +0 -0
  464. /package/.claude/workflows/cli-templates/prompts/{development/03-debug-runtime-issues.txt → development-debug-runtime-issues.txt} +0 -0
  465. /package/.claude/workflows/cli-templates/prompts/{development/02-generate-tests.txt → development-generate-tests.txt} +0 -0
  466. /package/.claude/workflows/cli-templates/prompts/{development/02-implement-component-ui.txt → development-implement-component-ui.txt} +0 -0
  467. /package/.claude/workflows/cli-templates/prompts/{development/02-implement-feature.txt → development-implement-feature.txt} +0 -0
  468. /package/.claude/workflows/cli-templates/prompts/{development/02-refactor-codebase.txt → development-refactor-codebase.txt} +0 -0
  469. /package/.claude/workflows/cli-templates/prompts/{documentation/module-readme.txt → documentation-module-readme.txt} +0 -0
  470. /package/.claude/workflows/cli-templates/prompts/{memory/02-document-module-structure.txt → memory-document-module-structure.txt} +0 -0
  471. /package/.claude/workflows/cli-templates/prompts/{planning/02-breakdown-task-steps.txt → planning-breakdown-task-steps.txt} +0 -0
  472. /package/.claude/workflows/cli-templates/prompts/{planning/03-evaluate-concept-feasibility.txt → planning-evaluate-concept-feasibility.txt} +0 -0
  473. /package/.claude/workflows/cli-templates/prompts/{planning/01-plan-architecture-design.txt → planning-plan-architecture-design.txt} +0 -0
  474. /package/.claude/workflows/cli-templates/prompts/{planning/03-plan-migration-strategy.txt → planning-plan-migration-strategy.txt} +0 -0
  475. /package/.claude/workflows/cli-templates/prompts/{rules/rule-api.txt → rules-rule-api.txt} +0 -0
  476. /package/.claude/workflows/cli-templates/prompts/{rules/rule-components.txt → rules-rule-components.txt} +0 -0
  477. /package/.claude/workflows/cli-templates/prompts/{rules/rule-config.txt → rules-rule-config.txt} +0 -0
  478. /package/.claude/workflows/cli-templates/prompts/{rules/rule-core.txt → rules-rule-core.txt} +0 -0
  479. /package/.claude/workflows/cli-templates/prompts/{rules/rule-patterns.txt → rules-rule-patterns.txt} +0 -0
  480. /package/.claude/workflows/cli-templates/prompts/{rules/rule-testing.txt → rules-rule-testing.txt} +0 -0
  481. /package/.claude/workflows/cli-templates/prompts/{rules/tech-rules-agent-prompt.txt → rules-tech-rules-agent-prompt.txt} +0 -0
  482. /package/.claude/workflows/cli-templates/prompts/{tech/tech-module-format.txt → tech-tech-module-format.txt} +0 -0
  483. /package/.claude/workflows/cli-templates/prompts/{tech/tech-skill-index.txt → tech-tech-skill-index.txt} +0 -0
  484. /package/.claude/workflows/cli-templates/prompts/{test/test-concept-analysis.txt → test-test-concept-analysis.txt} +0 -0
  485. /package/.claude/workflows/cli-templates/prompts/{universal/00-universal-creative-style.txt → universal-universal-creative-style.txt} +0 -0
  486. /package/.claude/workflows/cli-templates/prompts/{universal/00-universal-rigorous-style.txt → universal-universal-rigorous-style.txt} +0 -0
  487. /package/.claude/workflows/cli-templates/prompts/{workflow/codex-feasibility-validation.txt → workflow-codex-feasibility-validation.txt} +0 -0
  488. /package/.claude/workflows/cli-templates/prompts/{workflow/gemini-solution-design.txt → workflow-gemini-solution-design.txt} +0 -0
  489. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-aggregation.txt → workflow-skill-aggregation.txt} +0 -0
  490. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-index.txt → workflow-skill-index.txt} +0 -0
  491. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-sessions-timeline.txt → workflow-skill-sessions-timeline.txt} +0 -0
  492. /package/.claude/workflows/cli-templates/prompts/{workflow/task-json-cli-mode.txt → workflow-task-json-cli-mode.txt} +0 -0
@@ -1,318 +1,318 @@
1
- # Action: Diagnose Data Flow Issues
2
-
3
- Analyze target skill for data flow disruption - state inconsistencies and format variations.
4
-
5
- ## Purpose
6
-
7
- - Detect inconsistent data formats between phases
8
- - Identify scattered state storage
9
- - Find missing data contracts
10
- - Measure state transition integrity
11
-
12
- ## Preconditions
13
-
14
- - [ ] state.status === 'running'
15
- - [ ] state.target_skill.path is set
16
- - [ ] 'dataflow' in state.focus_areas OR state.focus_areas is empty
17
-
18
- ## Detection Patterns
19
-
20
- ### Pattern 1: Multiple Storage Locations
21
-
22
- ```regex
23
- # Data written to multiple paths without centralization
24
- /Write\s*\(\s*[`'"][^`'"]+[`'"]/g
25
- ```
26
-
27
- ### Pattern 2: Inconsistent Field Names
28
-
29
- ```regex
30
- # Same concept with different names: title/name, id/identifier
31
- ```
32
-
33
- ### Pattern 3: Missing Schema Validation
34
-
35
- ```regex
36
- # Absence of validation before state write
37
- # Look for lack of: validate, schema, check, verify
38
- ```
39
-
40
- ### Pattern 4: Format Transformation Without Normalization
41
-
42
- ```regex
43
- # Direct JSON.parse without error handling or normalization
44
- /JSON\.parse\([^)]+\)(?!\s*\|\|)/
45
- ```
46
-
47
- ## Execution
48
-
49
- ```javascript
50
- async function execute(state, workDir) {
51
- const skillPath = state.target_skill.path;
52
- const startTime = Date.now();
53
- const issues = [];
54
- const evidence = [];
55
-
56
- console.log(`Diagnosing data flow in ${skillPath}...`);
57
-
58
- // 1. Collect all Write operations to map data storage
59
- const allFiles = Glob(`${skillPath}/**/*.md`);
60
- const writeLocations = [];
61
- const readLocations = [];
62
-
63
- for (const file of allFiles) {
64
- const content = Read(file);
65
- const relativePath = file.replace(skillPath + '/', '');
66
-
67
- // Find Write operations
68
- const writeMatches = content.matchAll(/Write\s*\(\s*[`'"]([^`'"]+)[`'"]/g);
69
- for (const match of writeMatches) {
70
- writeLocations.push({
71
- file: relativePath,
72
- target: match[1],
73
- isStateFile: match[1].includes('state.json') || match[1].includes('config.json')
74
- });
75
- }
76
-
77
- // Find Read operations
78
- const readMatches = content.matchAll(/Read\s*\(\s*[`'"]([^`'"]+)[`'"]/g);
79
- for (const match of readMatches) {
80
- readLocations.push({
81
- file: relativePath,
82
- source: match[1]
83
- });
84
- }
85
- }
86
-
87
- // 2. Check for scattered state storage
88
- const stateTargets = writeLocations
89
- .filter(w => w.isStateFile)
90
- .map(w => w.target);
91
-
92
- const uniqueStateFiles = [...new Set(stateTargets)];
93
-
94
- if (uniqueStateFiles.length > 2) {
95
- issues.push({
96
- id: `DF-${issues.length + 1}`,
97
- type: 'dataflow_break',
98
- severity: 'high',
99
- location: { file: 'multiple' },
100
- description: `State stored in ${uniqueStateFiles.length} different locations`,
101
- evidence: uniqueStateFiles.slice(0, 5),
102
- root_cause: 'No centralized state management',
103
- impact: 'State inconsistency between phases',
104
- suggested_fix: 'Centralize state to single state.json with state manager'
105
- });
106
- evidence.push({
107
- file: 'multiple',
108
- pattern: 'scattered_state',
109
- context: uniqueStateFiles.join(', '),
110
- severity: 'high'
111
- });
112
- }
113
-
114
- // 3. Check for inconsistent field naming
115
- const fieldNamePatterns = {
116
- 'name_vs_title': [/\.name\b/, /\.title\b/],
117
- 'id_vs_identifier': [/\.id\b/, /\.identifier\b/],
118
- 'status_vs_state': [/\.status\b/, /\.state\b/],
119
- 'error_vs_errors': [/\.error\b/, /\.errors\b/]
120
- };
121
-
122
- const fieldUsage = {};
123
-
124
- for (const file of allFiles) {
125
- const content = Read(file);
126
- const relativePath = file.replace(skillPath + '/', '');
127
-
128
- for (const [patternName, patterns] of Object.entries(fieldNamePatterns)) {
129
- for (const pattern of patterns) {
130
- if (pattern.test(content)) {
131
- if (!fieldUsage[patternName]) fieldUsage[patternName] = [];
132
- fieldUsage[patternName].push({
133
- file: relativePath,
134
- pattern: pattern.toString()
135
- });
136
- }
137
- }
138
- }
139
- }
140
-
141
- for (const [patternName, usages] of Object.entries(fieldUsage)) {
142
- const uniquePatterns = [...new Set(usages.map(u => u.pattern))];
143
- if (uniquePatterns.length > 1) {
144
- issues.push({
145
- id: `DF-${issues.length + 1}`,
146
- type: 'dataflow_break',
147
- severity: 'medium',
148
- location: { file: 'multiple' },
149
- description: `Inconsistent field naming: ${patternName.replace('_vs_', ' vs ')}`,
150
- evidence: usages.slice(0, 3).map(u => `${u.file}: ${u.pattern}`),
151
- root_cause: 'Same concept referred to with different field names',
152
- impact: 'Data may be lost during field access',
153
- suggested_fix: `Standardize to single field name, add normalization function`
154
- });
155
- }
156
- }
157
-
158
- // 4. Check for missing schema validation
159
- for (const file of allFiles) {
160
- const content = Read(file);
161
- const relativePath = file.replace(skillPath + '/', '');
162
-
163
- // Find JSON.parse without validation
164
- const unsafeParses = content.match(/JSON\.parse\s*\([^)]+\)(?!\s*\?\?|\s*\|\|)/g);
165
- const hasValidation = /validat|schema|type.*check/i.test(content);
166
-
167
- if (unsafeParses && unsafeParses.length > 0 && !hasValidation) {
168
- issues.push({
169
- id: `DF-${issues.length + 1}`,
170
- type: 'dataflow_break',
171
- severity: 'medium',
172
- location: { file: relativePath },
173
- description: 'JSON parsing without validation',
174
- evidence: unsafeParses.slice(0, 2),
175
- root_cause: 'No schema validation after parsing',
176
- impact: 'Invalid data may propagate through phases',
177
- suggested_fix: 'Add schema validation after JSON.parse'
178
- });
179
- }
180
- }
181
-
182
- // 5. Check state schema if exists
183
- const stateSchemaFile = Glob(`${skillPath}/phases/state-schema.md`)[0];
184
- if (stateSchemaFile) {
185
- const schemaContent = Read(stateSchemaFile);
186
-
187
- // Check for type definitions
188
- const hasTypeScript = /interface\s+\w+|type\s+\w+\s*=/i.test(schemaContent);
189
- const hasValidationFunction = /function\s+validate|validateState/i.test(schemaContent);
190
-
191
- if (hasTypeScript && !hasValidationFunction) {
192
- issues.push({
193
- id: `DF-${issues.length + 1}`,
194
- type: 'dataflow_break',
195
- severity: 'low',
196
- location: { file: 'phases/state-schema.md' },
197
- description: 'Type definitions without runtime validation',
198
- evidence: ['TypeScript interfaces defined but no validation function'],
199
- root_cause: 'Types are compile-time only, not enforced at runtime',
200
- impact: 'Schema violations may occur at runtime',
201
- suggested_fix: 'Add validateState() function using Zod or manual checks'
202
- });
203
- }
204
- } else if (state.target_skill.execution_mode === 'autonomous') {
205
- issues.push({
206
- id: `DF-${issues.length + 1}`,
207
- type: 'dataflow_break',
208
- severity: 'high',
209
- location: { file: 'phases/' },
210
- description: 'Autonomous skill missing state-schema.md',
211
- evidence: ['No state schema definition found'],
212
- root_cause: 'State structure undefined for orchestrator',
213
- impact: 'Inconsistent state handling across actions',
214
- suggested_fix: 'Create phases/state-schema.md with explicit type definitions'
215
- });
216
- }
217
-
218
- // 6. Check read-write alignment
219
- const writtenFiles = new Set(writeLocations.map(w => w.target));
220
- const readFiles = new Set(readLocations.map(r => r.source));
221
-
222
- const writtenButNotRead = [...writtenFiles].filter(f =>
223
- !readFiles.has(f) && !f.includes('output') && !f.includes('report')
224
- );
225
-
226
- if (writtenButNotRead.length > 0) {
227
- issues.push({
228
- id: `DF-${issues.length + 1}`,
229
- type: 'dataflow_break',
230
- severity: 'low',
231
- location: { file: 'multiple' },
232
- description: 'Files written but never read',
233
- evidence: writtenButNotRead.slice(0, 3),
234
- root_cause: 'Orphaned output files',
235
- impact: 'Wasted storage and potential confusion',
236
- suggested_fix: 'Remove unused writes or add reads where needed'
237
- });
238
- }
239
-
240
- // 7. Calculate severity
241
- const criticalCount = issues.filter(i => i.severity === 'critical').length;
242
- const highCount = issues.filter(i => i.severity === 'high').length;
243
- const severity = criticalCount > 0 ? 'critical' :
244
- highCount > 1 ? 'high' :
245
- highCount > 0 ? 'medium' :
246
- issues.length > 0 ? 'low' : 'none';
247
-
248
- // 8. Write diagnosis result
249
- const diagnosisResult = {
250
- status: 'completed',
251
- issues_found: issues.length,
252
- severity: severity,
253
- execution_time_ms: Date.now() - startTime,
254
- details: {
255
- patterns_checked: [
256
- 'scattered_state',
257
- 'inconsistent_naming',
258
- 'missing_validation',
259
- 'read_write_alignment'
260
- ],
261
- patterns_matched: evidence.map(e => e.pattern),
262
- evidence: evidence,
263
- data_flow_map: {
264
- write_locations: writeLocations.length,
265
- read_locations: readLocations.length,
266
- unique_state_files: uniqueStateFiles.length
267
- },
268
- recommendations: [
269
- uniqueStateFiles.length > 2 ? 'Implement centralized state manager' : null,
270
- issues.some(i => i.description.includes('naming'))
271
- ? 'Create normalization layer for field names' : null,
272
- issues.some(i => i.description.includes('validation'))
273
- ? 'Add Zod or JSON Schema validation' : null
274
- ].filter(Boolean)
275
- }
276
- };
277
-
278
- Write(`${workDir}/diagnosis/dataflow-diagnosis.json`,
279
- JSON.stringify(diagnosisResult, null, 2));
280
-
281
- return {
282
- stateUpdates: {
283
- 'diagnosis.dataflow': diagnosisResult,
284
- issues: [...state.issues, ...issues]
285
- },
286
- outputFiles: [`${workDir}/diagnosis/dataflow-diagnosis.json`],
287
- summary: `Data flow diagnosis: ${issues.length} issues found (severity: ${severity})`
288
- };
289
- }
290
- ```
291
-
292
- ## State Updates
293
-
294
- ```javascript
295
- return {
296
- stateUpdates: {
297
- 'diagnosis.dataflow': {
298
- status: 'completed',
299
- issues_found: <count>,
300
- severity: '<critical|high|medium|low|none>',
301
- // ... full diagnosis result
302
- },
303
- issues: [...existingIssues, ...newIssues]
304
- }
305
- };
306
- ```
307
-
308
- ## Error Handling
309
-
310
- | Error Type | Recovery |
311
- |------------|----------|
312
- | Glob pattern error | Use fallback patterns |
313
- | File read error | Skip and continue |
314
-
315
- ## Next Actions
316
-
317
- - Success: action-diagnose-agent (or next in focus_areas)
318
- - Skipped: If 'dataflow' not in focus_areas
1
+ # Action: Diagnose Data Flow Issues
2
+
3
+ Analyze target skill for data flow disruption - state inconsistencies and format variations.
4
+
5
+ ## Purpose
6
+
7
+ - Detect inconsistent data formats between phases
8
+ - Identify scattered state storage
9
+ - Find missing data contracts
10
+ - Measure state transition integrity
11
+
12
+ ## Preconditions
13
+
14
+ - [ ] state.status === 'running'
15
+ - [ ] state.target_skill.path is set
16
+ - [ ] 'dataflow' in state.focus_areas OR state.focus_areas is empty
17
+
18
+ ## Detection Patterns
19
+
20
+ ### Pattern 1: Multiple Storage Locations
21
+
22
+ ```regex
23
+ # Data written to multiple paths without centralization
24
+ /Write\s*\(\s*[`'"][^`'"]+[`'"]/g
25
+ ```
26
+
27
+ ### Pattern 2: Inconsistent Field Names
28
+
29
+ ```regex
30
+ # Same concept with different names: title/name, id/identifier
31
+ ```
32
+
33
+ ### Pattern 3: Missing Schema Validation
34
+
35
+ ```regex
36
+ # Absence of validation before state write
37
+ # Look for lack of: validate, schema, check, verify
38
+ ```
39
+
40
+ ### Pattern 4: Format Transformation Without Normalization
41
+
42
+ ```regex
43
+ # Direct JSON.parse without error handling or normalization
44
+ /JSON\.parse\([^)]+\)(?!\s*\|\|)/
45
+ ```
46
+
47
+ ## Execution
48
+
49
+ ```javascript
50
+ async function execute(state, workDir) {
51
+ const skillPath = state.target_skill.path;
52
+ const startTime = Date.now();
53
+ const issues = [];
54
+ const evidence = [];
55
+
56
+ console.log(`Diagnosing data flow in ${skillPath}...`);
57
+
58
+ // 1. Collect all Write operations to map data storage
59
+ const allFiles = Glob(`${skillPath}/**/*.md`);
60
+ const writeLocations = [];
61
+ const readLocations = [];
62
+
63
+ for (const file of allFiles) {
64
+ const content = Read(file);
65
+ const relativePath = file.replace(skillPath + '/', '');
66
+
67
+ // Find Write operations
68
+ const writeMatches = content.matchAll(/Write\s*\(\s*[`'"]([^`'"]+)[`'"]/g);
69
+ for (const match of writeMatches) {
70
+ writeLocations.push({
71
+ file: relativePath,
72
+ target: match[1],
73
+ isStateFile: match[1].includes('state.json') || match[1].includes('config.json')
74
+ });
75
+ }
76
+
77
+ // Find Read operations
78
+ const readMatches = content.matchAll(/Read\s*\(\s*[`'"]([^`'"]+)[`'"]/g);
79
+ for (const match of readMatches) {
80
+ readLocations.push({
81
+ file: relativePath,
82
+ source: match[1]
83
+ });
84
+ }
85
+ }
86
+
87
+ // 2. Check for scattered state storage
88
+ const stateTargets = writeLocations
89
+ .filter(w => w.isStateFile)
90
+ .map(w => w.target);
91
+
92
+ const uniqueStateFiles = [...new Set(stateTargets)];
93
+
94
+ if (uniqueStateFiles.length > 2) {
95
+ issues.push({
96
+ id: `DF-${issues.length + 1}`,
97
+ type: 'dataflow_break',
98
+ severity: 'high',
99
+ location: { file: 'multiple' },
100
+ description: `State stored in ${uniqueStateFiles.length} different locations`,
101
+ evidence: uniqueStateFiles.slice(0, 5),
102
+ root_cause: 'No centralized state management',
103
+ impact: 'State inconsistency between phases',
104
+ suggested_fix: 'Centralize state to single state.json with state manager'
105
+ });
106
+ evidence.push({
107
+ file: 'multiple',
108
+ pattern: 'scattered_state',
109
+ context: uniqueStateFiles.join(', '),
110
+ severity: 'high'
111
+ });
112
+ }
113
+
114
+ // 3. Check for inconsistent field naming
115
+ const fieldNamePatterns = {
116
+ 'name_vs_title': [/\.name\b/, /\.title\b/],
117
+ 'id_vs_identifier': [/\.id\b/, /\.identifier\b/],
118
+ 'status_vs_state': [/\.status\b/, /\.state\b/],
119
+ 'error_vs_errors': [/\.error\b/, /\.errors\b/]
120
+ };
121
+
122
+ const fieldUsage = {};
123
+
124
+ for (const file of allFiles) {
125
+ const content = Read(file);
126
+ const relativePath = file.replace(skillPath + '/', '');
127
+
128
+ for (const [patternName, patterns] of Object.entries(fieldNamePatterns)) {
129
+ for (const pattern of patterns) {
130
+ if (pattern.test(content)) {
131
+ if (!fieldUsage[patternName]) fieldUsage[patternName] = [];
132
+ fieldUsage[patternName].push({
133
+ file: relativePath,
134
+ pattern: pattern.toString()
135
+ });
136
+ }
137
+ }
138
+ }
139
+ }
140
+
141
+ for (const [patternName, usages] of Object.entries(fieldUsage)) {
142
+ const uniquePatterns = [...new Set(usages.map(u => u.pattern))];
143
+ if (uniquePatterns.length > 1) {
144
+ issues.push({
145
+ id: `DF-${issues.length + 1}`,
146
+ type: 'dataflow_break',
147
+ severity: 'medium',
148
+ location: { file: 'multiple' },
149
+ description: `Inconsistent field naming: ${patternName.replace('_vs_', ' vs ')}`,
150
+ evidence: usages.slice(0, 3).map(u => `${u.file}: ${u.pattern}`),
151
+ root_cause: 'Same concept referred to with different field names',
152
+ impact: 'Data may be lost during field access',
153
+ suggested_fix: `Standardize to single field name, add normalization function`
154
+ });
155
+ }
156
+ }
157
+
158
+ // 4. Check for missing schema validation
159
+ for (const file of allFiles) {
160
+ const content = Read(file);
161
+ const relativePath = file.replace(skillPath + '/', '');
162
+
163
+ // Find JSON.parse without validation
164
+ const unsafeParses = content.match(/JSON\.parse\s*\([^)]+\)(?!\s*\?\?|\s*\|\|)/g);
165
+ const hasValidation = /validat|schema|type.*check/i.test(content);
166
+
167
+ if (unsafeParses && unsafeParses.length > 0 && !hasValidation) {
168
+ issues.push({
169
+ id: `DF-${issues.length + 1}`,
170
+ type: 'dataflow_break',
171
+ severity: 'medium',
172
+ location: { file: relativePath },
173
+ description: 'JSON parsing without validation',
174
+ evidence: unsafeParses.slice(0, 2),
175
+ root_cause: 'No schema validation after parsing',
176
+ impact: 'Invalid data may propagate through phases',
177
+ suggested_fix: 'Add schema validation after JSON.parse'
178
+ });
179
+ }
180
+ }
181
+
182
+ // 5. Check state schema if exists
183
+ const stateSchemaFile = Glob(`${skillPath}/phases/state-schema.md`)[0];
184
+ if (stateSchemaFile) {
185
+ const schemaContent = Read(stateSchemaFile);
186
+
187
+ // Check for type definitions
188
+ const hasTypeScript = /interface\s+\w+|type\s+\w+\s*=/i.test(schemaContent);
189
+ const hasValidationFunction = /function\s+validate|validateState/i.test(schemaContent);
190
+
191
+ if (hasTypeScript && !hasValidationFunction) {
192
+ issues.push({
193
+ id: `DF-${issues.length + 1}`,
194
+ type: 'dataflow_break',
195
+ severity: 'low',
196
+ location: { file: 'phases/state-schema.md' },
197
+ description: 'Type definitions without runtime validation',
198
+ evidence: ['TypeScript interfaces defined but no validation function'],
199
+ root_cause: 'Types are compile-time only, not enforced at runtime',
200
+ impact: 'Schema violations may occur at runtime',
201
+ suggested_fix: 'Add validateState() function using Zod or manual checks'
202
+ });
203
+ }
204
+ } else if (state.target_skill.execution_mode === 'autonomous') {
205
+ issues.push({
206
+ id: `DF-${issues.length + 1}`,
207
+ type: 'dataflow_break',
208
+ severity: 'high',
209
+ location: { file: 'phases/' },
210
+ description: 'Autonomous skill missing state-schema.md',
211
+ evidence: ['No state schema definition found'],
212
+ root_cause: 'State structure undefined for orchestrator',
213
+ impact: 'Inconsistent state handling across actions',
214
+ suggested_fix: 'Create phases/state-schema.md with explicit type definitions'
215
+ });
216
+ }
217
+
218
+ // 6. Check read-write alignment
219
+ const writtenFiles = new Set(writeLocations.map(w => w.target));
220
+ const readFiles = new Set(readLocations.map(r => r.source));
221
+
222
+ const writtenButNotRead = [...writtenFiles].filter(f =>
223
+ !readFiles.has(f) && !f.includes('output') && !f.includes('report')
224
+ );
225
+
226
+ if (writtenButNotRead.length > 0) {
227
+ issues.push({
228
+ id: `DF-${issues.length + 1}`,
229
+ type: 'dataflow_break',
230
+ severity: 'low',
231
+ location: { file: 'multiple' },
232
+ description: 'Files written but never read',
233
+ evidence: writtenButNotRead.slice(0, 3),
234
+ root_cause: 'Orphaned output files',
235
+ impact: 'Wasted storage and potential confusion',
236
+ suggested_fix: 'Remove unused writes or add reads where needed'
237
+ });
238
+ }
239
+
240
+ // 7. Calculate severity
241
+ const criticalCount = issues.filter(i => i.severity === 'critical').length;
242
+ const highCount = issues.filter(i => i.severity === 'high').length;
243
+ const severity = criticalCount > 0 ? 'critical' :
244
+ highCount > 1 ? 'high' :
245
+ highCount > 0 ? 'medium' :
246
+ issues.length > 0 ? 'low' : 'none';
247
+
248
+ // 8. Write diagnosis result
249
+ const diagnosisResult = {
250
+ status: 'completed',
251
+ issues_found: issues.length,
252
+ severity: severity,
253
+ execution_time_ms: Date.now() - startTime,
254
+ details: {
255
+ patterns_checked: [
256
+ 'scattered_state',
257
+ 'inconsistent_naming',
258
+ 'missing_validation',
259
+ 'read_write_alignment'
260
+ ],
261
+ patterns_matched: evidence.map(e => e.pattern),
262
+ evidence: evidence,
263
+ data_flow_map: {
264
+ write_locations: writeLocations.length,
265
+ read_locations: readLocations.length,
266
+ unique_state_files: uniqueStateFiles.length
267
+ },
268
+ recommendations: [
269
+ uniqueStateFiles.length > 2 ? 'Implement centralized state manager' : null,
270
+ issues.some(i => i.description.includes('naming'))
271
+ ? 'Create normalization layer for field names' : null,
272
+ issues.some(i => i.description.includes('validation'))
273
+ ? 'Add Zod or JSON Schema validation' : null
274
+ ].filter(Boolean)
275
+ }
276
+ };
277
+
278
+ Write(`${workDir}/diagnosis/dataflow-diagnosis.json`,
279
+ JSON.stringify(diagnosisResult, null, 2));
280
+
281
+ return {
282
+ stateUpdates: {
283
+ 'diagnosis.dataflow': diagnosisResult,
284
+ issues: [...state.issues, ...issues]
285
+ },
286
+ outputFiles: [`${workDir}/diagnosis/dataflow-diagnosis.json`],
287
+ summary: `Data flow diagnosis: ${issues.length} issues found (severity: ${severity})`
288
+ };
289
+ }
290
+ ```
291
+
292
+ ## State Updates
293
+
294
+ ```javascript
295
+ return {
296
+ stateUpdates: {
297
+ 'diagnosis.dataflow': {
298
+ status: 'completed',
299
+ issues_found: <count>,
300
+ severity: '<critical|high|medium|low|none>',
301
+ // ... full diagnosis result
302
+ },
303
+ issues: [...existingIssues, ...newIssues]
304
+ }
305
+ };
306
+ ```
307
+
308
+ ## Error Handling
309
+
310
+ | Error Type | Recovery |
311
+ |------------|----------|
312
+ | Glob pattern error | Use fallback patterns |
313
+ | File read error | Skip and continue |
314
+
315
+ ## Next Actions
316
+
317
+ - Success: action-diagnose-agent (or next in focus_areas)
318
+ - Skipped: If 'dataflow' not in focus_areas