@hunyed15/codecgc 0.2.2 → 0.2.5

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 (43) hide show
  1. package/README.md +32 -10
  2. package/bin/cgc-build.js +1 -1
  3. package/bin/cgc-doctor.js +1 -1
  4. package/bin/cgc-entry.js +1 -1
  5. package/bin/cgc-explain.js +4 -0
  6. package/bin/cgc-external-audit.js +1 -1
  7. package/bin/cgc-external-status.js +1 -1
  8. package/bin/cgc-fix.js +1 -1
  9. package/bin/cgc-history.js +1 -1
  10. package/bin/cgc-init.js +1 -1
  11. package/bin/cgc-lifecycle.js +1 -1
  12. package/bin/cgc-package-audit.js +1 -1
  13. package/bin/cgc-plan.js +1 -1
  14. package/bin/cgc-release-readiness.js +1 -1
  15. package/bin/cgc-review.js +1 -1
  16. package/bin/cgc-route.js +1 -1
  17. package/bin/cgc-start.js +1 -1
  18. package/bin/cgc-status.js +1 -1
  19. package/bin/cgc-test.js +1 -1
  20. package/bin/codecgc.js +45 -2
  21. package/codecgc/cgc-onboard/SKILL.md +1 -1
  22. package/codecgc/reference/execution-model.md +1 -1
  23. package/codecgc/reference/policy-routing.md +1 -2
  24. package/codecgc/reference/project-structure.md +3 -3
  25. package/codecgc/reference/quickstart.md +1 -1
  26. package/codecgc/reference/shared-conventions.md +1 -1
  27. package/codecgc/templates/project/CLAUDE.md +214 -0
  28. package/codecgc/templates/project/claude/hooks/edit-guard.js +194 -0
  29. package/codecgc/templates/project/claude/settings.local.json +17 -4
  30. package/mcp/codexmcp/src/codexmcp/server.py +38 -4
  31. package/mcp/geminimcp/src/geminimcp/server.py +1 -1
  32. package/package.json +3 -2
  33. package/scripts/audit_codecgc_package_runtime.py +1 -1
  34. package/scripts/codecgc_error_catalog.py +172 -0
  35. package/scripts/codecgc_error_formatter.py +124 -0
  36. package/scripts/codecgc_flow_control.py +11 -0
  37. package/scripts/codecgc_runtime/console.py +9 -0
  38. package/scripts/codecgc_runtime/workflow_runtime.py +18 -0
  39. package/scripts/explain_codecgc_error.py +71 -0
  40. package/scripts/install_codecgc.py +92 -39
  41. package/scripts/postinstall_codecgc.js +23 -5
  42. package/.claude/hooks/route-edit.ps1 +0 -87
  43. package/codecgc/templates/project/claude/hooks/route-edit.ps1 +0 -87
package/README.md CHANGED
@@ -25,25 +25,26 @@ CLI 仍然保留,用于本地调试、CI 检查和 MCP 不可用时的回退
25
25
 
26
26
  ## 安装
27
27
 
28
- 全局安装 CLI:
28
+ ### 推荐:全局安装(用户级)
29
29
 
30
30
  ```bash
31
31
  npm install -g @hunyed15/codecgc --registry=https://registry.npmjs.org/
32
32
  ```
33
33
 
34
- 全局安装只提供 `cgc*` 命令,不会默认写入用户级 Claude 配置。
34
+ 全局安装后,`cgc-init`、`cgc-status`、`cgc-doctor` 等命令在任何目录都可用。
35
35
 
36
- 然后在每个目标项目根目录执行项目级安装:
36
+ ### 项目初始化
37
+
38
+ 在项目目录下运行:
37
39
 
38
40
  ```bash
39
41
  cd your-project
40
42
  cgc-init
41
- cgc-start
42
- cgc-status
43
- cgc-doctor
44
43
  ```
45
44
 
46
- Claude 中可以使用对应 slash command:
45
+ 这会初始化项目配置并注册 `/cgc` skill Claude Code。
46
+
47
+ 在 Claude 中也可以使用:
47
48
 
48
49
  ```text
49
50
  /cgc-init
@@ -52,7 +53,28 @@ cgc-doctor
52
53
  /cgc-doctor
53
54
  ```
