claude-code-workflow 6.3.32 → 6.3.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (476) hide show
  1. package/.claude/CLAUDE.md +6 -1
  2. package/.claude/agents/action-planning-agent.md +885 -885
  3. package/.claude/agents/cli-discuss-agent.md +391 -391
  4. package/.claude/agents/cli-execution-agent.md +7 -6
  5. package/.claude/agents/cli-lite-planning-agent.md +1 -1
  6. package/.claude/agents/cli-planning-agent.md +2 -2
  7. package/.claude/agents/code-developer.md +407 -403
  8. package/.claude/agents/conceptual-planning-agent.md +11 -0
  9. package/.claude/agents/debug-explore-agent.md +3 -3
  10. package/.claude/agents/doc-generator.md +3 -3
  11. package/.claude/agents/issue-plan-agent.md +333 -340
  12. package/.claude/agents/issue-queue-agent.md +1 -1
  13. package/.claude/agents/memory-bridge.md +95 -95
  14. package/.claude/agents/test-context-search-agent.md +402 -402
  15. package/.claude/agents/ui-design-agent.md +595 -595
  16. package/.claude/agents/universal-executor.md +134 -134
  17. package/.claude/commands/cli/codex-review.md +355 -0
  18. package/.claude/commands/issue/discover-by-prompt.md +1 -1
  19. package/.claude/commands/issue/execute.md +581 -581
  20. package/.claude/commands/issue/new.md +413 -413
  21. package/.claude/commands/issue/plan.md +1 -1
  22. package/.claude/commands/issue/queue.md +441 -382
  23. package/.claude/commands/memory/code-map-memory.md +687 -687
  24. package/.claude/commands/memory/compact.md +383 -383
  25. package/.claude/commands/memory/docs-full-cli.md +471 -471
  26. package/.claude/commands/memory/docs-related-cli.md +386 -386
  27. package/.claude/commands/memory/docs.md +615 -615
  28. package/.claude/commands/memory/load-skill-memory.md +182 -182
  29. package/.claude/commands/memory/skill-memory.md +525 -525
  30. package/.claude/commands/memory/style-skill-memory.md +396 -396
  31. package/.claude/commands/memory/swagger-docs.md +773 -773
  32. package/.claude/commands/memory/tech-research-rules.md +2 -2
  33. package/.claude/commands/memory/update-full.md +332 -332
  34. package/.claude/commands/memory/workflow-skill-memory.md +517 -517
  35. package/.claude/commands/task/create.md +151 -151
  36. package/.claude/commands/task/replan.md +436 -436
  37. package/.claude/commands/version.md +254 -254
  38. package/.claude/commands/workflow/brainstorm/api-designer.md +587 -587
  39. package/.claude/commands/workflow/brainstorm/auto-parallel.md +11 -0
  40. package/.claude/commands/workflow/brainstorm/data-architect.md +220 -220
  41. package/.claude/commands/workflow/brainstorm/product-manager.md +200 -200
  42. package/.claude/commands/workflow/brainstorm/product-owner.md +200 -200
  43. package/.claude/commands/workflow/brainstorm/scrum-master.md +200 -200
  44. package/.claude/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
  45. package/.claude/commands/workflow/brainstorm/system-architect.md +389 -389
  46. package/.claude/commands/workflow/brainstorm/ui-designer.md +221 -221
  47. package/.claude/commands/workflow/brainstorm/ux-expert.md +221 -221
  48. package/.claude/commands/workflow/debug-with-file.md +666 -0
  49. package/.claude/commands/workflow/debug.md +327 -327
  50. package/.claude/commands/workflow/execute.md +498 -498
  51. package/.claude/commands/workflow/lite-execute.md +23 -20
  52. package/.claude/commands/workflow/lite-fix.md +631 -631
  53. package/.claude/commands/workflow/lite-lite-lite.md +39 -11
  54. package/.claude/commands/workflow/lite-plan.md +4 -2
  55. package/.claude/commands/workflow/multi-cli-plan.md +97 -39
  56. package/.claude/commands/workflow/plan.md +551 -551
  57. package/.claude/commands/workflow/replan.md +515 -515
  58. package/.claude/commands/workflow/review-fix.md +610 -610
  59. package/.claude/commands/workflow/review-module-cycle.md +771 -771
  60. package/.claude/commands/workflow/review-session-cycle.md +782 -782
  61. package/.claude/commands/workflow/review.md +322 -322
  62. package/.claude/commands/workflow/session/list.md +95 -95
  63. package/.claude/commands/workflow/session/resume.md +60 -60
  64. package/.claude/commands/workflow/session/solidify.md +299 -299
  65. package/.claude/commands/workflow/tdd-plan.md +597 -460
  66. package/.claude/commands/workflow/test-cycle-execute.md +504 -504
  67. package/.claude/commands/workflow/test-fix-gen.md +699 -699
  68. package/.claude/commands/workflow/tools/conflict-resolution.md +2 -2
  69. package/.claude/commands/workflow/tools/task-generate-tdd.md +517 -517
  70. package/.claude/commands/workflow/tools/tdd-coverage-analysis.md +309 -309
  71. package/.claude/commands/workflow/tools/test-concept-enhanced.md +1 -1
  72. package/.claude/commands/workflow/tools/test-context-gather.md +235 -235
  73. package/.claude/commands/workflow/tools/test-task-generate.md +255 -255
  74. package/.claude/commands/workflow/ui-design/animation-extract.md +1150 -1150
  75. package/.claude/commands/workflow/ui-design/design-sync.md +454 -454
  76. package/.claude/commands/workflow/ui-design/explore-auto.md +678 -678
  77. package/.claude/commands/workflow/ui-design/imitate-auto.md +745 -745
  78. package/.claude/commands/workflow/ui-design/layout-extract.md +788 -788
  79. package/.claude/commands/workflow/ui-design/reference-page-generator.md +356 -356
  80. package/.claude/commands/workflow/ui-design/style-extract.md +773 -773
  81. package/.claude/skills/ccw/SKILL.md +522 -352
  82. package/.claude/skills/ccw/command.json +641 -547
  83. package/.claude/skills/ccw-help/SKILL.md +116 -116
  84. package/.claude/skills/ccw-help/command.json +520 -520
  85. package/.claude/skills/copyright-docs/phases/01.5-project-exploration.md +150 -150
  86. package/.claude/skills/copyright-docs/phases/02.5-consolidation.md +192 -192
  87. package/.claude/skills/copyright-docs/templates/agent-base.md +200 -200
  88. package/.claude/skills/project-analyze/phases/03.5-consolidation.md +233 -233
  89. package/.claude/skills/project-analyze/specs/writing-style.md +152 -152
  90. package/.claude/skills/review-code/phases/state-manager.md +752 -752
  91. package/.claude/skills/review-code/specs/rules/index.md +140 -140
  92. package/.claude/skills/skill-generator/specs/cli-integration.md +13 -19
  93. package/.claude/skills/skill-generator/specs/scripting-integration.md +265 -265
  94. package/.claude/skills/skill-generator/templates/code-analysis-action.md +503 -503
  95. package/.claude/skills/skill-generator/templates/llm-action.md +355 -355
  96. package/.claude/skills/skill-generator/templates/script-bash.md +277 -277
  97. package/.claude/skills/skill-generator/templates/script-python.md +198 -198
  98. package/.claude/skills/skill-generator/templates/skill-md.md +235 -235
  99. package/.claude/skills/skill-tuning/SKILL.md +303 -303
  100. package/.claude/skills/skill-tuning/phases/actions/action-abort.md +164 -164
  101. package/.claude/skills/skill-tuning/phases/actions/action-apply-fix.md +206 -206
  102. package/.claude/skills/skill-tuning/phases/actions/action-complete.md +195 -195
  103. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-agent.md +317 -317
  104. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-context.md +243 -243
  105. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-dataflow.md +318 -318
  106. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-memory.md +269 -269
  107. package/.claude/skills/skill-tuning/phases/actions/action-diagnose-token-consumption.md +200 -200
  108. package/.claude/skills/skill-tuning/phases/actions/action-gemini-analysis.md +322 -322
  109. package/.claude/skills/skill-tuning/phases/actions/action-generate-report.md +228 -228
  110. package/.claude/skills/skill-tuning/phases/actions/action-init.md +149 -149
  111. package/.claude/skills/skill-tuning/phases/actions/action-propose-fixes.md +317 -317
  112. package/.claude/skills/skill-tuning/phases/actions/action-verify.md +222 -222
  113. package/.claude/skills/skill-tuning/phases/orchestrator.md +377 -377
  114. package/.claude/skills/skill-tuning/phases/state-schema.md +378 -378
  115. package/.claude/skills/skill-tuning/specs/problem-taxonomy.md +318 -318
  116. package/.claude/skills/skill-tuning/specs/quality-gates.md +263 -263
  117. package/.claude/skills/skill-tuning/specs/tuning-strategies.md +1537 -1537
  118. package/.claude/skills/skill-tuning/templates/diagnosis-report.md +153 -153
  119. package/.claude/skills/skill-tuning/templates/fix-proposal.md +204 -204
  120. package/.claude/skills/software-manual/SKILL.md +184 -184
  121. package/.claude/skills/software-manual/phases/01-requirements-discovery.md +162 -162
  122. package/.claude/skills/software-manual/phases/02-project-exploration.md +101 -101
  123. package/.claude/skills/software-manual/phases/03-parallel-analysis.md +183 -183
  124. package/.claude/skills/software-manual/phases/03.5-consolidation.md +82 -82
  125. package/.claude/skills/software-manual/phases/04-screenshot-capture.md +89 -89
  126. package/.claude/skills/software-manual/phases/05-html-assembly.md +132 -132
  127. package/.claude/skills/software-manual/phases/06-iterative-refinement.md +259 -259
  128. package/.claude/skills/software-manual/scripts/screenshot-helper.md +447 -447
  129. package/.claude/skills/software-manual/scripts/swagger-runner.md +419 -419
  130. package/.claude/skills/software-manual/scripts/typedoc-runner.md +357 -357
  131. package/.claude/skills/software-manual/specs/html-template.md +325 -325
  132. package/.claude/skills/software-manual/specs/quality-standards.md +253 -253
  133. package/.claude/skills/software-manual/specs/writing-style.md +298 -298
  134. package/.claude/skills/text-formatter/SKILL.md +196 -196
  135. package/.claude/skills/text-formatter/phases/01-input-collection.md +111 -111
  136. package/.claude/skills/text-formatter/phases/02-content-analysis.md +248 -248
  137. package/.claude/skills/text-formatter/phases/03-format-transform.md +245 -245
  138. package/.claude/skills/text-formatter/phases/04-output-preview.md +183 -183
  139. package/.claude/skills/text-formatter/specs/callout-types.md +293 -293
  140. package/.claude/skills/text-formatter/specs/element-mapping.md +226 -226
  141. package/.claude/skills/text-formatter/specs/format-rules.md +273 -273
  142. package/.claude/skills/text-formatter/templates/bbcode-template.md +350 -350
  143. package/.claude/workflows/chinese-response.md +25 -25
  144. package/.claude/workflows/cli-templates/memory/style-skill-memory/skill-md-template.md +299 -299
  145. package/.claude/workflows/cli-templates/planning-roles/product-owner.md +261 -261
  146. package/.claude/workflows/cli-templates/prompts/{analysis/03-analyze-performance.txt → analysis-analyze-performance.txt} +29 -29
  147. package/.claude/workflows/cli-templates/prompts/{analysis/03-assess-security-risks.txt → analysis-assess-security-risks.txt} +29 -29
  148. package/.claude/workflows/cli-templates/prompts/{analysis/02-review-architecture.txt → analysis-review-architecture.txt} +29 -29
  149. package/.claude/workflows/cli-templates/prompts/{analysis/02-review-code-quality.txt → analysis-review-code-quality.txt} +28 -28
  150. package/.claude/workflows/cli-templates/prompts/{analysis/03-review-quality-standards.txt → analysis-review-quality-standards.txt} +29 -29
  151. package/.claude/workflows/cli-templates/prompts/{analysis/01-trace-code-execution.txt → analysis-trace-code-execution.txt} +115 -115
  152. package/.claude/workflows/cli-templates/prompts/{documentation/api.txt → documentation-api.txt} +14 -14
  153. package/.claude/workflows/cli-templates/prompts/{documentation/folder-navigation.txt → documentation-folder-navigation.txt} +26 -26
  154. package/.claude/workflows/cli-templates/prompts/{documentation/project-architecture.txt → documentation-project-architecture.txt} +40 -40
  155. package/.claude/workflows/cli-templates/prompts/{documentation/project-examples.txt → documentation-project-examples.txt} +34 -34
  156. package/.claude/workflows/cli-templates/prompts/{documentation/project-readme.txt → documentation-project-readme.txt} +34 -34
  157. package/.claude/workflows/cli-templates/prompts/{documentation/swagger-api.txt → documentation-swagger-api.txt} +266 -266
  158. package/.claude/workflows/cli-templates/prompts/{planning/02-design-component-spec.txt → planning-design-component-spec.txt} +28 -28
  159. package/.claude/workflows/cli-templates/prompts/{verification/codex-technical.txt → verification-codex-technical.txt} +28 -28
  160. package/.claude/workflows/cli-templates/prompts/{verification/cross-validation.txt → verification-cross-validation.txt} +28 -28
  161. package/.claude/workflows/cli-templates/prompts/{verification/gemini-strategic.txt → verification-gemini-strategic.txt} +27 -27
  162. package/.claude/workflows/cli-templates/prompts/{workflow/analysis-results-structure.txt → workflow-analysis-results-structure.txt} +224 -224
  163. package/.claude/workflows/cli-templates/prompts/{workflow/impl-plan-template.txt → workflow-impl-plan-template.txt} +286 -286
  164. package/.claude/workflows/cli-templates/prompts/{workflow/skill-conflict-patterns.txt → workflow-skill-conflict-patterns.txt} +2 -2
  165. package/.claude/workflows/cli-templates/prompts/{workflow/skill-lessons-learned.txt → workflow-skill-lessons-learned.txt} +2 -2
  166. package/.claude/workflows/cli-templates/prompts/{workflow/task-json-agent-mode.txt → workflow-task-json-agent-mode.txt} +123 -123
  167. package/.claude/workflows/cli-templates/schemas/project-guidelines-schema.json +141 -141
  168. package/.claude/workflows/cli-tools-usage.md +113 -117
  169. package/.claude/workflows/coding-philosophy.md +69 -69
  170. package/.claude/workflows/context-tools.md +76 -76
  171. package/.claude/workflows/file-modification.md +64 -64
  172. package/.claude/workflows/review-directory-specification.md +336 -336
  173. package/.claude/workflows/windows-platform.md +19 -19
  174. package/.claude/workflows/workflow-architecture.md +942 -942
  175. package/.codex/prompts/issue-execute.md +176 -70
  176. package/README.md +250 -214
  177. package/ccw/dist/cli.d.ts.map +1 -1
  178. package/ccw/dist/cli.js +15 -0
  179. package/ccw/dist/cli.js.map +1 -1
  180. package/ccw/dist/commands/cli.d.ts +5 -0
  181. package/ccw/dist/commands/cli.d.ts.map +1 -1
  182. package/ccw/dist/commands/cli.js +116 -19
  183. package/ccw/dist/commands/cli.js.map +1 -1
  184. package/ccw/dist/commands/install.d.ts +17 -0
  185. package/ccw/dist/commands/install.d.ts.map +1 -1
  186. package/ccw/dist/commands/install.js +211 -2
  187. package/ccw/dist/commands/install.js.map +1 -1
  188. package/ccw/dist/commands/issue.d.ts.map +1 -1
  189. package/ccw/dist/commands/issue.js +208 -28
  190. package/ccw/dist/commands/issue.js.map +1 -1
  191. package/ccw/dist/commands/uninstall.d.ts.map +1 -1
  192. package/ccw/dist/commands/uninstall.js +22 -1
  193. package/ccw/dist/commands/uninstall.js.map +1 -1
  194. package/ccw/dist/commands/view.d.ts.map +1 -1
  195. package/ccw/dist/commands/view.js +3 -0
  196. package/ccw/dist/commands/view.js.map +1 -1
  197. package/ccw/dist/commands/workflow.d.ts +11 -0
  198. package/ccw/dist/commands/workflow.d.ts.map +1 -0
  199. package/ccw/dist/commands/workflow.js +294 -0
  200. package/ccw/dist/commands/workflow.js.map +1 -0
  201. package/ccw/dist/core/routes/claude-routes.d.ts.map +1 -1
  202. package/ccw/dist/core/routes/claude-routes.js +57 -3
  203. package/ccw/dist/core/routes/claude-routes.js.map +1 -1
  204. package/ccw/dist/core/routes/cli-routes.d.ts +13 -0
  205. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  206. package/ccw/dist/core/routes/cli-routes.js +46 -0
  207. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  208. package/ccw/dist/core/routes/hooks-routes.d.ts.map +1 -1
  209. package/ccw/dist/core/routes/hooks-routes.js +33 -0
  210. package/ccw/dist/core/routes/hooks-routes.js.map +1 -1
  211. package/ccw/dist/core/routes/issue-routes.d.ts.map +1 -1
  212. package/ccw/dist/core/routes/issue-routes.js +211 -29
  213. package/ccw/dist/core/routes/issue-routes.js.map +1 -1
  214. package/ccw/dist/core/routes/mcp-routes.d.ts.map +1 -1
  215. package/ccw/dist/core/routes/mcp-routes.js +4 -1
  216. package/ccw/dist/core/routes/mcp-routes.js.map +1 -1
  217. package/ccw/dist/core/routes/rules-routes.d.ts.map +1 -1
  218. package/ccw/dist/core/routes/rules-routes.js +22 -6
  219. package/ccw/dist/core/routes/rules-routes.js.map +1 -1
  220. package/ccw/dist/core/routes/session-routes.d.ts.map +1 -1
  221. package/ccw/dist/core/routes/session-routes.js +23 -1
  222. package/ccw/dist/core/routes/session-routes.js.map +1 -1
  223. package/ccw/dist/mcp-server/index.js +8 -2
  224. package/ccw/dist/mcp-server/index.js.map +1 -1
  225. package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -1
  226. package/ccw/dist/tools/claude-cli-tools.js +52 -28
  227. package/ccw/dist/tools/claude-cli-tools.js.map +1 -1
  228. package/ccw/dist/tools/cli-executor-core.d.ts.map +1 -1
  229. package/ccw/dist/tools/cli-executor-core.js +33 -8
  230. package/ccw/dist/tools/cli-executor-core.js.map +1 -1
  231. package/ccw/dist/tools/cli-executor-state.d.ts +2 -0
  232. package/ccw/dist/tools/cli-executor-state.d.ts.map +1 -1
  233. package/ccw/dist/tools/cli-executor-state.js.map +1 -1
  234. package/ccw/dist/tools/cli-executor-utils.d.ts +7 -0
  235. package/ccw/dist/tools/cli-executor-utils.d.ts.map +1 -1
  236. package/ccw/dist/tools/cli-executor-utils.js +18 -4
  237. package/ccw/dist/tools/cli-executor-utils.js.map +1 -1
  238. package/ccw/dist/tools/cli-history-store.d.ts +21 -0
  239. package/ccw/dist/tools/cli-history-store.d.ts.map +1 -1
  240. package/ccw/dist/tools/cli-history-store.js +106 -30
  241. package/ccw/dist/tools/cli-history-store.js.map +1 -1
  242. package/ccw/dist/tools/cli-output-converter.d.ts +2 -1
  243. package/ccw/dist/tools/cli-output-converter.d.ts.map +1 -1
  244. package/ccw/dist/tools/cli-output-converter.js +65 -10
  245. package/ccw/dist/tools/cli-output-converter.js.map +1 -1
  246. package/ccw/dist/tools/codex-lens-lsp.d.ts +61 -0
  247. package/ccw/dist/tools/codex-lens-lsp.d.ts.map +1 -0
  248. package/ccw/dist/tools/codex-lens-lsp.js +320 -0
  249. package/ccw/dist/tools/codex-lens-lsp.js.map +1 -0
  250. package/ccw/dist/tools/codex-lens.d.ts.map +1 -1
  251. package/ccw/dist/tools/codex-lens.js +74 -54
  252. package/ccw/dist/tools/codex-lens.js.map +1 -1
  253. package/ccw/dist/tools/index.d.ts.map +1 -1
  254. package/ccw/dist/tools/index.js +4 -0
  255. package/ccw/dist/tools/index.js.map +1 -1
  256. package/ccw/dist/tools/template-discovery.d.ts +85 -0
  257. package/ccw/dist/tools/template-discovery.d.ts.map +1 -0
  258. package/ccw/dist/tools/template-discovery.js +239 -0
  259. package/ccw/dist/tools/template-discovery.js.map +1 -0
  260. package/ccw/dist/tools/vscode-lsp.d.ts +57 -0
  261. package/ccw/dist/tools/vscode-lsp.d.ts.map +1 -0
  262. package/ccw/dist/tools/vscode-lsp.js +250 -0
  263. package/ccw/dist/tools/vscode-lsp.js.map +1 -0
  264. package/ccw/dist/utils/path-resolver.d.ts +16 -2
  265. package/ccw/dist/utils/path-resolver.d.ts.map +1 -1
  266. package/ccw/dist/utils/path-resolver.js +36 -6
  267. package/ccw/dist/utils/path-resolver.js.map +1 -1
  268. package/ccw/dist/utils/path-validator.d.ts +5 -0
  269. package/ccw/dist/utils/path-validator.d.ts.map +1 -1
  270. package/ccw/dist/utils/path-validator.js +16 -5
  271. package/ccw/dist/utils/path-validator.js.map +1 -1
  272. package/ccw/dist/utils/project-root.d.ts +25 -0
  273. package/ccw/dist/utils/project-root.d.ts.map +1 -0
  274. package/ccw/dist/utils/project-root.js +63 -0
  275. package/ccw/dist/utils/project-root.js.map +1 -0
  276. package/ccw/dist/utils/shell-escape.d.ts +47 -3
  277. package/ccw/dist/utils/shell-escape.d.ts.map +1 -1
  278. package/ccw/dist/utils/shell-escape.js +98 -15
  279. package/ccw/dist/utils/shell-escape.js.map +1 -1
  280. package/ccw/dist/utils/update-checker.d.ts +11 -0
  281. package/ccw/dist/utils/update-checker.d.ts.map +1 -0
  282. package/ccw/dist/utils/update-checker.js +167 -0
  283. package/ccw/dist/utils/update-checker.js.map +1 -0
  284. package/ccw/src/cli.ts +16 -0
  285. package/ccw/src/commands/cli.ts +126 -19
  286. package/ccw/src/commands/install.ts +239 -2
  287. package/ccw/src/commands/issue.ts +245 -31
  288. package/ccw/src/commands/uninstall.ts +23 -1
  289. package/ccw/src/commands/view.ts +4 -0
  290. package/ccw/src/commands/workflow.ts +348 -0
  291. package/ccw/src/core/routes/claude-routes.ts +64 -3
  292. package/ccw/src/core/routes/cli-routes.ts +58 -0
  293. package/ccw/src/core/routes/hooks-routes.ts +32 -0
  294. package/ccw/src/core/routes/issue-routes.ts +242 -28
  295. package/ccw/src/core/routes/mcp-routes.ts +6 -2
  296. package/ccw/src/core/routes/rules-routes.ts +24 -6
  297. package/ccw/src/core/routes/session-routes.ts +24 -1
  298. package/ccw/src/mcp-server/index.ts +7 -2
  299. package/ccw/src/templates/dashboard-css/26-claude-manager.css +179 -0
  300. package/ccw/src/templates/dashboard-css/32-issue-manager.css +3427 -3302
  301. package/ccw/src/templates/dashboard-css/33-cli-stream-viewer.css +3 -2
  302. package/ccw/src/templates/dashboard-js/components/cli-history.js +4 -1
  303. package/ccw/src/templates/dashboard-js/components/cli-stream-viewer.js +57 -21
  304. package/ccw/src/templates/dashboard-js/components/hook-manager.js +1492 -1492
  305. package/ccw/src/templates/dashboard-js/components/mcp-manager.js +107 -20
  306. package/ccw/src/templates/dashboard-js/components/version-check.js +135 -1
  307. package/ccw/src/templates/dashboard-js/i18n.js +42 -0
  308. package/ccw/src/templates/dashboard-js/views/claude-manager.js +168 -0
  309. package/ccw/src/templates/dashboard-js/views/cli-manager.js +1 -0
  310. package/ccw/src/templates/dashboard-js/views/issue-manager.js +201 -1
  311. package/ccw/src/templates/dashboard-js/views/lite-tasks.js +3502 -3478
  312. package/ccw/src/templates/dashboard-js/views/mcp-manager.js +16 -0
  313. package/ccw/src/templates/dashboard.html +112 -0
  314. package/ccw/src/tools/claude-cli-tools.ts +54 -28
  315. package/ccw/src/tools/cli-executor-core.ts +36 -8
  316. package/ccw/src/tools/cli-executor-state.ts +2 -0
  317. package/ccw/src/tools/cli-executor-utils.ts +26 -4
  318. package/ccw/src/tools/cli-history-store.ts +122 -31
  319. package/ccw/src/tools/cli-output-converter.ts +76 -12
  320. package/ccw/src/tools/codex-lens-lsp.ts +405 -0
  321. package/ccw/src/tools/codex-lens.ts +82 -59
  322. package/ccw/src/tools/index.ts +4 -0
  323. package/ccw/src/tools/template-discovery.ts +303 -0
  324. package/ccw/src/tools/vscode-lsp.ts +317 -0
  325. package/ccw/src/utils/path-resolver.ts +37 -6
  326. package/ccw/src/utils/path-validator.ts +17 -5
  327. package/ccw/src/utils/project-root.ts +73 -0
  328. package/ccw/src/utils/shell-escape.ts +103 -16
  329. package/ccw/src/utils/update-checker.ts +178 -0
  330. package/codex-lens/pyproject.toml +14 -0
  331. package/codex-lens/src/codexlens/__pycache__/config.cpython-312.pyc +0 -0
  332. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  333. package/codex-lens/src/codexlens/__pycache__/errors.cpython-312.pyc +0 -0
  334. package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
  335. package/codex-lens/src/codexlens/api/__init__.py +88 -0
  336. package/codex-lens/src/codexlens/api/__pycache__/__init__.cpython-312.pyc +0 -0
  337. package/codex-lens/src/codexlens/api/__pycache__/__init__.cpython-313.pyc +0 -0
  338. package/codex-lens/src/codexlens/api/__pycache__/definition.cpython-312.pyc +0 -0
  339. package/codex-lens/src/codexlens/api/__pycache__/definition.cpython-313.pyc +0 -0
  340. package/codex-lens/src/codexlens/api/__pycache__/file_context.cpython-312.pyc +0 -0
  341. package/codex-lens/src/codexlens/api/__pycache__/file_context.cpython-313.pyc +0 -0
  342. package/codex-lens/src/codexlens/api/__pycache__/hover.cpython-312.pyc +0 -0
  343. package/codex-lens/src/codexlens/api/__pycache__/hover.cpython-313.pyc +0 -0
  344. package/codex-lens/src/codexlens/api/__pycache__/models.cpython-312.pyc +0 -0
  345. package/codex-lens/src/codexlens/api/__pycache__/models.cpython-313.pyc +0 -0
  346. package/codex-lens/src/codexlens/api/__pycache__/references.cpython-312.pyc +0 -0
  347. package/codex-lens/src/codexlens/api/__pycache__/references.cpython-313.pyc +0 -0
  348. package/codex-lens/src/codexlens/api/__pycache__/semantic.cpython-312.pyc +0 -0
  349. package/codex-lens/src/codexlens/api/__pycache__/semantic.cpython-313.pyc +0 -0
  350. package/codex-lens/src/codexlens/api/__pycache__/symbols.cpython-312.pyc +0 -0
  351. package/codex-lens/src/codexlens/api/__pycache__/symbols.cpython-313.pyc +0 -0
  352. package/codex-lens/src/codexlens/api/__pycache__/utils.cpython-312.pyc +0 -0
  353. package/codex-lens/src/codexlens/api/__pycache__/utils.cpython-313.pyc +0 -0
  354. package/codex-lens/src/codexlens/api/definition.py +126 -0
  355. package/codex-lens/src/codexlens/api/file_context.py +271 -0
  356. package/codex-lens/src/codexlens/api/hover.py +148 -0
  357. package/codex-lens/src/codexlens/api/models.py +281 -0
  358. package/codex-lens/src/codexlens/api/references.py +345 -0
  359. package/codex-lens/src/codexlens/api/semantic.py +471 -0
  360. package/codex-lens/src/codexlens/api/symbols.py +146 -0
  361. package/codex-lens/src/codexlens/api/utils.py +153 -0
  362. package/codex-lens/src/codexlens/config.py +7 -0
  363. package/codex-lens/src/codexlens/errors.py +4 -0
  364. package/codex-lens/src/codexlens/hybrid_search/__init__.py +28 -0
  365. package/codex-lens/src/codexlens/hybrid_search/__pycache__/__init__.cpython-312.pyc +0 -0
  366. package/codex-lens/src/codexlens/hybrid_search/__pycache__/__init__.cpython-313.pyc +0 -0
  367. package/codex-lens/src/codexlens/hybrid_search/__pycache__/data_structures.cpython-312.pyc +0 -0
  368. package/codex-lens/src/codexlens/hybrid_search/__pycache__/data_structures.cpython-313.pyc +0 -0
  369. package/codex-lens/src/codexlens/hybrid_search/__pycache__/engine.cpython-313.pyc +0 -0
  370. package/codex-lens/src/codexlens/hybrid_search/data_structures.py +602 -0
  371. package/codex-lens/src/codexlens/lsp/__init__.py +34 -0
  372. package/codex-lens/src/codexlens/lsp/__pycache__/__init__.cpython-312.pyc +0 -0
  373. package/codex-lens/src/codexlens/lsp/__pycache__/__init__.cpython-313.pyc +0 -0
  374. package/codex-lens/src/codexlens/lsp/__pycache__/handlers.cpython-313.pyc +0 -0
  375. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_bridge.cpython-312.pyc +0 -0
  376. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_bridge.cpython-313.pyc +0 -0
  377. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_graph_builder.cpython-312.pyc +0 -0
  378. package/codex-lens/src/codexlens/lsp/__pycache__/lsp_graph_builder.cpython-313.pyc +0 -0
  379. package/codex-lens/src/codexlens/lsp/__pycache__/providers.cpython-313.pyc +0 -0
  380. package/codex-lens/src/codexlens/lsp/__pycache__/server.cpython-313.pyc +0 -0
  381. package/codex-lens/src/codexlens/lsp/__pycache__/standalone_manager.cpython-313.pyc +0 -0
  382. package/codex-lens/src/codexlens/lsp/handlers.py +551 -0
  383. package/codex-lens/src/codexlens/lsp/lsp_bridge.py +834 -0
  384. package/codex-lens/src/codexlens/lsp/lsp_graph_builder.py +375 -0
  385. package/codex-lens/src/codexlens/lsp/providers.py +177 -0
  386. package/codex-lens/src/codexlens/lsp/server.py +263 -0
  387. package/codex-lens/src/codexlens/lsp/standalone_manager.py +1159 -0
  388. package/codex-lens/src/codexlens/mcp/__init__.py +20 -0
  389. package/codex-lens/src/codexlens/mcp/__pycache__/__init__.cpython-313.pyc +0 -0
  390. package/codex-lens/src/codexlens/mcp/__pycache__/hooks.cpython-313.pyc +0 -0
  391. package/codex-lens/src/codexlens/mcp/__pycache__/provider.cpython-313.pyc +0 -0
  392. package/codex-lens/src/codexlens/mcp/__pycache__/schema.cpython-313.pyc +0 -0
  393. package/codex-lens/src/codexlens/mcp/hooks.py +170 -0
  394. package/codex-lens/src/codexlens/mcp/provider.py +202 -0
  395. package/codex-lens/src/codexlens/mcp/schema.py +113 -0
  396. package/codex-lens/src/codexlens/search/__init__.py +53 -15
  397. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-312.pyc +0 -0
  398. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
  399. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-312.pyc +0 -0
  400. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  401. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-312.pyc +0 -0
  402. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  403. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-312.pyc +0 -0
  404. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  405. package/codex-lens/src/codexlens/search/association_tree/QUICK_START.md +257 -0
  406. package/codex-lens/src/codexlens/search/association_tree/README.md +188 -0
  407. package/codex-lens/src/codexlens/search/association_tree/__init__.py +21 -0
  408. package/codex-lens/src/codexlens/search/association_tree/__pycache__/__init__.cpython-313.pyc +0 -0
  409. package/codex-lens/src/codexlens/search/association_tree/__pycache__/builder.cpython-313.pyc +0 -0
  410. package/codex-lens/src/codexlens/search/association_tree/__pycache__/data_structures.cpython-313.pyc +0 -0
  411. package/codex-lens/src/codexlens/search/association_tree/__pycache__/deduplicator.cpython-313.pyc +0 -0
  412. package/codex-lens/src/codexlens/search/association_tree/builder.py +450 -0
  413. package/codex-lens/src/codexlens/search/association_tree/data_structures.py +191 -0
  414. package/codex-lens/src/codexlens/search/association_tree/deduplicator.py +301 -0
  415. package/codex-lens/src/codexlens/search/chain_search.py +864 -3
  416. package/codex-lens/src/codexlens/search/clustering/__init__.py +124 -0
  417. package/codex-lens/src/codexlens/search/clustering/__pycache__/__init__.cpython-312.pyc +0 -0
  418. package/codex-lens/src/codexlens/search/clustering/__pycache__/__init__.cpython-313.pyc +0 -0
  419. package/codex-lens/src/codexlens/search/clustering/__pycache__/base.cpython-312.pyc +0 -0
  420. package/codex-lens/src/codexlens/search/clustering/__pycache__/base.cpython-313.pyc +0 -0
  421. package/codex-lens/src/codexlens/search/clustering/__pycache__/dbscan_strategy.cpython-313.pyc +0 -0
  422. package/codex-lens/src/codexlens/search/clustering/__pycache__/factory.cpython-312.pyc +0 -0
  423. package/codex-lens/src/codexlens/search/clustering/__pycache__/factory.cpython-313.pyc +0 -0
  424. package/codex-lens/src/codexlens/search/clustering/__pycache__/frequency_strategy.cpython-312.pyc +0 -0
  425. package/codex-lens/src/codexlens/search/clustering/__pycache__/frequency_strategy.cpython-313.pyc +0 -0
  426. package/codex-lens/src/codexlens/search/clustering/__pycache__/hdbscan_strategy.cpython-313.pyc +0 -0
  427. package/codex-lens/src/codexlens/search/clustering/__pycache__/noop_strategy.cpython-312.pyc +0 -0
  428. package/codex-lens/src/codexlens/search/clustering/__pycache__/noop_strategy.cpython-313.pyc +0 -0
  429. package/codex-lens/src/codexlens/search/clustering/base.py +153 -0
  430. package/codex-lens/src/codexlens/search/clustering/dbscan_strategy.py +197 -0
  431. package/codex-lens/src/codexlens/search/clustering/factory.py +202 -0
  432. package/codex-lens/src/codexlens/search/clustering/frequency_strategy.py +263 -0
  433. package/codex-lens/src/codexlens/search/clustering/hdbscan_strategy.py +153 -0
  434. package/codex-lens/src/codexlens/search/clustering/noop_strategy.py +83 -0
  435. package/codex-lens/src/codexlens/search/hybrid_search.py +194 -2
  436. package/codex-lens/src/codexlens/search/ranking.py +6 -4
  437. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-312.pyc +0 -0
  438. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-312.pyc +0 -0
  439. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
  440. package/codex-lens/src/codexlens/storage/__pycache__/global_index.cpython-312.pyc +0 -0
  441. package/codex-lens/src/codexlens/storage/__pycache__/global_index.cpython-313.pyc +0 -0
  442. package/codex-lens/src/codexlens/storage/dir_index.py +172 -0
  443. package/codex-lens/src/codexlens/storage/global_index.py +33 -0
  444. package/package.json +92 -92
  445. /package/.claude/workflows/cli-templates/prompts/{analysis/02-analyze-code-patterns.txt → analysis-analyze-code-patterns.txt} +0 -0
  446. /package/.claude/workflows/cli-templates/prompts/{analysis/02-analyze-technical-document.txt → analysis-analyze-technical-document.txt} +0 -0
  447. /package/.claude/workflows/cli-templates/prompts/{analysis/01-diagnose-bug-root-cause.txt → analysis-diagnose-bug-root-cause.txt} +0 -0
  448. /package/.claude/workflows/cli-templates/prompts/{development/03-debug-runtime-issues.txt → development-debug-runtime-issues.txt} +0 -0
  449. /package/.claude/workflows/cli-templates/prompts/{development/02-generate-tests.txt → development-generate-tests.txt} +0 -0
  450. /package/.claude/workflows/cli-templates/prompts/{development/02-implement-component-ui.txt → development-implement-component-ui.txt} +0 -0
  451. /package/.claude/workflows/cli-templates/prompts/{development/02-implement-feature.txt → development-implement-feature.txt} +0 -0
  452. /package/.claude/workflows/cli-templates/prompts/{development/02-refactor-codebase.txt → development-refactor-codebase.txt} +0 -0
  453. /package/.claude/workflows/cli-templates/prompts/{documentation/module-readme.txt → documentation-module-readme.txt} +0 -0
  454. /package/.claude/workflows/cli-templates/prompts/{memory/02-document-module-structure.txt → memory-document-module-structure.txt} +0 -0
  455. /package/.claude/workflows/cli-templates/prompts/{planning/02-breakdown-task-steps.txt → planning-breakdown-task-steps.txt} +0 -0
  456. /package/.claude/workflows/cli-templates/prompts/{planning/03-evaluate-concept-feasibility.txt → planning-evaluate-concept-feasibility.txt} +0 -0
  457. /package/.claude/workflows/cli-templates/prompts/{planning/01-plan-architecture-design.txt → planning-plan-architecture-design.txt} +0 -0
  458. /package/.claude/workflows/cli-templates/prompts/{planning/03-plan-migration-strategy.txt → planning-plan-migration-strategy.txt} +0 -0
  459. /package/.claude/workflows/cli-templates/prompts/{rules/rule-api.txt → rules-rule-api.txt} +0 -0
  460. /package/.claude/workflows/cli-templates/prompts/{rules/rule-components.txt → rules-rule-components.txt} +0 -0
  461. /package/.claude/workflows/cli-templates/prompts/{rules/rule-config.txt → rules-rule-config.txt} +0 -0
  462. /package/.claude/workflows/cli-templates/prompts/{rules/rule-core.txt → rules-rule-core.txt} +0 -0
  463. /package/.claude/workflows/cli-templates/prompts/{rules/rule-patterns.txt → rules-rule-patterns.txt} +0 -0
  464. /package/.claude/workflows/cli-templates/prompts/{rules/rule-testing.txt → rules-rule-testing.txt} +0 -0
  465. /package/.claude/workflows/cli-templates/prompts/{rules/tech-rules-agent-prompt.txt → rules-tech-rules-agent-prompt.txt} +0 -0
  466. /package/.claude/workflows/cli-templates/prompts/{tech/tech-module-format.txt → tech-tech-module-format.txt} +0 -0
  467. /package/.claude/workflows/cli-templates/prompts/{tech/tech-skill-index.txt → tech-tech-skill-index.txt} +0 -0
  468. /package/.claude/workflows/cli-templates/prompts/{test/test-concept-analysis.txt → test-test-concept-analysis.txt} +0 -0
  469. /package/.claude/workflows/cli-templates/prompts/{universal/00-universal-creative-style.txt → universal-universal-creative-style.txt} +0 -0
  470. /package/.claude/workflows/cli-templates/prompts/{universal/00-universal-rigorous-style.txt → universal-universal-rigorous-style.txt} +0 -0
  471. /package/.claude/workflows/cli-templates/prompts/{workflow/codex-feasibility-validation.txt → workflow-codex-feasibility-validation.txt} +0 -0
  472. /package/.claude/workflows/cli-templates/prompts/{workflow/gemini-solution-design.txt → workflow-gemini-solution-design.txt} +0 -0
  473. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-aggregation.txt → workflow-skill-aggregation.txt} +0 -0
  474. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-index.txt → workflow-skill-index.txt} +0 -0
  475. /package/.claude/workflows/cli-templates/prompts/{workflow/skill-sessions-timeline.txt → workflow-skill-sessions-timeline.txt} +0 -0
  476. /package/.claude/workflows/cli-templates/prompts/{workflow/task-json-cli-mode.txt → workflow-task-json-cli-mode.txt} +0 -0
