# init：首次接入与迁移

触发：看板 frontmatter 没有 `schema:`。
**已有 `schema:` 的项目，禁止自动运行本流程。**

## 0. 前置

- 读项目目录、README、路由/页面/菜单、`package.json`。
- 没有代码的项目：向用户要一份「产品面清单」。
- 已有旧看板/旧台账：先复制备份（`.bak-YYYYMMDD`），不要直接改。
- 迁移旧项目时，先跑只读扫描，拿到章节/决策的 mapping 草稿：

```bash
node "${DSH_SKILL_DIR:-$HOME/.dsh/skills/project-board}/scripts/scan-legacy.mjs" "${DSH_PROJECTS_DIR:-$HOME/Documents/Projects}/<project>"
```

输出里 `mixed` 表示该章节混了多个节点，需要逐条拆；`?` 表示无法判断，需人工指定。

## 1. 探测事实（不要猜）

列出「用户可达的面」：

| 项目形态 | 探测来源 |
|---|---|
| 网站 / Web 应用 | 路由表、页面目录、菜单、导航 |
| 后台 / 内部系统 | 角色 + 操作台 + 菜单 |
| 内容项目 | 栏目 / 内容类型 / 生产管线 |
| 业务项目 | 流程节点 + 使用方 |
| 个人项目 | 生活域 / 工作流 |

同时记录：有没有账户、有没有付费、有没有后台、有没有内容库、有没有多端。

## 2. 定 archetype

| 事实 | archetype |
|---|---|
| 有对外页面 + 用户流程 | `web-app` |
| 单页转化 | `landing` |
| 以内容为主 | `content` |
| 有客户/内部两套操作台 | `business` |
| 纯内部工具 | `internal-tool` |
| 个人生活/学习 | `life` |
| 研究/写作 | `research` |

## 3. 提议节点（6–10 个）

按域包的候选库命名；只保留**真实存在或本期确定要建**的面。

三个问题都 yes 才立节点：

1. 它是不是一个能独立说清的面？
2. 它会不会有自己的验收标准？
3. 它是否已经或确定会有至少一条记录？

落不下的先挂最近节点，不硬造。

## 4. 自检

- 节点数在档位内（3–5 / 6–10 / 11–15）
- 每个节点有一句话范围
- 没有「其他 / 杂项」兜底节点
- 名称在域包内（新增的必须回写域包）
- 编号在合法段内、不重复
- 非 `fixed` 节点至少有一条已知记录
- 面数 ≤15 → `depth: 1`（本版不支持二级）

## 5. 给人确认

输出一份「节点树 + 每个节点放什么」，等确认后再写盘。**不要先写再问。**

## 6. 写盘

1. 备份旧看板 / 旧台账。
2. 写看板 frontmatter：`schema` / `project` / `archetype` / `nodes` / `tags`。
3. 建 `## <编号> <名称>` + `> 范围：`。
4. 迁移旧任务：按语义归位；归不进的先放 `90 归档` 或最近节点，标注 `待归位`。
5. 建台账 frontmatter，迁移旧决策：补 `节点:` / `状态:` / `日期:` / `理由:` / `备选:` / `影响:` / `复审:`。
6. 旧台账里的定位/背景 → `README.md`；教训 → `踩坑.md`。
7. 写一条结构决策 `D-00-01 初始化结构基线`。
8. 跑 lint，error 清零。

## 7. 不要做

- 不要自动 re-init。
- 不要把旧章节原样保留成第二套结构。
- 不要为了凑节点数造节点。
- 不要在台账里复制 `##` 章节。
- 不要把定位、背景、财务事实塞进决策条目。

## 8. re-init 触发条件（仅三种）

- 产品新增/移除一个大面（账户、支付、后台、内容库）
- 节点数突破 15 或长期少于 3
- 用户明确要求