54
55
 
55
- `/cgc-init` 和 `cgc-init` 默认都是项目级安装。它们会把集成文件写入当前项目,不会写入 `~/.claude` 等全局目录。
56
+ 初始化完成后,可以直接使用:
57
+
58
+ ```text
59
+ /cgc "新增一个登录页面"
60
+ ```
61
+
62
+ 或在命令行:
63
+
64
+ ```bash
65
+ cgc "新增一个登录页面"
66
+ ```
67
+
68
+ ### 备选:项目级安装
69
+
70
+ 如果需要版本隔离(CI、Docker 等场景):
71
+
72
+ ```bash
73
+ npm install @hunyed15/codecgc
74
+ npx cgc-init
75
+ ```
76
+
77
+ **注意**:项目级安装需要通过 `npx` 调用命令。推荐使用全局安装以获得更好的用户体验。
56
78
 
57
79
  ## 安装后生成的项目文件
58
80
 
@@ -64,7 +86,7 @@ model-routing.yaml
64
86
  .claude/
65
87
  settings.local.json
66
88
  hooks/
67
- route-edit.ps1
89
+ edit-guard.js
68
90
  commands/
69
91
  cgc*.md
70
92
  .codex/
@@ -88,7 +110,7 @@ codecgc/
88
110
 
89
111
  在 CodeCGC 源码仓库中,`.mcp.json`、`.claude/settings.local.json`、`.claude/commands/`、`.codex/`、`.gemini/`、`codecgc/START_HERE.md` 以及实时 workflow 输出目录会被忽略,因为它们是机器相关或项目安装生成的内容。
90
112
 
91
- 源码仓库会保留可发布运行时、参考文档、命令模板、测试 fixtures,以及 `.claude/hooks/route-edit.ps1` 这个 hook 模板。
113
+ 源码仓库会保留可发布运行时、参考文档、命令模板、测试 fixtures,以及 `.claude/hooks/edit-guard.js` 这个 hook 模板。
92
114
 
93
115
  ## 角色与路由策略
94
116
 
package/bin/cgc-build.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-build";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
package/bin/cgc-doctor.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-doctor";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
package/bin/cgc-entry.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-entry";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ process.env.CODECGC_BIN_NAME = "cgc-explain";
4
+ require("./codecgc.js");
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-external-audit";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-external-status";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
package/bin/cgc-fix.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-fix";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-history";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
package/bin/cgc-init.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-init";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-lifecycle";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-package-audit";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
package/bin/cgc-plan.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-plan";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-release-readiness";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
package/bin/cgc-review.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-review";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
package/bin/cgc-route.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-route";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
package/bin/cgc-start.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-start";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
package/bin/cgc-status.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-status";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
package/bin/cgc-test.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  process.env.CODECGC_BIN_NAME = "cgc-test";
4
- require("./codecgc.js");
4
+ require("./codecgc.js");
package/bin/codecgc.js CHANGED
@@ -8,7 +8,7 @@ const path = require("node:path");
8
8
  const repoRoot = path.resolve(__dirname, "..");
9
9
  const invocationCwd = process.cwd();
10
10
  const args = process.argv.slice(2);
11
- const invokedBinary = (process.env.CODECGC_BIN_NAME || path.basename(process.argv[1] || "cgc")).toLowerCase();
11
+ const invokedBinary = (process.env.CODECGC_BIN_NAME || path.parse(process.argv[1] || "cgc").name).toLowerCase();
12
12
  const packageJson = JSON.parse(readFileSync(path.join(repoRoot, "package.json"), "utf8"));
13
13
  const productVersion = packageJson.version || "0.0.0";
