@hunyed15/codecgc 0.1.7 → 0.1.9

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 (71) hide show
  1. package/.claude/hooks/route-edit.ps1 +58 -57
  2. package/INSTALLATION.md +122 -484
  3. package/README.md +124 -149
  4. package/bin/cgc-external-status.js +4 -0
  5. package/bin/cgc-start.js +4 -0
  6. package/bin/codecgc.js +141 -20
  7. package/codecgc/compound/codecgc-capability-matrix.md +37 -0
  8. package/codecgc/reference/README.md +69 -0
  9. package/codecgc/reference/execution-model.md +3 -1
  10. package/codecgc/reference/maintainer-guide.md +93 -0
  11. package/codecgc/reference/mcp-tool-surface.md +112 -0
  12. package/codecgc/reference/onboarding.md +69 -0
  13. package/codecgc/reference/operation-guide.md +29 -23
  14. package/codecgc/reference/path-contract.md +53 -0
  15. package/codecgc/reference/policy-routing.md +58 -0
  16. package/codecgc/reference/project-structure.md +87 -0
  17. package/codecgc/reference/quickstart.md +110 -0
  18. package/codecgc/reference/real-workflow-loop.md +123 -0
  19. package/codecgc/reference/recovery-loop.md +109 -0
  20. package/codecgc/reference/release-maintenance-playbook.md +4 -1
  21. package/codecgc/reference/troubleshooting.md +114 -0
  22. package/codecgc/roadmap/codecgc-release-maintenance/delivery-plan.md +49 -0
  23. package/codecgc/roadmap/codecgc-release-maintenance/overview.md +41 -0
  24. package/codecgc/roadmap/codecgc-release-maintenance/phases.md +84 -0
  25. package/codecgc/templates/claude/settings.local.json +27 -0
  26. package/codecgc/templates/codex/codecgcrc.json +22 -0
  27. package/codecgc/templates/gemini/codecgc-policy.toml +47 -0
  28. package/codecgcmcp/README.md +57 -11
  29. package/codecgcmcp/src/codecgcmcp/server.py +164 -26
  30. package/codexmcp/src/codexmcp/server.py +45 -0
  31. package/geminimcp/src/geminimcp/server.py +106 -24
  32. package/model-routing.yaml +31 -6
  33. package/package.json +12 -4
  34. package/scripts/audit_codecgc_external_capabilities.py +83 -4
  35. package/scripts/audit_codecgc_historical_audits.py +42 -2
  36. package/scripts/audit_codecgc_package_runtime.py +76 -4
  37. package/scripts/audit_codecgc_release_readiness.py +55 -3
  38. package/scripts/audit_codecgc_workflow_history.py +8 -5
  39. package/scripts/build_codecgc_task.py +69 -45
  40. package/scripts/codecgc_artifact_roots.py +8 -40
  41. package/scripts/codecgc_console_io.py +3 -45
  42. package/scripts/codecgc_executor_registry.py +4 -54
  43. package/scripts/codecgc_path_contract.py +7 -0
  44. package/scripts/codecgc_policy.py +447 -0
  45. package/scripts/codecgc_routing_paths.py +3 -16
  46. package/scripts/codecgc_routing_template.py +11 -135
  47. package/scripts/codecgc_runtime/__init__.py +1 -0
  48. package/scripts/codecgc_runtime/artifacts.py +42 -0
  49. package/scripts/codecgc_runtime/console.py +45 -0
  50. package/scripts/codecgc_runtime/executor_registry.py +55 -0
  51. package/scripts/codecgc_runtime/mcp_config.py +72 -0
  52. package/scripts/codecgc_runtime/path_contract.py +123 -0
  53. package/scripts/codecgc_runtime/paths.py +22 -0
  54. package/scripts/codecgc_runtime/routing_paths.py +16 -0
  55. package/scripts/codecgc_runtime/routing_template.py +171 -0
  56. package/scripts/codecgc_runtime/workflow_runtime.py +72 -0
  57. package/scripts/codecgc_runtime_paths.py +3 -22
  58. package/scripts/codecgc_step_control.py +3 -2
  59. package/scripts/codecgc_workflow_runtime.py +3 -71
  60. package/scripts/entry_codecgc_workflow.py +4 -0
  61. package/scripts/install_codecgc.py +560 -32
  62. package/scripts/normalize_codecgc_audits.py +5 -3
  63. package/scripts/postinstall_codecgc.js +6 -56
  64. package/scripts/review_codecgc_workflow.py +6 -3
  65. package/scripts/route_codecgc_workflow.py +67 -36
  66. package/scripts/run_codecgc_build.py +28 -0
  67. package/scripts/run_codecgc_fix.py +28 -0
  68. package/scripts/run_codecgc_task.py +5 -2
  69. package/scripts/run_codecgc_test.py +28 -0
  70. package/scripts/sync_codecgc_mcp_config.py +4 -54
  71. package/scripts/write_codecgc_review.py +7 -3
