worktree-disciplinelisted
Install: claude install-skill nemori-ai/cc-master
# cc-master 的 worktree 隔离纪律
> **这是项目自用的 dev skill,不随插件分发。** 它住 `.claude/skills/`(cc-master 自己的贡献者 / dogfood 本仓的 orchestrator 用),不��� `plugin/src/skills/`(那才会 ship 给插件用户)。终端用户装 cc-master 看不到它;它只为「在本仓里安全地并行开发」存在。
worktree 是 cc-master 的并行开发**要么干净地汇成一次集成、要么悄悄污染 main checkout** 的分界点。这个 skill 承载两种操作模式——**Solo**(一个任务、一个 worktree)与 **Fan-out**(多个 worktree 并行推进一场 campaign)——以及一组红线。红线才是重点;模式只是红线适用的地形。
**cc-master 与通用 worktree 教条有一处关键背离,先记住**:cc-master 是 **single-committer**(AGENTS.md §11)——sub-agent / spoke worker 只写文件 + 自证测试绿、**绝不 commit**,由 orchestrator 端点验收后统一分组 commit。这与「你在自己的 worktree 里 commit 是安全的」这条到处流传的说法**相反**。隔离买到的是**并行改文件不互撞**,不是**commit 权**。这条见下面红线 6,是本仓移植这套纪律时最容易被合理化掉的一条。
## 本仓约定(固定,不是选择)
| 约定 | 取值 |
|---|---|
| 位置 | **仓库外的兄弟目录**——本仓惯例 `/data/qiwei/repos/cc-master-wt/<语义名>`(与 checkout 同级),或一个专用外部 worktrees 目录(如 `/data/qiwei/worktrees/cc-master-<名>`)。**绝不放进 repo 树内**(如 `.claude/worktrees/`)——放外部天然不入版本控制、不污染 `git status`,无需 gitignore |
| 命名 | 语义化的 campaign / 任务名(`ddl`、`kimi`、`cursor-auth`);同一 campaign 的 spoke 共享前缀(`kimi-*`) |
| main checkout | **永远停在 `main`。** feature 分支只活在 worktree 里 |
| 依赖装配 | 只碰 plugin(bash/JS)→ 无需 build / 装依赖,直接编辑。碰 `ccm/`(pnpm/Turborepo TS)→ 在**这棵 worktree 里** `pnpm -C ccm install`(`ccm/**/node_modules` gitignored、**每棵树各一份**,不会从 main 继承) |
| `git stash` | 到处都禁用——worktree 的存在就是让你永远不需要它 |
## 第 0 步 —— 先读清你站在哪
创建任何东西之前,先判断自己的位置:
```bash
git rev-parse --git-dir --git-common-dir # 两者不同 → 你在一个 linked worktree 里
git branch --show-current
```
三种位置,三种不