ccgx-workflow 1.0.0

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 (212) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +469 -0
  3. package/README.zh-CN.md +466 -0
  4. package/bin/ccg.mjs +2 -0
  5. package/dist/cli.d.mts +1 -0
  6. package/dist/cli.d.ts +1 -0
  7. package/dist/cli.mjs +173 -0
  8. package/dist/index.d.mts +1774 -0
  9. package/dist/index.d.ts +1774 -0
  10. package/dist/index.mjs +2029 -0
  11. package/dist/shared/ccgx-workflow.WgUzkiC3.mjs +5248 -0
  12. package/package.json +129 -0
  13. package/templates/commands/agents/assumptions-analyzer.md +129 -0
  14. package/templates/commands/agents/code-fixer.md +292 -0
  15. package/templates/commands/agents/codebase-mapper.md +152 -0
  16. package/templates/commands/agents/debug-session-manager.md +247 -0
  17. package/templates/commands/agents/debugger.md +111 -0
  18. package/templates/commands/agents/eval-auditor.md +171 -0
  19. package/templates/commands/agents/framework-selector.md +152 -0
  20. package/templates/commands/agents/get-current-datetime.md +29 -0
  21. package/templates/commands/agents/init-architect.md +114 -0
  22. package/templates/commands/agents/integration-checker.md +163 -0
  23. package/templates/commands/agents/interface-auditor.md +170 -0
  24. package/templates/commands/agents/nyquist-auditor.md +131 -0
  25. package/templates/commands/agents/pattern-mapper.md +111 -0
  26. package/templates/commands/agents/phase-runner.md +321 -0
  27. package/templates/commands/agents/plan-checker.md +255 -0
  28. package/templates/commands/agents/planner.md +320 -0
  29. package/templates/commands/agents/team-architect.md +186 -0
  30. package/templates/commands/agents/team-qa.md +121 -0
  31. package/templates/commands/agents/team-reviewer.md +157 -0
  32. package/templates/commands/agents/ui-ux-designer.md +573 -0
  33. package/templates/commands/agents/verifier.md +274 -0
  34. package/templates/commands/analyze.md +210 -0
  35. package/templates/commands/autonomous.md +792 -0
  36. package/templates/commands/cancel.md +132 -0
  37. package/templates/commands/clean-branches.md +117 -0
  38. package/templates/commands/codex-exec.md +404 -0
  39. package/templates/commands/commit.md +151 -0
  40. package/templates/commands/context.md +332 -0
  41. package/templates/commands/debate.md +165 -0
  42. package/templates/commands/debug.md +226 -0
  43. package/templates/commands/enhance.md +64 -0
  44. package/templates/commands/execute.md +380 -0
  45. package/templates/commands/init.md +123 -0
  46. package/templates/commands/optimize.md +217 -0
  47. package/templates/commands/plan.md +373 -0
  48. package/templates/commands/result.md +106 -0
  49. package/templates/commands/review.md +338 -0
  50. package/templates/commands/rollback.md +116 -0
  51. package/templates/commands/spec-impl.md +139 -0
  52. package/templates/commands/spec-init.md +101 -0
  53. package/templates/commands/spec-plan.md +210 -0
  54. package/templates/commands/spec-research.md +152 -0
  55. package/templates/commands/spec-review.md +120 -0
  56. package/templates/commands/status.md +206 -0
  57. package/templates/commands/team-exec.md +265 -0
  58. package/templates/commands/test.md +236 -0
  59. package/templates/commands/verify-work.md +338 -0
  60. package/templates/commands/verify.md +66 -0
  61. package/templates/commands/workflow.md +190 -0
  62. package/templates/commands/worktree.md +128 -0
  63. package/templates/hooks/ccg-context-monitor.js +159 -0
  64. package/templates/hooks/ccg-session-state.cjs +510 -0
  65. package/templates/hooks/ccg-statusline.js +142 -0
  66. package/templates/output-styles/abyss-command.md +56 -0
  67. package/templates/output-styles/abyss-concise.md +89 -0
  68. package/templates/output-styles/abyss-cultivator.md +302 -0
  69. package/templates/output-styles/abyss-ritual.md +70 -0
  70. package/templates/output-styles/engineer-professional.md +89 -0
  71. package/templates/output-styles/laowang-engineer.md +127 -0
  72. package/templates/output-styles/nekomata-engineer.md +120 -0
  73. package/templates/output-styles/ojousama-engineer.md +121 -0
  74. package/templates/prompts/claude/analyzer.md +59 -0
  75. package/templates/prompts/claude/architect.md +54 -0
  76. package/templates/prompts/claude/debugger.md +71 -0
  77. package/templates/prompts/claude/optimizer.md +73 -0
  78. package/templates/prompts/claude/reviewer.md +63 -0
  79. package/templates/prompts/claude/tester.md +69 -0
  80. package/templates/prompts/codex/analyzer.md +58 -0
  81. package/templates/prompts/codex/architect.md +54 -0
  82. package/templates/prompts/codex/debugger.md +74 -0
  83. package/templates/prompts/codex/optimizer.md +81 -0
  84. package/templates/prompts/codex/reviewer.md +73 -0
  85. package/templates/prompts/codex/tester.md +62 -0
  86. package/templates/prompts/gemini/analyzer.md +61 -0
  87. package/templates/prompts/gemini/architect.md +55 -0
  88. package/templates/prompts/gemini/debugger.md +78 -0
  89. package/templates/prompts/gemini/frontend.md +64 -0
  90. package/templates/prompts/gemini/optimizer.md +84 -0
  91. package/templates/prompts/gemini/reviewer.md +80 -0
  92. package/templates/prompts/gemini/tester.md +68 -0
  93. package/templates/rules/ccg-skill-routing.md +83 -0
  94. package/templates/rules/ccg-skills.md +71 -0
  95. package/templates/scripts/ccg-phase-runner-launcher.mjs +467 -0
  96. package/templates/scripts/invoke-model.mjs +949 -0
  97. package/templates/scripts/repatch-gemini-plugin.mjs +194 -0
  98. package/templates/skills/SKILL.md +92 -0
  99. package/templates/skills/domains/ai/SKILL.md +35 -0
  100. package/templates/skills/domains/ai/agent-dev.md +242 -0
  101. package/templates/skills/domains/ai/llm-security.md +288 -0
  102. package/templates/skills/domains/ai/prompt-and-eval.md +279 -0
  103. package/templates/skills/domains/ai/rag-system.md +542 -0
  104. package/templates/skills/domains/architecture/SKILL.md +43 -0
  105. package/templates/skills/domains/architecture/api-design.md +225 -0
  106. package/templates/skills/domains/architecture/caching.md +299 -0
  107. package/templates/skills/domains/architecture/cloud-native.md +285 -0
  108. package/templates/skills/domains/architecture/message-queue.md +329 -0
  109. package/templates/skills/domains/architecture/security-arch.md +297 -0
  110. package/templates/skills/domains/data-engineering/SKILL.md +208 -0
  111. package/templates/skills/domains/development/SKILL.md +47 -0
  112. package/templates/skills/domains/development/cpp.md +246 -0
  113. package/templates/skills/domains/development/go.md +323 -0
  114. package/templates/skills/domains/development/java.md +277 -0
  115. package/templates/skills/domains/development/python.md +288 -0
  116. package/templates/skills/domains/development/rust.md +313 -0
  117. package/templates/skills/domains/development/shell.md +313 -0
  118. package/templates/skills/domains/development/typescript.md +277 -0
  119. package/templates/skills/domains/devops/SKILL.md +40 -0
  120. package/templates/skills/domains/devops/cost-optimization.md +272 -0
  121. package/templates/skills/domains/devops/database.md +217 -0
  122. package/templates/skills/domains/devops/devsecops.md +198 -0
  123. package/templates/skills/domains/devops/git-workflow.md +181 -0
  124. package/templates/skills/domains/devops/observability.md +280 -0
  125. package/templates/skills/domains/devops/performance.md +336 -0
  126. package/templates/skills/domains/devops/testing.md +283 -0
  127. package/templates/skills/domains/frontend-design/SKILL.md +244 -0
  128. package/templates/skills/domains/frontend-design/agents/openai.yaml +4 -0
  129. package/templates/skills/domains/frontend-design/claymorphism/SKILL.md +121 -0
  130. package/templates/skills/domains/frontend-design/claymorphism/references/tokens.css +52 -0
  131. package/templates/skills/domains/frontend-design/component-patterns.md +202 -0
  132. package/templates/skills/domains/frontend-design/engineering.md +287 -0
  133. package/templates/skills/domains/frontend-design/glassmorphism/SKILL.md +142 -0
  134. package/templates/skills/domains/frontend-design/glassmorphism/references/tokens.css +32 -0
  135. package/templates/skills/domains/frontend-design/liquid-glass/SKILL.md +139 -0
  136. package/templates/skills/domains/frontend-design/liquid-glass/references/tokens.css +81 -0
  137. package/templates/skills/domains/frontend-design/neubrutalism/SKILL.md +145 -0
  138. package/templates/skills/domains/frontend-design/neubrutalism/references/tokens.css +44 -0
  139. package/templates/skills/domains/frontend-design/reference/color-and-contrast.md +132 -0
  140. package/templates/skills/domains/frontend-design/reference/interaction-design.md +195 -0
  141. package/templates/skills/domains/frontend-design/reference/motion-design.md +99 -0
  142. package/templates/skills/domains/frontend-design/reference/responsive-design.md +114 -0
  143. package/templates/skills/domains/frontend-design/reference/spatial-design.md +100 -0
  144. package/templates/skills/domains/frontend-design/reference/typography.md +133 -0
  145. package/templates/skills/domains/frontend-design/reference/ux-writing.md +107 -0
  146. package/templates/skills/domains/frontend-design/state-management.md +680 -0
  147. package/templates/skills/domains/frontend-design/ui-aesthetics.md +110 -0
  148. package/templates/skills/domains/frontend-design/ux-principles.md +156 -0
  149. package/templates/skills/domains/infrastructure/SKILL.md +201 -0
  150. package/templates/skills/domains/mobile/SKILL.md +225 -0
  151. package/templates/skills/domains/orchestration/SKILL.md +30 -0
  152. package/templates/skills/domains/orchestration/multi-agent.md +263 -0
  153. package/templates/skills/domains/security/SKILL.md +73 -0
  154. package/templates/skills/domains/security/blue-team.md +436 -0
  155. package/templates/skills/domains/security/code-audit.md +265 -0
  156. package/templates/skills/domains/security/pentest.md +226 -0
  157. package/templates/skills/domains/security/red-team.md +374 -0
  158. package/templates/skills/domains/security/threat-intel.md +372 -0
  159. package/templates/skills/domains/security/vuln-research.md +369 -0
  160. package/templates/skills/impeccable/adapt/SKILL.md +201 -0
  161. package/templates/skills/impeccable/animate/SKILL.md +176 -0
  162. package/templates/skills/impeccable/arrange/SKILL.md +126 -0
  163. package/templates/skills/impeccable/audit/SKILL.md +149 -0
  164. package/templates/skills/impeccable/bolder/SKILL.md +118 -0
  165. package/templates/skills/impeccable/clarify/SKILL.md +185 -0
  166. package/templates/skills/impeccable/colorize/SKILL.md +144 -0
  167. package/templates/skills/impeccable/critique/SKILL.md +203 -0
  168. package/templates/skills/impeccable/critique/reference/cognitive-load.md +106 -0
  169. package/templates/skills/impeccable/critique/reference/heuristics-scoring.md +234 -0
  170. package/templates/skills/impeccable/critique/reference/personas.md +178 -0
  171. package/templates/skills/impeccable/delight/SKILL.md +305 -0
  172. package/templates/skills/impeccable/distill/SKILL.md +123 -0
  173. package/templates/skills/impeccable/extract/SKILL.md +94 -0
  174. package/templates/skills/impeccable/harden/SKILL.md +357 -0
  175. package/templates/skills/impeccable/normalize/SKILL.md +72 -0
  176. package/templates/skills/impeccable/onboard/SKILL.md +248 -0
  177. package/templates/skills/impeccable/optimize/SKILL.md +268 -0
  178. package/templates/skills/impeccable/overdrive/SKILL.md +143 -0
  179. package/templates/skills/impeccable/polish/SKILL.md +205 -0
  180. package/templates/skills/impeccable/quieter/SKILL.md +104 -0
  181. package/templates/skills/impeccable/teach-impeccable/SKILL.md +72 -0
  182. package/templates/skills/impeccable/typeset/SKILL.md +117 -0
  183. package/templates/skills/orchestration/multi-agent/SKILL.md +533 -0
  184. package/templates/skills/run_skill.js +129 -0
  185. package/templates/skills/scrapling/SKILL.md +98 -0
  186. package/templates/skills/scrapling/references/api-quick-ref.md +127 -0
  187. package/templates/skills/scrapling/references/cookie-vault.md +56 -0
  188. package/templates/skills/scrapling/references/maintenance.md +79 -0
  189. package/templates/skills/scrapling/references/site-patterns.md +86 -0
  190. package/templates/skills/scrapling/references/troubleshooting.md +95 -0
  191. package/templates/skills/scrapling/templates/basic_fetch.py +19 -0
  192. package/templates/skills/scrapling/templates/parse_only.py +15 -0
  193. package/templates/skills/scrapling/templates/session_login.py +19 -0
  194. package/templates/skills/scrapling/templates/stealth_cloudflare.py +28 -0
  195. package/templates/skills/tools/extract-learnings/SKILL.md +77 -0
  196. package/templates/skills/tools/forensics/SKILL.md +89 -0
  197. package/templates/skills/tools/gen-docs/SKILL.md +116 -0
  198. package/templates/skills/tools/gen-docs/scripts/doc_generator.js +435 -0
  199. package/templates/skills/tools/health/SKILL.md +121 -0
  200. package/templates/skills/tools/lib/shared.js +98 -0
  201. package/templates/skills/tools/map-codebase/SKILL.md +118 -0
  202. package/templates/skills/tools/override-refusal/SKILL.md +53 -0
  203. package/templates/skills/tools/override-refusal/agents/openai.yaml +4 -0
  204. package/templates/skills/tools/override-refusal/scripts/refusal_rewriter.js +226 -0
  205. package/templates/skills/tools/verify-change/SKILL.md +143 -0
  206. package/templates/skills/tools/verify-change/scripts/change_analyzer.js +289 -0
  207. package/templates/skills/tools/verify-module/SKILL.md +130 -0
  208. package/templates/skills/tools/verify-module/scripts/module_scanner.js +171 -0
  209. package/templates/skills/tools/verify-quality/SKILL.md +163 -0
  210. package/templates/skills/tools/verify-quality/scripts/quality_checker.js +337 -0
  211. package/templates/skills/tools/verify-security/SKILL.md +146 -0
  212. package/templates/skills/tools/verify-security/scripts/security_scanner.js +283 -0