package/README.md CHANGED
@@ -1,204 +1,179 @@
1
- # CodeCGC Release v0.1.2
1
+ # CodeCGC
2
2
 
3
- ## 📦 发布内容
3
+ CodeCGC 是一个以 Claude 为主控入口的多模型开发编排层,用于把需求、规划、执行、审查和验收拆成可控的协作流程。
4
4
 
5
- 本目录包含 CodeCGC 项目的完整发布版本,已修复所有 P0/P1 优先级 bug,并完成核心优化。
5
+ 它的核心分工是:Claude 负责需求、规划、设计、文档、审查、验收和工作流状态;Codex 负责后端实现和后端测试;Gemini 负责前端实现和前端测试。CodeCGC 通过项目级路由策略和 Claude 写入拦截 hook 来约束这些边界。
6
6
 
7
- ## 📋 版本信息
7
+ ## 工作模型
8
8
 
9
- - **版本号**: 0.1.2
10
- - **发布日期**: 2026-05-04
11
- - **Python 要求**: >= 3.10
12
- - **Node.js 要求**: >= 20.0.0
9
+ 推荐主路径:
13
10
 
14
- ## 🎯 本版本修复内容
15
-
16
- ### P0 - 正确性修复 ✅
17
- 1. **路由逻辑错误** - `first_pending_step_is_not_executable` 硬编码检查 step 1
18
- 2. **路径提取误匹配** - `extract_target_paths_from_request` 误匹配日期/版本号
19
-
20
- ### P1 - 可用性改进 ✅
21
- 3. **步骤状态自动更新** - Review 后自动更新 checklist 步骤状态
22
- 4. **Per-step timeout** - 支持在 checklist 中为每个步骤指定超时时间
23
-
24
- ### P2 - 效率优化 ✅
25
- 5. **YAML 解析器替换** - 用 PyYAML 替换手写解析器,删除 ~180 行代码
26
- 6. **测试覆盖** - 添加 30+ 单元测试,覆盖核心逻辑
11
+ ```text
12
+ Claude /cgc -> CodeCGC MCP -> CodeCGC runtime -> Codex 或 Gemini 执行器
13
+ ```
27
14
 
28
- ## 📚 文档
15
+ CLI 仍然保留,用于本地调试、CI 检查和 MCP 不可用时的回退执行。普通用户优先使用 Claude 内的 `/cgc`,或在命令行使用 `cgc`,不需要记住所有内部子命令。
29
16
 
30
- - **[QUICKSTART.md](QUICKSTART.md)** - 5 分钟快速上手指南
31
- - **[INSTALLATION.md](INSTALLATION.md)** - 完整安装与配置文档
32
- - **[codecgc/architecture/code-audit-2026-05-04.md](codecgc/architecture/code-audit-2026-05-04.md)** - 代码审计报告
17
+ 安全边界:Claude 可以维护需求、规划、文档、审查和工作流状态;产品代码实现必须经由 CodeCGC 路由到 Codex 或 Gemini。项目 hook 会拦截 `Edit`、`Write`、`MultiEdit`、`Bash` 和 `PowerShell`,防止 Claude 用直接编辑或 shell 写入绕过路由。
33
18
 
34
- ## 🚀 快速开始
19
+ ## 安装
35
20
 
36
- ### 1. 安装
21
+ 全局安装 CLI:
37
22
 
38
23
  ```bash
39
- # 从 npm 安装 CodeCGC
40
24
  npm install -g @hunyed15/codecgc --registry=https://registry.npmjs.org/
41
-
42
- # 安装 Python 依赖
43
- pip install pyyaml
44
-
45
- # 如自动集成未生效,可手动补执行
46
- cgc-install --mode user
47
25
  ```
48
26
 
