SuperAPI AI 工具集

creating-plugins

办公与效率

查看项目

更新于 10-16 05:07

技能介绍

用途:该技能用于为 EmDash CMS 创建插件。应针对目标执行模式对应的 API 构建;当示例与源类型及生产边界测试冲突时,以后者为准。

插件格式:沙箱插件在 src/plugin.ts 中默认导出 SandboxedPlugin,管理界面使用 Block Kit 页面、小组件、已保存条目面板与操作,通过插件 CLI 和注册表分发。原生插件使用 definePlugin() / createPlugin(),可用 React、Block Kit 和 Astro 组件,仅作为受信任站点依赖。除非功能需要宿主进程访问、React 管理代码、Astro 渲染组件、原始页面片段或自定义 Portable Text 块定义,否则应使用沙箱插件;原生插件以站点权限运行且无法从注册表安装。

创建沙箱插件:

pnpm dlx @emdash-cms/plugin-cli init my-plugin cd my-plugin pnpm install pnpm run test

清单是身份与信任契约。运行时钩子和路由位于 src/plugin.ts;CLI 生成描述符、清单和打包产物。不要创建单独的 descriptor 工厂或 sandbox-entry.ts。示例中勾子从 emdash/plugin 使用 import type 导入类型,值导入仅限 pluginRoute()、pluginResponse() 等轻量助手。沙箱运行时可用 Web API 但不能使用 Node.js 内置模块。

权限声明:在 emdash-plugin.jsonc 中声明每个宿主 API。增加权限、公开暴露路由或添加 MCP 工具都需要管理员重新批准。资料列出读写内容、分类法、署名、重定向、评论、媒体,以及网络请求、用户读取、邮件发送等多项能力,另有仅限信任插件的页面片段钩子。设置、KV、声明的存储、日志和 cron 调度为插件作用域,无需能力。

路由与 MCP:路由默认私有、需要认证及相应 RBAC 权限、令牌作用域或 CSRF。公开路由面向互联网且需明确安装同意。未声明路由保留旧版 JSON/查询信封。MCP 工具引用带显式权限和 Zod 输入架构的私有 JSON 路由;难以撤销的操作应标记 destructive: true。

钩子:沙箱钩子进入与信任钩子相同的优先级、依赖、超时、错误策略、启用、独占提供者和能力管线。

管理界面与测试:沙箱页面和小组件返回经过验证的 Block Kit。保存条目面板和操作指向私有路由。当前声明式字段小组件把支持的 Block Kit 元素组合为 JSON 值;自定义 Portable Text 块和 Astro 渲染组件仅限原生。测试可用 createPluginTestHost() 做快速钩子、路由、清单、能力、KV、设置与存储测试;createPluginRuntimeTestHost() 用于真实内容操作、激活、媒体、评论、重定向、调度、重启、授权、CSRF、缓存、Block Kit 校验等。每次使用后释放宿主。

限制:Cloudflare Worker Loader 与 Node/workerd 执行相同包,均返回缓冲的 WHATWG 响应,请求与响应体解码上限 8 MiB;应针对导出的类型编写,而非某一包装器中的额外方法。更多细节参见资料中列出的内容、分类法、评论、媒体、钩子、存储、管理界面、路由与 MCP、Block Kit、沙箱边界等参考。