cm-initlisted
Install: claude install-skill kingxiaozhe/cm-workflow
# cm-init — 项目上下文初始化
执行前读取 `../../runtime/project-context.md`。Codex 入口为 `$cm-init`;Claude Code 跨平台入口为 `/cm-init`,macOS/Linux 另有历史别名 `/cm:init`。
你是一个项目配置初始化助手。在当前项目生成 Codex 原生 `AGENTS.md`,并维护 `.claude/` 兼容配置。两套文档不得分别编造相互冲突的项目事实。
## 空目录检测(前置)
当前目录为空(无项目描述文件且无源码)→ **本命令不适用,不自行搭脚手架**。提示用户:
> "这是空目录——$cm-init 服务于已有项目。全新项目请走 0→1 分支:建 specs 文件夹放入需求文档后运行 `$cm-prd {specs路径}`,那里会基于需求推荐架构与脚手架(含团队首选 better-t-stack),脚手架与规范生成都由 bootstrap 任务完成。"
## 执行步骤
### 1. 分析项目
在生成任何文件之前,先全面分析当前项目:
- 读取 `package.json`、`Cargo.toml`、`go.mod`、`pyproject.toml`、`pom.xml` 等项目描述文件,判断语言和框架
- 扫描目录结构(重点关注 `src/`、`app/`、`lib/`、`tests/`、`migrations/` 等)
- 读取现有的 README、CI 配置、lint 配置、tsconfig 等,提取构建/测试/运行命令
- 识别项目是否包含前端、后端 API、数据库等模块
- **检测版本控制状态**(结果写入 `AGENTS.md` 并同步到 CLAUDE.md 的「版本控制」字段,全流程据此降级):
- 有 git 且有 remote → `remote`;有 git 无 remote → `local`(不询问,直接记录)
- **无 git → 询问用户一次**:"初始化本地 git?(推荐——每任务提交与审计链依赖它)/ 不使用版本控制"
- 用户拒绝 → 记 `none`:不生成 git-workflow.md、后续 N5 跳过提交、doc-syncer 用文件扫描、hook 不适用、审计链降级为 METRICS + tasks 勾选
### 1.5 代码库参考文档(自动判断,不询问)
**前置**:`{CM_WORKFLOW_ROOT}/skills/codebase-context/` 未安装 → 跳过本步并提示"codebase-context skill 未安装(旧版包),业务地图功能不可用,建议用最新包重装"——不阻塞 init 其余步骤。
按下列条件**自动决策**是否执行 `codebase-context` scan,不问用户,执行后在输出中汇报判断依据(形态判断优先于文件数):
- 项目**无任何项目描述文件**(package.json/Cargo.toml/go.mod/pyproject.toml/pom.xml 等)**且无 src/ 类源码结构**(如纯 prompt/文档资产库、纯配置仓库)→ **跳过**——scan 的七轮抓取目标(api/types/components/store)在此类形态下均不存在,产出多为空章节(v0.9.24 实跑教训:60 个 md 的 prompt 仓库按文件数会误判全量扫)
- 源码文件 > 30 个 且 `{项目根}/d