@@ -1,773 +1,773 @@
1
- ---
2
- name: swagger-docs
3
- description: Generate complete Swagger/OpenAPI documentation following RESTful standards with global security, API details, error codes, and validation tests
4
- argument-hint: "[path] [--tool <gemini|qwen|codex>] [--format <yaml|json>] [--version <v3.0|v3.1>] [--lang <zh|en>]"
5
- ---
6
-
7
- # Swagger API Documentation Workflow (/memory:swagger-docs)
8
-
9
- ## Overview
10
-
11
- Professional Swagger/OpenAPI documentation generator that strictly follows RESTful API design standards to produce enterprise-grade API documentation.
12
-
13
- **Core Features**:
14
- - **RESTful Standards**: Strict adherence to REST architecture and HTTP semantics
15
- - **Global Security**: Unified Authorization Token validation mechanism
16
- - **Complete API Docs**: Descriptions, methods, URLs, parameters for each endpoint
17
- - **Organized Structure**: Clear directory hierarchy by business domain
18
- - **Detailed Fields**: Type, required, example, description for each field
19
- - **Error Code Standards**: Unified error response format and code definitions
20
- - **Validation Tests**: Boundary conditions and exception handling tests
21
-
22
- **Output Structure** (--lang zh):
23
- ```
24
- .workflow/docs/{project_name}/api/
25
- ├── swagger.yaml # Main OpenAPI spec file
26
- ├── 概述/
27
- │ ├── README.md # API overview
28
- │ ├── 认证说明.md # Authentication guide
29
- │ ├── 错误码规范.md # Error code definitions
30
- │ └── 版本历史.md # Version history
31
- ├── 用户模块/ # Grouped by business domain
32
- │ ├── 用户认证.md
33
- │ ├── 用户管理.md
34
- │ └── 权限控制.md
35
- ├── 业务模块/
36
- │ └── ...
37
- └── 测试报告/
38
- ├── 接口测试.md # API test results
39
- └── 边界测试.md # Boundary condition tests
40
- ```
41
-
42
- **Output Structure** (--lang en):
43
- ```
44
- .workflow/docs/{project_name}/api/
45
- ├── swagger.yaml # Main OpenAPI spec file
46
- ├── overview/
47
- │ ├── README.md # API overview
48
- │ ├── authentication.md # Authentication guide
49
- │ ├── error-codes.md # Error code definitions
50
- │ └── changelog.md # Version history
51
- ├── users/ # Grouped by business domain
52
- │ ├── authentication.md
53
- │ ├── management.md
54
- │ └── permissions.md
55
- ├── orders/
56
- │ └── ...
57
- └── test-reports/
58
- ├── api-tests.md # API test results
59
- └── boundary-tests.md # Boundary condition tests
60
- ```
61
-
62
- ## Parameters
63
-
64
- ```bash
65
- /memory:swagger-docs [path] [--tool <gemini|qwen|codex>] [--format <yaml|json>] [--version <v3.0|v3.1>] [--lang <zh|en>]
66
- ```
67
-
68
- - **path**: API source code directory (default: current directory)
69
- - **--tool**: CLI tool selection (default: gemini)
70
- - `gemini`: Comprehensive analysis, pattern recognition
71
- - `qwen`: Architecture analysis, system design
72
- - `codex`: Implementation validation, code quality
73
- - **--format**: OpenAPI spec format (default: yaml)
74
- - `yaml`: YAML format (recommended, better readability)
75
- - `json`: JSON format
76
- - **--version**: OpenAPI version (default: v3.0)
77
- - `v3.0`: OpenAPI 3.0.x
78
- - `v3.1`: OpenAPI 3.1.0 (supports JSON Schema 2020-12)
79
- - **--lang**: Documentation language (default: zh)
80
- - `zh`: Chinese documentation with Chinese directory names
81
- - `en`: English documentation with English directory names
82
-
83
- ## Planning Workflow
84
-
85
- ### Phase 1: Initialize Session
86
-
87
- ```bash
88
- # Get project info
89
- bash(pwd && basename "$(pwd)" && git rev-parse --show-toplevel 2>/dev/null || pwd && date +%Y%m%d-%H%M%S)
90
- ```
91
-
92
- ```javascript
93
- // Create swagger-docs session
94
- SlashCommand(command="/workflow:session:start --type swagger-docs --new \"{project_name}-swagger-{timestamp}\"")
95
- // Parse output to get sessionId
96
- ```
97
-
98
- ```bash
99
- # Update workflow-session.json
100
- bash(jq '. + {"target_path":"{target_path}","project_root":"{project_root}","project_name":"{project_name}","format":"yaml","openapi_version":"3.0.3","lang":"{lang}","tool":"gemini"}' .workflow/active/{sessionId}/workflow-session.json > tmp.json && mv tmp.json .workflow/active/{sessionId}/workflow-session.json)
101
- ```
102
-
103
- ### Phase 2: Scan API Endpoints
104
-
105
- **Discovery Patterns**: Auto-detect framework signatures and API definition styles.
106
-
107
- **Supported Frameworks**:
108
- | Framework | Detection Pattern | Example |
109
- |-----------|-------------------|---------|
110
- | Express.js | `router.get/post/put/delete` | `router.get('/users/:id')` |
111
- | Fastify | `fastify.route`, `@Route` | `fastify.get('/api/users')` |
112
- | NestJS | `@Controller`, `@Get/@Post` | `@Get('users/:id')` |
113
- | Koa | `router.get`, `ctx.body` | `router.get('/users')` |
114
- | Hono | `app.get/post`, `c.json` | `app.get('/users/:id')` |
115
- | FastAPI | `@app.get`, `@router.post` | `@app.get("/users/{id}")` |
116
- | Flask | `@app.route`, `@bp.route` | `@app.route('/users')` |
117
- | Spring | `@GetMapping`, `@PostMapping` | `@GetMapping("/users/{id}")` |
118
- | Go Gin | `r.GET`, `r.POST` | `r.GET("/users/:id")` |
119
- | Go Chi | `r.Get`, `r.Post` | `r.Get("/users/{id}")` |
120
-
121
- **Commands**:
122
-
123
- ```bash
124
- # 1. Detect API framework type
125
- bash(
126
- if rg -q "@Controller|@Get|@Post|@Put|@Delete" --type ts 2>/dev/null; then echo "NESTJS";
127
- elif rg -q "router\.(get|post|put|delete|patch)" --type ts --type js 2>/dev/null; then echo "EXPRESS";
128
- elif rg -q "fastify\.(get|post|route)" --type ts --type js 2>/dev/null; then echo "FASTIFY";
129
- elif rg -q "@app\.(get|post|put|delete)" --type py 2>/dev/null; then echo "FASTAPI";
130
- elif rg -q "@GetMapping|@PostMapping|@RequestMapping" --type java 2>/dev/null; then echo "SPRING";
131
- elif rg -q 'r\.(GET|POST|PUT|DELETE)' --type go 2>/dev/null; then echo "GO_GIN";
132
- else echo "UNKNOWN"; fi
133
- )
134
-
135
- # 2. Scan all API endpoint definitions
136
- bash(rg -n "(router|app|fastify)\.(get|post|put|delete|patch)|@(Get|Post|Put|Delete|Patch|Controller|RequestMapping)" --type ts --type js --type py --type java --type go -g '!*.test.*' -g '!*.spec.*' -g '!node_modules/**' 2>/dev/null | head -200)
137
-
138
- # 3. Extract route paths
139
- bash(rg -o "['\"](/api)?/[a-zA-Z0-9/:_-]+['\"]" --type ts --type js --type py -g '!*.test.*' 2>/dev/null | sort -u | head -100)
140
-
141
- # 4. Detect existing OpenAPI/Swagger files
142
- bash(find . -type f \( -name "swagger.yaml" -o -name "swagger.json" -o -name "openapi.yaml" -o -name "openapi.json" \) ! -path "*/node_modules/*" 2>/dev/null)
143
-
144
- # 5. Extract DTO/Schema definitions
145
- bash(rg -n "export (interface|type|class).*Dto|@ApiProperty|class.*Schema" --type ts -g '!*.test.*' 2>/dev/null | head -100)
146
- ```
147
-
148
- **Data Processing**: Parse outputs, use **Write tool** to create `${session_dir}/.process/swagger-planning-data.json`:
149
-
150
- ```json
151
- {
152
- "metadata": {
153
- "generated_at": "2025-01-01T12:00:00+08:00",
154
- "project_name": "project_name",
155
- "project_root": "/path/to/project",
156
- "openapi_version": "3.0.3",
157
- "format": "yaml",
158
- "lang": "zh"
159
- },
160
- "framework": {
161
- "type": "NESTJS",
162
- "detected_patterns": ["@Controller", "@Get", "@Post"],
163
- "base_path": "/api/v1"
164
- },
165
- "endpoints": [
166
- {
167
- "file": "src/modules/users/users.controller.ts",
168
- "line": 25,
169
- "method": "GET",
170
- "path": "/api/v1/users/:id",
171
- "handler": "getUser",
172
- "controller": "UsersController"
173
- }
174
- ],
175
- "existing_specs": {
176
- "found": false,
177
- "files": []
178
- },
179
- "dto_schemas": [
180
- {
181
- "name": "CreateUserDto",
182
- "file": "src/modules/users/dto/create-user.dto.ts",
183
- "properties": ["email", "password", "name"]
184
- }
185
- ],
186
- "statistics": {
187
- "total_endpoints": 45,
188
- "by_method": {"GET": 20, "POST": 15, "PUT": 5, "DELETE": 5},
189
- "by_module": {"users": 12, "auth": 8, "orders": 15, "products": 10}
190
- }
191
- }
192
- ```
193
-
194
- ### Phase 3: Analyze API Structure
195
-
196
- **Commands**:
197
-
198
- ```bash
199
- # 1. Analyze controller/route file structure
200
- bash(cat ${session_dir}/.process/swagger-planning-data.json | jq -r '.endpoints[].file' | sort -u | head -20)
201
-
202
- # 2. Extract request/response types
203
- bash(for f in $(jq -r '.dto_schemas[].file' ${session_dir}/.process/swagger-planning-data.json | head -20); do echo "=== $f ===" && cat "$f" 2>/dev/null; done)
204
-
205
- # 3. Analyze authentication middleware
206
- bash(rg -n "auth|guard|middleware|jwt|bearer|token" -i --type ts --type js -g '!*.test.*' -g '!node_modules/**' 2>/dev/null | head -50)
207
-
208
- # 4. Detect error handling patterns
209
- bash(rg -n "HttpException|BadRequest|Unauthorized|Forbidden|NotFound|throw new" --type ts --type js -g '!*.test.*' 2>/dev/null | head -50)
210
- ```
211
-
212
- **Deep Analysis via Gemini CLI**:
213
-
214
- ```bash
215
- ccw cli -p "
216
- PURPOSE: Analyze API structure and generate OpenAPI specification outline for comprehensive documentation
217
- TASK:
218
- • Parse all API endpoints and identify business module boundaries
219
- • Extract request parameters, request bodies, and response formats
220
- • Identify authentication mechanisms and security requirements
221
- • Discover error handling patterns and error codes
222
- • Map endpoints to logical module groups
223
- MODE: analysis
224
- CONTEXT: @src/**/*.controller.ts @src/**/*.routes.ts @src/**/*.dto.ts @src/**/middleware/**/*
225
- EXPECTED: JSON format API structure analysis report with modules, endpoints, security schemes, and error codes
226
- RULES: $(cat ~/.claude/workflows/cli-templates/protocols/analysis-protocol.md) | Strict RESTful standards | Identify all public endpoints | Document output language: {lang}
227
- " --tool gemini --mode analysis --cd {project_root}
228
- ```
229
-
230
- **Update swagger-planning-data.json** with analysis results:
231
-
232
- ```json
233
- {
234
- "api_structure": {
235
- "modules": [
236
- {
237
- "name": "Users",
238
- "name_zh": "用户模块",
239
- "base_path": "/api/v1/users",
240
- "endpoints": [
241
- {
242
- "path": "/api/v1/users",
243
- "method": "GET",
244
- "operation_id": "listUsers",
245
- "summary": "List all users",
246
- "summary_zh": "获取用户列表",
247
- "description": "Paginated list of system users with filtering by status and role",
248
- "description_zh": "分页获取系统用户列表,支持按状态、角色筛选",
249
- "tags": ["User Management"],
250
- "tags_zh": ["用户管理"],
251
- "security": ["bearerAuth"],
252
- "parameters": {
253
- "query": ["page", "limit", "status", "role"]
254
- },
255
- "responses": {
256
- "200": "UserListResponse",
257
- "401": "UnauthorizedError",
258
- "403": "ForbiddenError"
259
- }
260
- }
261
- ]
262
- }
263
- ],
264
- "security_schemes": {
265
- "bearerAuth": {
266
- "type": "http",
267
- "scheme": "bearer",
268
- "bearerFormat": "JWT",
269
- "description": "JWT Token authentication. Add Authorization: Bearer <token> to request header"
270
- }
271
- },
272
- "error_codes": [
273
- {"code": "AUTH_001", "status": 401, "message": "Invalid or expired token", "message_zh": "Token 无效或已过期"},
274
- {"code": "AUTH_002", "status": 401, "message": "Authentication required", "message_zh": "未提供认证信息"},
275
- {"code": "AUTH_003", "status": 403, "message": "Insufficient permissions", "message_zh": "权限不足"}
276
- ]
277
- }
278
- }
279
- ```
280
-
281
- ### Phase 4: Task Decomposition
282
-
283
- **Task Hierarchy**:
284
-
285
- ```
286
- Level 1: Infrastructure Tasks (Parallel)
287
- ├─ IMPL-001: Generate main OpenAPI spec file (swagger.yaml)
288
- ├─ IMPL-002: Generate global security config and auth documentation
289
- └─ IMPL-003: Generate unified error code specification
290
-
291
- Level 2: Module Documentation Tasks (Parallel, by business module)
292
- ├─ IMPL-004: Users module API documentation
293
- ├─ IMPL-005: Auth module API documentation
294
- ├─ IMPL-006: Business module N API documentation
295
- └─ ...
296
-
297
- Level 3: Aggregation Tasks (Depends on Level 1-2)
298
- ├─ IMPL-N+1: Generate API overview and navigation
299
- └─ IMPL-N+2: Generate version history and changelog
300
-
301
- Level 4: Validation Tasks (Depends on Level 1-3)
302
- ├─ IMPL-N+3: API endpoint validation tests
303
- └─ IMPL-N+4: Boundary condition tests
304
- ```
305
-
306
- **Grouping Strategy**:
307
- 1. Group by business module (users, orders, products, etc.)
308
- 2. Maximum 10 endpoints per task
309
- 3. Large modules (>10 endpoints) split by submodules
310
-
311
- **Commands**:
312
-
313
- ```bash
314
- # 1. Count endpoints by module
315
- bash(cat ${session_dir}/.process/swagger-planning-data.json | jq '.statistics.by_module')
316
-
317
- # 2. Calculate task groupings
318
- bash(cat ${session_dir}/.process/swagger-planning-data.json | jq -r '.api_structure.modules[] | "\(.name):\(.endpoints | length)"')
319
- ```
320
-
321
- **Data Processing**: Use **Edit tool** to update `swagger-planning-data.json` with task groups:
322
-
323
- ```json
324
- {
325
- "task_groups": {
326
- "level1_count": 3,
327
- "level2_count": 5,
328
- "total_count": 12,
329
- "assignments": [
330
- {"task_id": "IMPL-001", "level": 1, "type": "openapi-spec", "title": "Generate OpenAPI main spec file"},
331
- {"task_id": "IMPL-002", "level": 1, "type": "security", "title": "Generate global security config"},
332
- {"task_id": "IMPL-003", "level": 1, "type": "error-codes", "title": "Generate error code specification"},
333
- {"task_id": "IMPL-004", "level": 2, "type": "module-doc", "module": "users", "endpoint_count": 12},
334
- {"task_id": "IMPL-005", "level": 2, "type": "module-doc", "module": "auth", "endpoint_count": 8}
335
- ]
336
- }
337
- }
338
- ```
339
-
340
- ### Phase 5: Generate Task JSONs
341
-
342
- **Generation Process**:
343
- 1. Read configuration values from workflow-session.json
344
- 2. Read task groups from swagger-planning-data.json
345
- 3. Generate Level 1 tasks (infrastructure)
346
- 4. Generate Level 2 tasks (by module)
347
- 5. Generate Level 3-4 tasks (aggregation and validation)
348
-
349
- ## Task Templates
350
-
351
- ### Level 1-1: OpenAPI Main Spec File
352
-
353
- ```json
354
- {
355
- "id": "IMPL-001",
356
- "title": "Generate OpenAPI main specification file",
357
- "status": "pending",
358
- "meta": {
359
- "type": "swagger-openapi-spec",
360
- "agent": "@doc-generator",
361
- "tool": "gemini",
362
- "priority": "critical"
363
- },
364
- "context": {
365
- "requirements": [
366
- "Generate OpenAPI 3.0.3 compliant swagger.yaml",
367
- "Include complete info, servers, tags, paths, components definitions",
368
- "Follow RESTful design standards, use {lang} for descriptions"
369
- ],
370
- "precomputed_data": {
371
- "planning_data": "${session_dir}/.process/swagger-planning-data.json"
372
- }
373
- },
374
- "flow_control": {
375
- "pre_analysis": [
376
- {
377
- "step": "load_analysis_data",
378
- "action": "Load API analysis data",
379
- "commands": [
380
- "bash(cat ${session_dir}/.process/swagger-planning-data.json)"
381
- ],
382
- "output_to": "api_analysis"
383
- }
384
- ],
385
- "implementation_approach": [
386
- {
387
- "step": 1,
388
- "title": "Generate OpenAPI spec file",
389
- "description": "Create complete swagger.yaml specification file",
390
- "cli_prompt": "PURPOSE: Generate OpenAPI 3.0.3 specification file from analyzed API structure\nTASK:\n• Define openapi version: 3.0.3\n• Define info: title, description, version, contact, license\n• Define servers: development, staging, production environments\n• Define tags: organized by business modules\n• Define paths: all API endpoints with complete specifications\n• Define components: schemas, securitySchemes, parameters, responses\nMODE: write\nCONTEXT: @[api_analysis]\nEXPECTED: Complete swagger.yaml file following OpenAPI 3.0.3 specification\nRULES: $(cat ~/.claude/workflows/cli-templates/protocols/write-protocol.md) $(cat ~/.claude/workflows/cli-templates/prompts/documentation/swagger-api.txt) | Use {lang} for all descriptions | Strict RESTful standards",
391
- "output": "swagger.yaml"
392
- }
393
- ],
394
- "target_files": [
395
- ".workflow/docs/${project_name}/api/swagger.yaml"
396
- ]
397
- }
398
- }
399
- ```
400
-
401
- ### Level 1-2: Global Security Configuration
402
-
403
- ```json
404
- {
405
- "id": "IMPL-002",
406
- "title": "Generate global security configuration and authentication guide",
407
- "status": "pending",
408
- "meta": {
409
- "type": "swagger-security",
410
- "agent": "@doc-generator",
411
- "tool": "gemini"
412
- },
413
- "context": {
414
- "requirements": [
415
- "Document Authorization header format in detail",
416
- "Describe token acquisition, refresh, and expiration mechanisms",
417
- "List permission requirements for each endpoint"
418
- ]
419
- },
420
- "flow_control": {
421
- "pre_analysis": [
422
- {
423
- "step": "analyze_auth",
424
- "command": "bash(rg -n 'auth|guard|jwt|bearer' -i --type ts -g '!*.test.*' 2>/dev/null | head -50)",
425
- "output_to": "auth_patterns"
426
- }
427
- ],
428
- "implementation_approach": [
429
- {
430
- "step": 1,
431
- "title": "Generate authentication documentation",
432
- "cli_prompt": "PURPOSE: Generate comprehensive authentication documentation for API security\nTASK:\n• Document authentication mechanism: JWT Bearer Token\n• Explain header format: Authorization: Bearer <token>\n• Describe token lifecycle: acquisition, refresh, expiration handling\n• Define permission levels: public, user, admin, super_admin\n• Document authentication failure responses: 401/403 error handling\nMODE: write\nCONTEXT: @[auth_patterns] @src/**/auth/**/* @src/**/guard/**/*\nEXPECTED: Complete authentication guide in {lang}\nRULES: $(cat ~/.claude/workflows/cli-templates/protocols/write-protocol.md) | Include code examples | Clear step-by-step instructions",
433
- "output": "{auth_doc_name}"
434
- }
435
- ],
436
- "target_files": [
437
- ".workflow/docs/${project_name}/api/{overview_dir}/{auth_doc_name}"
438
- ]
439
- }
440
- }
441
- ```
442
-
443
- ### Level 1-3: Unified Error Code Specification
444
-
445
- ```json
446
- {
447
- "id": "IMPL-003",
448
- "title": "Generate unified error code specification",
449
- "status": "pending",
450
- "meta": {
451
- "type": "swagger-error-codes",
452
- "agent": "@doc-generator",
453
- "tool": "gemini"
454
- },
455
- "context": {
456
- "requirements": [
457
- "Define unified error response format",
458
- "Create categorized error code system (auth, business, system)",
459
- "Provide detailed description and examples for each error code"
460
- ]
461
- },
462
- "flow_control": {
463
- "implementation_approach": [
464
- {
465
- "step": 1,
466
- "title": "Generate error code specification document",
467
- "cli_prompt": "PURPOSE: Generate comprehensive error code specification for consistent API error handling\nTASK:\n• Define error response format: {code, message, details, timestamp}\n• Document authentication errors (AUTH_xxx): 401/403 series\n• Document parameter errors (PARAM_xxx): 400 series\n• Document business errors (BIZ_xxx): business logic errors\n• Document system errors (SYS_xxx): 500 series\n• For each error code: HTTP status, error message, possible causes, resolution suggestions\nMODE: write\nCONTEXT: @src/**/*.exception.ts @src/**/*.filter.ts\nEXPECTED: Complete error code specification in {lang} with tables and examples\nRULES: $(cat ~/.claude/workflows/cli-templates/protocols/write-protocol.md) | Include response examples | Clear categorization",
468
- "output": "{error_doc_name}"
469
- }
470
- ],
471
- "target_files": [
472
- ".workflow/docs/${project_name}/api/{overview_dir}/{error_doc_name}"
473
- ]
474
- }
475
- }
476
- ```
477
-
478
- ### Level 2: Module API Documentation (Template)
479
-
480
- ```json
481
- {
482
- "id": "IMPL-${module_task_id}",
483
- "title": "Generate ${module_name} API documentation",
484
- "status": "pending",
485
- "depends_on": ["IMPL-001", "IMPL-002", "IMPL-003"],
486
- "meta": {
487
- "type": "swagger-module-doc",
488
- "agent": "@doc-generator",
489
- "tool": "gemini",
490
- "module": "${module_name}",
491
- "endpoint_count": "${endpoint_count}"
492
- },
493
- "context": {
494
- "requirements": [
495
- "Complete documentation for all endpoints in this module",
496
- "Each endpoint: description, method, URL, parameters, responses",
497
- "Include success and failure response examples",
498
- "Mark API version and last update time"
499
- ],
500
- "focus_paths": ["${module_source_paths}"]
501
- },
502
- "flow_control": {
503
- "pre_analysis": [
504
- {
505
- "step": "load_module_endpoints",
506
- "action": "Load module endpoint information",
507
- "commands": [
508
- "bash(cat ${session_dir}/.process/swagger-planning-data.json | jq '.api_structure.modules[] | select(.name == \"${module_name}\")')"
509
- ],
510
- "output_to": "module_endpoints"
511
- },
512
- {
513
- "step": "read_source_files",
514
- "action": "Read module source files",
515
- "commands": [
516
- "bash(cat ${module_source_files})"
517
- ],
518
- "output_to": "source_code"
519
- }
520
- ],
521
- "implementation_approach": [
522
- {
523
- "step": 1,
524
- "title": "Generate module API documentation",
525
- "description": "Generate complete API documentation for ${module_name}",
526
- "cli_prompt": "PURPOSE: Generate complete RESTful API documentation for ${module_name} module\nTASK:\n• Create module overview: purpose, use cases, prerequisites\n• Generate endpoint index: grouped by functionality\n• For each endpoint document:\n - Functional description: purpose and business context\n - Request method: GET/POST/PUT/DELETE\n - URL path: complete API path\n - Request headers: Authorization and other required headers\n - Path parameters: {id} and other path variables\n - Query parameters: pagination, filters, etc.\n - Request body: JSON Schema format\n - Response body: success and error responses\n - Field description table: type, required, example, description\n• Add usage examples: cURL, JavaScript, Python\n• Add version info: v1.0.0, last updated date\nMODE: write\nCONTEXT: @[module_endpoints] @[source_code]\nEXPECTED: Complete module API documentation in {lang} with all endpoints fully documented\nRULES: $(cat ~/.claude/workflows/cli-templates/protocols/write-protocol.md) $(cat ~/.claude/workflows/cli-templates/prompts/documentation/swagger-api.txt) | RESTful standards | Include all response codes",
527
- "output": "${module_doc_name}"
528
- }
529
- ],
530
- "target_files": [
531
- ".workflow/docs/${project_name}/api/${module_dir}/${module_doc_name}"
532
- ]
533
- }
534
- }
535
- ```
536
-
537
- ### Level 3: API Overview and Navigation
538
-
539
- ```json
540
- {
541
- "id": "IMPL-${overview_task_id}",
542
- "title": "Generate API overview and navigation",
543
- "status": "pending",
544
- "depends_on": ["IMPL-001", "...", "IMPL-${last_module_task_id}"],
545
- "meta": {
546
- "type": "swagger-overview",
547
- "agent": "@doc-generator",
548
- "tool": "gemini"
549
- },
550
- "flow_control": {
551
- "pre_analysis": [
552
- {
553
- "step": "load_all_docs",
554
- "command": "bash(find .workflow/docs/${project_name}/api -type f -name '*.md' ! -path '*/{overview_dir}/*' | xargs cat)",
555
- "output_to": "all_module_docs"
556
- }
557
- ],
558
- "implementation_approach": [
559
- {
560
- "step": 1,
561
- "title": "Generate API overview",
562
- "cli_prompt": "PURPOSE: Generate API overview document with navigation and quick start guide\nTASK:\n• Create introduction: system features, tech stack, version\n• Write quick start guide: authentication, first request example\n• Build module navigation: categorized links to all modules\n• Document environment configuration: development, staging, production\n• List SDKs and tools: client libraries, Postman collection\nMODE: write\nCONTEXT: @[all_module_docs] @.workflow/docs/${project_name}/api/swagger.yaml\nEXPECTED: Complete API overview in {lang} with navigation links\nRULES: $(cat ~/.claude/workflows/cli-templates/protocols/write-protocol.md) | Clear structure | Quick start focus",
563
- "output": "README.md"
564
- }
565
- ],
566
- "target_files": [
567
- ".workflow/docs/${project_name}/api/{overview_dir}/README.md"
568
- ]
569
- }
570
- }
571
- ```
572
-
573
- ### Level 4: Validation Tasks
574
-
575
- ```json
576
- {
577
- "id": "IMPL-${test_task_id}",
578
- "title": "API endpoint validation tests",
579
- "status": "pending",
580
- "depends_on": ["IMPL-${overview_task_id}"],
581
- "meta": {
582
- "type": "swagger-validation",
583
- "agent": "@test-fix-agent",
584
- "tool": "codex"
585
- },
586
- "context": {
587
- "requirements": [
588
- "Validate accessibility of all endpoints",
589
- "Test various boundary conditions",
590
- "Verify exception handling"
591
- ]
592
- },
593
- "flow_control": {
594
- "pre_analysis": [
595
- {
596
- "step": "load_swagger_spec",
597
- "command": "bash(cat .workflow/docs/${project_name}/api/swagger.yaml)",
598
- "output_to": "swagger_spec"
599
- }
600
- ],
601
- "implementation_approach": [
602
- {
603
- "step": 1,
604
- "title": "Generate test report",
605
- "cli_prompt": "PURPOSE: Generate comprehensive API test validation report\nTASK:\n• Document test environment configuration\n• Calculate endpoint coverage statistics\n• Report test results: pass/fail counts\n• Document boundary tests: parameter limits, null values, special characters\n• Document exception tests: auth failures, permission denied, resource not found\n• List issues found with recommendations\nMODE: write\nCONTEXT: @[swagger_spec]\nEXPECTED: Complete test report in {lang} with detailed results\nRULES: $(cat ~/.claude/workflows/cli-templates/protocols/write-protocol.md) | Include test cases | Clear pass/fail status",
606
- "output": "{test_doc_name}"
607
- }
608
- ],
609
- "target_files": [
610
- ".workflow/docs/${project_name}/api/{test_dir}/{test_doc_name}"
611
- ]
612
- }
613
- }
614
- ```
615
-
616
- ## Language-Specific Directory Mapping
617
-
618
- | Component | --lang zh | --lang en |
619
- |-----------|-----------|-----------|
620
- | Overview dir | 概述 | overview |
621
- | Auth doc | 认证说明.md | authentication.md |
622
- | Error doc | 错误码规范.md | error-codes.md |
623
- | Changelog | 版本历史.md | changelog.md |
624
- | Users module | 用户模块 | users |
625
- | Orders module | 订单模块 | orders |
626
- | Products module | 商品模块 | products |
627
- | Test dir | 测试报告 | test-reports |
628
- | API test doc | 接口测试.md | api-tests.md |
629
- | Boundary test doc | 边界测试.md | boundary-tests.md |
630
-
631
- ## API Documentation Template
632
-
633
- ### Single Endpoint Format
634
-
635
- Each endpoint must include:
636
-
637
- ```markdown
638
- ### Get User Details
639
-
640
- **Description**: Retrieve detailed user information by ID, including profile and permissions.
641
-
642
- **Endpoint Info**:
643
-
644
- | Property | Value |
645
- |----------|-------|
646
- | Method | GET |
647
- | URL | `/api/v1/users/{id}` |
648
- | Version | v1.0.0 |
649
- | Updated | 2025-01-01 |
650
- | Auth | Bearer Token |
651
- | Permission | user / admin |
652
-
653
- **Request Headers**:
654
-
655
- | Field | Type | Required | Example | Description |
656
- |-------|------|----------|---------|-------------|
657
- | Authorization | string | Yes | `Bearer eyJhbGc...` | JWT Token |
658
- | Content-Type | string | No | `application/json` | Request content type |
659
-
660
- **Path Parameters**:
661
-
662
- | Field | Type | Required | Example | Description |
663
- |-------|------|----------|---------|-------------|
664
- | id | string | Yes | `usr_123456` | Unique user identifier |
665
-
666
- **Query Parameters**:
667
-
668
- | Field | Type | Required | Default | Example | Description |
669
- |-------|------|----------|---------|---------|-------------|
670
- | include | string | No | - | `roles,permissions` | Related data to include |
671
-
672
- **Success Response** (200 OK):
673
-
674
- ```json
675
- {
676
- "code": 0,
677
- "message": "success",
678
- "data": {
679
- "id": "usr_123456",
680
- "email": "user@example.com",
681
- "name": "John Doe",
682
- "status": "active",
683
- "roles": ["user"],
684
- "created_at": "2025-01-01T00:00:00Z",
685
- "updated_at": "2025-01-01T00:00:00Z"
686
- },
687
- "timestamp": "2025-01-01T12:00:00Z"
688
- }
689
- ```
690
-
691
- **Response Fields**:
692
-
693
- | Field | Type | Description |
694
- |-------|------|-------------|
695
- | code | integer | Business status code, 0 = success |
696
- | message | string | Response message |
697
- | data.id | string | Unique user identifier |
698
- | data.email | string | User email address |
699
- | data.name | string | User display name |
700
- | data.status | string | User status: active/inactive/suspended |
701
- | data.roles | array | User role list |
702
- | data.created_at | string | Creation timestamp (ISO 8601) |
703
- | data.updated_at | string | Last update timestamp (ISO 8601) |
704
-
705
- **Error Responses**:
706
-
707
- | Status | Code | Message | Possible Cause |
708
- |--------|------|---------|----------------|
709
- | 401 | AUTH_001 | Invalid or expired token | Token format error or expired |
710
- | 403 | AUTH_003 | Insufficient permissions | No access to this user info |
711
- | 404 | USER_001 | User not found | User ID doesn't exist or deleted |
712
-
713
- **Examples**:
714
-
715
- ```bash
716
- # cURL
717
- curl -X GET "https://api.example.com/api/v1/users/usr_123456" \
718
- -H "Authorization: Bearer eyJhbGc..." \
719
- -H "Content-Type: application/json"
720
- ```
721
-
722
- ```javascript
723
- // JavaScript (fetch)
724
- const response = await fetch('https://api.example.com/api/v1/users/usr_123456', {
725
- method: 'GET',
726
- headers: {
727
- 'Authorization': 'Bearer eyJhbGc...',
728
- 'Content-Type': 'application/json'
729
- }
730
- });
731
- const data = await response.json();
732
- ```
733
- ```
734
-
735
- ## Session Structure
736
-
737
- ```
738
- .workflow/active/
739
- └── WFS-swagger-{timestamp}/
740
- ├── workflow-session.json
741
- ├── IMPL_PLAN.md
742
- ├── TODO_LIST.md
743
- ├── .process/
744
- │ └── swagger-planning-data.json
745
- └── .task/
746
- ├── IMPL-001.json # OpenAPI spec
747
- ├── IMPL-002.json # Security config
748
- ├── IMPL-003.json # Error codes
749
- ├── IMPL-004.json # Module 1 API
750
- ├── ...
751
- ├── IMPL-N+1.json # API overview
752
- └── IMPL-N+2.json # Validation tests
753
- ```
754
-
755
- ## Execution Commands
756
-
757
- ```bash
758
- # Execute entire workflow
759
- /workflow:execute
760
-
761
- # Specify session
762
- /workflow:execute --resume-session="WFS-swagger-yyyymmdd-hhmmss"
763
-
764
- # Single task execution
765
- /task:execute IMPL-001
766
- ```
767
-
768
- ## Related Commands
769
-
770
- - `/workflow:execute` - Execute documentation tasks
771
- - `/workflow:status` - View task progress
772
- - `/workflow:session:complete` - Mark session complete
773
- - `/memory:docs` - General documentation workflow
1
+ ---
2
+ name: swagger-docs
3
+ description: Generate complete Swagger/OpenAPI documentation following RESTful standards with global security, API details, error codes, and validation tests
4
+ argument-hint: "[path] [--tool <gemini|qwen|codex>] [--format <yaml|json>] [--version <v3.0|v3.1>] [--lang <zh|en>]"
5
+ ---
6
+
7
+ # Swagger API Documentation Workflow (/memory:swagger-docs)
8
+
9
+ ## Overview
10
+
11
+ Professional Swagger/OpenAPI documentation generator that strictly follows RESTful API design standards to produce enterprise-grade API documentation.
12
+
13
+ **Core Features**:
14
+ - **RESTful Standards**: Strict adherence to REST architecture and HTTP semantics
15
+ - **Global Security**: Unified Authorization Token validation mechanism
16
+ - **Complete API Docs**: Descriptions, methods, URLs, parameters for each endpoint
17
+ - **Organized Structure**: Clear directory hierarchy by business domain
18
+ - **Detailed Fields**: Type, required, example, description for each field
19
+ - **Error Code Standards**: Unified error response format and code definitions
20
+ - **Validation Tests**: Boundary conditions and exception handling tests
21
+
22
+ **Output Structure** (--lang zh):
23
+ ```
24
+ .workflow/docs/{project_name}/api/
25
+ ├── swagger.yaml # Main OpenAPI spec file
26
+ ├── 概述/
27
+ │ ├── README.md # API overview
28
+ │ ├── 认证说明.md # Authentication guide
29
+ │ ├── 错误码规范.md # Error code definitions
30
+ │ └── 版本历史.md # Version history
31
+ ├── 用户模块/ # Grouped by business domain
32
+ │ ├── 用户认证.md
33
+ │ ├── 用户管理.md
34
+ │ └── 权限控制.md
35
+ ├── 业务模块/
36
+ │ └── ...
37
+ └── 测试报告/
38
+ ├── 接口测试.md # API test results
39
+ └── 边界测试.md # Boundary condition tests
40
+ ```
41
+
42
+ **Output Structure** (--lang en):
43
+ ```
44
+ .workflow/docs/{project_name}/api/
45
+ ├── swagger.yaml # Main OpenAPI spec file
46
+ ├── overview/
47
+ │ ├── README.md # API overview
48
+ │ ├── authentication.md # Authentication guide
49
+ │ ├── error-codes.md # Error code definitions
50
+ │ └── changelog.md # Version history
51
+ ├── users/ # Grouped by business domain
52
+ │ ├── authentication.md
53
+ │ ├── management.md
54
+ │ └── permissions.md
55
+ ├── orders/
56
+ │ └── ...
57
+ └── test-reports/
58
+ ├── api-tests.md # API test results
59
+ └── boundary-tests.md # Boundary condition tests
60
+ ```
61
+
62
+ ## Parameters
63
+
64
+ ```bash
65
+ /memory:swagger-docs [path] [--tool <gemini|qwen|codex>] [--format <yaml|json>] [--version <v3.0|v3.1>] [--lang <zh|en>]
66
+ ```
67
+
68
+ - **path**: API source code directory (default: current directory)
69
+ - **--tool**: CLI tool selection (default: gemini)
70
+ - `gemini`: Comprehensive analysis, pattern recognition
71
+ - `qwen`: Architecture analysis, system design
72
+ - `codex`: Implementation validation, code quality
73
+ - **--format**: OpenAPI spec format (default: yaml)
74
+ - `yaml`: YAML format (recommended, better readability)
75
+ - `json`: JSON format
76
+ - **--version**: OpenAPI version (default: v3.0)
77
+ - `v3.0`: OpenAPI 3.0.x
78
+ - `v3.1`: OpenAPI 3.1.0 (supports JSON Schema 2020-12)
79
+ - **--lang**: Documentation language (default: zh)
80
+ - `zh`: Chinese documentation with Chinese directory names
81
+ - `en`: English documentation with English directory names
82
+
83
+ ## Planning Workflow
84
+
85
+ ### Phase 1: Initialize Session
86
+
87
+ ```bash
88
+ # Get project info
89
+ bash(pwd && basename "$(pwd)" && git rev-parse --show-toplevel 2>/dev/null || pwd && date +%Y%m%d-%H%M%S)
90
+ ```
91
+
92
+ ```javascript
93
+ // Create swagger-docs session
94
+ SlashCommand(command="/workflow:session:start --type swagger-docs --new \"{project_name}-swagger-{timestamp}\"")
95
+ // Parse output to get sessionId
96
+ ```
97
+
98
+ ```bash
99
+ # Update workflow-session.json
100
+ bash(jq '. + {"target_path":"{target_path}","project_root":"{project_root}","project_name":"{project_name}","format":"yaml","openapi_version":"3.0.3","lang":"{lang}","tool":"gemini"}' .workflow/active/{sessionId}/workflow-session.json > tmp.json && mv tmp.json .workflow/active/{sessionId}/workflow-session.json)
101
+ ```
102
+
103
+ ### Phase 2: Scan API Endpoints
104
+
105
+ **Discovery Patterns**: Auto-detect framework signatures and API definition styles.
106
+
107
+ **Supported Frameworks**:
108
+ | Framework | Detection Pattern | Example |
109
+ |-----------|-------------------|---------|
110
+ | Express.js | `router.get/post/put/delete` | `router.get('/users/:id')` |
111
+ | Fastify | `fastify.route`, `@Route` | `fastify.get('/api/users')` |
112
+ | NestJS | `@Controller`, `@Get/@Post` | `@Get('users/:id')` |
113
+ | Koa | `router.get`, `ctx.body` | `router.get('/users')` |
114
+ | Hono | `app.get/post`, `c.json` | `app.get('/users/:id')` |
115
+ | FastAPI | `@app.get`, `@router.post` | `@app.get("/users/{id}")` |
116
+ | Flask | `@app.route`, `@bp.route` | `@app.route('/users')` |
117
+ | Spring | `@GetMapping`, `@PostMapping` | `@GetMapping("/users/{id}")` |
118
+ | Go Gin | `r.GET`, `r.POST` | `r.GET("/users/:id")` |
119
+ | Go Chi | `r.Get`, `r.Post` | `r.Get("/users/{id}")` |
120
+
121
+ **Commands**:
122
+
123
+ ```bash
124
+ # 1. Detect API framework type
125
+ bash(
126
+ if rg -q "@Controller|@Get|@Post|@Put|@Delete" --type ts 2>/dev/null; then echo "NESTJS";
127
+ elif rg -q "router\.(get|post|put|delete|patch)" --type ts --type js 2>/dev/null; then echo "EXPRESS";
128
+ elif rg -q "fastify\.(get|post|route)" --type ts --type js 2>/dev/null; then echo "FASTIFY";
129
+ elif rg -q "@app\.(get|post|put|delete)" --type py 2>/dev/null; then echo "FASTAPI";
130
+ elif rg -q "@GetMapping|@PostMapping|@RequestMapping" --type java 2>/dev/null; then echo "SPRING";
131
+ elif rg -q 'r\.(GET|POST|PUT|DELETE)' --type go 2>/dev/null; then echo "GO_GIN";
132
+ else echo "UNKNOWN"; fi
133
+ )
134
+
135
+ # 2. Scan all API endpoint definitions
136
+ bash(rg -n "(router|app|fastify)\.(get|post|put|delete|patch)|@(Get|Post|Put|Delete|Patch|Controller|RequestMapping)" --type ts --type js --type py --type java --type go -g '!*.test.*' -g '!*.spec.*' -g '!node_modules/**' 2>/dev/null | head -200)
137
+
138
+ # 3. Extract route paths
139
+ bash(rg -o "['\"](/api)?/[a-zA-Z0-9/:_-]+['\"]" --type ts --type js --type py -g '!*.test.*' 2>/dev/null | sort -u | head -100)
140
+
141
+ # 4. Detect existing OpenAPI/Swagger files
142
+ bash(find . -type f \( -name "swagger.yaml" -o -name "swagger.json" -o -name "openapi.yaml" -o -name "openapi.json" \) ! -path "*/node_modules/*" 2>/dev/null)
143
+
144
+ # 5. Extract DTO/Schema definitions
145
+ bash(rg -n "export (interface|type|class).*Dto|@ApiProperty|class.*Schema" --type ts -g '!*.test.*' 2>/dev/null | head -100)
146
+ ```
147
+
148
+ **Data Processing**: Parse outputs, use **Write tool** to create `${session_dir}/.process/swagger-planning-data.json`:
149
+
150
+ ```json
151
+ {
152
+ "metadata": {
153
+ "generated_at": "2025-01-01T12:00:00+08:00",
154
+ "project_name": "project_name",
155
+ "project_root": "/path/to/project",
156
+ "openapi_version": "3.0.3",
157
+ "format": "yaml",
158
+ "lang": "zh"
159
+ },
160
+ "framework": {
161
+ "type": "NESTJS",
162
+ "detected_patterns": ["@Controller", "@Get", "@Post"],
163
+ "base_path": "/api/v1"
164
+ },
165
+ "endpoints": [
166
+ {
167
+ "file": "src/modules/users/users.controller.ts",
168
+ "line": 25,
169
+ "method": "GET",
170
+ "path": "/api/v1/users/:id",
171
+ "handler": "getUser",
172
+ "controller": "UsersController"
173
+ }
174
+ ],
175
+ "existing_specs": {
176
+ "found": false,
177
+ "files": []
178
+ },
179
+ "dto_schemas": [
180
+ {
181
+ "name": "CreateUserDto",
182
+ "file": "src/modules/users/dto/create-user.dto.ts",
183
+ "properties": ["email", "password", "name"]
184
+ }
185
+ ],
186
+ "statistics": {
187
+ "total_endpoints": 45,
188
+ "by_method": {"GET": 20, "POST": 15, "PUT": 5, "DELETE": 5},
189
+ "by_module": {"users": 12, "auth": 8, "orders": 15, "products": 10}
190
+ }
191
+ }
192
+ ```
193
+
194
+ ### Phase 3: Analyze API Structure
195
+
196
+ **Commands**:
197
+
198
+ ```bash
199
+ # 1. Analyze controller/route file structure
200
+ bash(cat ${session_dir}/.process/swagger-planning-data.json | jq -r '.endpoints[].file' | sort -u | head -20)
201
+
202
+ # 2. Extract request/response types
203
+ bash(for f in $(jq -r '.dto_schemas[].file' ${session_dir}/.process/swagger-planning-data.json | head -20); do echo "=== $f ===" && cat "$f" 2>/dev/null; done)
204
+
205
+ # 3. Analyze authentication middleware
206
+ bash(rg -n "auth|guard|middleware|jwt|bearer|token" -i --type ts --type js -g '!*.test.*' -g '!node_modules/**' 2>/dev/null | head -50)
207
+
208
+ # 4. Detect error handling patterns
209
+ bash(rg -n "HttpException|BadRequest|Unauthorized|Forbidden|NotFound|throw new" --type ts --type js -g '!*.test.*' 2>/dev/null | head -50)
210
+ ```
211
+
212
+ **Deep Analysis via Gemini CLI**:
213
+
214
+ ```bash
215
+ ccw cli -p "
216
+ PURPOSE: Analyze API structure and generate OpenAPI specification outline for comprehensive documentation
217
+ TASK:
218
+ • Parse all API endpoints and identify business module boundaries
219
+ • Extract request parameters, request bodies, and response formats
220
+ • Identify authentication mechanisms and security requirements
221
+ • Discover error handling patterns and error codes
222
+ • Map endpoints to logical module groups
223
+ MODE: analysis
224
+ CONTEXT: @src/**/*.controller.ts @src/**/*.routes.ts @src/**/*.dto.ts @src/**/middleware/**/*
225
+ EXPECTED: JSON format API structure analysis report with modules, endpoints, security schemes, and error codes
226
+ CONSTRAINTS: Strict RESTful standards | Identify all public endpoints | Document output language: {lang}
227
+ " --tool gemini --mode analysis --rule analysis-code-patterns --cd {project_root}
228
+ ```
229
+
230
+ **Update swagger-planning-data.json** with analysis results:
231
+
232
+ ```json
233
+ {
234
+ "api_structure": {
235
+ "modules": [
236
+ {
237
+ "name": "Users",
238
+ "name_zh": "用户模块",
239
+ "base_path": "/api/v1/users",
240
+ "endpoints": [
241
+ {
242
+ "path": "/api/v1/users",
243
+ "method": "GET",
244
+ "operation_id": "listUsers",
245
+ "summary": "List all users",
246
+ "summary_zh": "获取用户列表",
247
+ "description": "Paginated list of system users with filtering by status and role",
248
+ "description_zh": "分页获取系统用户列表,支持按状态、角色筛选",
249
+ "tags": ["User Management"],
250
+ "tags_zh": ["用户管理"],
251
+ "security": ["bearerAuth"],
252
+ "parameters": {
253
+ "query": ["page", "limit", "status", "role"]
254
+ },
255
+ "responses": {
256
+ "200": "UserListResponse",
257
+ "401": "UnauthorizedError",
258
+ "403": "ForbiddenError"
259
+ }
260
+ }
261
+ ]
262
+ }
263
+ ],
264
+ "security_schemes": {
265
+ "bearerAuth": {
266
+ "type": "http",
267
+ "scheme": "bearer",
268
+ "bearerFormat": "JWT",
269
+ "description": "JWT Token authentication. Add Authorization: Bearer <token> to request header"
270
+ }
271
+ },
272
+ "error_codes": [
273
+ {"code": "AUTH_001", "status": 401, "message": "Invalid or expired token", "message_zh": "Token 无效或已过期"},
274
+ {"code": "AUTH_002", "status": 401, "message": "Authentication required", "message_zh": "未提供认证信息"},
275
+ {"code": "AUTH_003", "status": 403, "message": "Insufficient permissions", "message_zh": "权限不足"}
276
+ ]
277
+ }
278
+ }
279
+ ```
280
+
281
+ ### Phase 4: Task Decomposition
282
+
283
+ **Task Hierarchy**:
284
+
285
+ ```
286
+ Level 1: Infrastructure Tasks (Parallel)
287
+ ├─ IMPL-001: Generate main OpenAPI spec file (swagger.yaml)
288
+ ├─ IMPL-002: Generate global security config and auth documentation
289
+ └─ IMPL-003: Generate unified error code specification
290
+
291
+ Level 2: Module Documentation Tasks (Parallel, by business module)
292
+ ├─ IMPL-004: Users module API documentation
293
+ ├─ IMPL-005: Auth module API documentation
294
+ ├─ IMPL-006: Business module N API documentation
295
+ └─ ...
296
+
297
+ Level 3: Aggregation Tasks (Depends on Level 1-2)
298
+ ├─ IMPL-N+1: Generate API overview and navigation
299
+ └─ IMPL-N+2: Generate version history and changelog
300
+
301
+ Level 4: Validation Tasks (Depends on Level 1-3)
302
+ ├─ IMPL-N+3: API endpoint validation tests
303
+ └─ IMPL-N+4: Boundary condition tests
304
+ ```
305
+
306
+ **Grouping Strategy**:
307
+ 1. Group by business module (users, orders, products, etc.)
308
+ 2. Maximum 10 endpoints per task
309
+ 3. Large modules (>10 endpoints) split by submodules
310
+
311
+ **Commands**:
312
+
313
+ ```bash
314
+ # 1. Count endpoints by module
315
+ bash(cat ${session_dir}/.process/swagger-planning-data.json | jq '.statistics.by_module')
316
+
317
+ # 2. Calculate task groupings
318
+ bash(cat ${session_dir}/.process/swagger-planning-data.json | jq -r '.api_structure.modules[] | "\(.name):\(.endpoints | length)"')
319
+ ```
320
+
321
+ **Data Processing**: Use **Edit tool** to update `swagger-planning-data.json` with task groups:
322
+
323
+ ```json
324
+ {
325
+ "task_groups": {
326
+ "level1_count": 3,
327
+ "level2_count": 5,
328
+ "total_count": 12,
329
+ "assignments": [
330
+ {"task_id": "IMPL-001", "level": 1, "type": "openapi-spec", "title": "Generate OpenAPI main spec file"},
331
+ {"task_id": "IMPL-002", "level": 1, "type": "security", "title": "Generate global security config"},
332
+ {"task_id": "IMPL-003", "level": 1, "type": "error-codes", "title": "Generate error code specification"},
333
+ {"task_id": "IMPL-004", "level": 2, "type": "module-doc", "module": "users", "endpoint_count": 12},
334
+ {"task_id": "IMPL-005", "level": 2, "type": "module-doc", "module": "auth", "endpoint_count": 8}
335
+ ]
336
+ }
337
+ }
338
+ ```
339
+
340
+ ### Phase 5: Generate Task JSONs
341
+
342
+ **Generation Process**:
343
+ 1. Read configuration values from workflow-session.json
344
+ 2. Read task groups from swagger-planning-data.json
345
+ 3. Generate Level 1 tasks (infrastructure)
346
+ 4. Generate Level 2 tasks (by module)
347
+ 5. Generate Level 3-4 tasks (aggregation and validation)
348
+
349
+ ## Task Templates
350
+
351
+ ### Level 1-1: OpenAPI Main Spec File
352
+
353
+ ```json
354
+ {
355
+ "id": "IMPL-001",
356
+ "title": "Generate OpenAPI main specification file",
357
+ "status": "pending",
358
+ "meta": {
359
+ "type": "swagger-openapi-spec",
360
+ "agent": "@doc-generator",
361
+ "tool": "gemini",
362
+ "priority": "critical"
363
+ },
364
+ "context": {
365
+ "requirements": [
366
+ "Generate OpenAPI 3.0.3 compliant swagger.yaml",
367
+ "Include complete info, servers, tags, paths, components definitions",
368
+ "Follow RESTful design standards, use {lang} for descriptions"
369
+ ],
370
+ "precomputed_data": {
371
+ "planning_data": "${session_dir}/.process/swagger-planning-data.json"
372
+ }
373
+ },
374
+ "flow_control": {
375
+ "pre_analysis": [
376
+ {
377
+ "step": "load_analysis_data",
378
+ "action": "Load API analysis data",
379
+ "commands": [
380
+ "bash(cat ${session_dir}/.process/swagger-planning-data.json)"
381
+ ],
382
+ "output_to": "api_analysis"
383
+ }
384
+ ],
385
+ "implementation_approach": [
386
+ {
387
+ "step": 1,
388
+ "title": "Generate OpenAPI spec file",
389
+ "description": "Create complete swagger.yaml specification file",
390
+ "cli_prompt": "PURPOSE: Generate OpenAPI 3.0.3 specification file from analyzed API structure\nTASK:\n• Define openapi version: 3.0.3\n• Define info: title, description, version, contact, license\n• Define servers: development, staging, production environments\n• Define tags: organized by business modules\n• Define paths: all API endpoints with complete specifications\n• Define components: schemas, securitySchemes, parameters, responses\nMODE: write\nCONTEXT: @[api_analysis]\nEXPECTED: Complete swagger.yaml file following OpenAPI 3.0.3 specification\nCONSTRAINTS: Use {lang} for all descriptions | Strict RESTful standards\n--rule documentation-swagger-api",
391
+ "output": "swagger.yaml"
392
+ }
393
+ ],
394
+ "target_files": [
395
+ ".workflow/docs/${project_name}/api/swagger.yaml"
396
+ ]
397
+ }
398
+ }
399
+ ```
400
+
401
+ ### Level 1-2: Global Security Configuration
402
+
403
+ ```json
404
+ {
405
+ "id": "IMPL-002",
406
+ "title": "Generate global security configuration and authentication guide",
407
+ "status": "pending",
408
+ "meta": {
409
+ "type": "swagger-security",
410
+ "agent": "@doc-generator",
411
+ "tool": "gemini"
412
+ },
413
+ "context": {
414
+ "requirements": [
415
+ "Document Authorization header format in detail",
416
+ "Describe token acquisition, refresh, and expiration mechanisms",
417
+ "List permission requirements for each endpoint"
418
+ ]
419
+ },
420
+ "flow_control": {
421
+ "pre_analysis": [
422
+ {
423
+ "step": "analyze_auth",
424
+ "command": "bash(rg -n 'auth|guard|jwt|bearer' -i --type ts -g '!*.test.*' 2>/dev/null | head -50)",
425
+ "output_to": "auth_patterns"
426
+ }
427
+ ],
428
+ "implementation_approach": [
429
+ {
430
+ "step": 1,
431
+ "title": "Generate authentication documentation",
432
+ "cli_prompt": "PURPOSE: Generate comprehensive authentication documentation for API security\nTASK:\n• Document authentication mechanism: JWT Bearer Token\n• Explain header format: Authorization: Bearer <token>\n• Describe token lifecycle: acquisition, refresh, expiration handling\n• Define permission levels: public, user, admin, super_admin\n• Document authentication failure responses: 401/403 error handling\nMODE: write\nCONTEXT: @[auth_patterns] @src/**/auth/**/* @src/**/guard/**/*\nEXPECTED: Complete authentication guide in {lang}\nCONSTRAINTS: Include code examples | Clear step-by-step instructions\n--rule development-feature",
433
+ "output": "{auth_doc_name}"
434
+ }
435
+ ],
436
+ "target_files": [
437
+ ".workflow/docs/${project_name}/api/{overview_dir}/{auth_doc_name}"
438
+ ]
439
+ }
440
+ }
441
+ ```
442
+
443
+ ### Level 1-3: Unified Error Code Specification
444
+
445
+ ```json
446
+ {
447
+ "id": "IMPL-003",
448
+ "title": "Generate unified error code specification",
449
+ "status": "pending",
450
+ "meta": {
451
+ "type": "swagger-error-codes",
452
+ "agent": "@doc-generator",
453
+ "tool": "gemini"
454
+ },
455
+ "context": {
456
+ "requirements": [
457
+ "Define unified error response format",
458
+ "Create categorized error code system (auth, business, system)",
459
+ "Provide detailed description and examples for each error code"
460
+ ]
461
+ },
462
+ "flow_control": {
463
+ "implementation_approach": [
464
+ {
465
+ "step": 1,
466
+ "title": "Generate error code specification document",
467
+ "cli_prompt": "PURPOSE: Generate comprehensive error code specification for consistent API error handling\nTASK:\n• Define error response format: {code, message, details, timestamp}\n• Document authentication errors (AUTH_xxx): 401/403 series\n• Document parameter errors (PARAM_xxx): 400 series\n• Document business errors (BIZ_xxx): business logic errors\n• Document system errors (SYS_xxx): 500 series\n• For each error code: HTTP status, error message, possible causes, resolution suggestions\nMODE: write\nCONTEXT: @src/**/*.exception.ts @src/**/*.filter.ts\nEXPECTED: Complete error code specification in {lang} with tables and examples\nCONSTRAINTS: Include response examples | Clear categorization\n--rule development-feature",
468
+ "output": "{error_doc_name}"
469
+ }
470
+ ],
471
+ "target_files": [
472
+ ".workflow/docs/${project_name}/api/{overview_dir}/{error_doc_name}"
473
+ ]
474
+ }
475
+ }
476
+ ```
477
+
478
+ ### Level 2: Module API Documentation (Template)
479
+
480
+ ```json
481
+ {
482
+ "id": "IMPL-${module_task_id}",
483
+ "title": "Generate ${module_name} API documentation",
484
+ "status": "pending",
485
+ "depends_on": ["IMPL-001", "IMPL-002", "IMPL-003"],
486
+ "meta": {
487
+ "type": "swagger-module-doc",
488
+ "agent": "@doc-generator",
489
+ "tool": "gemini",
490
+ "module": "${module_name}",
491
+ "endpoint_count": "${endpoint_count}"
492
+ },
493
+ "context": {
494
+ "requirements": [
495
+ "Complete documentation for all endpoints in this module",
496
+ "Each endpoint: description, method, URL, parameters, responses",
497
+ "Include success and failure response examples",
498
+ "Mark API version and last update time"
499
+ ],
500
+ "focus_paths": ["${module_source_paths}"]
501
+ },
502
+ "flow_control": {
503
+ "pre_analysis": [
504
+ {
505
+ "step": "load_module_endpoints",
506
+ "action": "Load module endpoint information",
507
+ "commands": [
508
+ "bash(cat ${session_dir}/.process/swagger-planning-data.json | jq '.api_structure.modules[] | select(.name == \"${module_name}\")')"
509
+ ],
510
+ "output_to": "module_endpoints"
511
+ },
512
+ {
513
+ "step": "read_source_files",
514
+ "action": "Read module source files",
515
+ "commands": [
516
+ "bash(cat ${module_source_files})"
517
+ ],
518
+ "output_to": "source_code"
519
+ }
520
+ ],
521
+ "implementation_approach": [
522
+ {
523
+ "step": 1,
524
+ "title": "Generate module API documentation",
525
+ "description": "Generate complete API documentation for ${module_name}",
526
+ "cli_prompt": "PURPOSE: Generate complete RESTful API documentation for ${module_name} module\nTASK:\n• Create module overview: purpose, use cases, prerequisites\n• Generate endpoint index: grouped by functionality\n• For each endpoint document:\n - Functional description: purpose and business context\n - Request method: GET/POST/PUT/DELETE\n - URL path: complete API path\n - Request headers: Authorization and other required headers\n - Path parameters: {id} and other path variables\n - Query parameters: pagination, filters, etc.\n - Request body: JSON Schema format\n - Response body: success and error responses\n - Field description table: type, required, example, description\n• Add usage examples: cURL, JavaScript, Python\n• Add version info: v1.0.0, last updated date\nMODE: write\nCONTEXT: @[module_endpoints] @[source_code]\nEXPECTED: Complete module API documentation in {lang} with all endpoints fully documented\nCONSTRAINTS: RESTful standards | Include all response codes\n--rule documentation-swagger-api",
527
+ "output": "${module_doc_name}"
528
+ }
529
+ ],
530
+ "target_files": [
531
+ ".workflow/docs/${project_name}/api/${module_dir}/${module_doc_name}"
532
+ ]
533
+ }
534
+ }
535
+ ```
536
+
537
+ ### Level 3: API Overview and Navigation
538
+
539
+ ```json
540
+ {
541
+ "id": "IMPL-${overview_task_id}",
542
+ "title": "Generate API overview and navigation",
543
+ "status": "pending",
544
+ "depends_on": ["IMPL-001", "...", "IMPL-${last_module_task_id}"],
545
+ "meta": {
546
+ "type": "swagger-overview",
547
+ "agent": "@doc-generator",
548
+ "tool": "gemini"
549
+ },
550
+ "flow_control": {
551
+ "pre_analysis": [
552
+ {
553
+ "step": "load_all_docs",
554
+ "command": "bash(find .workflow/docs/${project_name}/api -type f -name '*.md' ! -path '*/{overview_dir}/*' | xargs cat)",
555
+ "output_to": "all_module_docs"
556
+ }
557
+ ],
558
+ "implementation_approach": [
559
+ {
560
+ "step": 1,
561
+ "title": "Generate API overview",
562
+ "cli_prompt": "PURPOSE: Generate API overview document with navigation and quick start guide\nTASK:\n• Create introduction: system features, tech stack, version\n• Write quick start guide: authentication, first request example\n• Build module navigation: categorized links to all modules\n• Document environment configuration: development, staging, production\n• List SDKs and tools: client libraries, Postman collection\nMODE: write\nCONTEXT: @[all_module_docs] @.workflow/docs/${project_name}/api/swagger.yaml\nEXPECTED: Complete API overview in {lang} with navigation links\nCONSTRAINTS: Clear structure | Quick start focus\n--rule development-feature",
563
+ "output": "README.md"
564
+ }
565
+ ],
566
+ "target_files": [
567
+ ".workflow/docs/${project_name}/api/{overview_dir}/README.md"
568
+ ]
569
+ }
570
+ }
571
+ ```
572
+
573
+ ### Level 4: Validation Tasks
574
+
575
+ ```json
576
+ {
577
+ "id": "IMPL-${test_task_id}",
578
+ "title": "API endpoint validation tests",
579
+ "status": "pending",
580
+ "depends_on": ["IMPL-${overview_task_id}"],
581
+ "meta": {
582
+ "type": "swagger-validation",
583
+ "agent": "@test-fix-agent",
584
+ "tool": "codex"
585
+ },
586
+ "context": {
587
+ "requirements": [
588
+ "Validate accessibility of all endpoints",
589
+ "Test various boundary conditions",
590
+ "Verify exception handling"
591
+ ]
592
+ },
593
+ "flow_control": {
594
+ "pre_analysis": [
595
+ {
596
+ "step": "load_swagger_spec",
597
+ "command": "bash(cat .workflow/docs/${project_name}/api/swagger.yaml)",
598
+ "output_to": "swagger_spec"
599
+ }
600
+ ],
601
+ "implementation_approach": [
602
+ {
603
+ "step": 1,
604
+ "title": "Generate test report",
605
+ "cli_prompt": "PURPOSE: Generate comprehensive API test validation report\nTASK:\n• Document test environment configuration\n• Calculate endpoint coverage statistics\n• Report test results: pass/fail counts\n• Document boundary tests: parameter limits, null values, special characters\n• Document exception tests: auth failures, permission denied, resource not found\n• List issues found with recommendations\nMODE: write\nCONTEXT: @[swagger_spec]\nEXPECTED: Complete test report in {lang} with detailed results\nCONSTRAINTS: Include test cases | Clear pass/fail status\n--rule development-tests",
606
+ "output": "{test_doc_name}"
607
+ }
608
+ ],
609
+ "target_files": [
610
+ ".workflow/docs/${project_name}/api/{test_dir}/{test_doc_name}"
611
+ ]
612
+ }
613
+ }
614
+ ```
615
+
616
+ ## Language-Specific Directory Mapping
617
+
618
+ | Component | --lang zh | --lang en |
619
+ |-----------|-----------|-----------|
620
+ | Overview dir | 概述 | overview |
621
+ | Auth doc | 认证说明.md | authentication.md |
622
+ | Error doc | 错误码规范.md | error-codes.md |
623
+ | Changelog | 版本历史.md | changelog.md |
624
+ | Users module | 用户模块 | users |
625
+ | Orders module | 订单模块 | orders |
626
+ | Products module | 商品模块 | products |
627
+ | Test dir | 测试报告 | test-reports |
628
+ | API test doc | 接口测试.md | api-tests.md |
629
+ | Boundary test doc | 边界测试.md | boundary-tests.md |
630
+
631
+ ## API Documentation Template
632
+
633
+ ### Single Endpoint Format
634
+
635
+ Each endpoint must include:
636
+
637
+ ```markdown
638
+ ### Get User Details
639
+
640
+ **Description**: Retrieve detailed user information by ID, including profile and permissions.
641
+
642
+ **Endpoint Info**:
643
+
644
+ | Property | Value |
645
+ |----------|-------|
646
+ | Method | GET |
647
+ | URL | `/api/v1/users/{id}` |
648
+ | Version | v1.0.0 |
649
+ | Updated | 2025-01-01 |
650
+ | Auth | Bearer Token |
651
+ | Permission | user / admin |
652
+
653
+ **Request Headers**:
654
+
655
+ | Field | Type | Required | Example | Description |
656
+ |-------|------|----------|---------|-------------|
657
+ | Authorization | string | Yes | `Bearer eyJhbGc...` | JWT Token |
658
+ | Content-Type | string | No | `application/json` | Request content type |
659
+
660
+ **Path Parameters**:
661
+
662
+ | Field | Type | Required | Example | Description |
663
+ |-------|------|----------|---------|-------------|
664
+ | id | string | Yes | `usr_123456` | Unique user identifier |
665
+
666
+ **Query Parameters**:
667
+
668
+ | Field | Type | Required | Default | Example | Description |
669
+ |-------|------|----------|---------|---------|-------------|
670
+ | include | string | No | - | `roles,permissions` | Related data to include |
671
+
672
+ **Success Response** (200 OK):
673
+
674
+ ```json
675
+ {
676
+ "code": 0,
677
+ "message": "success",
678
+ "data": {
679
+ "id": "usr_123456",
680
+ "email": "user@example.com",
681
+ "name": "John Doe",
682
+ "status": "active",
683
+ "roles": ["user"],
684
+ "created_at": "2025-01-01T00:00:00Z",
685
+ "updated_at": "2025-01-01T00:00:00Z"
686
+ },
687
+ "timestamp": "2025-01-01T12:00:00Z"
688
+ }
689
+ ```
690
+
691
+ **Response Fields**:
692
+
693
+ | Field | Type | Description |
694
+ |-------|------|-------------|
695
+ | code | integer | Business status code, 0 = success |
696
+ | message | string | Response message |
697
+ | data.id | string | Unique user identifier |
698
+ | data.email | string | User email address |
699
+ | data.name | string | User display name |
700
+ | data.status | string | User status: active/inactive/suspended |
701
+ | data.roles | array | User role list |
702
+ | data.created_at | string | Creation timestamp (ISO 8601) |
703
+ | data.updated_at | string | Last update timestamp (ISO 8601) |
704
+
705
+ **Error Responses**:
706
+
707
+ | Status | Code | Message | Possible Cause |
708
+ |--------|------|---------|----------------|
709
+ | 401 | AUTH_001 | Invalid or expired token | Token format error or expired |
710
+ | 403 | AUTH_003 | Insufficient permissions | No access to this user info |
711
+ | 404 | USER_001 | User not found | User ID doesn't exist or deleted |
712
+
713
+ **Examples**:
714
+
715
+ ```bash
716
+ # cURL
717
+ curl -X GET "https://api.example.com/api/v1/users/usr_123456" \
718
+ -H "Authorization: Bearer eyJhbGc..." \
719
+ -H "Content-Type: application/json"
720
+ ```
721
+
722
+ ```javascript
723
+ // JavaScript (fetch)
724
+ const response = await fetch('https://api.example.com/api/v1/users/usr_123456', {
725
+ method: 'GET',
726
+ headers: {
727
+ 'Authorization': 'Bearer eyJhbGc...',
728
+ 'Content-Type': 'application/json'
729
+ }
730
+ });
731
+ const data = await response.json();
732
+ ```
733
+ ```
734
+
735
+ ## Session Structure
736
+
737
+ ```
738
+ .workflow/active/
739
+ └── WFS-swagger-{timestamp}/
740
+ ├── workflow-session.json
741
+ ├── IMPL_PLAN.md
742
+ ├── TODO_LIST.md
743
+ ├── .process/
744
+ │ └── swagger-planning-data.json
745
+ └── .task/
746
+ ├── IMPL-001.json # OpenAPI spec
747
+ ├── IMPL-002.json # Security config
748
+ ├── IMPL-003.json # Error codes
749
+ ├── IMPL-004.json # Module 1 API
750
+ ├── ...
751
+ ├── IMPL-N+1.json # API overview
752
+ └── IMPL-N+2.json # Validation tests
753
+ ```
754
+
755
+ ## Execution Commands
756
+
757
+ ```bash
758
+ # Execute entire workflow
759
+ /workflow:execute
760
+
761
+ # Specify session
762
+ /workflow:execute --resume-session="WFS-swagger-yyyymmdd-hhmmss"
763
+
764
+ # Single task execution
765
+ /task:execute IMPL-001
766
+ ```
767
+
768
+ ## Related Commands
769
+
770
+ - `/workflow:execute` - Execute documentation tasks
771
+ - `/workflow:status` - View task progress
772
+ - `/workflow:session:complete` - Mark session complete
773
+ - `/memory:docs` - General documentation workflow