UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

110 lines (83 loc) 6.12 kB
--- name: meegle-plugin-create version: 1.0.0 description: | Meegle 插件工程创建(原子 skill):最小化创建插件工程骨架(plugin.config.json + 工程目录)。 当用户明确只想创建空壳工程("创建一个空的插件工程""初始化插件项目骨架")时触发,或由 workflow phase 内部调用。 若用户说"我需要一个 xxx 插件" / "从零做一个 xxx",应由 workflow phase 统一编排(含 create + feature + polish + publish),而非直接调用此 skill。 前提:用户已执行 `lpm login`(见接入文档);未登录时 CLI 会 stderr 提示,由用户自行登录后重试。 metadata: requires: bins: ["npx"] cliHelp: "lpm create --help" --- # create phase — overview > **入口守卫执行权已由 router 接管(合并后)**:本 phase 是 `meegle-plugin` skill 的 create 子阶段。 > router(`../SKILL.md`) 的 §1 入口 SOP **已先验过**当前目录的 `plugin.config.json` 存在性(Step 1.2)、 > 并据此 + 用户意图路由到本 phase(Step 1.3)——`create phase` 只在两种情况进入: > (a) `NOT_EXIST` + 用户要"空壳工程"(包括被 workflow 编排进入) > (b) 显式 `phase=create` 入口 > > 情况 (a) 下,plugin.config.json 不存在,下方 EXIST 拦截天然不触发。 > 情况 (b) 下,本 phase 仍按下方 EXIST 守卫保护(用户可能在已有工程目录里误选 phase=create)。 > > **简言之**:在合并路径下,你 Read 到本文件时 router 已做过等价或更上层的 gate; > 下方守卫保留作**显式 phase=create + EXIST 兜底**和**独立读者(人类参考)**的语义注解, > 合并执行路径上不会重复触发。 ## 入口守卫(仅在显式 `phase=create` + cwd 存在 plugin.config.json 时触发) ```bash test -f ./plugin.config.json && echo "EXIST" || echo "NOT_EXIST" ``` | 检查结果 | 处理 | |---------|------| | `NOT_EXIST` | ✅ 继续下方"最少 Read 清单" → 按 mode 走流程 | | `EXIST` | ⛔ **立即停下**,不得 Read 任何 mode reference。告知用户:"检测到当前目录已有插件工程(`plugin.config.json` 存在)。`create phase` 会破坏既有工程。如果要在此插件上加功能请走 `feature phase`;如果确认要创建新插件请先切到空目录或删除 `plugin.config.json` 后重试。"等用户决策,不得继续 | ## 本 skill 的最少 Read 清单(守卫通过后再读) - mode=setup → Read [`create-setup.md`](create-setup.md) - mode=plan → Read [`create-plan.md`](create-plan.md) - mode=apply → Read [`create-apply.md`](create-apply.md) - mode=verify → Read [`create-verify.md`](create-verify.md) - 不要预加载 4 个 mode reference;按当前 mode 按需 Read ## 核心理念 **用户的出发点是功能需求,不是插件元信息。** 用户说"我需要一个在看板上显示燃尽图的功能",而不是"帮我创建一个名叫工时统计助手、分类为效率工具的插件"。因此: - 创建阶段只需要一个**工作名称**和 siteDomain - 名称/描述/分类等展示信息在**发布前**由 AI 自动总结(polish phase) - 让用户尽快进入点位配置和代码开发 ## 核心流程 ``` mode=setup → 获取 siteDomain(auth 未通过时 CLI 会直接 stderr 提示登录) mode=plan → 从功能需求提取工作名称 + 决定 app_type(normal / ai_node / ai_field)+ 用户确认 mode=apply → lpm create --app-type <从 plan 决策> (仅 name,无需描述/分类) mode=verify → 检查 plugin.config.json 完整性(含 app_type)+ 工程目录就绪 mode=pipeline(默认)→ setup → plan → apply → verify ``` > **app_type 是不可逆决定**:`lpm create --app-type` 在 Meegle 后台写定后任何命令都不能转——选错就要 `lpm workspace clean` 删工程从头来。详细决策树见 [`create-plan.md`](create-plan.md) 的 P1.5## 使用方式 本 phase 通常由 meegle-plugin 的 router 自动路由进入(见上层 [`../SKILL.md`](../SKILL.md) §1 入口 SOP)。触发本 skill 时用自然语言描述意图即可——比如"创建一个空的插件工程"——router 会按 cwd context + 意图路由到 create phase。 **显式入口**(高级用法 / 调试 / 断点续跑):触发本 skill 时显式说 `phase=create``phase=create mode=<modename>`,可跳过 router 的 phase 选择,直接进入指定 step。 可用 mode: - `mode=pipeline`(默认)— 端到端全流程 - `mode=plan` — 仅确认信息 - `mode=apply` — 执行创建 - `mode=verify` — 验证工程就绪 > workflow phase 编排进入本 phase 时,通过 Read create-*.md 序列推进——守卫执行权已由 router 接管(见上方"入口守卫执行权"段),无需 mode 之外的入参。 ## 各模式详细流程 - `mode=setup` → 读取 `create-setup.md` - `mode=plan` → 读取 `create-plan.md` - `mode=apply` → 读取 `create-apply.md` - `mode=verify` → 读取 `create-verify.md` ## 输出产物 | 产物 | 说明 | |------|------| | `plugin.config.json` | 含 pluginId、pluginSecret、siteDomain、name、resources: []、`app_type`(normal / ai_node / ai_field 之一) | | `node_modules/` | 插件工程依赖,由 init 自动安装 | | `src/` | 工程模板目录结构 | ## 后续流程 ``` create phase → feature phase(Stage Config 点位配置 + Stage Code 代码)→ polish phase → publish phase ↑ AI 总结已实现功能 生成名称/描述/分类 ``` > 前置依赖链由 `workflow phase` 统一维护(`lpm login` 由用户自备 → create phase → ...)。 > 创建完成后告诉用户工程的绝对路径(用 `pwd`)+ 推荐 git 管理(`plugin.config.json``pluginSecret` 风险见 [`publish-verify.md`](publish-verify.md) V3 输出段)——便于多个插件场景下用户回找。完整文案落地建议下沉到 `lpm create` CLI stderr,详 backlog。被 workflow 编排时不输出此段,由 publish 终态统一收尾。