# Phase 1：搭建工程

将用户原话转化为可运行的插件工程骨架。本阶段只做创建工程一步，**不涉及点位配置**（延后到 Phase 2）。

> **Checkpoint**：本阶段的 1.2 是 `.lpm-cache/state.json` 的**首次写入点**——之前的 Phase 0 / 1.1 都不落盘，全程仅在对话上下文持有数据。详见 SKILL.md「进度追踪」章节。

## 1.1 创建插件 → 进入 create 子阶段

**进入 create 子阶段**（**不要** Skill()，本 skill 内 Read 推进——router 顶部规则）：按序 Read

1. [`create-setup.md`](create-setup.md)（取 siteDomain，已在 Phase 0 钉死 → 直接复用，不重新询问）
2. [`create-plan.md`](create-plan.md)（工作名称派生 + app_type 决策 + 用户确认）
3. [`create-apply.md`](create-apply.md)（`lpm create` 执行 + 日志解析 pluginId / projectDir + auth 兜底 + cwd 切换）
4. [`create-verify.md`](create-verify.md)（plugin.config.json 五字段完整性 + node_modules / src 就绪）

> **被 workflow 编排的语义**：workflow 已在入口守卫验过当前目录无 `plugin.config.json`，create 子阶段内的「EXIST 拦截」无需重复执行；若 create reference 文件里仍残留独立调用语境下的 EXIST 拦截 prose，按本编排路径**跳过**它。

workflow 层**不得**在此处直接 `lpm create`、**不得**自己拼目录名、**不得**自己 cd——任何一项都会绕过 create 子阶段的 HARD GATE（C19 P1.5 决策树 + C34 cd HARD GATE）。

create 子阶段完成时的契约：cwd 在插件子目录、对话上下文持有 `pluginId` / `projectDir` / `projectRoot`。**create 子阶段不写 state.json**（保持与 workflow 状态解耦），状态落盘统一在 1.2。

**后置 verify（防弱 AI 跳过 create skill 或中途短路）**：

```bash
pwd && test -f plugin.config.json && echo "PHASE1_CWD_OK" || echo "PHASE1_CWD_FAIL"
```

- `PHASE1_CWD_OK`：进入 1.2；记下当前 `pwd` 作为 `context.projectRoot`，后续每条 lpm 命令都带 `--cwd "<projectRoot>"`（详见 [workflow-overview.md「cwd 锚定规则」](workflow-overview.md) 与 [`shared.md` 执行约定](shared.md)）
- `PHASE1_CWD_FAIL`：create 子阶段没真跑完 A3，**不得自己 cd 凑数**——回 1.1 重新走 create 子阶段的 Read 序列

## 1.2 首次 checkpoint 落盘（state.json 零号写入点）

PHASE1_CWD_OK 通过、cwd 已在 plugin-dir、create 内部 HARD GATE 全过——此时把对话上下文里的 5 个字段一次性写入 checkpoint。用 `lpm ai state set`（CLI 经 `workspacePaths()` 把路径锚定到插件根的 `.lpm-cache/state.json`、`assertPluginRoot` 守卫，不依赖裸相对路径）：

```bash
lpm --cwd "<projectRoot>" ai state set '{
  "phase": 1,
  "step": "1.2",
  "stepName": "首次 checkpoint 落盘",
  "context": {
    "siteDomain": "<Phase 0 采集>",
    "pluginId": "<create A1 日志解析>",
    "projectDir": "<create A1 日志解析>",
    "projectRoot": "<create A3 PHASE1_CWD_OK 后的 pwd 输出>",
    "originalRequirement": "<用户启动 workflow 时说的那句话，逐字保留>"
  }
}'
```

**硬约束**：
- 这是 state.json **零号写入点**——先 `lpm --cwd "<projectRoot>" ai state get`，有输出（例如断点恢复进入 1.2）则跳过写入，按 SKILL.md 恢复规则继续
- `originalRequirement` 逐字记录，**不做任何后处理**（不提取 mentionedPointType、不判空指令、不追问）
- `.lpm-cache/` 目录由 `lpm ai state set` 自动创建，不用手动建
- 5 个字段缺一不写——缺了说明 Phase 0 / 1.1 没真正完成，回到对应步骤补齐
- **不写 `app_type`**——形态信息已经由 `lpm create --app-type` 落进 `plugin.config.json`，Phase 2/3 子 skill 与 CLI 都以那里为权威源；state.json 不复述，避免双源漂移

## 1.3 阶段输出

```
✅ 插件工程骨架搭建完成
   pluginId: MII_xxxxxxxxx
   工程目录：<context.projectRoot>    ← 当前 cwd 已切到此处
   下一步：正在分析可用点位...
```

**自动进入 Phase 2，无需用户确认。**
