关于 paperclip-create-plugin
paperclip-create-plugin 用于为本地 Paperclip 实例搭建和开发插件,侧重独立插件包,并提供 CLI 初始化、本地安装、重建及验证流程。
主要功能
- 01通过 CLI 搭建插件
- 02独立插件包开发流程
- 03本地路径安装指引
- 04重建与 Worker 重启流程
- 05类型检查、测试和构建验证
适用场景
- 01在 Paperclip 代码库外搭建插件
- 02安装并迭代本地插件
- 03报告完成前验证插件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ paperclipai/ paperclip --skill paperclip-create-plugin安装后在 Claude Code 中输入/paperclip-create-plugin确认已加载。
详细介绍
创建和开发 Paperclip 插件
在需要针对本地 Paperclip 实例创建、搭建或迭代 Paperclip 插件时使用此技能。
1. 默认情况下:在 Paperclip 核心之外构建插件
插件是独立的软件包。除非任务明确要求提供仓库内置示例,否则不要在此仓库的 packages/plugins/ 下添加插件源代码。
- 将插件搭建在 Paperclip 检出目录之外(例如
~/dev/paperclip-plugins/<name>)。 - 使用本地绝对路径将其安装到正在运行的 Paperclip 实例。
- 在外部软件包中编辑代码;让 Paperclip 使用重新构建的输出。
只有在用户要求将插件作为内置示例展示时,才编辑 Paperclip 核心本身(server/src/routes/plugins.ts、仓库内示例列表、文档)。
2. 基本规则
需要详细信息时,请参考文档:
doc/plugins/PLUGIN_AUTHORING_GUIDE.mdpackages/plugins/sdk/README.mddoc/plugins/PLUGIN_SPEC.md——仅用于了解未来规划
当前运行时假设:
- 插件 worker 是受信任代码
- 插件 UI 是受信任的同源宿主代码
- worker API 受能力控制
- 插件 UI 不受清单能力沙箱隔离
- 宿主目前尚未提供共享插件 UI 组件套件
- 当前运行时不支持
ctx.assets
3. 以 CLI 为先的搭建工作流
使用 paperclipai plugin init。除非环境中无法使用 CLI 命令,否则不要手动调用搭建软件包的 node 入口点。
paperclipai plugin init @acme/my-plugin --output ~/dev/paperclip-plugins
实用标志(均为可选):
--output <dir>— 父目录;命令会创建<dir>/<unscoped-name>/。默认为当前目录。--template <default|connector|workspace|environment>— 起始模板。--category <connector|workspace|automation|ui|environment>— 清单类别。--display-name <name>、--description <text>、--author <name>— 清单元数据。--sdk-path <path>— 将 Paperclip 检出目录中的本地 SDK 快照保存到.paperclip-sdk/(适用于基于尚未发布的 SDK 进行开发)。
成功后,命令会打印准确的后续命令(cd、pnpm install、pnpm dev、paperclipai plugin install <abs-path>)。请按顺序运行。
如果环境中的 PATH 中没有 paperclipai,请改用:
pnpm --filter @paperclipai/create-paperclip-plugin build
node packages/plugins/create-paperclip-plugin/dist/index.js @acme/my-plugin \
--output /absolute/path \
--sdk-path /absolute/path/to/paperclip/packages/plugins/sdk
4. 本地安装与重建循环
在搭建好的插件文件夹中:
pnpm install
pnpm dev # esbuild --watch: rebuilds dist/manifest.js, dist/worker.js, dist/ui/
paperclipai plugin install /absolute/path/to/my-plugin
注意:
paperclipai plugin install会自动检测本地路径(绝对路径、./、../、~或现有相对文件夹),并向服务器传递isLocalPath: true。如果启发式检测存在歧义,请传入--local强制使用本地模式。- 路径会先解析为绝对路径,再发送给服务器。
- 对于使用本地路径的插件,服务器会监视构建输出(
dist/),并在重新构建时重启插件 worker——每次编辑后都无需重新安装。 - 通过 SDK 开发服务器(
pnpm dev:ui,端口4177)进行 UI 热重载是可选的,且取决于模板;只有在模板配置了devUiUrl,并且你已端到端验证其正常工作时,才提及此功能。 --version仅适用于 npm 软件包安装。将其与本地路径结合使用会报错。
安装后,使用以下命令检查:
paperclipai plugin list
paperclipai plugin inspect <plugin-key>
5. 搭建后,检查软件包是否正常
打开并确认:
src/manifest.ts— 声明的能力和插槽src/worker.ts— worker 入口src/ui/index.tsx— UI 入口(如适用)tests/plugin.spec.ts— 占位测试package.json—paperclipPlugin配置块指向dist/manifest.js、dist/worker.js、dist/ui/
确保插件:
- 仅声明受支持的能力
- 不使用
ctx.assets - 不导入宿主 UI 组件存根
- 保持 UI 自包含
- 仅在
page插槽上使用routePath
6. 验证(声明成功前运行)
在插件文件夹中:
pnpm typecheck
pnpm test
pnpm build
如果插件已通过 pnpm dev 运行,可以让监视进程继续运行,并在另一个终端中执行 pnpm typecheck 和 pnpm test。
如果除了插件之外,你还修改了 Paperclip SDK/主机/插件运行时代码,请一并运行相关的 Paperclip 工作区检查。
7. 成功检查清单(请在完成后反馈)
完成本地插件任务后,请反馈:
- 脚手架路径 — 创建的插件文件夹的绝对路径。
- 运行的命令 — 准确列出
paperclipai plugin init、pnpm install、pnpm dev、paperclipai plugin install <path>的调用,以及任何验证命令。 - 安装状态 —
paperclipai plugin list/plugin inspect的输出(插件键、版本、状态)。如果status不是ready,请注明并附上lastError。 - 测试/构建结果 —
pnpm typecheck、pnpm test、pnpm build的通过/失败情况;如有失败,请附上失败输出。 - 重新加载限制 — 说明任何未能热重载的内容(例如清单更改需要重新安装、UI 开发服务器未接入等)。
如果缺少任何一项,请明确标出,不要悄然跳过。
8. 何时不要修改 Paperclip 核心
除非用户明确要求提供打包示例,否则不要将插件添加到 packages/plugins/ 下,也不要更新捆绑示例接线代码。本地路径安装是受支持的开发模式;npm 包则是生产部署路径。
如果用户确实要求提供打包示例,还需更新:
server/src/routes/plugins.ts示例列表- 列出仓库内示例插件的任何文档
9. 文档要求
编写或更新插件文档时:
- 区分当前实现与未来规范构想
- 明确说明可信代码模型
- 不要承诺提供主机 UI 组件或资源 API
- 优先介绍本地路径开发和 npm 包部署,而不是仓库内工作流