49
- 全局安装完成后,CodeCGC 会尝试自动写入 Claude 用户级集成到 `~/.claude`,包括:
50
-
51
- - `~/.claude/mcp.json`
52
- - `~/.claude/hooks/route-edit.ps1`
53
- - `~/.claude/commands/cgc*.md` 自定义 slash commands
54
-
55
- 当前安装链路还会注册 3 个 MCP server:
56
-
57
- - `codecgc`:CodeCGC 编排器 MCP
58
- - `codex`:后端执行器 MCP
59
- - `gemini`:前端执行器 MCP
27
+ 全局安装只提供 `cgc*` 命令,不会默认写入用户级 Claude 配置。
60
28
 
61
- 安装完成后,可以在 Claude 中直接使用:
62
-
63
- - `/cgc`
64
- - `/cgc-install`
65
- - `/cgc-status`
66
- - `/cgc-doctor`
67
- - `/cgc-plan`
68
- - `/cgc-build`
69
- - `/cgc-fix`
70
- - `/cgc-test`
71
- - `/cgc-review`
72
- - `/cgc-route`
73
- - `/cgc-history`
74
- - `/cgc-package-audit`
75
- - `/cgc-external-audit`
76
- - `/cgc-release-readiness`
77
- - `/cgc-lifecycle`
78
-
79
- 当前这些 Claude commands 已调整为:
80
-
81
- - 优先走 `codecgc` MCP orchestrator
82
- - 只有在 MCP tool 路径不可用时,才回退到本地 CLI
83
-
84
- 如果安装时 Python 尚未就绪,自动集成会跳过,此时可在安装 Python 后手动执行 `cgc-install --mode user`。
85
-
86
- ### 2. 初始化项目
29
+ 然后在每个目标项目根目录执行项目级安装:
87
30
 
88
31
  ```bash
89
32
  cd your-project
90
33
  cgc-install
34
+ cgc-start
35
+ cgc-status
91
36
  cgc-doctor
92
37
  ```
93
38
 
94
- ### 3. 开始使用
39
+ Claude 中可以使用对应 slash command:
95
40
 
