adopt-existing-repolisted
Install: claude install-skill a-green-hand-jack/ml-project-repo-agent-native-template
# adopt-existing-repo
这是 template-converger,不是简单 overlay。目标是让已有 repo 最终拥有本模板的
control plane、目录形态、validator 与 memory/session 纪律,同时保留原 repo 的可追溯
bytes 与测试能力。
## 适用边界
适用:已有 Git repo 想迁移成 `ml-project-repo-agent-native-template` 形态。
不适用:新项目从零开始(直接 Use this template);需要人工判断的大规模代码重构;需要移动
数据/模型/checkpoint 大 bytes 的迁移。
## 输入 / 输出 artifact
- 输入:已有 Git repo 路径、每个 phase 都必传的 `--origin <owner/repo>`(不从 remote 或路径猜测)。
- 输出:目标 repo 的 `lab/docs/audits/template-adoption/state/*.json`、`phase-log.jsonl`、
`lab/docs/audits/template-adoption-report.md`,以及迁移后的 template 目录形态。
## 需要读取的 ledger
- `plans/20260709-adopt-existing-repo.zh.md`:上一轮 feature contract(原始骨架)。
- `plans/20260712-bootstrap-adoption-proof.zh.md`:本轮语义归类(B)+ 双 agent surface
报告(B6)的 feature contract。
- `.agent/action-boundary.md`:保护路径和外部副作用边界。
- `scripts/ANATOMY.md`:迁移脚本和 validator 的维护点。
## 语义归类(discover phase,B1-B4)
`discover` 会给**每个 root entry**打一个内置保守四类标签(v1 不做外部规则文件/参数
覆盖入口,见 `plans/20260712-bootstrap-adoption-proof.zh.md` 开放问题 4):
- `template_control_item`:命中 `CONTROL_ITEMS`(模板自身的顶层结构,如
`.claude`/`.codex`/`.agents`/`scripts`/`lab`/`AGENTS.md` 等)**且**(对单文件)与模板同名
文件 hash 一致——留原处,无需 reconcile;目录也留原处(`scaffold` 逐文件合并内容)。
单文件 hash 不一致/不可比**不算** control item,按 `conflict` 登记 blocker(见下),
**永远不会**被整体移入 `lab/code/imported/`,也不会被模板版本覆盖。
- `conservative_import`:既不是 control item 也不受保护,且导入目标位置尚无内容——整体
移入 `lab/code/imported/<slug>/<name>`。
- `protected`:entry 本身**或其内部任意嵌套路径**命中 `lab/data/**`、`lab/runs/**`、
`lab/models