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,200 +1,200 @@
1
- # Action: Diagnose Token Consumption
2
-
3
- Analyze target skill for token consumption inefficiencies and output optimization opportunities.
4
-
5
- ## Purpose
6
-
7
- Detect patterns that cause excessive token usage:
8
- - Verbose prompts without compression
9
- - Large state objects with unnecessary fields
10
- - Full content passing instead of references
11
- - Unbounded arrays without sliding windows
12
- - Redundant file I/O (write-then-read patterns)
13
-
14
- ## Detection Patterns
15
-
16
- | Pattern ID | Name | Detection Logic | Severity |
17
- |------------|------|-----------------|----------|
18
- | TKN-001 | Verbose Prompts | Prompt files > 4KB or high static/variable ratio | medium |
19
- | TKN-002 | Excessive State Fields | State schema > 15 top-level keys | medium |
20
- | TKN-003 | Full Content Passing | `Read()` result embedded directly in prompt | high |
21
- | TKN-004 | Unbounded Arrays | `.push`/`concat` without `.slice(-N)` | high |
22
- | TKN-005 | Redundant Write→Read | `Write(file)` followed by `Read(file)` | medium |
23
-
24
- ## Execution Steps
25
-
26
- ```javascript
27
- async function diagnoseTokenConsumption(state, workDir) {
28
- const issues = [];
29
- const evidence = [];
30
- const skillPath = state.target_skill.path;
31
-
32
- // 1. Scan for verbose prompts (TKN-001)
33
- const mdFiles = Glob(`${skillPath}/**/*.md`);
34
- for (const file of mdFiles) {
35
- const content = Read(file);
36
- if (content.length > 4000) {
37
- evidence.push({
38
- file: file,
39
- pattern: 'TKN-001',
40
- severity: 'medium',
41
- context: `File size: ${content.length} chars (threshold: 4000)`
42
- });
43
- }
44
- }
45
-
46
- // 2. Check state schema field count (TKN-002)
47
- const stateSchema = Glob(`${skillPath}/**/state-schema.md`)[0];
48
- if (stateSchema) {
49
- const schemaContent = Read(stateSchema);
50
- const fieldMatches = schemaContent.match(/^\s*\w+:/gm) || [];
51
- if (fieldMatches.length > 15) {
52
- evidence.push({
53
- file: stateSchema,
54
- pattern: 'TKN-002',
55
- severity: 'medium',
56
- context: `State has ${fieldMatches.length} fields (threshold: 15)`
57
- });
58
- }
59
- }
60
-
61
- // 3. Detect full content passing (TKN-003)
62
- const fullContentPattern = /Read\([^)]+\)\s*[\+,]|`\$\{.*Read\(/g;
63
- for (const file of mdFiles) {
64
- const content = Read(file);
65
- const matches = content.match(fullContentPattern);
66
- if (matches) {
67
- evidence.push({
68
- file: file,
69
- pattern: 'TKN-003',
70
- severity: 'high',
71
- context: `Full content passing detected: ${matches[0]}`
72
- });
73
- }
74
- }
75
-
76
- // 4. Detect unbounded arrays (TKN-004)
77
- const unboundedPattern = /\.(push|concat)\([^)]+\)(?!.*\.slice)/g;
78
- for (const file of mdFiles) {
79
- const content = Read(file);
80
- const matches = content.match(unboundedPattern);
81
- if (matches) {
82
- evidence.push({
83
- file: file,
84
- pattern: 'TKN-004',
85
- severity: 'high',
86
- context: `Unbounded array growth: ${matches[0]}`
87
- });
88
- }
89
- }
90
-
91
- // 5. Detect write-then-read patterns (TKN-005)
92
- const writeReadPattern = /Write\([^)]+\)[\s\S]{0,100}Read\([^)]+\)/g;
93
- for (const file of mdFiles) {
94
- const content = Read(file);
95
- const matches = content.match(writeReadPattern);
96
- if (matches) {
97
- evidence.push({
98
- file: file,
99
- pattern: 'TKN-005',
100
- severity: 'medium',
101
- context: `Write-then-read pattern detected`
102
- });
103
- }
104
- }
105
-
106
- // Calculate severity
107
- const highCount = evidence.filter(e => e.severity === 'high').length;
108
- const mediumCount = evidence.filter(e => e.severity === 'medium').length;
109
-
110
- let severity = 'none';
111
- if (highCount > 0) severity = 'high';
112
- else if (mediumCount > 2) severity = 'medium';
113
- else if (mediumCount > 0) severity = 'low';
114
-
115
- return {
116
- status: 'completed',
117
- issues_found: evidence.length,
118
- severity: severity,
119
- execution_time_ms: Date.now() - startTime,
120
- details: {
121
- patterns_checked: ['TKN-001', 'TKN-002', 'TKN-003', 'TKN-004', 'TKN-005'],
122
- patterns_matched: [...new Set(evidence.map(e => e.pattern))],
123
- evidence: evidence,
124
- recommendations: generateRecommendations(evidence)
125
- }
126
- };
127
- }
128
-
129
- function generateRecommendations(evidence) {
130
- const recs = [];
131
- const patterns = [...new Set(evidence.map(e => e.pattern))];
132
-
133
- if (patterns.includes('TKN-001')) {
134
- recs.push('Apply prompt_compression: Extract static instructions to templates, use placeholders');
135
- }
136
- if (patterns.includes('TKN-002')) {
137
- recs.push('Apply state_field_reduction: Remove debug/cache fields, consolidate related fields');
138
- }
139
- if (patterns.includes('TKN-003')) {
140
- recs.push('Apply lazy_loading: Pass file paths instead of content, let agents read if needed');
141
- }
142
- if (patterns.includes('TKN-004')) {
143
- recs.push('Apply sliding_window: Add .slice(-N) to array operations to bound growth');
144
- }
145
- if (patterns.includes('TKN-005')) {
146
- recs.push('Apply output_minimization: Use in-memory data passing, eliminate temporary files');
147
- }
148
-
149
- return recs;
150
- }
151
- ```
152
-
153
- ## Output
154
-
155
- Write diagnosis result to `${workDir}/diagnosis/token-consumption-diagnosis.json`:
156
-
157
- ```json
158
- {
159
- "status": "completed",
160
- "issues_found": 3,
161
- "severity": "medium",
162
- "execution_time_ms": 1500,
163
- "details": {
164
- "patterns_checked": ["TKN-001", "TKN-002", "TKN-003", "TKN-004", "TKN-005"],
165
- "patterns_matched": ["TKN-001", "TKN-003"],
166
- "evidence": [
167
- {
168
- "file": "phases/orchestrator.md",
169
- "pattern": "TKN-001",
170
- "severity": "medium",
171
- "context": "File size: 5200 chars (threshold: 4000)"
172
- }
173
- ],
174
- "recommendations": [
175
- "Apply prompt_compression: Extract static instructions to templates"
176
- ]
177
- }
178
- }
179
- ```
180
-
181
- ## State Update
182
-
183
- ```javascript
184
- updateState({
185
- diagnosis: {
186
- ...state.diagnosis,
187
- token_consumption: diagnosisResult
188
- }
189
- });
190
- ```
191
-
192
- ## Fix Strategies Mapping
193
-
194
- | Pattern | Strategy | Implementation |
195
- |---------|----------|----------------|
196
- | TKN-001 | prompt_compression | Extract static text to variables, use template inheritance |
197
- | TKN-002 | state_field_reduction | Audit and consolidate fields, remove non-essential data |
198
- | TKN-003 | lazy_loading | Pass paths instead of content, agents load when needed |
199
- | TKN-004 | sliding_window | Add `.slice(-N)` after push/concat operations |
200
- | TKN-005 | output_minimization | Use return values instead of file relay |
1
+ # Action: Diagnose Token Consumption
2
+
3
+ Analyze target skill for token consumption inefficiencies and output optimization opportunities.
4
+
5
+ ## Purpose
6
+
7
+ Detect patterns that cause excessive token usage:
8
+ - Verbose prompts without compression
9
+ - Large state objects with unnecessary fields
10
+ - Full content passing instead of references
11
+ - Unbounded arrays without sliding windows
12
+ - Redundant file I/O (write-then-read patterns)
13
+
14
+ ## Detection Patterns
15
+
16
+ | Pattern ID | Name | Detection Logic | Severity |
17
+ |------------|------|-----------------|----------|
18
+ | TKN-001 | Verbose Prompts | Prompt files > 4KB or high static/variable ratio | medium |
19
+ | TKN-002 | Excessive State Fields | State schema > 15 top-level keys | medium |
20
+ | TKN-003 | Full Content Passing | `Read()` result embedded directly in prompt | high |
21
+ | TKN-004 | Unbounded Arrays | `.push`/`concat` without `.slice(-N)` | high |
22
+ | TKN-005 | Redundant Write→Read | `Write(file)` followed by `Read(file)` | medium |
23
+
24
+ ## Execution Steps
25
+
26
+ ```javascript
27
+ async function diagnoseTokenConsumption(state, workDir) {
28
+ const issues = [];
29
+ const evidence = [];
30
+ const skillPath = state.target_skill.path;
31
+
32
+ // 1. Scan for verbose prompts (TKN-001)
33
+ const mdFiles = Glob(`${skillPath}/**/*.md`);
34
+ for (const file of mdFiles) {
35
+ const content = Read(file);
36
+ if (content.length > 4000) {
37
+ evidence.push({
38
+ file: file,
39
+ pattern: 'TKN-001',
40
+ severity: 'medium',
41
+ context: `File size: ${content.length} chars (threshold: 4000)`
42
+ });
43
+ }
44
+ }
45
+
46
+ // 2. Check state schema field count (TKN-002)
47
+ const stateSchema = Glob(`${skillPath}/**/state-schema.md`)[0];
48
+ if (stateSchema) {
49
+ const schemaContent = Read(stateSchema);
50
+ const fieldMatches = schemaContent.match(/^\s*\w+:/gm) || [];
51
+ if (fieldMatches.length > 15) {
52
+ evidence.push({
53
+ file: stateSchema,
54
+ pattern: 'TKN-002',
55
+ severity: 'medium',
56
+ context: `State has ${fieldMatches.length} fields (threshold: 15)`
57
+ });
58
+ }
59
+ }
60
+
61
+ // 3. Detect full content passing (TKN-003)
62
+ const fullContentPattern = /Read\([^)]+\)\s*[\+,]|`\$\{.*Read\(/g;
63
+ for (const file of mdFiles) {
64
+ const content = Read(file);
65
+ const matches = content.match(fullContentPattern);
66
+ if (matches) {
67
+ evidence.push({
68
+ file: file,
69
+ pattern: 'TKN-003',
70
+ severity: 'high',
71
+ context: `Full content passing detected: ${matches[0]}`
72
+ });
73
+ }
74
+ }
75
+
76
+ // 4. Detect unbounded arrays (TKN-004)
77
+ const unboundedPattern = /\.(push|concat)\([^)]+\)(?!.*\.slice)/g;
78
+ for (const file of mdFiles) {
79
+ const content = Read(file);
80
+ const matches = content.match(unboundedPattern);
81
+ if (matches) {
82
+ evidence.push({
83
+ file: file,
84
+ pattern: 'TKN-004',
85
+ severity: 'high',
86
+ context: `Unbounded array growth: ${matches[0]}`
87
+ });
88
+ }
89
+ }
90
+
91
+ // 5. Detect write-then-read patterns (TKN-005)
92
+ const writeReadPattern = /Write\([^)]+\)[\s\S]{0,100}Read\([^)]+\)/g;
93
+ for (const file of mdFiles) {
94
+ const content = Read(file);
95
+ const matches = content.match(writeReadPattern);
96
+ if (matches) {
97
+ evidence.push({
98
+ file: file,
99
+ pattern: 'TKN-005',
100
+ severity: 'medium',
101
+ context: `Write-then-read pattern detected`
102
+ });
103
+ }
104
+ }
105
+
106
+ // Calculate severity
107
+ const highCount = evidence.filter(e => e.severity === 'high').length;
108
+ const mediumCount = evidence.filter(e => e.severity === 'medium').length;
109
+
110
+ let severity = 'none';
111
+ if (highCount > 0) severity = 'high';
112
+ else if (mediumCount > 2) severity = 'medium';
113
+ else if (mediumCount > 0) severity = 'low';
114
+
115
+ return {
116
+ status: 'completed',
117
+ issues_found: evidence.length,
118
+ severity: severity,
119
+ execution_time_ms: Date.now() - startTime,
120
+ details: {
121
+ patterns_checked: ['TKN-001', 'TKN-002', 'TKN-003', 'TKN-004', 'TKN-005'],
122
+ patterns_matched: [...new Set(evidence.map(e => e.pattern))],
123
+ evidence: evidence,
124
+ recommendations: generateRecommendations(evidence)
125
+ }
126
+ };
127
+ }
128
+
129
+ function generateRecommendations(evidence) {
130
+ const recs = [];
131
+ const patterns = [...new Set(evidence.map(e => e.pattern))];
132
+
133
+ if (patterns.includes('TKN-001')) {
134
+ recs.push('Apply prompt_compression: Extract static instructions to templates, use placeholders');
135
+ }
136
+ if (patterns.includes('TKN-002')) {
137
+ recs.push('Apply state_field_reduction: Remove debug/cache fields, consolidate related fields');
138
+ }
139
+ if (patterns.includes('TKN-003')) {
140
+ recs.push('Apply lazy_loading: Pass file paths instead of content, let agents read if needed');
141
+ }
142
+ if (patterns.includes('TKN-004')) {
143
+ recs.push('Apply sliding_window: Add .slice(-N) to array operations to bound growth');
144
+ }
145
+ if (patterns.includes('TKN-005')) {
146
+ recs.push('Apply output_minimization: Use in-memory data passing, eliminate temporary files');
147
+ }
148
+
149
+ return recs;
150
+ }
151
+ ```
152
+
153
+ ## Output
154
+
155
+ Write diagnosis result to `${workDir}/diagnosis/token-consumption-diagnosis.json`:
156
+
157
+ ```json
158
+ {
159
+ "status": "completed",
160
+ "issues_found": 3,
161
+ "severity": "medium",
162
+ "execution_time_ms": 1500,
163
+ "details": {
164
+ "patterns_checked": ["TKN-001", "TKN-002", "TKN-003", "TKN-004", "TKN-005"],
165
+ "patterns_matched": ["TKN-001", "TKN-003"],
166
+ "evidence": [
167
+ {
168
+ "file": "phases/orchestrator.md",
169
+ "pattern": "TKN-001",
170
+ "severity": "medium",
171
+ "context": "File size: 5200 chars (threshold: 4000)"
172
+ }
173
+ ],
174
+ "recommendations": [
175
+ "Apply prompt_compression: Extract static instructions to templates"
176
+ ]
177
+ }
178
+ }
179
+ ```
180
+
181
+ ## State Update
182
+
183
+ ```javascript
184
+ updateState({
185
+ diagnosis: {
186
+ ...state.diagnosis,
187
+ token_consumption: diagnosisResult
188
+ }
189
+ });
190
+ ```
191
+
192
+ ## Fix Strategies Mapping
193
+
194
+ | Pattern | Strategy | Implementation |
195
+ |---------|----------|----------------|
196
+ | TKN-001 | prompt_compression | Extract static text to variables, use template inheritance |
197
+ | TKN-002 | state_field_reduction | Audit and consolidate fields, remove non-essential data |
198
+ | TKN-003 | lazy_loading | Pass paths instead of content, agents load when needed |
199
+ | TKN-004 | sliding_window | Add `.slice(-N)` after push/concat operations |
200
+ | TKN-005 | output_minimization | Use return values instead of file relay |