96
- ```bash
97
- cgc "新增用户登录功能"
41
+ ```text
42
+ /cgc-install
43
+ /cgc-start
44
+ /cgc-status
45
+ /cgc-doctor
98
46
  ```
99
47
 
100
- 详细步骤请参考 [QUICKSTART.md](QUICKSTART.md)
101
-
102
- ## 📤 发布到 npm
48
+ `/cgc-install` 和 `cgc-install` 默认都是项目级安装。它们会把集成文件写入当前项目,而不是写入 `~/.claude`。只有用户显式请求 user 模式时,才会处理用户级 Claude 集成。
49
+
50
+ ## 安装后生成的项目文件
51
+
52
+ `cgc-install` 会在目标项目中创建或同步:
53
+
54
+ ```text
55
+ .mcp.json
56
+ model-routing.yaml
57
+ .claude/
58
+ settings.local.json
59
+ hooks/
60
+ route-edit.ps1
61
+ commands/
62
+ cgc*.md
63
+ .codex/
64
+ codecgcrc.json
65
+ .gemini/
66
+ policies/
67
+ codecgc-policy.toml
68
+ codecgc/
69
+ START_HERE.md
70
+ features/
71
+ issues/
72
+ execution/
73
+ requirements/
74
+ architecture/
75
+ roadmap/
76
+ compound/
77
+ docs/
78
+ reference/
79
+ fixtures/
80
+ ```
103
81
 
104
- ### 手动发布
82
+ CodeCGC 源码仓库中,`.mcp.json`、`.claude/settings.local.json`、`.claude/commands/`、`.codex/`、`.gemini/`、`codecgc/START_HERE.md` 以及实时 workflow 输出目录会被忽略,因为它们是机器相关或项目安装生成的内容。
105
83
 
106
- ```bash
107
- npm login --registry=https://registry.npmjs.org/
108
- npm publish --access public --registry=https://registry.npmjs.org/
109
- ```
84
+ 源码仓库会保留可发布运行时、参考文档、命令模板、测试 fixtures,以及 `.claude/hooks/route-edit.ps1` 这个 hook 模板。
110
85
 
111
- ### GitHub 自动发布
86
+ ## 角色与路由策略
112
87
 
113
- 本目录已包含 GitHub Actions 工作流:
88
+ `model-routing.yaml` 是文件归属和写入权限的唯一策略来源:
114
89
 
115
- `/.github/workflows/publish-npm.yml`
90
+ - Claude 可以写 orchestration 和 docs 路径。
91
+ - Codex 可以写 backend 源码和 backend 测试。
92
+ - Gemini 可以写 frontend 源码和 frontend 测试。
93
+ - shared 路径使用 `split-first` 策略,必须先拆分再执行。
94
+ - unknown 路径默认拒绝,直到它被明确加入 `model-routing.yaml`。
116
95
 
117
- 触发方式:
96
+ Claude hook 本身不承载业务逻辑。它只把 `Edit`、`Write`、`MultiEdit` 请求转发给 `scripts/codecgc_policy.py`,从而保证 hook 检查、任务构建和执行器派发使用同一套路由策略。
118
97
 
119
- ```bash
120
- git tag v0.1.0
121
- git push origin v0.1.0
122
- ```
98
+ ## 文档放置规则
123
99
 
124
- 自动发布前提:
100
+ 普通项目文档放在 `docs/`,例如用户手册、API 文档、部署说明和 changelog。
125
101
 
126
- - GitHub 仓库已启用 Actions
127
- - 仓库 Secrets 中已设置 `NPM_TOKEN`
128
- - tag 版本必须与 `package.json` 中的 `version` 完全一致
102
+ CodeCGC 工作流和治理产物放在 `codecgc/`:
129
103
 
130
- 建议流程:
104
+ - `codecgc/docs/`:CodeCGC 生成的指南类文档。
105
+ - `codecgc/reference/`:稳定契约、参考说明和工具文档。
106
+ - `codecgc/requirements/`:长期需求沉淀。
107
+ - `codecgc/architecture/`:架构说明和系统图谱。
108
+ - `codecgc/roadmap/`:路线图和阶段计划。
109
+ - `codecgc/features/`:功能计划、checklist 和验收记录。
110
+ - `codecgc/issues/`:问题报告、分析和修复计划。
111
+ - `codecgc/execution/`:执行器审计记录。
131
112
 
132
- ```bash
133
- # 1. 更新 package.json version
134
- # 2. 提交到 GitHub
135
- # 3. 打版本 tag
136
- git tag v0.1.0
137
- git push origin main --tags
138
- ```
113
+ ## 日常使用
139
114
 
140
- ## 📁 目录结构
115
+ Claude 中:
141
116
 
117
+ ```text
118
+ /cgc 在 src/components/LoginForm.tsx 中新增登录页
142
119
  ```
143
- release/
144
- ├── README.md # 本文件
145
- ├── QUICKSTART.md # 快速开始指南
146
- ├── INSTALLATION.md # 完整安装文档
147
- ├── package.json # Node.js 包配置
148
- ├── requirements.txt # Python 核心依赖
149
- ├── requirements-dev.txt # Python 开发依赖
150
- ├── pytest.ini # 测试配置
151
- ├── model-routing.yaml # 路由规则模板
152
- ├── bin/ # 命令行工具
153
- ├── scripts/ # Python 工作流脚本
154
- ├── tests/ # 单元测试
155
- ├── codecgc/ # 工作流产物模板
156
- ├── codexmcp/ # Codex MCP 服务器
157
- └── geminimcp/ # Gemini MCP 服务器
158
- ```
159
-
160
- ## 🔧 依赖清单
161
120
 
162
- ### Python 依赖
121
+ 在命令行中:
163
122
 
164
- **核心依赖**:
165
- - pyyaml>=6.0
123
+ ```bash
124
+ cgc "在 src/components/LoginForm.tsx 中新增登录页"
125
+ ```
166
126
 
167
- **开发依赖**:
168
- - pytest>=8.0.0
169
- - pytest-cov>=4.1.0
127
+ CodeCGC 会判断下一步应该是规划、执行、审查、继续还是关闭。只有当你已经明确知道当前阶段时,才需要直接使用子命令:
170
128
 
171
- ### MCP 服务器
129
+ ```bash
130
+ cgc-plan ...
131
+ cgc-build ...
132
+ cgc-fix ...
133
+ cgc-test ...
134
+ cgc-review ...
135
+ cgc-route ...
136
+ ```
172
137
 
173
- 1. **Codex MCP** - 后端代码执行器
174
- 2. **Gemini MCP** - 前端代码执行器
138
+ ## 健康检查
175
139
 
176
- ## 验证安装
140
+ 对已经安装 CodeCGC 的目标项目:
177
141
 
178
142
  ```bash
143
+ cgc-status
179
144
  cgc-doctor
145
+ cgc-external-status
146
+ cgc-external-audit
180
147
  ```
181
148
 