14
14
  const DIRECT_COMMANDS = new Set([
@@ -16,6 +16,7 @@ const DIRECT_COMMANDS = new Set([
16
16
  "install",
17
17
  "status",
18
18
  "doctor",
19
+ "explain",
19
20
  "package-audit",
20
21
  "external-audit",
21
22
  "external-status",
@@ -45,6 +46,7 @@ const helpText = `CodeCGC 命令入口
45
46
  cgc-init [--mode local|status|doctor|start] [--workspace <dir>]
46
47
  cgc-status [--format json|summary]
47
48
  cgc-doctor [--format json|summary]
49
+ cgc-explain <error_code> | --list [--format json|summary]
48
50
  cgc-package-audit [--format json|summary]
49
51
  cgc-external-audit [--format json|summary] [--workspace <dir>]
50
52
  cgc-external-status [--format json|summary] [--workspace <dir>]
@@ -88,6 +90,8 @@ const helpText = `CodeCGC 命令入口
88
90
  cgc-status
89
91
  我想知道运行前置和执行器能不能真正启动
90
92
  cgc-doctor
93
+ 我想查看某个错误代码的详细说明和修复建议
94
+ cgc-explain executor-crash
91
95
  我想确认发布包没有漏掉运行时文件
92
96
  cgc-package-audit
93
97
  我想确认第三方能力接入策略和本地 MCP 注册状态
@@ -110,6 +114,7 @@ const helpText = `CodeCGC 命令入口
110
114
  cgc-init 同步项目级集成面
111
115
  cgc-status 检查集成是否就绪,并给出下一步
112
116
  cgc-doctor 检查运行前置、执行器导入与项目集成状态
117
+ cgc-explain 查看错误代码的详细说明和修复建议
113
118
  cgc-package-audit 检查发布包是否覆盖运行时依赖
114
119
  cgc-external-audit 检查外部能力白名单、接入声明与本地 MCP 观测一致性
115
120
  cgc-external-status 查看外部能力状态面板与本地 MCP 观测结果
@@ -151,6 +156,8 @@ const helpText = `CodeCGC 命令入口
151
156
  cgc-status
152
157
  cgc-status --format summary
153
158
  cgc-doctor --format summary
159
+ cgc-explain executor-crash
160
+ cgc-explain --list
154
161
  cgc-package-audit --format summary
155
162
  cgc-external-status --format summary
156
163
  cgc-external-audit --format summary
@@ -163,6 +170,7 @@ const helpText = `CodeCGC 命令入口
163
170
  环境变量:
164
171
  CODECGC_PYTHON_COMMAND 覆盖产品壳与生成的 MCP 配置所使用的 Python 命令
165
172
  CODECGC_WORKSPACE_ROOT 当当前 shell 目录不是目标项目根目录时,显式覆盖目标工作区
173
+ CODECGC_ERROR_LEVEL 错误输出详细级别:summary(默认,小白可读)、detail(技术细节)、debug(完整日志)
166
174
  `;
167
175
 
168
176
  const startHelpText = `CodeCGC Start
@@ -201,7 +209,7 @@ const installHelpText = `CodeCGC 安装与自检
201
209
 
202
210
  模式:
203
211
  local
204
- 把项目级 .mcp.json、.claude/settings.json 与 route-edit.ps1 hook 同步到目标工作区。
212
+ 把项目级 .mcp.json、.claude/settings.json 与 edit-guard.js hook 同步到目标工作区。
205
213
  status
206
214
  检查项目级集成是否就绪。
207
215
  doctor
@@ -270,6 +278,41 @@ const statusHelpText = `CodeCGC 安装状态
270
278
  同步或修复当前项目集成面。
271
279
  cgc-doctor
272
280
  检查运行前置、执行器导入和项目集成状态。
281
+ cgc-explain
282
+ 查看错误代码的详细说明和修复建议。
283
+ `;
284
+
285
+ const explainHelpText = `CodeCGC Explain
286
+
287
+ 用法:
288
+ cgc-explain <error_code>
289
+ cgc-explain --list [--format <summary|json>]
290
+
291
+ 用途:
292
+ 查看 CodeCGC 错误代码的详细说明、常见原因和修复建议。
293
+
294
+ 默认行为:
295
+ 传入错误代码时,输出该错误的中文说明和建议操作。
296
+ 使用 --list 时,列出所有可用的错误代码。
297
+
298
+ 主要参数:
299
+ <error_code>
300
+ 要查询的错误代码,例如 executor-crash、scope-error、design-gap。
301
+ --list
302
+ 列出所有可用的错误代码。
303
+ --format <summary|json>
304
+ summary 用于人类可读输出,json 用于程序消费。
305
+
306
+ 推荐用法:
307
+ cgc-explain executor-crash
308
+ cgc-explain scope-error
309
+ cgc-explain --list
310
+
311
+ 相关命令:
312
+ cgc-doctor
313
+ 检查运行前置和执行器环境。
314
+ cgc-route
315
+ 查看当前工作流状态和推荐命令。
273
316
  `;
274
317
 
275
318
  const doctorHelpText = `CodeCGC Doctor
@@ -28,7 +28,7 @@ Also inspect:
28
28
 
29
29
  - `.mcp.json`
30
30
  - `.claude/settings.json`
31
- - `.claude/hooks/route-edit.ps1`
31
+ - `.claude/hooks/edit-guard.js`
32
32
  - `model-routing.yaml`
33
33
 
34
34
  ## Rules
@@ -47,7 +47,7 @@ CodeCGC 把“工作流控制”和“代码执行”明确分层。
47
47
  - `.claude/settings.local.json`
48
48
  - `.codex/codecgcrc.json`
49
49
  - `.gemini/policies/codecgc-policy.toml`
50
- - `.claude/hooks/route-edit.ps1`
50
+ - `.claude/hooks/edit-guard.js`
51
51
 
52
52
  这些文件一起负责“不能越界”。
53
53
 
@@ -43,8 +43,7 @@ This creates project-local `.mcp.json`, `.claude/`, `model-routing.yaml`, and th
43
43
 
44
44
  `scripts/codecgc_policy.py` evaluates the policy for every entry point that needs write ownership:
45
45
 
46
- - Claude hook guardrail via `.claude/hooks/route-edit.ps1` for `Edit`, `Write`, and `MultiEdit`
47
- - Claude shell guardrail via the same hook for `Bash` and `PowerShell`
46
+ - Claude hook guardrail via `.claude/hooks/edit-guard.js` for `Edit`, `Write`, and `MultiEdit`
48
47
  - task payload construction via `scripts/build_codecgc_task.py`
49
48
  - build/fix/test wrappers before executor dispatch
50
49
  - status and doctor checks through `model-routing.yaml` validation
@@ -16,7 +16,7 @@ mcp/
16
16
  geminimcp/
17
17
  codecgc/reference/
18
18
  codecgc/cgc*/
19
- .claude/hooks/route-edit.ps1
19
+ .claude/hooks/edit-guard.js
20
20
  model-routing.yaml
21
21
  ```
22
22
 
@@ -43,7 +43,7 @@ codecgc/architecture/
43
43
  codecgc/docs/
44
44
  ```
45
45
 
46
- Keep `.claude/hooks/route-edit.ps1` in source control because it is the packaged hook template copied into target projects.
46
+ Keep `.claude/hooks/edit-guard.js` in source control because it is the packaged hook template copied into target projects.
47
47
 
48
48
  Keep `codecgc/fixtures/`, `codecgc/reference/`, `codecgc/roadmap/`, and `codecgc/compound/` when they are used as packaged examples, release-maintenance assets, or regression fixtures.
49
49
 
@@ -57,7 +57,7 @@ model-routing.yaml
57
57
  .claude/
58
58
  settings.local.json
59
59
  hooks/
60
- route-edit.ps1
60
+ edit-guard.js
61
61
  commands/
62
62
  cgc*.md
63
63
  .codex/
@@ -32,7 +32,7 @@ The project install syncs:
32
32
  .mcp.json
33
33
  model-routing.yaml
34
34
  .claude/settings.local.json
35
- .claude/hooks/route-edit.ps1
35
+ .claude/hooks/edit-guard.js
36
36
  .claude/commands/cgc*.md
37
37
  .codex/codecgcrc.json
38
38
  .gemini/policies/codecgc-policy.toml
@@ -38,7 +38,7 @@
38
38
  这套规则通过两层落地:
39
39
 
40
40
  1. 工作流层:`cgc-build` 与 `cgc-fix`
41
- 2. guardrail 层:`.claude/hooks/route-edit.ps1`
41
+ 2. guardrail 层:`.claude/hooks/edit-guard.js`
42
42
 
43
43
  ## 4. 当前公开命令面
44
44
 
@@ -0,0 +1,214 @@
1
+ <!-- codecgc:claude-md:v1 -->
2
+ # CodeCGC Claude 默认提示词
3
+
4
+ ## 核心身份
5
+
6
+ 你是 CodeCGC 工作流中的 Claude 主控层。你的职责是把用户需求组织成可追踪、可审核、可恢复的工作流,而不是默认直接修改所有代码。
7
+
8
+ 默认分工:
9
+
10
+ - Claude:需求澄清、规划、设计、文档、审核、验收、状态解释、失败恢复。
11
+ - Codex:后端代码、后端测试、后端修复。
12
+ - Gemini:前端代码、前端测试、前端修复。
13
+ - CodeCGC:路由策略、执行审计、review 回写、工作流状态闭环。
14
+
15
+ ## 语言与输出
16
+
17
+ - 默认用中文回复用户。
18
+ - 回复先给结论,再给下一步。
19
+ - 命令、路径、文件名、工具名使用反引号。
20
+ - 不输出冗长背景;只保留完成任务需要的信息。
21
+ - 涉及日期、版本、路径和命令时使用精确值。
22
+
23
+ ## 首选入口
24
+
25
+ 普通需求优先使用 CodeCGC 单入口:
26
+
27
+ ```text
28
+ /cgc <自然语言需求>
29
+ ```
30
+
31
+ MCP 可用时优先调用 CodeCGC MCP 工具:
32
+
33
+ - `codecgc.entry`
34
+ - `codecgc.continue`
35
+ - `codecgc.explain`
36
+ - `codecgc.plan`
37
+ - `codecgc.build`
38
+ - `codecgc.fix`
39
+ - `codecgc.test`
40
+ - `codecgc.review`
41
+ - `codecgc.route`
42
+ - `codecgc.history`
43
+
44
+ CLI 只作为 MCP 不可用、本地调试或 CI 回退:
45
+
46
+ ```bash
47
+ cgc "<自然语言需求>"
48
+ cgc-plan ...
49
+ cgc-build ...
50
+ cgc-fix ...
51
+ cgc-test ...
52
+ cgc-review ...
53
+ cgc-route ...
54
+ ```
55
+
56
+ ## 安装方式
57
+
58
+ **推荐:全局安装 + 项目初始化**
59
+
60
+ ```bash
61
+ npm install -g @hunyed15/codecgc
62
+ cd your-project
63
+ cgc-init
64
+ ```
65
+
66
+ 全局安装后,`cgc-init`、`cgc-status`、`cgc-doctor` 等命令在任何目录都可用。
67
+
68
+ **项目初始化命令**:
69
+
70
+ 在 Claude 中:
71
+
72
+ ```text
73
+ /cgc-init
74
+ /cgc-start
75
+ /cgc-status
76
+ /cgc-doctor
77
+ ```
78
+
79
+ 在命令行:
80
+
81
+ ```bash
82
+ cgc-init
83
+ cgc-start
84
+ cgc-status
85
+ cgc-doctor
86
+ ```
87
+
88
+ **备选:项目级安装**
89
+
90
+ 适用于 CI、Docker 或需要版本隔离的场景:
91
+
92
+ ```bash
93
+ npm install @hunyed15/codecgc
94
+ npx cgc-init
95
+ ```
96
+
97
+ **规则**:
98
+
99
+ - `cgc-init` 和 `/cgc-init` 默认写入当前项目,不写入 `~/.claude`。
100
+ - 全局安装提供最佳用户体验,初始化命令全局可用。
101
+ - 项目级安装需要通过 `npx` 调用命令。
102
+ - Windows PowerShell 如拦截 `.ps1` shim,使用 `cgc-init.cmd`、`cgc-status.cmd`、`cgc-doctor.cmd`。
103
+
104
+ ## 写入边界
105
+
106
+ `model-routing.yaml` 是路径归属的唯一策略来源。
107
+
108
+ Claude 可以直接处理:
109
+
110
+ - `codecgc/**`
111
+ - `.claude/**`
112
+ - `.mcp.json`
113
+ - `model-routing.yaml`
114
+ - `README.md`
115
+ - `docs/**`
116
+ - `CHANGELOG.md`
117
+
118
+ Claude 不应直接修改产品源码:
119
+
120
+ - 后端源码和后端测试应交给 Codex。
121
+ - 前端源码和前端测试应交给 Gemini。
122
+ - shared 路径必须先拆分再执行。
123
+ - unknown 路径必须先澄清或更新路由策略。
124
+
125
+ 如果 hook 拦截写入,不要绕过。应解释路径归属,并通过 `/cgc` 或 CodeCGC MCP 重新路由。
126
+
127
+ ## 标准闭环
128
+
129
+ 默认流程:
130
+
131
+ ```text
132
+ 需求 -> 规划 -> 路由 -> Codex/Gemini 执行 -> audit -> Claude 审核 -> 继续或关闭
133
+ ```
134
+
135
+ 稳定状态:
136
+
137
+ - `needs-planning`:先由 Claude 补充或修复规划。
138
+ - `awaiting-build`:feature 步骤可执行。
139
+ - `awaiting-fix`:issue 修复步骤可执行。
140
+ - `awaiting-review`:已有 audit,等待审核。
141
+ - `closed`:当前 workflow 已结束。
142
+
143
+ ## 审核规则
144
+
145
+ `/cgc-review` 是控制点,不是简单写“通过”。
146
+
147
+ 接受前必须确认:
148
+
149
+ - audit 是真实执行,不是 dry-run。
150
+ - executor 归属正确。
151
+ - 变更路径符合 `model-routing.yaml`。
152
+ - 执行结果成功且有证据。
153
+ - 验收标准已满足。
154
+
155
+ 必须驳回或保持 `changes-requested`:
156
+
157
+ - 只有 dry-run。
158
+ - 执行器失败、超时或输出无效。
159
+ - 路径越界。
160
+ - 前后端执行器归属错误。
161
+ - mixed/shared/unknown 路径未拆分。
162
+ - 证据不足或本地事实与执行器自报不一致。
163
+
164
+ ## 失败恢复
165
+
166
+ - executor failure:检查 audit 和执行器输出,不要假装完成。
167
+ - review changes-requested:保持同一 workflow,继续执行推荐的 build/fix/test。
168
+ - mixed ownership:回到 plan,拆成 backend/frontend/docs/orchestration 子步骤。
169
+ - test step:使用 `cgc-test`,不要用 build/fix 代替。
170
+ - session continue:只在同一 task id 和 artifact class 内复用 session id。
171
+
172
+ ## 文档放置
173
+
174
+ 普通项目文档:
175
+
176
+ ```text
177
+ docs/
178
+ README.md
179
+ CHANGELOG.md
180
+ ```
181
+
182
+ CodeCGC 工作流和治理产物:
183
+
184
+ ```text
185
+ codecgc/features/
186
+ codecgc/issues/
187
+ codecgc/execution/
188
+ codecgc/requirements/
189
+ codecgc/architecture/
190
+ codecgc/roadmap/
191
+ codecgc/compound/
192
+ codecgc/docs/
193
+ codecgc/reference/
194
+ ```
195
+
196
+ 长期文档和 audit 使用项目相对路径,不固化某台机器的安装目录或 npx 临时缓存路径。
197
+
198
+ ## 硬规则
199
+
200
+ - 不要为了速度绕过 CodeCGC 直接改产品代码。
201
+ - 用户要求实现功能或修复代码时,优先进入 `/cgc` 工作流。
202
+ - 用户要求修改文档、规划、验收或审核说明时,Claude 可直接处理。
203
+ - dry-run 不是完成证据。
204
+ - 没有 audit 不要宣称执行器任务完成。
205
+ - 不要把 Codex/Gemini 当只读分析模型;它们在 CodeCGC 中是代码执行器。
206
+
207
+ ## 记忆口诀
208
+
209
+ ```text
210
+ Claude 负责想清楚、写清楚、审清楚。
211
+ Codex 负责后端代码。
212
+ Gemini 负责前端代码。
213
+ CodeCGC 负责路由、证据、状态和闭环。
214
+ ```