# mode=setup：环境检查

## 检查项

### S1：插件工程根目录就绪

确认当前 cwd 是 Meegle 插件工程：

```bash
test -f ./plugin.config.json
```

- 存在 → 继续
- 不存在 → 走 SKILL.md「前置守卫」section 的处理（引导用户回 workflow phase 新建插件流程）

### S2：判断有没有前端代码要生成

> **前置条件**：本 mode 跑在 Stage Config（`local-config set` + `update --source-type=local`）之后——远端点位配置和模板代码此时都已在本地。

Read `plugin.config.json` 的 `resources`：

**`resources` 为空 → 这个插件没有前端渲染点位**（纯 webhook 的点位不产生前端入口——`ai_field`、未开节点卡片的 `ai_node`、只配了 `intercept` / `listen_event` 的普通插件都是如此）。**没有前端代码可生成——Stage Code 是 no-op**：输出 `✅ resources=0，无前端代码可生成，Stage Code 跳过`，本 mode 到此结束（Stage Code 整段无事可做），交还给调用方继续。空 `resources` 就是 Stage Config 跑完后的正确终态，**不要回 Stage Config 重跑 `lpm update`**——远端没有前端点位，重跑也不会冒出文件入口，只会死循环。

**`resources` 非空 → 逐项确认**：
- 每个 resource 的 `id` 和 `entry` 路径均已填写
- 每个 entry 路径对应的 `src/features/<id>/index.tsx` 模板文件真实存在
- `id`（格式 `{点位类型}_{平台}_{随机后缀}`，可从前缀判点位类型）/ `entry` 由 CLI 维护——直接读值用，**不要自己拼路径、不要改已有 `id`/`entry`**（CLI 后续 update 会对不上）

若某个 `entry` 文件缺失（resources 有条目、但模板没拉到本地）→ 回 Stage Config 的 config.apply 重跑 `lpm update --source-type=local`（从远端拉回配置和模板），拉回后再回这里。

## 输出（`resources` 非空时）

```
✅ 插件工程根目录验证通过
✅ 点位配置就绪（N 个点位，类型：page/dashboard/...）
```