182
- ## 📝 更新日志
183
-
184
- ### v0.1.0 (2026-05-04)
185
-
186
- **修复**:
187
- - 修复路由逻辑错误
188
- - 修复路径提取误匹配
189
- - Review 后自动更新步骤状态
190
-
191
- **新增**:
192
- - Per-step timeout 支持
193
- - 30+ 单元测试
149
+ 维护或发布 CodeCGC 包时:
194
150
 
195
- **优化**:
196
- - PyYAML 替换手写解析器
151
+ ```bash
152
+ python -m pytest tests --basetemp D:\tmp\codecgc-pytest
153
+ python -m compileall -q scripts codecgcmcp\src codexmcp\src geminimcp\src
154
+ python scripts\audit_codecgc_package_runtime.py --format json
155
+ python scripts\audit_codecgc_release_readiness.py --format json
156
+ npm pack --dry-run --json
157
+ ```
197
158
 
198
- ## 📄 许可证
159
+ `cgc-release-readiness` 会通过临时项目安装探针验证发布包可用性。源码仓库本身不需要提交项目级 `.mcp.json`、`.claude/settings.local.json`、`.codex/` 或 `.gemini/`。
199
160
 
200
- MIT License
161
+ 如果运行环境限制默认临时目录写入,可以显式指定探针目录:
201
162
 
202
- ---
163
+ ```bash
164
+ set CODECGC_RELEASE_PROBE_ROOT=D:\tmp
165
+ python scripts\audit_codecgc_release_readiness.py --format json
166
+ ```
203
167
 
