@lark-project/cli
Version:
飞书项目插件开发工具
62 lines (37 loc) • 4.38 kB
Markdown
# Phase 3:发布上线
完善插件元信息并发布到 Meegle 市场。用户在 publish 不可逆动作前必须显式确认。
> **Checkpoint**:本阶段每个子步骤执行前后都需要更新 `.lpm-cache/state.json`。
## 3.1 完善信息 → 进入 polish 子阶段
**Checkpoint 写入**:`{ "phase": 3, "step": "3.1", "stepName": "polish 子阶段", "nextStep": "3.1 完善插件名称/描述/分类" }`
**恢复检查**:`lastCommand` 含 `update-description` + `status="success"` → 跳到 3.2。
**进入 polish 子阶段**(**不要** Skill(),本 skill 内 Read 推进):按序 Read
1. [`polish-analyze.md`](polish-analyze.md)(扫 `point.config.local.json` + `src/` 提取功能摘要)
2. [`polish-generate.md`](polish-generate.md)(AI 生成名称/短描述/详情/分类)
3. [`polish-confirm.md`](polish-confirm.md)(展示给用户确认或修改)
4. [`polish-apply.md`](polish-apply.md)(调 `lpm update-description` 落盘)
polish 子阶段自维护 analyze → generate → confirm → apply;编排层不复述子流程、不代为确认。完成后进入 3.2。
> **被 workflow 编排时**:polish 子阶段在 §3.1 进入,工程刚跑完 Phase 2 的 Stage Code,`src/` 必非空 → router 的「D1 src/ 空 gate」此处天然 OK,跳过该检查。
## 3.2 发布前二次确认(不可逆护栏 — 不可跳过)
polish 完成后,**MUST** 跑 `lpm check diff` 生成发布前总检清单、把 stdout 原样转呈用户并等待显式确认,才能进入 3.3 publish。
```bash
lpm --cwd "<projectRoot>" check diff
```
`lpm check diff` 产出 CLI 锚定的四段总检:**① 基本信息(名称/短描述/分类/点位/站点/版本)/ ② 配置覆盖(本地→远端最新草稿的点位增删改)/ ③ 权限变更 / ④ 运行时 URL 健康**。本节在 3.3 的 `update`(A1)之前,本地配置尚未推上远端,故②配置覆盖(本地→远端最新草稿的点位增删改)段此时有效、能看出本次发布会改什么。
- 把 check diff 的 stdout **整段原样**贴给用户——**不得改写、转述、增删或只摘要**(模板由 CLI 锚定)。
- `lpm check diff` 自身 `exit≠0`(取数失败)→ 视为**致命**,展示错误并终止,**不得**盲发。
**AI 硬约束**:
- ❌ **禁止**在用户未明确回复"确认发布" / "OK发布" / "好,发布吧"等肯定意图前执行 publish
- ❌ **禁止**把"开始 Phase 3"当作发布确认——Phase 3 开头的"开始吗"是 polish 的前置,不是 publish 的前置
- ✅ **必须**接受用户对四段中任一项的修改请求:改名称/分类 → 回 3.1 polish;权限不对 → `lpm perm apply`;URL 是占位 → 改配置后 `lpm local-config set`。改完回到 3.2 重跑 check diff 重新确认
- ✅ **必须**接受用户"取消",终止 workflow(保留 checkpoint 供后续续跑)
只有用户明确同意发布后,才进入 3.3。
## 3.3 发布 → 进入 publish 子阶段
**前置**:3.2 的"确认发布"必须刚刚通过;从 checkpoint 恢复直插本节时,由 publish-apply 的 **A3 恢复护栏**重跑一次 `lpm check diff` 补确认(与 3.2 同源),未确认前不得执行 publish(W47)。
**Checkpoint 写入**:`{ "step": "3.3", "stepName": "publish 子阶段", "nextStep": "3.3 执行发布" }`
**进入 publish 子阶段**(**不要** Skill(),本 skill 内 Read 推进):按序 Read
1. [`publish-pre-check.md`](publish-pre-check.md)(tsc 预检 + L1/L2/L3 自动修复;CLI `lpm publish` 已硬卡 metadata 完整性,PC0 异常 → 转 polish 子阶段后回流。注意闸门只在 publish——`lpm release` 零登录态、不做元信息预检)
2. [`publish-apply.md`](publish-apply.md)(A0 check diff 确认 → A1 update → A2 release → **A3 publish**;A0 与 3.2 同样跑 `lpm check diff`——3.2 刚走过故 A0 可跳过,但**从 checkpoint 恢复直插 A3 时,A3 的恢复护栏会重跑一次 `lpm check diff` 补确认**)
3. [`publish-verify.md`](publish-verify.md)(确认发布成功 + 分享链接格式)
publish 子阶段自维护 pre-check → apply → verify 的 checkpoint、恢复逻辑、版本号/描述默认值;编排层不复述、不传参。
## 3.4 完成
发布成功后删除 `.lpm-cache/state.json`,把 publish 输出的分享链接转呈用户。