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,615 +1,615 @@
1
- ---
2
- name: docs
3
- description: Plan documentation workflow with dynamic grouping (≤10 docs/task), generates IMPL tasks for parallel module trees, README, ARCHITECTURE, and HTTP API docs
4
- argument-hint: "[path] [--tool <gemini|qwen|codex>] [--mode <full|partial>] [--cli-execute]"
5
- ---
6
-
7
- # Documentation Workflow (/memory:docs)
8
-
9
- ## Overview
10
- Lightweight planner that analyzes project structure, decomposes documentation work into tasks, and generates execution plans. Does NOT generate documentation content itself - delegates to doc-generator agent.
11
-
12
- **Execution Strategy**:
13
- - **Dynamic Task Grouping**: Level 1 tasks grouped by top-level directories with document count limit
14
- - **Primary constraint**: Each task generates ≤10 documents (API.md + README.md count)
15
- - **Optimization goal**: Prefer grouping 2 top-level directories per task for context sharing
16
- - **Conflict resolution**: If 2 dirs exceed 10 docs, reduce to 1 dir/task; if 1 dir exceeds 10 docs, split by subdirectories
17
- - **Context benefit**: Same-task directories analyzed together via single Gemini call
18
- - **Parallel Execution**: Multiple Level 1 tasks execute concurrently for faster completion
19
- - **Pre-computed Analysis**: Phase 2 performs unified analysis once, stored in `.process/` for reuse
20
- - **Efficient Data Loading**: All existing docs loaded once in Phase 2, shared across tasks
21
-
22
- **Path Mirroring**: Documentation structure mirrors source code under `.workflow/docs/{project_name}/`
23
- - Example: `my_app/src/core/` → `.workflow/docs/my_app/src/core/API.md`
24
-
25
- **Two Execution Modes**:
26
- - **Default (Agent Mode)**: CLI analyzes in `pre_analysis` (MODE=analysis), agent writes docs
27
- - **--cli-execute (CLI Mode)**: CLI generates docs in `implementation_approach` (MODE=write), agent executes CLI commands
28
-
29
- ## Path Mirroring Strategy
30
-
31
- **Principle**: Documentation structure **mirrors** source code structure under project-specific directory.
32
-
33
- | Source Path | Project Name | Documentation Path |
34
- |------------|--------------|-------------------|
35
- | `my_app/src/core/` | `my_app` | `.workflow/docs/my_app/src/core/API.md` |
36
- | `my_app/src/modules/auth/` | `my_app` | `.workflow/docs/my_app/src/modules/auth/API.md` |
37
- | `another_project/lib/utils/` | `another_project` | `.workflow/docs/another_project/lib/utils/API.md` |
38
-
39
-
40
- ## Parameters
41
-
42
- ```bash
43
- /memory:docs [path] [--tool <gemini|qwen|codex>] [--mode <full|partial>] [--cli-execute]
44
- ```
45
-
46
- - **path**: Source directory to analyze (default: current directory)
47
- - Specifies the source code directory to be documented
48
- - Documentation is generated in a separate `.workflow/docs/{project_name}/` directory at the workspace root, **not** within the source `path` itself
49
- - The source path's structure is mirrored within the project-specific documentation folder
50
- - Example: analyzing `src/modules` produces documentation at `.workflow/docs/{project_name}/src/modules/`
51
- - **--mode**: Documentation generation mode (default: full)
52
- - `full`: Complete documentation (modules + README + ARCHITECTURE + EXAMPLES + HTTP API)
53
- - `partial`: Module documentation only (API.md + README.md)
54
- - **--tool**: CLI tool selection (default: gemini)
55
- - `gemini`: Comprehensive documentation, pattern recognition
56
- - `qwen`: Architecture analysis, system design focus
57
- - `codex`: Implementation validation, code quality
58
- - **--cli-execute**: Enable CLI-based documentation generation (optional)
59
-
60
- ## Planning Workflow
61
-
62
- ### Phase 1: Initialize Session
63
-
64
- ```bash
65
- # Get target path, project name, and root
66
- bash(pwd && basename "$(pwd)" && git rev-parse --show-toplevel 2>/dev/null || pwd && date +%Y%m%d-%H%M%S)
67
- ```
68
-
69
- ```javascript
70
- // Create docs session (type: docs)
71
- SlashCommand(command="/workflow:session:start --type docs --new \"{project_name}-docs-{timestamp}\"")
72
- // Parse output to get sessionId
73
- ```
74
-
75
- ```bash
76
- # Update workflow-session.json with docs-specific fields
77
- bash(jq '. + {"target_path":"{target_path}","project_root":"{project_root}","project_name":"{project_name}","mode":"full","tool":"gemini","cli_execute":false}' .workflow/active/{sessionId}/workflow-session.json > tmp.json && mv tmp.json .workflow/active/{sessionId}/workflow-session.json)
78
- ```
79
-
80
- ### Phase 2: Analyze Structure
81
-
82
- **Smart filter**: Auto-detect and skip tests/build/config/vendor based on project tech stack.
83
-
84
- **Commands** (collect data with simple bash):
85
-
86
- ```bash
87
- # 1. Run folder analysis
88
- bash(ccw tool exec get_modules_by_depth '{}' | ccw tool exec classify_folders '{}')
89
-
90
- # 2. Get top-level directories (first 2 path levels)
91
- bash(ccw tool exec get_modules_by_depth '{}' | ccw tool exec classify_folders '{}' | awk -F'|' '{print $1}' | sed 's|^\./||' | awk -F'/' '{if(NF>=2) print $1"/"$2; else if(NF==1) print $1}' | sort -u)
92
-
93
- # 3. Find existing docs (if directory exists)
94
- bash(if [ -d .workflow/docs/\${project_name} ]; then find .workflow/docs/\${project_name} -type f -name "*.md" ! -path "*/README.md" ! -path "*/ARCHITECTURE.md" ! -path "*/EXAMPLES.md" ! -path "*/api/*" 2>/dev/null; fi)
95
-
96
- # 4. Read existing docs content (if files exist)
97
- bash(if [ -d .workflow/docs/\${project_name} ]; then find .workflow/docs/\${project_name} -type f -name "*.md" ! -path "*/README.md" ! -path "*/ARCHITECTURE.md" ! -path "*/EXAMPLES.md" ! -path "*/api/*" 2>/dev/null | xargs cat 2>/dev/null; fi)
98
- ```
99
-
100
- **Data Processing**: Parse bash outputs, calculate statistics, use **Write tool** to create `${session_dir}/.process/doc-planning-data.json` with structure:
101
-
102
- ```json
103
- {
104
- "metadata": {
105
- "generated_at": "2025-11-03T16:57:30.469669",
106
- "project_name": "project_name",
107
- "project_root": "/path/to/project"
108
- },
109
- "folder_analysis": [
110
- {"path": "./src/core", "type": "code", "code_count": 5, "dirs_count": 2}
111
- ],
112
- "top_level_dirs": ["src/modules", "lib/core"],
113
- "existing_docs": {
114
- "file_list": [".workflow/docs/project/src/core/API.md"],
115
- "content": "... existing docs content ..."
116
- },
117
- "unified_analysis": [],
118
- "statistics": {
119
- "total": 15,
120
- "code": 8,
121
- "navigation": 7,
122
- "top_level": 3
123
- }
124
- }
125
- ```
126
-
127
- **Then** use **Edit tool** to update `workflow-session.json` adding analysis field.
128
-
129
- **Output**: Single `doc-planning-data.json` with all analysis data (no temp files or Python scripts).
130
-
131
- **Auto-skipped**: Tests (`**/test/**`, `**/*.test.*`), Build (`**/node_modules/**`, `**/dist/**`), Config (root-level files), Vendor directories.
132
-
133
- ### Phase 3: Detect Update Mode
134
-
135
- **Commands**:
136
-
137
- ```bash
138
- # Count existing docs from doc-planning-data.json
139
- bash(cat .workflow/active/WFS-docs-{timestamp}/.process/doc-planning-data.json | jq '.existing_docs.file_list | length')
140
- ```
141
-
142
- **Data Processing**: Use count result, then use **Edit tool** to update `workflow-session.json`:
143
- - Add `"update_mode": "update"` if count > 0, else `"create"`
144
- - Add `"existing_docs": <count>`
145
-
146
- ### Phase 4: Decompose Tasks
147
-
148
- **Task Hierarchy** (Dynamic based on document count):
149
-
150
- ```
151
- Small Projects (total ≤10 docs):
152
- Level 1: IMPL-001 (all directories in single task, shared context)
153
- Level 2: IMPL-002 (README, full mode only)
154
- Level 3: IMPL-003 (ARCHITECTURE+EXAMPLES), IMPL-004 (HTTP API, optional)
155
-
156
- Medium Projects (Example: 7 top-level dirs, 18 total docs):
157
- Step 1: Count docs per top-level dir
158
- ├─ dir1: 3 docs, dir2: 4 docs → Group 1 (7 docs)
159
- ├─ dir3: 5 docs, dir4: 3 docs → Group 2 (8 docs)
160
- ├─ dir5: 2 docs → Group 3 (2 docs, can add more)
161
-
162
- Step 2: Create tasks with ≤10 docs constraint
163
- Level 1: IMPL-001 to IMPL-003 (parallel groups)
164
- ├─ IMPL-001: Group 1 (dir1 + dir2, 7 docs, shared context)
165
- ├─ IMPL-002: Group 2 (dir3 + dir4, 8 docs, shared context)
166
- └─ IMPL-003: Group 3 (remaining dirs, ≤10 docs)
167
- Level 2: IMPL-004 (README, depends on Level 1, full mode only)
168
- Level 3: IMPL-005 (ARCHITECTURE+EXAMPLES), IMPL-006 (HTTP API, optional)
169
-
170
- Large Projects (single dir >10 docs):
171
- Step 1: Detect oversized directory
172
- └─ src/modules/: 15 subdirs → 30 docs (exceeds limit)
173
-
174
- Step 2: Split by subdirectories
175
- Level 1: IMPL-001 to IMPL-003 (split oversized dir)
176
- ├─ IMPL-001: src/modules/ subdirs 1-5 (10 docs)
177
- ├─ IMPL-002: src/modules/ subdirs 6-10 (10 docs)
178
- └─ IMPL-003: src/modules/ subdirs 11-15 (10 docs)
179
- ```
180
-
181
- **Grouping Algorithm**:
182
- 1. Count total docs for each top-level directory
183
- 2. Try grouping 2 directories (optimization for context sharing)
184
- 3. If group exceeds 10 docs, split to 1 dir/task
185
- 4. If single dir exceeds 10 docs, split by subdirectories
186
- 5. Create parallel Level 1 tasks with ≤10 docs each
187
-
188
-
189
- **Commands**:
190
-
191
- ```bash
192
- # 1. Get top-level directories from doc-planning-data.json
193
- bash(cat .workflow/active/WFS-docs-{timestamp}/.process/doc-planning-data.json | jq -r '.top_level_dirs[]')
194
-
195
- # 2. Get mode from workflow-session.json
196
- bash(cat .workflow/active/WFS-docs-{timestamp}/workflow-session.json | jq -r '.mode // "full"')
197
-
198
- # 3. Check for HTTP API
199
- bash(grep -r "router\.|@Get\|@Post" src/ 2>/dev/null && echo "API_FOUND" || echo "NO_API")
200
- ```
201
-
202
- **Data Processing**:
203
- 1. Count documents for each top-level directory (from folder_analysis):
204
- - Code folders: 2 docs each (API.md + README.md)
205
- - Navigation folders: 1 doc each (README.md only)
206
- 2. Apply grouping algorithm with ≤10 docs constraint:
207
- - Try grouping 2 directories, calculate total docs
208
- - If total ≤10 docs: create group
209
- - If total >10 docs: split to 1 dir/group or subdivide
210
- - If single dir >10 docs: split by subdirectories
211
- 3. Use **Edit tool** to update `doc-planning-data.json` adding groups field:
212
- ```json
213
- "groups": {
214
- "count": 3,
215
- "assignments": [
216
- {"group_id": "001", "directories": ["src/modules", "src/utils"], "doc_count": 5},
217
- {"group_id": "002", "directories": ["lib/core"], "doc_count": 6},
218
- {"group_id": "003", "directories": ["lib/helpers"], "doc_count": 3}
219
- ]
220
- }
221
- ```
222
-
223
- **Task ID Calculation**:
224
- ```bash
225
- group_count=$(jq '.groups.count' .workflow/active/WFS-docs-{timestamp}/.process/doc-planning-data.json)
226
- readme_id=$((group_count + 1)) # Next ID after groups
227
- arch_id=$((group_count + 2))
228
- api_id=$((group_count + 3))
229
- ```
230
-
231
- ### Phase 5: Generate Task JSONs
232
-
233
- **CLI Strategy**:
234
-
235
- | Mode | cli_execute | Placement | CLI MODE | Approval Flag | Agent Role |
236
- |------|-------------|-----------|----------|---------------|------------|
237
- | **Agent** | false | pre_analysis | analysis | (none) | Generate docs in implementation_approach |
238
- | **CLI** | true | implementation_approach | write | --mode write | Execute CLI commands, validate output |
239
-
240
- **Command Patterns**:
241
- - Gemini/Qwen: `ccw cli -p "..." --tool gemini --mode analysis --cd dir`
242
- - CLI Mode: `ccw cli -p "..." --tool gemini --mode write --cd dir`
243
- - Codex: `ccw cli -p "..." --tool codex --mode write --cd dir`
244
-
245
- **Generation Process**:
246
- 1. Read configuration values (tool, cli_execute, mode) from workflow-session.json
247
- 2. Read group assignments from doc-planning-data.json
248
- 3. Generate Level 1 tasks (IMPL-001 to IMPL-N, one per group)
249
- 4. Generate Level 2+ tasks if mode=full (README, ARCHITECTURE, HTTP API)
250
-
251
- ## Task Templates
252
-
253
- ### Level 1: Module Trees Group Task (Unified)
254
-
255
- **Execution Model**: Each task processes assigned directory group (max 2 directories) using pre-analyzed data from Phase 2.
256
-
257
- ```json
258
- {
259
- "id": "IMPL-${group_number}",
260
- "title": "Document Module Trees Group ${group_number}",
261
- "status": "pending",
262
- "meta": {
263
- "type": "docs-tree-group",
264
- "agent": "@doc-generator",
265
- "tool": "gemini",
266
- "cli_execute": false,
267
- "group_number": "${group_number}",
268
- "total_groups": "${total_groups}"
269
- },
270
- "context": {
271
- "requirements": [
272
- "Process directories from group ${group_number} in doc-planning-data.json",
273
- "Generate docs to .workflow/docs/${project_name}/ (mirrored structure)",
274
- "Code folders: API.md + README.md; Navigation folders: README.md only",
275
- "Use pre-analyzed data from Phase 2 (no redundant analysis)"
276
- ],
277
- "focus_paths": ["${group_dirs_from_json}"],
278
- "precomputed_data": {
279
- "phase2_analysis": "${session_dir}/.process/doc-planning-data.json"
280
- }
281
- },
282
- "flow_control": {
283
- "pre_analysis": [
284
- {
285
- "step": "load_precomputed_data",
286
- "action": "Load Phase 2 analysis and extract group directories",
287
- "commands": [
288
- "bash(cat ${session_dir}/.process/doc-planning-data.json)",
289
- "bash(jq '.groups.assignments[] | select(.group_id == \"${group_number}\") | .directories' ${session_dir}/.process/doc-planning-data.json)"
290
- ],
291
- "output_to": "phase2_context",
292
- "note": "Single JSON file contains all Phase 2 analysis results"
293
- }
294
- ],
295
- "implementation_approach": [
296
- {
297
- "step": 1,
298
- "title": "Generate documentation for assigned directory group",
299
- "description": "Process directories in Group ${group_number} using pre-analyzed data",
300
- "modification_points": [
301
- "Read group directories from [phase2_context].groups.assignments[${group_number}].directories",
302
- "For each directory: parse folder types from folder_analysis, parse structure from unified_analysis",
303
- "Map source_path to .workflow/docs/${project_name}/{path}",
304
- "Generate API.md for code folders, README.md for all folders",
305
- "Preserve user modifications from [phase2_context].existing_docs.content"
306
- ],
307
- "logic_flow": [
308
- "phase2 = parse([phase2_context])",
309
- "dirs = phase2.groups.assignments[${group_number}].directories",
310
- "for dir in dirs:",
311
- " folder_info = find(dir, phase2.folder_analysis)",
312
- " outline = find(dir, phase2.unified_analysis)",
313
- " if folder_info.type == 'code': generate API.md + README.md",
314
- " elif folder_info.type == 'navigation': generate README.md only",
315
- " write to .workflow/docs/${project_name}/{dir}/"
316
- ],
317
- "depends_on": [],
318
- "output": "group_module_docs"
319
- }
320
- ],
321
- "target_files": [
322
- ".workflow/docs/${project_name}/*/API.md",
323
- ".workflow/docs/${project_name}/*/README.md"
324
- ]
325
- }
326
- }
327
- ```
328
-
329
- **CLI Execute Mode Note**: When `cli_execute=true`, add Step 2 in `implementation_approach`:
330
- ```json
331
- {
332
- "step": 2,
333
- "title": "Batch generate documentation via CLI",
334
- "command": "ccw cli -p 'PURPOSE: Generate module docs\\nTASK: Create documentation\\nMODE: write\\nCONTEXT: @**/* [phase2_context]\\nEXPECTED: API.md and README.md\\nRULES: Mirror structure' --tool gemini --mode write --cd ${dirs_from_group}",
335
- "depends_on": [1],
336
- "output": "generated_docs"
337
- }
338
- ```
339
-
340
- ### Level 2: Project README Task
341
-
342
- **Task ID**: `IMPL-${readme_id}` (where `readme_id = group_count + 1`)
343
- **Dependencies**: Depends on all Level 1 tasks completing.
344
-
345
- ```json
346
- {
347
- "id": "IMPL-${readme_id}",
348
- "title": "Generate Project README",
349
- "status": "pending",
350
- "depends_on": ["IMPL-001", "...", "IMPL-${group_count}"],
351
- "meta": {"type": "docs", "agent": "@doc-generator", "tool": "gemini", "cli_execute": false},
352
- "flow_control": {
353
- "pre_analysis": [
354
- {
355
- "step": "load_existing_readme",
356
- "command": "bash(cat .workflow/docs/${project_name}/README.md 2>/dev/null || echo 'No existing README')",
357
- "output_to": "existing_readme"
358
- },
359
- {
360
- "step": "load_module_docs",
361
- "command": "bash(find .workflow/docs/${project_name} -type f -name '*.md' ! -path '.workflow/docs/${project_name}/README.md' ! -path '.workflow/docs/${project_name}/ARCHITECTURE.md' ! -path '.workflow/docs/${project_name}/EXAMPLES.md' ! -path '.workflow/docs/${project_name}/api/*' | xargs cat)",
362
- "output_to": "all_module_docs"
363
- },
364
- {
365
- "step": "analyze_project",
366
- "command": "bash(ccw cli -p \"PURPOSE: Analyze project structure\\nTASK: Extract overview from modules\\nMODE: analysis\\nCONTEXT: [all_module_docs]\\nEXPECTED: Project outline\" --tool gemini --mode analysis)",
367
- "output_to": "project_outline"
368
- }
369
- ],
370
- "implementation_approach": [
371
- {
372
- "step": 1,
373
- "title": "Generate project README",
374
- "description": "Generate project README with navigation links while preserving user modifications",
375
- "modification_points": [
376
- "Parse [project_outline] and [all_module_docs]",
377
- "Generate README structure with navigation links",
378
- "Preserve [existing_readme] user modifications"
379
- ],
380
- "logic_flow": ["Parse data", "Generate README with navigation", "Preserve modifications"],
381
- "depends_on": [],
382
- "output": "project_readme"
383
- }
384
- ],
385
- "target_files": [".workflow/docs/${project_name}/README.md"]
386
- }
387
- }
388
- ```
389
-
390
- ### Level 3: Architecture & Examples Documentation Task
391
-
392
- **Task ID**: `IMPL-${arch_id}` (where `arch_id = group_count + 2`)
393
- **Dependencies**: Depends on Level 2 (Project README).
394
-
395
- ```json
396
- {
397
- "id": "IMPL-${arch_id}",
398
- "title": "Generate Architecture & Examples Documentation",
399
- "status": "pending",
400
- "depends_on": ["IMPL-${readme_id}"],
401
- "meta": {"type": "docs", "agent": "@doc-generator", "tool": "gemini", "cli_execute": false},
402
- "flow_control": {
403
- "pre_analysis": [
404
- {"step": "load_existing_docs", "command": "bash(cat .workflow/docs/${project_name}/{ARCHITECTURE,EXAMPLES}.md 2>/dev/null || echo 'No existing docs')", "output_to": "existing_arch_examples"},
405
- {"step": "load_all_docs", "command": "bash(cat .workflow/docs/${project_name}/README.md && find .workflow/docs/${project_name} -type f -name '*.md' ! -path '*/README.md' ! -path '*/ARCHITECTURE.md' ! -path '*/EXAMPLES.md' ! -path '*/api/*' | xargs cat)", "output_to": "all_docs"},
406
- {"step": "analyze_architecture", "command": "bash(ccw cli -p \"PURPOSE: Analyze system architecture\\nTASK: Synthesize architectural overview and examples\\nMODE: analysis\\nCONTEXT: [all_docs]\\nEXPECTED: Architecture + Examples outline\" --tool gemini --mode analysis)", "output_to": "arch_examples_outline"}
407
- ],
408
- "implementation_approach": [
409
- {
410
- "step": 1,
411
- "title": "Generate architecture and examples documentation",
412
- "modification_points": [
413
- "Parse [arch_examples_outline] and [all_docs]",
414
- "Generate ARCHITECTURE.md (system design, patterns)",
415
- "Generate EXAMPLES.md (code snippets, usage)",
416
- "Preserve [existing_arch_examples] modifications"
417
- ],
418
- "depends_on": [],
419
- "output": "arch_examples_docs"
420
- }
421
- ],
422
- "target_files": [".workflow/docs/${project_name}/ARCHITECTURE.md", ".workflow/docs/${project_name}/EXAMPLES.md"]
423
- }
424
- }
425
- ```
426
-
427
- ### Level 4: HTTP API Documentation Task (Optional)
428
-
429
- **Task ID**: `IMPL-${api_id}` (where `api_id = group_count + 3`)
430
- **Dependencies**: Depends on Level 3.
431
-
432
- ```json
433
- {
434
- "id": "IMPL-${api_id}",
435
- "title": "Generate HTTP API Documentation",
436
- "status": "pending",
437
- "depends_on": ["IMPL-${arch_id}"],
438
- "meta": {"type": "docs", "agent": "@doc-generator", "tool": "gemini", "cli_execute": false},
439
- "flow_control": {
440
- "pre_analysis": [
441
- {"step": "discover_api", "command": "bash(rg 'router\\.| @(Get|Post)' -g '*.{ts,js}')", "output_to": "endpoint_discovery"},
442
- {"step": "load_existing_api", "command": "bash(cat .workflow/docs/${project_name}/api/README.md 2>/dev/null || echo 'No existing API docs')", "output_to": "existing_api_docs"},
443
- {"step": "analyze_api", "command": "bash(ccw cli -p \"PURPOSE: Document HTTP API\\nTASK: Analyze endpoints\\nMODE: analysis\\nCONTEXT: @src/api/**/* [endpoint_discovery]\\nEXPECTED: API outline\" --tool gemini --mode analysis)", "output_to": "api_outline"}
444
- ],
445
- "implementation_approach": [
446
- {
447
- "step": 1,
448
- "title": "Generate HTTP API documentation",
449
- "modification_points": [
450
- "Parse [api_outline] and [endpoint_discovery]",
451
- "Document endpoints, request/response formats",
452
- "Preserve [existing_api_docs] modifications"
453
- ],
454
- "depends_on": [],
455
- "output": "api_docs"
456
- }
457
- ],
458
- "target_files": [".workflow/docs/${project_name}/api/README.md"]
459
- }
460
- }
461
- ```
462
-
463
- ## Session Structure
464
-
465
- **Unified Structure** (single JSON replaces multiple text files):
466
-
467
- ```
468
- .workflow/active/
469
- └── WFS-docs-{timestamp}/
470
- ├── workflow-session.json # Session metadata
471
- ├── IMPL_PLAN.md
472
- ├── TODO_LIST.md
473
- ├── .process/
474
- │ └── doc-planning-data.json # All Phase 2 analysis data (replaces 7+ files)
475
- └── .task/
476
- ├── IMPL-001.json # Small: all modules | Large: group 1
477
- ├── IMPL-00N.json # (Large only: groups 2-N)
478
- ├── IMPL-{N+1}.json # README (full mode)
479
- ├── IMPL-{N+2}.json # ARCHITECTURE+EXAMPLES (full mode)
480
- └── IMPL-{N+3}.json # HTTP API (optional)
481
- ```
482
-
483
- **doc-planning-data.json Structure**:
484
- ```json
485
- {
486
- "metadata": {
487
- "generated_at": "2025-11-03T16:41:06+08:00",
488
- "project_name": "Claude_dms3",
489
- "project_root": "/d/Claude_dms3"
490
- },
491
- "folder_analysis": [
492
- {"path": "./src/core", "type": "code", "code_count": 5, "dirs_count": 2},
493
- {"path": "./src/utils", "type": "navigation", "code_count": 0, "dirs_count": 4}
494
- ],
495
- "top_level_dirs": ["src/modules", "src/utils", "lib/core"],
496
- "existing_docs": {
497
- "file_list": [".workflow/docs/project/src/core/API.md"],
498
- "content": "... concatenated existing docs ..."
499
- },
500
- "unified_analysis": [
501
- {"module_path": "./src/core", "outline_summary": "Core functionality"}
502
- ],
503
- "groups": {
504
- "count": 4,
505
- "assignments": [
506
- {"group_id": "001", "directories": ["src/modules", "src/utils"], "doc_count": 6},
507
- {"group_id": "002", "directories": ["lib/core", "lib/helpers"], "doc_count": 7}
508
- ]
509
- },
510
- "statistics": {
511
- "total": 15,
512
- "code": 8,
513
- "navigation": 7,
514
- "top_level": 3
515
- }
516
- }
517
- ```
518
-
519
- **Workflow Session Structure** (workflow-session.json):
520
- ```json
521
- {
522
- "session_id": "WFS-docs-{timestamp}",
523
- "project": "{project_name} documentation",
524
- "status": "planning",
525
- "timestamp": "2024-01-20T14:30:22+08:00",
526
- "path": ".",
527
- "target_path": "/path/to/project",
528
- "project_root": "/path/to/project",
529
- "project_name": "{project_name}",
530
- "mode": "full",
531
- "tool": "gemini",
532
- "cli_execute": false,
533
- "update_mode": "update",
534
- "existing_docs": 5,
535
- "analysis": {
536
- "total": "15",
537
- "code": "8",
538
- "navigation": "7",
539
- "top_level": "3"
540
- }
541
- }
542
- ```
543
-
544
- ## Generated Documentation
545
-
546
- **Structure mirrors project source directories under project-specific folder**:
547
-
548
- ```
549
- .workflow/docs/
550
- └── {project_name}/ # Project-specific root
551
- ├── src/ # Mirrors src/ directory
552
- │ ├── modules/
553
- │ │ ├── README.md # Navigation
554
- │ │ ├── auth/
555
- │ │ │ ├── API.md # API signatures
556
- │ │ │ ├── README.md # Module docs
557
- │ │ │ └── middleware/
558
- │ │ │ ├── API.md
559
- │ │ │ └── README.md
560
- │ │ └── api/
561
- │ │ ├── API.md
562
- │ │ └── README.md
563
- │ └── utils/
564
- │ └── README.md
565
- ├── lib/ # Mirrors lib/ directory
566
- │ └── core/
567
- │ ├── API.md
568
- │ └── README.md
569
- ├── README.md # Project root
570
- ├── ARCHITECTURE.md # System design
571
- ├── EXAMPLES.md # Usage examples
572
- └── api/ # Optional
573
- └── README.md # HTTP API reference
574
- ```
575
-
576
- ## Execution Commands
577
-
578
- ```bash
579
- # Execute entire workflow (auto-discovers active session)
580
- /workflow:execute
581
-
582
- # Or specify session
583
- /workflow:execute --resume-session="WFS-docs-yyyymmdd-hhmmss"
584
-
585
- # Individual task execution
586
- /task:execute IMPL-001
587
- ```
588
-
589
- ## Template Reference
590
-
591
- **Available Templates** (`~/.claude/workflows/cli-templates/prompts/documentation/`):
592
- - `api.txt`: Code API (Part A) + HTTP API (Part B)
593
- - `module-readme.txt`: Module purpose, usage, dependencies
594
- - `folder-navigation.txt`: Navigation README for folders with subdirectories
595
- - `project-readme.txt`: Project overview, getting started, navigation
596
- - `project-architecture.txt`: System structure, module map, design patterns
597
- - `project-examples.txt`: End-to-end usage examples
598
-
599
- ## Execution Mode Summary
600
-
601
- | Mode | CLI Placement | CLI MODE | Approval Flag | Agent Role |
602
- |------|---------------|----------|---------------|------------|
603
- | **Agent (default)** | pre_analysis | analysis | (none) | Generates documentation content |
604
- | **CLI (--cli-execute)** | implementation_approach | write | --mode write | Executes CLI commands, validates output |
605
-
606
- **Execution Flow**:
607
- - **Phase 2**: Unified analysis once, results in `.process/`
608
- - **Phase 4**: Dynamic grouping (max 2 dirs per group)
609
- - **Level 1**: Parallel processing for module tree groups
610
- - **Level 2+**: Sequential execution for project-level docs
611
-
612
- ## Related Commands
613
- - `/workflow:execute` - Execute documentation tasks
614
- - `/workflow:status` - View task progress
615
- - `/workflow:session:complete` - Mark session complete
1
+ ---
2
+ name: docs
3
+ description: Plan documentation workflow with dynamic grouping (≤10 docs/task), generates IMPL tasks for parallel module trees, README, ARCHITECTURE, and HTTP API docs
4
+ argument-hint: "[path] [--tool <gemini|qwen|codex>] [--mode <full|partial>] [--cli-execute]"
5
+ ---
6
+
7
+ # Documentation Workflow (/memory:docs)
8
+
9
+ ## Overview
10
+ Lightweight planner that analyzes project structure, decomposes documentation work into tasks, and generates execution plans. Does NOT generate documentation content itself - delegates to doc-generator agent.
11
+
12
+ **Execution Strategy**:
13
+ - **Dynamic Task Grouping**: Level 1 tasks grouped by top-level directories with document count limit
14
+ - **Primary constraint**: Each task generates ≤10 documents (API.md + README.md count)
15
+ - **Optimization goal**: Prefer grouping 2 top-level directories per task for context sharing
16
+ - **Conflict resolution**: If 2 dirs exceed 10 docs, reduce to 1 dir/task; if 1 dir exceeds 10 docs, split by subdirectories
17
+ - **Context benefit**: Same-task directories analyzed together via single Gemini call
18
+ - **Parallel Execution**: Multiple Level 1 tasks execute concurrently for faster completion
19
+ - **Pre-computed Analysis**: Phase 2 performs unified analysis once, stored in `.process/` for reuse
20
+ - **Efficient Data Loading**: All existing docs loaded once in Phase 2, shared across tasks
21
+
22
+ **Path Mirroring**: Documentation structure mirrors source code under `.workflow/docs/{project_name}/`
23
+ - Example: `my_app/src/core/` → `.workflow/docs/my_app/src/core/API.md`
24
+
25
+ **Two Execution Modes**:
26
+ - **Default (Agent Mode)**: CLI analyzes in `pre_analysis` (MODE=analysis), agent writes docs
27
+ - **--cli-execute (CLI Mode)**: CLI generates docs in `implementation_approach` (MODE=write), agent executes CLI commands
28
+
29
+ ## Path Mirroring Strategy
30
+
31
+ **Principle**: Documentation structure **mirrors** source code structure under project-specific directory.
32
+
33
+ | Source Path | Project Name | Documentation Path |
34
+ |------------|--------------|-------------------|
35
+ | `my_app/src/core/` | `my_app` | `.workflow/docs/my_app/src/core/API.md` |
36
+ | `my_app/src/modules/auth/` | `my_app` | `.workflow/docs/my_app/src/modules/auth/API.md` |
37
+ | `another_project/lib/utils/` | `another_project` | `.workflow/docs/another_project/lib/utils/API.md` |
38
+
39
+
40
+ ## Parameters
41
+
42
+ ```bash
43
+ /memory:docs [path] [--tool <gemini|qwen|codex>] [--mode <full|partial>] [--cli-execute]
44
+ ```
45
+
46
+ - **path**: Source directory to analyze (default: current directory)
47
+ - Specifies the source code directory to be documented
48
+ - Documentation is generated in a separate `.workflow/docs/{project_name}/` directory at the workspace root, **not** within the source `path` itself
49
+ - The source path's structure is mirrored within the project-specific documentation folder
50
+ - Example: analyzing `src/modules` produces documentation at `.workflow/docs/{project_name}/src/modules/`
51
+ - **--mode**: Documentation generation mode (default: full)
52
+ - `full`: Complete documentation (modules + README + ARCHITECTURE + EXAMPLES + HTTP API)
53
+ - `partial`: Module documentation only (API.md + README.md)
54
+ - **--tool**: CLI tool selection (default: gemini)
55
+ - `gemini`: Comprehensive documentation, pattern recognition
56
+ - `qwen`: Architecture analysis, system design focus
57
+ - `codex`: Implementation validation, code quality
58
+ - **--cli-execute**: Enable CLI-based documentation generation (optional)
59
+
60
+ ## Planning Workflow
61
+
62
+ ### Phase 1: Initialize Session
63
+
64
+ ```bash
65
+ # Get target path, project name, and root
66
+ bash(pwd && basename "$(pwd)" && git rev-parse --show-toplevel 2>/dev/null || pwd && date +%Y%m%d-%H%M%S)
67
+ ```
68
+
69
+ ```javascript
70
+ // Create docs session (type: docs)
71
+ SlashCommand(command="/workflow:session:start --type docs --new \"{project_name}-docs-{timestamp}\"")
72
+ // Parse output to get sessionId
73
+ ```
74
+
75
+ ```bash
76
+ # Update workflow-session.json with docs-specific fields
77
+ bash(jq '. + {"target_path":"{target_path}","project_root":"{project_root}","project_name":"{project_name}","mode":"full","tool":"gemini","cli_execute":false}' .workflow/active/{sessionId}/workflow-session.json > tmp.json && mv tmp.json .workflow/active/{sessionId}/workflow-session.json)
78
+ ```
79
+
80
+ ### Phase 2: Analyze Structure
81
+
82
+ **Smart filter**: Auto-detect and skip tests/build/config/vendor based on project tech stack.
83
+
84
+ **Commands** (collect data with simple bash):
85
+
86
+ ```bash
87
+ # 1. Run folder analysis
88
+ bash(ccw tool exec get_modules_by_depth '{}' | ccw tool exec classify_folders '{}')
89
+
90
+ # 2. Get top-level directories (first 2 path levels)
91
+ bash(ccw tool exec get_modules_by_depth '{}' | ccw tool exec classify_folders '{}' | awk -F'|' '{print $1}' | sed 's|^\./||' | awk -F'/' '{if(NF>=2) print $1"/"$2; else if(NF==1) print $1}' | sort -u)
92
+
93
+ # 3. Find existing docs (if directory exists)
94
+ bash(if [ -d .workflow/docs/\${project_name} ]; then find .workflow/docs/\${project_name} -type f -name "*.md" ! -path "*/README.md" ! -path "*/ARCHITECTURE.md" ! -path "*/EXAMPLES.md" ! -path "*/api/*" 2>/dev/null; fi)
95
+
96
+ # 4. Read existing docs content (if files exist)
97
+ bash(if [ -d .workflow/docs/\${project_name} ]; then find .workflow/docs/\${project_name} -type f -name "*.md" ! -path "*/README.md" ! -path "*/ARCHITECTURE.md" ! -path "*/EXAMPLES.md" ! -path "*/api/*" 2>/dev/null | xargs cat 2>/dev/null; fi)
98
+ ```
99
+
100
+ **Data Processing**: Parse bash outputs, calculate statistics, use **Write tool** to create `${session_dir}/.process/doc-planning-data.json` with structure:
101
+
102
+ ```json
103
+ {
104
+ "metadata": {
105
+ "generated_at": "2025-11-03T16:57:30.469669",
106
+ "project_name": "project_name",
107
+ "project_root": "/path/to/project"
108
+ },
109
+ "folder_analysis": [
110
+ {"path": "./src/core", "type": "code", "code_count": 5, "dirs_count": 2}
111
+ ],
112
+ "top_level_dirs": ["src/modules", "lib/core"],
113
+ "existing_docs": {
114
+ "file_list": [".workflow/docs/project/src/core/API.md"],
115
+ "content": "... existing docs content ..."
116
+ },
117
+ "unified_analysis": [],
118
+ "statistics": {
119
+ "total": 15,
120
+ "code": 8,
121
+ "navigation": 7,
122
+ "top_level": 3
123
+ }
124
+ }
125
+ ```
126
+
127
+ **Then** use **Edit tool** to update `workflow-session.json` adding analysis field.
128
+
129
+ **Output**: Single `doc-planning-data.json` with all analysis data (no temp files or Python scripts).
130
+
131
+ **Auto-skipped**: Tests (`**/test/**`, `**/*.test.*`), Build (`**/node_modules/**`, `**/dist/**`), Config (root-level files), Vendor directories.
132
+
133
+ ### Phase 3: Detect Update Mode
134
+
135
+ **Commands**:
136
+
137
+ ```bash
138
+ # Count existing docs from doc-planning-data.json
139
+ bash(cat .workflow/active/WFS-docs-{timestamp}/.process/doc-planning-data.json | jq '.existing_docs.file_list | length')
140
+ ```
141
+
142
+ **Data Processing**: Use count result, then use **Edit tool** to update `workflow-session.json`:
143
+ - Add `"update_mode": "update"` if count > 0, else `"create"`
144
+ - Add `"existing_docs": <count>`
145
+
146
+ ### Phase 4: Decompose Tasks
147
+
148
+ **Task Hierarchy** (Dynamic based on document count):
149
+
150
+ ```
151
+ Small Projects (total ≤10 docs):
152
+ Level 1: IMPL-001 (all directories in single task, shared context)
153
+ Level 2: IMPL-002 (README, full mode only)
154
+ Level 3: IMPL-003 (ARCHITECTURE+EXAMPLES), IMPL-004 (HTTP API, optional)
155
+
156
+ Medium Projects (Example: 7 top-level dirs, 18 total docs):
157
+ Step 1: Count docs per top-level dir
158
+ ├─ dir1: 3 docs, dir2: 4 docs → Group 1 (7 docs)
159
+ ├─ dir3: 5 docs, dir4: 3 docs → Group 2 (8 docs)
160
+ ├─ dir5: 2 docs → Group 3 (2 docs, can add more)
161
+
162
+ Step 2: Create tasks with ≤10 docs constraint
163
+ Level 1: IMPL-001 to IMPL-003 (parallel groups)
164
+ ├─ IMPL-001: Group 1 (dir1 + dir2, 7 docs, shared context)
165
+ ├─ IMPL-002: Group 2 (dir3 + dir4, 8 docs, shared context)
166
+ └─ IMPL-003: Group 3 (remaining dirs, ≤10 docs)
167
+ Level 2: IMPL-004 (README, depends on Level 1, full mode only)
168
+ Level 3: IMPL-005 (ARCHITECTURE+EXAMPLES), IMPL-006 (HTTP API, optional)
169
+
170
+ Large Projects (single dir >10 docs):
171
+ Step 1: Detect oversized directory
172
+ └─ src/modules/: 15 subdirs → 30 docs (exceeds limit)
173
+
174
+ Step 2: Split by subdirectories
175
+ Level 1: IMPL-001 to IMPL-003 (split oversized dir)
176
+ ├─ IMPL-001: src/modules/ subdirs 1-5 (10 docs)
177
+ ├─ IMPL-002: src/modules/ subdirs 6-10 (10 docs)
178
+ └─ IMPL-003: src/modules/ subdirs 11-15 (10 docs)
179
+ ```
180
+
181
+ **Grouping Algorithm**:
182
+ 1. Count total docs for each top-level directory
183
+ 2. Try grouping 2 directories (optimization for context sharing)
184
+ 3. If group exceeds 10 docs, split to 1 dir/task
185
+ 4. If single dir exceeds 10 docs, split by subdirectories
186
+ 5. Create parallel Level 1 tasks with ≤10 docs each
187
+
188
+
189
+ **Commands**:
190
+
191
+ ```bash
192
+ # 1. Get top-level directories from doc-planning-data.json
193
+ bash(cat .workflow/active/WFS-docs-{timestamp}/.process/doc-planning-data.json | jq -r '.top_level_dirs[]')
194
+
195
+ # 2. Get mode from workflow-session.json
196
+ bash(cat .workflow/active/WFS-docs-{timestamp}/workflow-session.json | jq -r '.mode // "full"')
197
+
198
+ # 3. Check for HTTP API
199
+ bash(grep -r "router\.|@Get\|@Post" src/ 2>/dev/null && echo "API_FOUND" || echo "NO_API")
200
+ ```
201
+
202
+ **Data Processing**:
203
+ 1. Count documents for each top-level directory (from folder_analysis):
204
+ - Code folders: 2 docs each (API.md + README.md)
205
+ - Navigation folders: 1 doc each (README.md only)
206
+ 2. Apply grouping algorithm with ≤10 docs constraint:
207
+ - Try grouping 2 directories, calculate total docs
208
+ - If total ≤10 docs: create group
209
+ - If total >10 docs: split to 1 dir/group or subdivide
210
+ - If single dir >10 docs: split by subdirectories
211
+ 3. Use **Edit tool** to update `doc-planning-data.json` adding groups field:
212
+ ```json
213
+ "groups": {
214
+ "count": 3,
215
+ "assignments": [
216
+ {"group_id": "001", "directories": ["src/modules", "src/utils"], "doc_count": 5},
217
+ {"group_id": "002", "directories": ["lib/core"], "doc_count": 6},
218
+ {"group_id": "003", "directories": ["lib/helpers"], "doc_count": 3}
219
+ ]
220
+ }
221
+ ```
222
+
223
+ **Task ID Calculation**:
224
+ ```bash
225
+ group_count=$(jq '.groups.count' .workflow/active/WFS-docs-{timestamp}/.process/doc-planning-data.json)
226
+ readme_id=$((group_count + 1)) # Next ID after groups
227
+ arch_id=$((group_count + 2))
228
+ api_id=$((group_count + 3))
229
+ ```
230
+
231
+ ### Phase 5: Generate Task JSONs
232
+
233
+ **CLI Strategy**:
234
+
235
+ | Mode | cli_execute | Placement | CLI MODE | Approval Flag | Agent Role |
236
+ |------|-------------|-----------|----------|---------------|------------|
237
+ | **Agent** | false | pre_analysis | analysis | (none) | Generate docs in implementation_approach |
238
+ | **CLI** | true | implementation_approach | write | --mode write | Execute CLI commands, validate output |
239
+
240
+ **Command Patterns**:
241
+ - Gemini/Qwen: `ccw cli -p "..." --tool gemini --mode analysis --cd dir`
242
+ - CLI Mode: `ccw cli -p "..." --tool gemini --mode write --cd dir`
243
+ - Codex: `ccw cli -p "..." --tool codex --mode write --cd dir`
244
+
245
+ **Generation Process**:
246
+ 1. Read configuration values (tool, cli_execute, mode) from workflow-session.json
247
+ 2. Read group assignments from doc-planning-data.json
248
+ 3. Generate Level 1 tasks (IMPL-001 to IMPL-N, one per group)
249
+ 4. Generate Level 2+ tasks if mode=full (README, ARCHITECTURE, HTTP API)
250
+
251
+ ## Task Templates
252
+
253
+ ### Level 1: Module Trees Group Task (Unified)
254
+
255
+ **Execution Model**: Each task processes assigned directory group (max 2 directories) using pre-analyzed data from Phase 2.
256
+
257
+ ```json
258
+ {
259
+ "id": "IMPL-${group_number}",
260
+ "title": "Document Module Trees Group ${group_number}",
261
+ "status": "pending",
262
+ "meta": {
263
+ "type": "docs-tree-group",
264
+ "agent": "@doc-generator",
265
+ "tool": "gemini",
266
+ "cli_execute": false,
267
+ "group_number": "${group_number}",
268
+ "total_groups": "${total_groups}"
269
+ },
270
+ "context": {
271
+ "requirements": [
272
+ "Process directories from group ${group_number} in doc-planning-data.json",
273
+ "Generate docs to .workflow/docs/${project_name}/ (mirrored structure)",
274
+ "Code folders: API.md + README.md; Navigation folders: README.md only",
275
+ "Use pre-analyzed data from Phase 2 (no redundant analysis)"
276
+ ],
277
+ "focus_paths": ["${group_dirs_from_json}"],
278
+ "precomputed_data": {
279
+ "phase2_analysis": "${session_dir}/.process/doc-planning-data.json"
280
+ }
281
+ },
282
+ "flow_control": {
283
+ "pre_analysis": [
284
+ {
285
+ "step": "load_precomputed_data",
286
+ "action": "Load Phase 2 analysis and extract group directories",
287
+ "commands": [
288
+ "bash(cat ${session_dir}/.process/doc-planning-data.json)",
289
+ "bash(jq '.groups.assignments[] | select(.group_id == \"${group_number}\") | .directories' ${session_dir}/.process/doc-planning-data.json)"
290
+ ],
291
+ "output_to": "phase2_context",
292
+ "note": "Single JSON file contains all Phase 2 analysis results"
293
+ }
294
+ ],
295
+ "implementation_approach": [
296
+ {
297
+ "step": 1,
298
+ "title": "Generate documentation for assigned directory group",
299
+ "description": "Process directories in Group ${group_number} using pre-analyzed data",
300
+ "modification_points": [
301
+ "Read group directories from [phase2_context].groups.assignments[${group_number}].directories",
302
+ "For each directory: parse folder types from folder_analysis, parse structure from unified_analysis",
303
+ "Map source_path to .workflow/docs/${project_name}/{path}",
304
+ "Generate API.md for code folders, README.md for all folders",
305
+ "Preserve user modifications from [phase2_context].existing_docs.content"
306
+ ],
307
+ "logic_flow": [
308
+ "phase2 = parse([phase2_context])",
309
+ "dirs = phase2.groups.assignments[${group_number}].directories",
310
+ "for dir in dirs:",
311
+ " folder_info = find(dir, phase2.folder_analysis)",
312
+ " outline = find(dir, phase2.unified_analysis)",
313
+ " if folder_info.type == 'code': generate API.md + README.md",
314
+ " elif folder_info.type == 'navigation': generate README.md only",
315
+ " write to .workflow/docs/${project_name}/{dir}/"
316
+ ],
317
+ "depends_on": [],
318
+ "output": "group_module_docs"
319
+ }
320
+ ],
321
+ "target_files": [
322
+ ".workflow/docs/${project_name}/*/API.md",
323
+ ".workflow/docs/${project_name}/*/README.md"
324
+ ]
325
+ }
326
+ }
327
+ ```
328
+
329
+ **CLI Execute Mode Note**: When `cli_execute=true`, add Step 2 in `implementation_approach`:
330
+ ```json
331
+ {
332
+ "step": 2,
333
+ "title": "Batch generate documentation via CLI",
334
+ "command": "ccw cli -p 'PURPOSE: Generate module docs\\nTASK: Create documentation\\nMODE: write\\nCONTEXT: @**/* [phase2_context]\\nEXPECTED: API.md and README.md\\nRULES: Mirror structure' --tool gemini --mode write --cd ${dirs_from_group}",
335
+ "depends_on": [1],
336
+ "output": "generated_docs"
337
+ }
338
+ ```
339
+
340
+ ### Level 2: Project README Task
341
+
342
+ **Task ID**: `IMPL-${readme_id}` (where `readme_id = group_count + 1`)
343
+ **Dependencies**: Depends on all Level 1 tasks completing.
344
+
345
+ ```json
346
+ {
347
+ "id": "IMPL-${readme_id}",
348
+ "title": "Generate Project README",
349
+ "status": "pending",
350
+ "depends_on": ["IMPL-001", "...", "IMPL-${group_count}"],
351
+ "meta": {"type": "docs", "agent": "@doc-generator", "tool": "gemini", "cli_execute": false},
352
+ "flow_control": {
353
+ "pre_analysis": [
354
+ {
355
+ "step": "load_existing_readme",
356
+ "command": "bash(cat .workflow/docs/${project_name}/README.md 2>/dev/null || echo 'No existing README')",
357
+ "output_to": "existing_readme"
358
+ },
359
+ {
360
+ "step": "load_module_docs",
361
+ "command": "bash(find .workflow/docs/${project_name} -type f -name '*.md' ! -path '.workflow/docs/${project_name}/README.md' ! -path '.workflow/docs/${project_name}/ARCHITECTURE.md' ! -path '.workflow/docs/${project_name}/EXAMPLES.md' ! -path '.workflow/docs/${project_name}/api/*' | xargs cat)",
362
+ "output_to": "all_module_docs"
363
+ },
364
+ {
365
+ "step": "analyze_project",
366
+ "command": "bash(ccw cli -p \"PURPOSE: Analyze project structure\\nTASK: Extract overview from modules\\nMODE: analysis\\nCONTEXT: [all_module_docs]\\nEXPECTED: Project outline\" --tool gemini --mode analysis)",
367
+ "output_to": "project_outline"
368
+ }
369
+ ],
370
+ "implementation_approach": [
371
+ {
372
+ "step": 1,
373
+ "title": "Generate project README",
374
+ "description": "Generate project README with navigation links while preserving user modifications",
375
+ "modification_points": [
376
+ "Parse [project_outline] and [all_module_docs]",
377
+ "Generate README structure with navigation links",
378
+ "Preserve [existing_readme] user modifications"
379
+ ],
380
+ "logic_flow": ["Parse data", "Generate README with navigation", "Preserve modifications"],
381
+ "depends_on": [],
382
+ "output": "project_readme"
383
+ }
384
+ ],
385
+ "target_files": [".workflow/docs/${project_name}/README.md"]
386
+ }
387
+ }
388
+ ```
389
+
390
+ ### Level 3: Architecture & Examples Documentation Task
391
+
392
+ **Task ID**: `IMPL-${arch_id}` (where `arch_id = group_count + 2`)
393
+ **Dependencies**: Depends on Level 2 (Project README).
394
+
395
+ ```json
396
+ {
397
+ "id": "IMPL-${arch_id}",
398
+ "title": "Generate Architecture & Examples Documentation",
399
+ "status": "pending",
400
+ "depends_on": ["IMPL-${readme_id}"],
401
+ "meta": {"type": "docs", "agent": "@doc-generator", "tool": "gemini", "cli_execute": false},
402
+ "flow_control": {
403
+ "pre_analysis": [
404
+ {"step": "load_existing_docs", "command": "bash(cat .workflow/docs/${project_name}/{ARCHITECTURE,EXAMPLES}.md 2>/dev/null || echo 'No existing docs')", "output_to": "existing_arch_examples"},
405
+ {"step": "load_all_docs", "command": "bash(cat .workflow/docs/${project_name}/README.md && find .workflow/docs/${project_name} -type f -name '*.md' ! -path '*/README.md' ! -path '*/ARCHITECTURE.md' ! -path '*/EXAMPLES.md' ! -path '*/api/*' | xargs cat)", "output_to": "all_docs"},
406
+ {"step": "analyze_architecture", "command": "bash(ccw cli -p \"PURPOSE: Analyze system architecture\\nTASK: Synthesize architectural overview and examples\\nMODE: analysis\\nCONTEXT: [all_docs]\\nEXPECTED: Architecture + Examples outline\" --tool gemini --mode analysis)", "output_to": "arch_examples_outline"}
407
+ ],
408
+ "implementation_approach": [
409
+ {
410
+ "step": 1,
411
+ "title": "Generate architecture and examples documentation",
412
+ "modification_points": [
413
+ "Parse [arch_examples_outline] and [all_docs]",
414
+ "Generate ARCHITECTURE.md (system design, patterns)",
415
+ "Generate EXAMPLES.md (code snippets, usage)",
416
+ "Preserve [existing_arch_examples] modifications"
417
+ ],
418
+ "depends_on": [],
419
+ "output": "arch_examples_docs"
420
+ }
421
+ ],
422
+ "target_files": [".workflow/docs/${project_name}/ARCHITECTURE.md", ".workflow/docs/${project_name}/EXAMPLES.md"]
423
+ }
424
+ }
425
+ ```
426
+
427
+ ### Level 4: HTTP API Documentation Task (Optional)
428
+
429
+ **Task ID**: `IMPL-${api_id}` (where `api_id = group_count + 3`)
430
+ **Dependencies**: Depends on Level 3.
431
+
432
+ ```json
433
+ {
434
+ "id": "IMPL-${api_id}",
435
+ "title": "Generate HTTP API Documentation",
436
+ "status": "pending",
437
+ "depends_on": ["IMPL-${arch_id}"],
438
+ "meta": {"type": "docs", "agent": "@doc-generator", "tool": "gemini", "cli_execute": false},
439
+ "flow_control": {
440
+ "pre_analysis": [
441
+ {"step": "discover_api", "command": "bash(rg 'router\\.| @(Get|Post)' -g '*.{ts,js}')", "output_to": "endpoint_discovery"},
442
+ {"step": "load_existing_api", "command": "bash(cat .workflow/docs/${project_name}/api/README.md 2>/dev/null || echo 'No existing API docs')", "output_to": "existing_api_docs"},
443
+ {"step": "analyze_api", "command": "bash(ccw cli -p \"PURPOSE: Document HTTP API\\nTASK: Analyze endpoints\\nMODE: analysis\\nCONTEXT: @src/api/**/* [endpoint_discovery]\\nEXPECTED: API outline\" --tool gemini --mode analysis)", "output_to": "api_outline"}
444
+ ],
445
+ "implementation_approach": [
446
+ {
447
+ "step": 1,
448
+ "title": "Generate HTTP API documentation",
449
+ "modification_points": [
450
+ "Parse [api_outline] and [endpoint_discovery]",
451
+ "Document endpoints, request/response formats",
452
+ "Preserve [existing_api_docs] modifications"
453
+ ],
454
+ "depends_on": [],
455
+ "output": "api_docs"
456
+ }
457
+ ],
458
+ "target_files": [".workflow/docs/${project_name}/api/README.md"]
459
+ }
460
+ }
461
+ ```
462
+
463
+ ## Session Structure
464
+
465
+ **Unified Structure** (single JSON replaces multiple text files):
466
+
467
+ ```
468
+ .workflow/active/
469
+ └── WFS-docs-{timestamp}/
470
+ ├── workflow-session.json # Session metadata
471
+ ├── IMPL_PLAN.md
472
+ ├── TODO_LIST.md
473
+ ├── .process/
474
+ │ └── doc-planning-data.json # All Phase 2 analysis data (replaces 7+ files)
475
+ └── .task/
476
+ ├── IMPL-001.json # Small: all modules | Large: group 1
477
+ ├── IMPL-00N.json # (Large only: groups 2-N)
478
+ ├── IMPL-{N+1}.json # README (full mode)
479
+ ├── IMPL-{N+2}.json # ARCHITECTURE+EXAMPLES (full mode)
480
+ └── IMPL-{N+3}.json # HTTP API (optional)
481
+ ```
482
+
483
+ **doc-planning-data.json Structure**:
484
+ ```json
485
+ {
486
+ "metadata": {
487
+ "generated_at": "2025-11-03T16:41:06+08:00",
488
+ "project_name": "Claude_dms3",
489
+ "project_root": "/d/Claude_dms3"
490
+ },
491
+ "folder_analysis": [
492
+ {"path": "./src/core", "type": "code", "code_count": 5, "dirs_count": 2},
493
+ {"path": "./src/utils", "type": "navigation", "code_count": 0, "dirs_count": 4}
494
+ ],
495
+ "top_level_dirs": ["src/modules", "src/utils", "lib/core"],
496
+ "existing_docs": {
497
+ "file_list": [".workflow/docs/project/src/core/API.md"],
498
+ "content": "... concatenated existing docs ..."
499
+ },
500
+ "unified_analysis": [
501
+ {"module_path": "./src/core", "outline_summary": "Core functionality"}
502
+ ],
503
+ "groups": {
504
+ "count": 4,
505
+ "assignments": [
506
+ {"group_id": "001", "directories": ["src/modules", "src/utils"], "doc_count": 6},
507
+ {"group_id": "002", "directories": ["lib/core", "lib/helpers"], "doc_count": 7}
508
+ ]
509
+ },
510
+ "statistics": {
511
+ "total": 15,
512
+ "code": 8,
513
+ "navigation": 7,
514
+ "top_level": 3
515
+ }
516
+ }
517
+ ```
518
+
519
+ **Workflow Session Structure** (workflow-session.json):
520
+ ```json
521
+ {
522
+ "session_id": "WFS-docs-{timestamp}",
523
+ "project": "{project_name} documentation",
524
+ "status": "planning",
525
+ "timestamp": "2024-01-20T14:30:22+08:00",
526
+ "path": ".",
527
+ "target_path": "/path/to/project",
528
+ "project_root": "/path/to/project",
529
+ "project_name": "{project_name}",
530
+ "mode": "full",
531
+ "tool": "gemini",
532
+ "cli_execute": false,
533
+ "update_mode": "update",
534
+ "existing_docs": 5,
535
+ "analysis": {
536
+ "total": "15",
537
+ "code": "8",
538
+ "navigation": "7",
539
+ "top_level": "3"
540
+ }
541
+ }
542
+ ```
543
+
544
+ ## Generated Documentation
545
+
546
+ **Structure mirrors project source directories under project-specific folder**:
547
+
548
+ ```
549
+ .workflow/docs/
550
+ └── {project_name}/ # Project-specific root
551
+ ├── src/ # Mirrors src/ directory
552
+ │ ├── modules/
553
+ │ │ ├── README.md # Navigation
554
+ │ │ ├── auth/
555
+ │ │ │ ├── API.md # API signatures
556
+ │ │ │ ├── README.md # Module docs
557
+ │ │ │ └── middleware/
558
+ │ │ │ ├── API.md
559
+ │ │ │ └── README.md
560
+ │ │ └── api/
561
+ │ │ ├── API.md
562
+ │ │ └── README.md
563
+ │ └── utils/
564
+ │ └── README.md
565
+ ├── lib/ # Mirrors lib/ directory
566
+ │ └── core/
567
+ │ ├── API.md
568
+ │ └── README.md
569
+ ├── README.md # Project root
570
+ ├── ARCHITECTURE.md # System design
571
+ ├── EXAMPLES.md # Usage examples
572
+ └── api/ # Optional
573
+ └── README.md # HTTP API reference
574
+ ```
575
+
576
+ ## Execution Commands
577
+
578
+ ```bash
579
+ # Execute entire workflow (auto-discovers active session)
580
+ /workflow:execute
581
+
582
+ # Or specify session
583
+ /workflow:execute --resume-session="WFS-docs-yyyymmdd-hhmmss"
584
+
585
+ # Individual task execution
586
+ /task:execute IMPL-001
587
+ ```
588
+
589
+ ## Template Reference
590
+
591
+ **Available Templates** (`~/.claude/workflows/cli-templates/prompts/documentation/`):
592
+ - `api.txt`: Code API (Part A) + HTTP API (Part B)
593
+ - `module-readme.txt`: Module purpose, usage, dependencies
594
+ - `folder-navigation.txt`: Navigation README for folders with subdirectories
595
+ - `project-readme.txt`: Project overview, getting started, navigation
596
+ - `project-architecture.txt`: System structure, module map, design patterns
597
+ - `project-examples.txt`: End-to-end usage examples
598
+
599
+ ## Execution Mode Summary
600
+
601
+ | Mode | CLI Placement | CLI MODE | Approval Flag | Agent Role |
602
+ |------|---------------|----------|---------------|------------|
603
+ | **Agent (default)** | pre_analysis | analysis | (none) | Generates documentation content |
604
+ | **CLI (--cli-execute)** | implementation_approach | write | --mode write | Executes CLI commands, validates output |
605
+
606
+ **Execution Flow**:
607
+ - **Phase 2**: Unified analysis once, results in `.process/`
608
+ - **Phase 4**: Dynamic grouping (max 2 dirs per group)
609
+ - **Level 1**: Parallel processing for module tree groups
610
+ - **Level 2+**: Sequential execution for project-level docs
611
+
612
+ ## Related Commands
613
+ - `/workflow:execute` - Execute documentation tasks
614
+ - `/workflow:status` - View task progress
615
+ - `/workflow:session:complete` - Mark session complete