UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

94 lines (71 loc) 8.04 kB
--- name: meegle-plugin-cli version: 2.0.0 description: | Meegle 插件开发 CLI 原子化命令参考与诊断工具(lpm)。 **本 CLI 仅服务于插件工程本身的脚手架/配置/构建/调试/发布,不操作 Meegle 产品业务数据(工作项、视图、仪表盘、需求、缺陷等)**——后者请使用对应的业务工具或 skill,不要派发到本 skill。 当用户在插件工程目录(存在 plugin.config.json 且含 MII_ 开头的 pluginId)下需要执行单条 CLI 命令时触发。 覆盖原子化操作:启动调试、本地预览、跑起来看看、构建、打包、同步配置、拉取远端、推送配置、 查看配置、查看远端配置、生成 schema、查看分类、查看 / 申请插件 OpenAPI 权限 scope、登录、认证。 覆盖诊断查询:当前状态、进度到哪了、这个插件是干什么的、调试报错、start 起不来、 tsc 报错、代码报错、能回退吗、改代码。 注意:多步编排操作(发布、点位配置、代码生成等)由对应的编排 skill 直接处理,不经过本 skill。 metadata: requires: bins: ["npx"] cliHelp: "lpm --help" --- # Meegle 插件开发 CLI 原子化命令参考 & 诊断工具 > **前置**:先 Read [`../meegle-plugin/references/shared.md`](../meegle-plugin/references/shared.md) 获取共享规则(认证、安全、工具职责、插件工程识别、三条根原则等)。 ## 本 skill 的最少 Read 清单 - 命令具体参数 / 行为 → Read [`references/commands.md`](references/commands.md) - 状态诊断 / 故障排查 → Read [`references/diagnose.md`](references/diagnose.md) - 不要预加载两个 references;按用户实际需要按需 Read ## 项目上下文感知 使用本 skill 前,**MUST** 按 [`../meegle-plugin/references/shared.md`](../meegle-plugin/references/shared.md) 的"插件工程识别"规则确认当前处于插件工程目录(存在 `plugin.config.json` 且含 `MII_` 前缀的 `pluginId`)。识别通过后,`siteDomain` / `pluginId` / `resources` 由 CLI 自动读取,无需手动传参。 不在插件目录时,引导用户先 `create``cd` 到插件目录。 **每条 `lpm` 命令都必须自带 `--cwd <插件工程绝对路径>` 锚定到插件根**——shell 的 cwd 在命令之间不保证保留,靠 `--cwd` 让 CLI 自己定位插件根(不要用 `cd … &&` 串接)。完整规则见 [`../meegle-plugin/references/shared.md`](../meegle-plugin/references/shared.md) 的"插件工程识别 → 执行约定"。 --- ## 本 skill 的职责范围 **只处理两类场景:原子化 CLI 命令 和 诊断查询。** 多步编排操作由编排 skill `meegle-plugin` 处理(进入后按意图路由到对应 phase): - "发布"/"上线"`meegle-plugin`(phase=publish) - "加个点位"/"改点位"/"生成代码"/"实现功能"`meegle-plugin`(phase=feature,存量插件) - "改名称"/"改描述"`meegle-plugin`(phase=polish) - "从零做一个 xxx 插件"/"新建插件"`meegle-plugin`(phase=workflow,新插件全流程) ### A. 原子化 CLI 命令(本 skill 直接执行) 每条命令独立完成一个操作,无需多步编排。**详细参数见 [`references/commands.md`](references/commands.md)**: | 用户可能的说法 | CLI 命令 | 做什么 | 详见 | |--------------|---------|-------|------| | "启动调试" / "本地预览" / "跑起来看看" / "dev" | `start --auto` | 启 dev-server 并自动打开调试页 | [启动调试](references/commands.md#启动调试) | | "构建" / "打包" / "build" | `build` | 产出 `build/``--zip` 顺带打包 | [构建](references/commands.md#构建) | | "同步配置" / "拉取远端" / "拉取最新" | `update` | 远端 → 本地:拉配置 + 模板代码 | [同步配置](references/commands.md#同步配置) | | "推送配置" / "推到远端" | `update --source-type=local` | 本地 → 远端:推配置再自动拉回模板 | [同步配置](references/commands.md#同步配置) | | "查看远端配置" | `local-config get --remote` | 拉远端配置到 `.lpm-cache/config/remote.json` | [点位配置管理](references/commands.md#点位配置管理) | | "预览改动" / "看看会改什么" / "对比远端" | `local-config diff` | 本地 vs 远端 diff;有删除 → exit 2 | [点位配置管理](references/commands.md#点位配置管理) | | "生成 schema" / "看看有哪些点位类型" | `schema` | 写 JSON Schema 到 `.lpm-cache/schema/` | [生成 Schema](references/commands.md#生成-schema) | | "查看分类" / "有哪些分类" | `list-categories` | 输出分类 id/name 的 JSON 列表 | [分类列表](references/commands.md#分类列表) | | "查看插件权限" / "有哪些 OpenAPI scope" / "已开通哪些权限" | `perm list` | 输出派生视图 `{ appType, granted(已开通可调), applicable(还能申请;AI 应用省略) }`,每项含 scope + 覆盖的 OpenAPI;`--raw` 出后端原始 `{ perm_info, perm_meta }` | [权限管理](references/commands.md#权限管理) | | "这些 OpenAPI 能不能调" / "要申请哪些权限" | `perm check --apis a,b,c` | 反查每个接口归属 scope 并比对已开通,输出 `{ satisfied, needApply, infeasible, unknown, ambiguous }` 的判决 | [权限管理](references/commands.md#权限管理) | | "申请 OpenAPI 权限" / "开通 scope xxx" | `perm apply --scopes a,b,c` | 申请权限 key(已开通的跳过),输出结果 `{ perm_info }` 的 JSON | [权限管理](references/commands.md#权限管理) | | "登录" / "认证" / "设置 token" | `login` | OAuth 或 `--token` 写入本地凭据 | [登录认证](references/commands.md#登录认证) | ### B. 诊断查询(本 skill 读取项目状态回答) 用户不是要执行操作,而是要了解当前状态或排查问题。**详细诊断流程见 [`references/diagnose.md`](references/diagnose.md)**: | 用户可能的说法 | 处理方式 | 详见 | |--------------|---------|------| | "当前什么状态" / "进度到哪了" / "之前做到哪了" | 读取 checkpoint + config + src/ 综合判断 | [项目状态诊断](references/diagnose.md#项目状态诊断) | | "这个插件是干什么的" / "有哪些点位" | 读取 resources 列表,按 id 前缀分析点位类型 | [项目状态诊断](references/diagnose.md#项目状态诊断) | | "调试报错了" / "start 起不来" / "白屏" | 常见调试问题排查 | [常见问题排查](references/diagnose.md#常见问题排查) | | "tsc 报错" / "代码编译错误" / "类型错误" | 引导执行 `tsc --noEmit` 或用 `meegle-plugin`(phase=feature stage=code) | [常见问题排查](references/diagnose.md#常见问题排查) | | "能回退版本吗" / "撤销发布" / "版本回滚" | CLI 不支持版本回退,引导后台手动操作 | [常见问题排查](references/diagnose.md#常见问题排查) | | "改一下代码" / "按钮逻辑改成 xxx" | 直接修改 `src/features/` 下的代码文件,不需要 CLI | [常见问题排查](references/diagnose.md#常见问题排查) | --- ## 与编排 skill 的分工(路由总览) | 用户指令类型 | 示例 | 由谁处理 | |------------|------|--------| | 原子操作 | "启动调试" / "构建" / "同步" / "查看配置" | meegle-plugin-cli(本 skill)直接执行单条 CLI | | 存量插件功能迭代 | "加点位" / "生成代码" / "实现功能" / "改功能逻辑" | `meegle-plugin`(phase=feature) | | 发布 / 信息完善 | "发布" / "改名称" | `meegle-plugin`(phase=publish / phase=polish) | | 新插件端到端 | "从零做一个 xxx 插件" / "新建插件" | `meegle-plugin`(phase=workflow) | | 诊断查询 | "什么状态" / "调试报错" | meegle-plugin-cli(本 skill)读取状态 / 排查引导 | **分工原则**:单条 CLI 命令能完成的用 meegle-plugin-cli,需要多步串行/交互确认的用编排 skill `meegle-plugin`(它内部按"新插件 vs 存量插件 vs 单点操作"路由到对应 phase)。