cm-doc-syncerlisted
Install: claude install-skill kingxiaozhe/cm-workflow
# cm-doc-syncer — 文档同步器
在所有开发任务完成后,自动同步更新项目文档。确保文档和代码保持一致。
## 触发条件
由 `/cm-ai` 在所有 feature 开发完成后自动调用。
## 输入
- specs 文件夹路径
- 代码项目路径(可多个)
- LESSONS.md 中积累的架构决策
## 执行步骤
### 1. 扫描变更
对每个代码项目,先读其 CLAUDE.md「版本控制」字段,按值选变更识别方式(显式分支,不得自行发明):
- `remote` / `local` → `git diff {基线}..HEAD` 获取变更文件。基线按序尝试:① 上一份 CHANGELOG 头部记录的 `base-commit`(见步骤 5)→ ② 无则取首个 scaffold/初始 commit → ③ 仍无法确定则按全量文件清单处理,并在输出中注明「基线不明,按全量」
- `none` 或项目无 `.git` → **降级为文件扫描**:遍历源码目录,结合 specs 各 feature 的 tasks.md 勾选项反推本次变更集(与 cm:init 的 none 降级约定对齐)
- 字段缺失但有 `.git` → 按 `local` 处理
随后(与版本控制方式无关):
- 识别新增的目录、模块、API、数据模型
- 从 specs 的 requirements.md 获取功能描述;requirements.md 缺失 → 该 feature 跳过描述提取并在最终输出中上报「specs 不完整」,不得凭 tasks.md 猜功能描述
- 从 LESSONS.md 获取架构决策和踩坑记录;文件不存在 → 按 0 条处理,不报错不中断
### 2. 更新 README.md
对每个代码项目的 README 进行精炼更新:
**必须覆盖:**
- **项目简介** — 一句话说清楚是什么
- **架构概览** — 技术栈、目录结构、核心模块关系
- **快速开始** — 安装、配置环境变量、运行的最少步骤
- **功能模块** — 各模块简述,本次新增的功能标注
- **API/接口** — 关键接口说明(如有后端)
- **合约地址** — 部署的合约信息(如有合约)
- **部署** — 构建命令、部署方式、环境要求
**原则:**
- 精炼,开发者能在 2 分钟内理解项目全貌
- 已有的 README 合理内容保留,只更新/补充变更涉及的部分
- 如项目没有 README → 新建完整版
- 不写废话,不放过时信息
### 3. 更新 .claude/CLAUDE.md
检查变更是否影响项目结构,保持 ≤150 行:
- 新增了目录 → 更新「目录结构」
- 新增了常用命令 → 更新「常用命令」
- 引入了新技术栈 → 更新「技术栈」
- 新增了 rules 文件 → 更新引用列表
### 4. 更新 .claude/rules/
检查变更中是否出现了新的模式或约定,按下表判据决定(满足才建,不满足不建,无中间态):
| 变更特征 | 动作 |
| ---- | ---- |
| 新增 ≥2 个路由/接口文件(如 `src/api/**`) | 创建 `rules/backend-api.md` |
| 新增 migration 目录或 ORM 配置 | 创建 `rules/database.md` |
| 新增 `contracts/**` 或合约框架配置 | 创建 `rules/