@@ -0,0 +1,373 @@
1
+ ---
2
+ description: '多模型协作规划 - 上下文检索 + 双模型分析 → 生成 Step-by-step 实施计划'
3
+ argument-hint: "<规划任务> [--role=architect|critic|implementer|tester|writer]"
4
+ ---
5
+
6
+ # Plan - 多模型协作规划
7
+
8
+ $ARGUMENTS
9
+
10
+ ---
11
+
12
+ ## Role-based routing(v4.1 specialist matrix)
13
+
14
+ 可选参数 `--role=<name>` 在 v4.0 的 backend/frontend layer 路由之上叠加 **role 维度**,自动选择更精准的 prompt 文件。**未传 `--role` 时按现状路由({{BACKEND_PRIMARY}}/{{FRONTEND_PRIMARY}}),完全保留 v4.0 行为兼容**——无破坏性变更。
15
+
16
+ **Role × Layer 路由矩阵**:
17
+
18
+ | Role × Layer | architect | critic | implementer | tester | writer |
19
+ | ------------- | -------------- | ------------------- | ----------- | ------------- | --------------- |
20
+ | **backend** | codex (architect.md) | codex (reviewer.md, adversarial) | codex (architect.md) | codex (tester.md) | claude(主线) |
21
+ | **frontend** | gemini (architect.md) | gemini (reviewer.md, adversarial) | gemini (architect.md) | gemini (tester.md) | gemini (analyzer.md) |
22
+ | **fullstack** | codex+gemini (architect.md) | both debate (reviewer.md, adversarial) | runner 决(per-file) | runner 决(per-file) | claude(主线) |
23
+
24
+ **判定流程**:
25
+
26
+ 1. **解析 layer**:根据 $ARGUMENTS 涉及文件类型推断 `backend` / `frontend` / `fullstack`(与 v4.0 现有逻辑一致)。
27
+ 2. **解析 role**:从 $ARGUMENTS 提取 `--role=<name>`(5 个合法值:`architect` / `critic` / `implementer` / `tester` / `writer`),不存在或非法值 → fallback v4.0 模型路由。
28
+ 3. **选 prompt 文件**:按矩阵查 `(role, layer)` 单元格 → ROLE_FILE 路径。
29
+ 4. **adversarial 标记**:role=critic 时,prompt 段额外注入 "deliberately hunt for flaws / contradict majority view" 指令,触发敌对审查模式。
30
+ 5. **runner 决**:fullstack × {implementer, tester} 时,per-file 选 codex 或 gemini(同 v4.0 phase-runner Type 路由逻辑)。
31
+
32
+ **示例**:
33
+
34
+ - `/ccg:plan 设计 OAuth2 流程 --role=architect` → 后端,调用 `~/.claude/.ccg/prompts/codex/architect.md`
35
+ - `/ccg:plan 检查 H5 适配方案 --role=critic` → 前端,调用 `~/.claude/.ccg/prompts/gemini/reviewer.md` + adversarial 框架
36
+ - `/ccg:plan 全栈支付改造 --role=critic` → fullstack debate,并行 codex+gemini 两边都跑 reviewer.md + adversarial
37
+ - `/ccg:plan 生成发版说明 --role=writer` → 主线 Claude 直接处理,不 spawn 外部模型
38
+
39
+ **单一真相源**:完整矩阵以 `src/utils/specialist-router.ts` 为准,单测 `src/utils/__tests__/specialistMatrix.test.ts` 锁定行为。
40
+
41
+ ---
42
+
43
+ ## 核心协议
44
+
45
+ - **语言协议**:与工具/模型交互用**英语**,与用户交互用**中文**
46
+ - **强制并行**:后端/前端模型调用必须使用 `run_in_background: true`(包含单模型调用,避免阻塞主线程)
47
+ - **代码主权**:外部模型对文件系统**零写入权限**,所有修改由 Claude 执行
48
+ - **止损机制**:当前阶段输出通过验证前,不进入下一阶段
49
+ - **仅规划**:本命令允许读取上下文与写入 `.claude/plan/*` 计划文件,但**禁止修改产品代码**
50
+
51
+ ---
52
+
53
+ ## 调用通道路由(v4.1 Phase 20,CCG codeagent 退役)
54
+
55
+ CCG v4.1 把 6 核心命令的"双模型并行"通道从 `Bash(codeagent-wrapper)` **默认切换**为 plugin spawn。判定流程:
56
+
57
+ 1. **优先 plugin spawn 路径**(默认):用户已装 `codex@openai-codex` 和 `gemini@google-gemini` plugin → 用 `Agent(subagent_type="codex:codex-rescue")` + `Agent(subagent_type="gemini:gemini-rescue")` 并行 spawn,主线只接 plugin 自家 ≤200 token 摘要协议(`STATUS: ... / FINDINGS: ... / NOTES: ...`)。
58
+ 2. **降级 codeagent-wrapper 路径**(v4.0 BC fallback):plugin 未装 → fallback 到 `Bash(~/.claude/bin/codeagent-wrapper --backend ... resume ... <<'EOF' ... EOF)`,与 v4.0 行为完全一致。
59
+
60
+ **判断方法**:preflight 用 `Bash` 跑 `ls ~/.claude/plugins/ 2>/dev/null | grep -E '^codex@'` 与 `... | grep -E '^gemini@'` 各一次。匹配到对应行 → plugin 已装。两个 plugin 独立判定,可分别 mix-and-match(仅 codex plugin 装了 → backend 走 plugin、frontend 走 codeagent)。
61
+
62
+ **单一真相源**:plugin 检测逻辑 helper 见 `src/utils/plugin-detection.ts`(导出 `detectPlugin` / `detectPluginAvailability` / `bothPluginsInstalled`)。命令模板把判定结果渲染到执行计划,`Agent(...)` 调用与 `Bash(...)` 调用的具体语法见下面"多模型调用规范"段。
63
+
64
+ **为什么默认 plugin**:v4.0.1 nested-spawn 测试证明 plugin advisor 摘要协议(≤200 token)压制了 codeagent stdout 全文回灌主线的痛点,主线 context 增量从 +5%/调用 降到 +1.5%/调用。详见 `.ccg-research/07-multimodel-collaboration-rethink.md`。
65
+
66
+ ⚠️ **重要**:本命令本身不在 subagent context 内(主线命令),**可以**调 `Agent(...)` 工具——这跟 `phase-runner` 等 subagent 的"引擎层禁止嵌套 spawn Agent"约束不冲突。
67
+
68
+ ---
69
+
70
+ ## 多模型调用规范
71
+
72
+ **工作目录**:
73
+ - `{{WORKDIR}}`:**必须通过 Bash 执行 `pwd`(Unix)或 `cd`(Windows CMD)获取当前工作目录的绝对路径**,禁止从 `$HOME` 或环境变量推断
74
+ - 如果用户通过 `/add-dir` 添加了多个工作区,先用 Glob/Grep 确定任务相关的工作区
75
+ - 如果无法确定,用 `AskUserQuestion` 询问用户选择目标工作区
76
+
77
+ **调用语法**(v4.1 Phase 20 双通道):
78
+
79
+ **通道 A — plugin spawn(默认)**:
80
+
81
+ ```
82
+ Agent({
83
+ subagent_type: "<codex:codex-rescue|gemini:gemini-rescue>",
84
+ description: "Plan analysis: <backend|frontend>",
85
+ prompt: `ROLE_FILE: <角色提示词路径>
86
+
87
+ <TASK>
88
+ 需求:<增强后的需求>
89
+ 上下文:<检索到的项目上下文>
90
+ </TASK>
91
+
92
+ OUTPUT: Step-by-step implementation plan with pseudo-code. DO NOT modify any files.
93
+ Return ≤200 token structured summary (plugin-native protocol).
94
+ `
95
+ })
96
+ ```
97
+
98
+ 并行**两个 Agent 在同一 message 内同时 spawn**,主线接 plugin 摘要后无需 `TaskOutput` 轮询。
99
+
100
+ **通道 B — codeagent-wrapper fallback**(plugin 未装时降级,并行用 `run_in_background: true`):
101
+
102
+ ```
103
+ Bash({
104
+ command: "~/.claude/bin/codeagent-wrapper {{LITE_MODE_FLAG}}--progress --backend <{{BACKEND_PRIMARY}}|{{FRONTEND_PRIMARY}}> {{GEMINI_MODEL_FLAG}}- \"{{WORKDIR}}\" <<'EOF'
105
+ ROLE_FILE: <角色提示词路径>
106
+ <TASK>
107
+ 需求:<增强后的需求>
108
+ 上下文:<检索到的项目上下文>
109
+ </TASK>
110
+ OUTPUT: Step-by-step implementation plan with pseudo-code. DO NOT modify any files.
111
+ EOF",
112
+ run_in_background: true,
113
+ timeout: 3600000,
114
+ description: "简短描述"
115
+ })
116
+ ```
117
+
118
+ > ⚠️ 通道 B 走 `codeagent-wrapper`(Node 脚本 `templates/scripts/invoke-model.mjs`),v4.1 已标 **deprecated**,将在 v5.0 移除。建议用户安装 codex/gemini plugin 享受 v4.1 主线 context 优化。
119
+
120
+ **角色提示词**:
121
+
122
+ | 阶段 | 后端 | 前端 |
123
+ |------|-------|--------|
124
+ | 分析 | `~/.claude/.ccg/prompts/{{BACKEND_PRIMARY}}/analyzer.md` | `~/.claude/.ccg/prompts/{{FRONTEND_PRIMARY}}/analyzer.md` |
125
+ | 规划 | `~/.claude/.ccg/prompts/{{BACKEND_PRIMARY}}/architect.md` | `~/.claude/.ccg/prompts/{{FRONTEND_PRIMARY}}/architect.md` |
126
+
127
+ **会话复用**:每次调用返回 `SESSION_ID: xxx`(通常由 wrapper 输出),**必须保存**以供后续 `/ccg:execute` 使用。
128
+
129
+ **事件驱动等待(v4.5.2 起)**:spawn 后主线说明 task-id 然后 **turn end**,引擎自动 `<task-notification>` 触发新 turn 处理结果。**不调 TaskOutput**。
130
+
131
+ ⛔ **禁止**:调 `TaskOutput({block: true, timeout: 600000})` 旧 freeze poll 模式 / Kill task。
132
+
133
+ ⚠️ **失败处理**:notification status=failed / exit ≠ 0 / parse 失败 → v1.7.87 标准 2-retry / 5s / 3-attempts;3 次全失败才降级单模型。
134
+
135
+ ---
136
+
137
+ ## 执行工作流
138
+
139
+ **规划任务**:$ARGUMENTS
140
+
141
+ ### 🔍 Phase 1:上下文全量检索
142
+
143
+ `[模式:研究]`
144
+
145
+ #### 1.1 Prompt 增强(必须首先执行)
146
+
147
+ **Prompt 增强**(按 `/ccg:enhance` 的逻辑执行):分析 $ARGUMENTS 的意图、缺失信息、隐含假设,补全为结构化需求(明确目标、技术约束、范围边界、验收标准),**用增强结果替代原始 $ARGUMENTS** 用于后续所有阶段。
148
+
149
+ #### 1.2 上下文检索
150
+
151
+ **调用 `{{MCP_SEARCH_TOOL}}` 工具**:
152
+
153
+ ```
154
+ {{MCP_SEARCH_TOOL}}({
155
+ query: "<基于增强后需求构建的语义查询>",
156
+ project_root_path: "{{WORKDIR}}"
157
+ })
158
+ ```
159
+
160
+ - 使用自然语言构建语义查询(Where/What/How)
161
+ - **禁止基于假设回答**
162
+ - 若 MCP 不可用:回退到 Glob + Grep 进行文件发现与关键符号定位
163
+
164
+ #### 1.3 完整性检查
165
+
166
+ - 必须获取相关类、函数、变量的**完整定义与签名**
167
+ - 若上下文不足,触发**递归检索**
168
+ - 优先输出:入口文件 + 行号 + 关键符号名;必要时补充最小代码片段(仅用于消除歧义)
169
+
170
+ #### 1.4 需求对齐
171
+
172
+ - 若需求仍有模糊空间,**必须**向用户输出引导性问题列表
173
+ - 直至需求边界清晰(无遗漏、无冗余)
174
+
175
+ ### 💡 Phase 2:多模型协作分析
176
+
177
+ `[模式:分析]`
178
+
179
+ #### 2.1 分发输入
180
+
181
+ **并行调用** {{BACKEND_PRIMARY}} 和 {{FRONTEND_PRIMARY}}(`run_in_background: true`):
182
+
183
+ 将**原始需求**(不带预设观点)分发给两个模型:
184
+
185
+ 1. **{{BACKEND_PRIMARY}} 后端分析**:
186
+ - ROLE_FILE: `~/.claude/.ccg/prompts/{{BACKEND_PRIMARY}}/analyzer.md`
187
+ - 关注:技术可行性、架构影响、性能考量、潜在风险
188
+ - OUTPUT: 多角度解决方案 + 优劣势分析
189
+
190
+ 2. **{{FRONTEND_PRIMARY}} 前端分析**:
191
+ - ROLE_FILE: `~/.claude/.ccg/prompts/{{FRONTEND_PRIMARY}}/analyzer.md`
192
+ - 关注:UI/UX 影响、用户体验、视觉设计
193
+ - OUTPUT: 多角度解决方案 + 优劣势分析
194
+
195
+ 事件驱动等待 (v4.5.2):spawn 完两个 Bash bg 后主线 turn end,等 task-notification 自动唤醒。**📌 保存 SESSION_ID**(`CODEX_SESSION` 和 `GEMINI_SESSION`)。
196
+
197
+ #### 2.2 交叉验证
198
+
199
+ 整合各方思路,进行迭代优化:
200
+
201
+ 1. **识别一致观点**(强信号)
202
+ 2. **识别分歧点**(需权衡)
203
+ 3. **互补优势**:后端逻辑以 {{BACKEND_PRIMARY}} 为准,前端设计以 {{FRONTEND_PRIMARY}} 为准
204
+ 4. **逻辑推演**:消除方案中的逻辑漏洞
205
+
206
+ #### 2.3(可选但推荐)双模型产出“计划草案”
207
+
208
+ 为降低 Claude 合成计划的遗漏风险,可并行让两个模型输出“计划草案”(仍然**不允许**修改文件):
209
+
210
+ 1. **{{BACKEND_PRIMARY}} 计划草案**(后端权威):
211
+ - ROLE_FILE: `~/.claude/.ccg/prompts/{{BACKEND_PRIMARY}}/architect.md`
212
+ - OUTPUT: Step-by-step plan + pseudo-code(重点:数据流/边界条件/错误处理/测试策略)
213
+
214
+ 2. **{{FRONTEND_PRIMARY}} 计划草案**(前端权威):
215
+ - ROLE_FILE: `~/.claude/.ccg/prompts/{{FRONTEND_PRIMARY}}/architect.md`
216
+ - OUTPUT: Step-by-step plan + pseudo-code(重点:信息架构/交互/可访问性/视觉一致性)
217
+
218
+ 用 `TaskOutput` 等待两个模型的完整结果,并记录其建议的关键差异点。
219
+
220
+ #### 2.4 生成实施计划(Claude 最终版)
221
+
222
+ 综合双方分析,生成 **Step-by-step 实施计划**:
223
+
224
+ ```markdown
225
+ ## 📋 实施计划:<任务名称>
226
+
227
+ ### 任务类型
228
+ - [ ] 前端 (→ {{FRONTEND_PRIMARY}})
229
+ - [ ] 后端 (→ {{BACKEND_PRIMARY}})
230
+ - [ ] 全栈 (→ 并行)
231
+
232
+ ### 技术方案
233
+ <综合双模型分析的最优方案>
234
+
235
+ ### 实施步骤
236
+ 1. <步骤 1> - 预期产物
237
+ 2. <步骤 2> - 预期产物
238
+ ...
239
+
240
+ ### 关键文件
241
+ | 文件 | 操作 | 说明 |
242
+ |------|------|------|
243
+ | path/to/file.ts:L10-L50 | 修改 | 描述 |
244
+
245
+ ### 风险与缓解
246
+ | 风险 | 缓解措施 |
247
+ |------|----------|
248
+
249
+ ### SESSION_ID(供 /ccg:execute 使用)
250
+ - CODEX_SESSION: <session_id>
251
+ - GEMINI_SESSION: <session_id>
252
+ ```
253
+
254
+ ### 🛡 Phase 2.5:自动 plan-checker 校验(5 维度 + max-3-loop,CCG v4.0 Phase 6)
255
+
256
+ 写出 `.claude/plan/<功能名>.md` 后、向用户交付前,**必须**自动 spawn `plan-checker` agent 做 5 维度强校验:
257
+
258
+ ```
259
+ Agent({
260
+ subagent_type: "plan-checker",
261
+ description: "Validate plan (Dim 1/2/5/7b/10)",
262
+ prompt: "请对 .claude/plan/<功能名>.md 做 5 维度强校验:\n- Dim 1: Requirement Coverage(roadmap requirement 是否在 plan frontmatter 声明)\n- Dim 2: Task Completeness(每 task 含 Files/Action/Verify/Done)\n- Dim 5: Scope Sanity(≤3 tasks)\n- Dim 7b: Scope Reduction(关键词扫描 + 原始需求交叉)\n- Dim 10: CLAUDE.md Compliance(不违反项目 CLAUDE.md 禁用模式)\n输出 Plan Checker Report 并给出 ✅ 放行 / ❌ 退回 verdict。"
263
+ })
264
+ ```
265
+
266
+ **max-3-loop 收敛环**:
267
+
268
+ ```
269
+ loop_count = 0
270
+ while loop_count < 3:
271
+ result = spawn plan-checker
272
+ if not result.hasBlocker:
273
+ break # ✅ 放行,进入交付
274
+ # 退回——回 Phase 2.4 修订计划(仅针对 BLOCKER 的反馈,不要顺手改其他段)
275
+ 重新生成 .claude/plan/<功能名>.md
276
+ loop_count += 1
277
+
278
+ if loop_count == 3 and result.hasBlocker:
279
+ AskUserQuestion:
280
+ prompt: "plan-checker 3 轮仍存在 BLOCKER,请选择:"
281
+ options: ["force: 忽略 BLOCKER 强制交付(高风险)", "guide: 提供具体指导让规划再试一次", "abort: 放弃当前规划"]
282
+ ```
283
+
284
+ 只有 plan-checker ✅ 放行(或用户选 force)后才进入计划交付。
285
+
286
+ ### ⛔ Phase 3 结束:计划交付(非执行)
287
+
288
+ **`/ccg:plan` 的职责到此结束,必须执行以下动作**:
289
+
290
+ 1. 向用户展示完整实施计划(含伪代码)+ plan-checker 报告摘要(BLOCKER/WARNING 数量 + verdict)
291
+ 2. 将计划保存至 `.claude/plan/<功能名>.md`(功能名从需求中提取,如 `user-auth`、`payment-module` 等)
292
+ 3. **写 phase-scoped CONTEXT.md**(v4.0 Phase 2 状态机):把本次 plan 的冻结决策固化到 `.context/<phase>/CONTEXT.md`,下游 `/ccg:execute` 与 `/ccg:team-exec` 仅读此文件的 YAML frontmatter 即可获得全部决策(< 200 tokens / phase)。**目录约定**:`<phase>` 取计划文件主名(如 `user-auth`),用 `sanitizePhase()` 规范化非法字符。
293
+
294
+ **CONTEXT.md 必含 frontmatter 字段(机器可读契约)**:
295
+ ```yaml
296
+ ---
297
+ phase: user-auth
298
+ plan: .claude/plan/user-auth.md
299
+ goal: <一句话目标>
300
+ decisions: [<决策1>, <决策2>, ...]
301
+ constraints: [<约束1>, <约束2>, ...]
302
+ files: [<关键文件1>, <关键文件2>, ...]
303
+ created_at: <ISO8601 时间>
304
+ ---
305
+ ```
306
+
307
+ 写入由主线 `Bash` 调用完成(节点脚本 / 直接 Write 工具均可),路径 = `<WORKDIR>/.context/<phase>/CONTEXT.md`,目录不存在自动创建。**写完立即进入下一步,不阻塞**。
308
+
309
+ 4. 以**加粗文本**输出提示(必须使用实际保存的文件路径):
310
+
311
+ ---
312
+ **📋 计划已生成并保存至 `.claude/plan/实际功能名.md`**
313
+
314
+ **请审查上述计划,您可以:**
315
+ - 🔧 **修改计划**:告诉我需要调整的部分,我会更新计划
316
+ - ▶️ **执行计划**:复制以下命令到新会话执行
317
+
318
+ ```
319
+ /ccg:execute .claude/plan/实际功能名.md
320
+ ```
321
+ ---
322
+
323
+ **⚠️ 注意**:上面的 `实际功能名.md` 必须替换为你实际保存的文件名!
324
+
325
+ 5. **立即终止当前回复**(Stop here. No more tool calls.)
326
+
327
+ **⚠️ 绝对禁止**:
328
+ - ❌ 问用户 "Y/N" 然后自动执行(执行是 `/ccg:execute` 的职责)
329
+ - ❌ 对产品代码进行任何写操作
330
+ - ❌ 自动调用 `/ccg:execute` 或任何实施动作
331
+ - ❌ 在用户未明确要求修改时继续触发模型调用
332
+
333
+ ---
334
+
335
+ ## 计划保存
336
+
337
+ 规划完成后,将计划保存至:
338
+
339
+ - **首次规划**:`.claude/plan/<功能名>.md`
340
+ - **迭代版本**:`.claude/plan/<功能名>-v2.md`、`.claude/plan/<功能名>-v3.md`...
341
+
342
+ 计划文件写入应在向用户展示计划前完成。
343
+
344
+ ---
345
+
346
+ ## 计划修改流程
347
+
348
+ 如果用户要求修改计划:
349
+
350
+ 1. 根据用户反馈调整计划内容
351
+ 2. 更新 `.claude/plan/<功能名>.md` 文件
352
+ 3. 重新展示修改后的计划
353
+ 4. 再次提示用户审查或执行
354
+
355
+ ---
356
+
357
+ ## 后续步骤
358
+
359
+ 用户审查满意后,**手动**执行:
360
+
361
+ ```bash
362
+ /ccg:execute .claude/plan/<功能名>.md
363
+ ```
364
+
365
+ ---
366
+
367
+ ## 关键规则
368
+
369
+ 1. **仅规划不实施** – 本命令不执行任何代码变更
370
+ 2. **不问 Y/N** – 只展示计划,让用户决定下一步
371
+ 3. **信任规则** – 后端以 {{BACKEND_PRIMARY}} 为准,前端以 {{FRONTEND_PRIMARY}} 为准
372
+ 4. 外部模型对文件系统**零写入权限**
373
+ 5. **SESSION_ID 交接** – 计划末尾必须包含 `CODEX_SESSION` / `GEMINI_SESSION`(供 `/ccg:execute resume <SESSION_ID>` 使用)
@@ -0,0 +1,106 @@
1
+ ---
2
+ description: '取后台任务最终结果:读取 .context/jobs/<id>/result.md,输出 ≤ 200 token 摘要(v4.0 异步三件套)'
3
+ argument-hint: "<job-id>"
4
+ allowed-tools:
5
+ - Read
6
+ - Bash
7
+ ---
8
+
9
+ # Result - 取后台任务最终结果
10
+
11
+ `/ccg:status` 看到 job 进入 `done` / `failed` / `canceled` 后,用本命令把 `.context/jobs/<id>/result.md` 内容拉回主线。
12
+
13
+ result.md 的写入是后台子任务(codex:codex-rescue / phase-runner)退出前的最后动作,约定 ≤ 200 token,包含:
14
+
15
+ ```
16
+ STATUS: completed | partial | failed | canceled
17
+ COMMIT: <sha7> | none
18
+ TESTS: <pass>/<total> passed (delta +<n> from <baseline>)
19
+ TYPECHECK: pass | fail
20
+ HANDOFF_TAKEN: [git_commit, test_run, ...]
21
+ CONTEXT_DELTA: <一句话>
22
+ NOTES: <一行>
23
+ ```
24
+
25
+ ## 使用方法
26
+
27
+ ```bash
28
+ /ccg:result <job-id> # 取该 job 的最终摘要
29
+ ```
30
+
31
+ ## 工作流程
32
+
33
+ ### Step 1:校验 job 状态
34
+
35
+ 1. Read `.context/jobs/<job-id>/state.json`
36
+ 2. 不存在 → 输出 "Job not found: <id>,run /ccg:status to list all jobs",退出
37
+ 3. `status` ∈ `{queued, running}` → 输出:
38
+
39
+ ```
40
+ ⏳ Job <id> still <status>
41
+ Run /ccg:status <id> --wait --timeout-ms 60000 to wait, or /ccg:cancel <id> to abort.
42
+ ```
43
+
44
+ 并退出(不强制等待)
45
+
46
+ 4. `status` ∈ `{done, failed, canceled}` → 进入 Step 2
47
+
48
+ ### Step 2:读取 result.md
49
+
50
+ 1. Read `.context/jobs/<job-id>/result.md`
51
+ 2. 不存在但 status 已是终态 → 输出:
52
+
53
+ ```
54
+ ⚠ Job <id> reached <status> but result.md is missing.
55
+ Possible cause: child task crashed before writing result. Inspect .context/jobs/<id>/state.json for last summary.
56
+ Last state summary: <state.summary>
57
+ ```
58
+
59
+ 3. 存在 → 进入 Step 3
60
+
61
+ ### Step 3:输出摘要 + 元信息
62
+
63
+ 1. 优先**直接打印** result.md 原文(已是 ≤ 200 token,无需 Claude 重新摘要)
64
+ 2. 末尾追加来自 state.json 的元信息:
65
+
66
+ ```
67
+ ──── Job metadata ────
68
+ Job-ID : <id>
69
+ Kind : <kind>
70
+ Phase : <phase_id or '-'>
71
+ Started : <started_at>
72
+ Ended : <last_update> (status=<status>)
73
+ Duration : <last_update - started_at> 计算后人类可读
74
+ ```
75
+
76
+ 3. 若 status=failed/canceled,附加建议:
77
+ - failed → "建议:/ccg:status <id> 查看 state.summary,或重跑产生该 job 的命令"
78
+ - canceled → "已用户主动取消,若需重启请重新触发原命令"
79
+
80
+ ## 严格约束
81
+
82
+ - ✅ **只读**——绝不修改任何文件
83
+ - ✅ 不调用 LLM 二次摘要——result.md 已经压到 200 token,再压会丢失信号
84
+ - ✅ 缺 result.md 时给出 actionable 提示(last_summary / 重跑建议)
85
+ - ❌ 不在 status=running 时阻塞等待——这是 `/ccg:status --wait` 的职责
86
+ - ❌ 不修改 state.json(即使 result.md 缺失)
87
+
88
+ ## 与其他命令的协作
89
+
90
+ ```
91
+ /ccg:autonomous → spawn phase-runner job
92
+
93
+ writes .context/jobs/<id>/state.json (running)
94
+ ↓ (any time)
95
+ user: /ccg:status ← 看进度
96
+ user: /ccg:status <id> --wait ← 阻塞等终态
97
+ ↓ (eventually)
98
+ child writes result.md + state.json (done)
99
+
100
+ user: /ccg:result <id> ← 取 200 token 摘要
101
+ ```
102
+
103
+ ## 实现锚点
104
+
105
+ - `src/utils/jobs.ts` 的 `getJob / readJobResult` 是后端真相源
106
+ - result.md 的 200 token 约定与 phase-runner 主线返回摘要约定一致(见 `templates/commands/agents/phase-runner.md` Phase G)