204
- **感谢使用 CodeCGC!**
168
+ ## 参考文档
169
+
170
+ - [快速开始](codecgc/reference/quickstart.md)
171
+ - [新手入口](codecgc/reference/onboarding.md)
172
+ - [操作指南](codecgc/reference/operation-guide.md)
173
+ - [真实工作流闭环](codecgc/reference/real-workflow-loop.md)
174
+ - [失败恢复闭环](codecgc/reference/recovery-loop.md)
175
+ - [故障排查](codecgc/reference/troubleshooting.md)
176
+ - [路径契约](codecgc/reference/path-contract.md)
177
+ - [路由策略](codecgc/reference/policy-routing.md)
178
+ - [项目结构](codecgc/reference/project-structure.md)
179
+ - [维护者指南](codecgc/reference/maintainer-guide.md)
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ process.env.CODECGC_BIN_NAME = "cgc-external-status";
4
+ require("./codecgc.js");
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ process.env.CODECGC_BIN_NAME = "cgc-start";
4
+ require("./codecgc.js");
package/bin/codecgc.js CHANGED
@@ -12,11 +12,13 @@ const invokedBinary = (process.env.CODECGC_BIN_NAME || path.basename(process.arg
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([
15
+ "start",
15
16
  "install",
16
17
  "status",
17
18
  "doctor",
18
19
  "package-audit",
19
20
  "external-audit",
21
+ "external-status",
20
22
  "release-readiness",
21
23
  "lifecycle",
22
24
  "history",
@@ -39,11 +41,13 @@ const helpText = `CodeCGC 命令入口
39
41
  cgc --request <text>
40
42
  cgc --latest
41
43
  cgc --slug <workflow-slug>
42
- cgc-install [--mode local|user-dry-run|user|status|doctor] [--workspace <dir>] [--user-root <dir>]
44
+ cgc-start [--format json|summary] [--workspace <dir>]
45
+ cgc-install [--mode local|user-dry-run|user|status|doctor|start] [--workspace <dir>] [--user-root <dir>]
43
46
  cgc-status [--format json|summary]
44
47
  cgc-doctor [--format json|summary]
45
48
  cgc-package-audit [--format json|summary]
46
49
  cgc-external-audit [--format json|summary] [--workspace <dir>]
50
+ cgc-external-status [--format json|summary] [--workspace <dir>]
47
51
  cgc-release-readiness [--format json|summary] [--workspace <dir>]
48
52
  cgc-lifecycle [--format json|summary]
49
53
  cgc-history [--flow all|feature|issue] [--status all|open|closed] [--last <n>] [--format json|summary]
@@ -78,6 +82,8 @@ const helpText = `CodeCGC 命令入口
78
82
  cgc-route ...
79
83
  我想把 CodeCGC 安装或重新同步到当前项目
80
84
  cgc-install
85
+ 我刚装完,想看当前项目下一步怎么开始
86
+ cgc-start
81
87
  我想知道集成面现在是否就绪
82
88
  cgc-status
83
89
  我想知道运行前置和执行器能不能真正启动
@@ -86,6 +92,8 @@ const helpText = `CodeCGC 命令入口
86
92
  cgc-package-audit
87
93
  我想确认第三方能力接入策略和本地 MCP 注册状态
88
94
  cgc-external-audit
95
+ 我想快速查看第三方能力状态面板
96
+ cgc-external-status
89
97
  我想在发布或长期维护前跑一次总检查
90
98
  cgc-release-readiness
91
99
  我想快速判断当前仓库处于哪个生命周期阶段
@@ -98,11 +106,13 @@ const helpText = `CodeCGC 命令入口
98
106
  cgc-plan / cgc-build / cgc-fix / cgc-review / cgc-route
99
107
 
100
108
  命令职责:
109
+ cgc-start 显示当前项目的首次使用入口和下一步动作
101
110
  cgc-install 同步项目级或用户级集成面
102
111
  cgc-status 检查集成是否就绪,并给出下一步
103
112
  cgc-doctor 检查运行前置、执行器导入与项目集成状态
104
113
  cgc-package-audit 检查发布包是否覆盖运行时依赖
105
- cgc-external-audit 检查外部能力白名单、接入状态与本地 MCP 观测结果
114
+ cgc-external-audit 检查外部能力白名单、接入声明与本地 MCP 观测一致性
115
+ cgc-external-status 查看外部能力状态面板与本地 MCP 观测结果
106
116
  cgc-release-readiness 汇总安装、运行时、发布包、外部接入与生命周期就绪状态
107
117
  cgc-lifecycle 汇总 roadmap、workflow 与 execution 的生命周期阶段
108
118
  cgc-history 只读汇总最近 feature / issue workflow 历史
@@ -117,9 +127,10 @@ const helpText = `CodeCGC 命令入口
117
127
 
118
128
  首次使用:
119
129
  1. 先在目标项目根目录执行 cgc-install
120
- 2. 再执行 cgc-status,必要时补 cgc-doctor
121
- 3. 然后直接使用 cgc "<自然语言需求>" 或 cgc-entry
122
- 4. 只有当你已经明确知道当前阶段时,再改用 cgc-plan / cgc-build / cgc-fix / cgc-test / cgc-review / cgc-route
130
+ 2. 执行 cgc-start 查看项目本地入口说明
131
+ 3. 再执行 cgc-status,必要时补 cgc-doctor
132
+ 4. 然后直接使用 cgc "<自然语言需求>" cgc-entry
133
+ 5. 只有当你已经明确知道当前阶段时,再改用 cgc-plan / cgc-build / cgc-fix / cgc-test / cgc-review / cgc-route
123
134
 
124
135
  示例:
125
136
  cgc "新增一个登录页面,放在 src/components/LoginForm.tsx"
@@ -129,6 +140,7 @@ const helpText = `CodeCGC 命令入口
129
140
  cgc --request "现在下一步该做什么"
130
141
  cgc --latest
131
142
  cgc --slug 2026-05-01-demo-login-ui
143
+ cgc-start
132
144
  cgc-plan --flow feature --slug demo-login-ui --summary "Demo login UI feature" --target-path src/components/LoginForm.tsx --kind frontend
133
145
  cgc-build --slug 2026-05-01-demo-login-ui --step-number 1 --dry-run
134
146
  cgc-fix --slug 2026-05-01-demo-sync-bug --step-number 1 --dry-run
@@ -140,6 +152,7 @@ const helpText = `CodeCGC 命令入口
140
152
  cgc-status --format summary
141
153
  cgc-doctor --format summary
142
154
  cgc-package-audit --format summary
155
+ cgc-external-status --format summary
143
156
  cgc-external-audit --format summary
144
157
  cgc-release-readiness --format summary
145
158
  cgc-lifecycle --format summary
@@ -153,10 +166,36 @@ const helpText = `CodeCGC 命令入口
153
166
  CODECGC_WORKSPACE_ROOT 当当前 shell 目录不是目标项目根目录时,显式覆盖目标工作区
154
167
  `;
155
168
 
169
+ const startHelpText = `CodeCGC Start
170
+
171
+ 用法:
172
+ cgc-start [--format <summary|json>] [--workspace <dir>]
173
+
174
+ 用途:
175
+ 显示当前项目的首次使用入口、项目本地 onboarding 文件,以及下一步动作。
176
+
177
+ 默认行为:
178
+ 不传 --format 时默认输出 summary,更适合安装后直接阅读。
179
+ 该命令只读,不会修改项目文件。
180
+
181
+ 主要参数:
182
+ --workspace <dir>
183
+ 显式指定目标项目根目录。默认使用当前 shell 所在目录。
184
+ --format <summary|json>
185
+ summary 用于新手入口摘要,json 用于调试或自动化消费。
186
+
187
+ 推荐用法:
188
+ cgc-install
189
+ cgc-start
190
+ cgc-status
191
+ cgc-doctor
192
+ cgc "新增一个登录页面,放在 src/components/LoginForm.tsx"
193
+ `;
194
+
156
195
  const installHelpText = `CodeCGC 安装与自检
157
196
 
158
197
  用法:
159
- cgc-install [--mode <local|user-dry-run|user|status|doctor>] [--workspace <dir>] [--user-root <dir>] [--format <json|summary>]
198
+ cgc-install [--mode <local|user-dry-run|user|status|doctor|start>] [--workspace <dir>] [--user-root <dir>] [--format <json|summary>]
160
199
 
161
200
  用途:
162
201
  准备、检查或修复 CodeCGC 在 Claude 与 MCP 启动链路上的集成面。
@@ -172,6 +211,8 @@ const installHelpText = `CodeCGC 安装与自检
172
211
  检查项目级集成是否就绪,并附带用户级集成预览状态。
173
212
  doctor
174
213
  检查运行前置、执行器可导入性,以及项目级集成是否就绪。
214
+ start
215
+ 只读显示项目首次使用入口和下一步动作。
175
216
 
176
217
  主要参数:
177
218
  --workspace <dir>
@@ -183,12 +224,16 @@ const installHelpText = `CodeCGC 安装与自检
183
224
 
184
225
  推荐用法:
185
226
  cgc-install
227
+ cgc-start
186
228
  cgc-install --workspace D:\\Projects\\MyApp
229
+ cgc-install --mode start --format summary
187
230
  cgc-install --mode status --format summary
188
231
  cgc-install --mode doctor --format summary
189
232
  cgc-install --mode user-dry-run --user-root C:\\Users\\Admin\\.claude
190
233
 
191
234
  相关命令:
235
+ cgc-start
236
+ 查看当前项目首次使用入口。
192
237
  cgc-status
193
238
  快速查看集成状态。
194
239
  cgc-doctor
@@ -227,6 +272,8 @@ const statusHelpText = `CodeCGC 安装状态
227
272
  cgc-status --format json
228
273
 
229
274
  相关命令:
275
+ cgc-start
276
+ 查看当前项目首次使用入口。
230
277
  cgc-install
231
278
  同步或修复当前项目集成面。
232
279
  cgc-doctor
@@ -318,6 +365,30 @@ const externalAuditHelpText = `CodeCGC 外部能力审计
318
365
  cgc-external-audit --format json
319
366
  `;
320
367
 
368
+ const externalStatusHelpText = `CodeCGC 外部能力状态面板
369
+
370
+ 用法:
371
+ cgc-external-status [--format <summary|json>] [--workspace <dir>]
372
+
373
+ 用途:
374
+ 快速查看外部能力登记状态、规划项与本地 MCP 观测结果。
375
+
376
+ 默认行为:
377
+ 不传 --format 时默认输出 summary,更适合日常维护检查。
378
+ 只有在需要查看完整结构化数据时才建议改用 --format json。
379
+
380
+ 主要参数:
381
+ --workspace <dir>
382
+ 显式指定目标项目根目录。默认使用当前 shell 所在目录。
383
+ --format <summary|json>
384
+ summary 用于快速查看面板,json 用于调试和自动化消费。
385
+
386
+ 推荐用法:
387
+ cgc-external-status
388
+ cgc-external-status --workspace D:\\Projects\\MyApp
389
+ cgc-external-status --format json
390
+ `;
391
+
321
392
  const releaseReadinessHelpText = `CodeCGC Release Readiness
322
393
 
323
394
  用法:
@@ -594,22 +665,22 @@ const routeHelpText = `CodeCGC Workflow Route
594
665
 
595
666
  function findPython() {
596
667
  const override = (process.env.CODECGC_PYTHON_COMMAND || "").trim();
597
- if (override) {
598
- const probe = spawnSync(override, ["--version"], {
599
- cwd: repoRoot,
600
- encoding: "utf8",
601
- shell: false,
602
- });
603
- if (probe.status === 0) {
604
- return override;
668
+ const generatedMcpCommand = readGeneratedMcpPythonCommand();
669
+ for (const configured of [override, generatedMcpCommand]) {
670
+ if (configured) {
671
+ return configured;
605
672
  }
606
673
  }
607
-
608
- const candidates = process.platform === "win32"
609
- ? ["python", "py"]
610
- : ["python3", "python"];
674
+ const candidates = [
675
+ ...(process.platform === "win32" ? ["python", "py"] : ["python3", "python"]),
676
+ ];
677
+ const seen = new Set();
611
678
 
612
679
  for (const command of candidates) {
680
+ if (seen.has(command)) {
681
+ continue;
682
+ }
683
+ seen.add(command);
613
684
  const probe = spawnSync(command, ["--version"], {
614
685
  cwd: repoRoot,
615
686
  encoding: "utf8",
@@ -622,6 +693,27 @@ function findPython() {
622
693
  return null;
623
694
  }
624
695
 
696
+ function readGeneratedMcpPythonCommand() {
697
+ for (const mcpPath of [path.join(invocationCwd, ".mcp.json"), path.join(repoRoot, ".mcp.json")]) {
698
+ if (!existsSync(mcpPath)) {
699
+ continue;
700
+ }
701
+ try {
702
+ const payload = JSON.parse(readFileSync(mcpPath, "utf8"));
703
+ const servers = payload && payload.mcpServers;
704
+ if (servers && servers.codecgc && typeof servers.codecgc.command === "string") {
705
+ const command = servers.codecgc.command.trim();
706
+ if (command) {
707
+ return command;
708
+ }
709
+ }
710
+ } catch (_error) {
711
+ // Ignore malformed generated config and continue with normal Python discovery.
712
+ }
713
+ }
714
+ return "";
715
+ }
716
+
625
717
  function run(command, commandArgs) {
626
718
  const commandEnv = {
627
719
  ...process.env,
@@ -1096,6 +1188,10 @@ function looksLikeEntryFlag(flag) {
1096
1188
  ]).has(flag);
1097
1189
  }
1098
1190
 
1191
+ function hasOption(argsList, optionName) {
1192
+ return argsList.some((item) => item === optionName || item.startsWith(`${optionName}=`));
1193
+ }
1194
+
1099
1195
  function shouldRouteRootInvocationToEntry(rawArgs) {
1100
1196
  if (rawArgs.length === 0) {
1101
1197
  return false;
@@ -1132,6 +1228,10 @@ function main() {
1132
1228
  }
1133
1229
 
1134
1230
  if (rest.length === 1 && (rest[0] === "--help" || rest[0] === "-h")) {
1231
+ if (subcommand === "start") {
1232
+ console.log(startHelpText);
1233
+ return;
1234
+ }
1135
1235
  if (subcommand === "install") {
1136
1236
  console.log(installHelpText);
1137
1237
  return;
@@ -1152,6 +1252,10 @@ function main() {
1152
1252
  console.log(externalAuditHelpText);
1153
1253
  return;
1154
1254
  }
1255
+ if (subcommand === "external-status") {
1256
+ console.log(externalStatusHelpText);
1257
+ return;
1258
+ }
1155
1259
  if (subcommand === "release-readiness") {
1156
1260
  console.log(releaseReadinessHelpText);
1157
1261
  return;
@@ -1216,6 +1320,18 @@ function main() {
1216
1320
  return;
1217
1321
  }
1218
1322
 
1323
+ if (subcommand === "start") {
1324
+ run(
1325
+ python,
1326
+ [
1327
+ path.join(repoRoot, "scripts", "install_codecgc.py"),
1328
+ "--mode",
1329
+ "start",
1330
+ ...rest,
1331
+ ],
1332
+ );
1333
+ }
1334
+
1219
1335
  if (subcommand === "install") {
1220
1336
  run(python, [path.join(repoRoot, "scripts", "install_codecgc.py"), ...rest]);
1221
1337
  }
@@ -1242,12 +1358,17 @@ function main() {
1242
1358
  );
1243
1359
  }
1244
1360
 
1245
- if (subcommand === "external-audit") {
1361
+ if (subcommand === "external-audit" || subcommand === "external-status") {
1362
+ const view = subcommand === "external-status" ? "status" : "audit";
1363
+ const commandArgs = [...rest];
1364
+ if (!hasOption(commandArgs, "--view")) {
1365
+ commandArgs.push("--view", view);
1366
+ }
1246
1367
  run(
1247
1368
  python,
1248
1369
  [
1249
1370
  path.join(repoRoot, "scripts", "audit_codecgc_external_capabilities.py"),
1250
- ...rest,
1371
+ ...commandArgs,
1251
1372
  ],
1252
1373
  );
1253
1374
  }