PluginBench
Skill
Pass
Audit score 90

paperclip-create-plugin

paperclipai/paperclip

Scaffold and develop external Paperclip plugins with CLI-first workflow.

What is paperclip-create-plugin?

Create and iterate on Paperclip plugins outside the core repository using the CLI-first development model. Use this skill when scaffolding a new plugin, editing plugin code locally, installing it into a running Paperclip instance, or updating plugin authoring documentation.

  • Scaffold new plugins with `paperclipai plugin init` using configurable templates (default, connector, workspace, environment, automation, ui)
  • Manage local plugin development with watch-mode rebuilds via `pnpm dev` that auto-reload in the running Paperclip instance
  • Install and inspect plugins by local absolute path with automatic hot-reload of worker and UI on file changes
  • Verify plugin correctness with typecheck, test, and build commands before deployment
  • Generate plugin manifests with capability declarations, slot definitions, and metadata

How to install paperclip-create-plugin

npx skills add https://github.com/paperclipai/paperclip --skill paperclip-create-plugin
Prerequisites
  • Paperclip instance running locally or accessible via CLI
  • Node.js and pnpm installed
  • `paperclipai` CLI on PATH (or access to the create-paperclip-plugin package in the Paperclip checkout)
Claude Code
Cursor
Windsurf
Cline

How to use paperclip-create-plugin

  1. 1.Run `paperclipai plugin init @scope/plugin-name --output ~/dev/paperclip-plugins` to scaffold a new plugin
  2. 2.Navigate to the generated plugin folder and run `pnpm install` to install dependencies
  3. 3.Run `pnpm dev` in the plugin folder to start the watch-mode build process
  4. 4.In another terminal, run `paperclipai plugin install /absolute/path/to/plugin` to install into Paperclip
  5. 5.Edit plugin source files (`src/manifest.ts`, `src/worker.ts`, `src/ui/index.tsx`) and observe auto-reload in Paperclip
  6. 6.Run `pnpm typecheck`, `pnpm test`, and `pnpm build` to verify the plugin before deployment
  7. 7.Use `paperclipai plugin list` and `paperclipai plugin inspect <key>` to inspect installed plugin status

Use cases

Good for
  • Scaffolding a new connector or workspace plugin to extend Paperclip functionality
  • Iterating on plugin worker logic and UI in a local directory while Paperclip auto-reloads changes
  • Installing a locally-developed plugin into a running Paperclip instance for testing
  • Validating plugin code against the SDK before publishing to npm
  • Creating bundled example plugins within the Paperclip repository (when explicitly requested)
Who it's for
  • Plugin developers building extensions for Paperclip
  • Teams authoring custom connectors or workspace integrations
  • Developers contributing plugin examples to Paperclip documentation

paperclip-create-plugin FAQ

Should I create the plugin inside the Paperclip repository?

No. Scaffold plugins as external packages outside the Paperclip checkout (e.g., `~/dev/paperclip-plugins/<name>`). Only edit Paperclip core if the user explicitly asks for a bundled example.

Do I need to reinstall the plugin after every code change?

No. The server watches the built outputs in `dist/` for local-path plugins and auto-restarts the worker on rebuild. Just keep `pnpm dev` running in the plugin folder.

What if `paperclipai` is not on my PATH?

Fall back to running the scaffold via Node directly: `node packages/plugins/create-paperclip-plugin/dist/index.js` with the same flags, passing `--sdk-path` to the local SDK.

What capabilities and APIs are supported in plugins?

Plugins can declare capability-gated worker APIs and trusted same-origin UI. Do not use `ctx.assets`, do not import host UI component stubs, and keep UI self-contained. Refer to `doc/plugins/PLUGIN_AUTHORING_GUIDE.md` and `packages/plugins/sdk/README.md` for details.

How do I verify the plugin is working before deployment?

Run `pnpm typecheck`, `pnpm test`, and `pnpm build` in the plugin folder. Then check `paperclipai plugin list` and `paperclipai plugin inspect <plugin-key>` to confirm the plugin status is `ready`.

Full instructions (SKILL.md)

Source of truth, from paperclipai/paperclip.


name: paperclip-create-plugin description: > Create and develop external Paperclip plugins with the CLI-first workflow. Use when scaffolding a plugin, iterating on a local plugin, installing it into Paperclip, or updating plugin authoring docs.

Create and develop a Paperclip plugin

Use this skill when the task is to create, scaffold, or iterate on a Paperclip plugin against a local Paperclip instance.

1. Default: build the plugin OUTSIDE Paperclip core

Plugins are their own packages. Unless the task explicitly asks for a bundled in-repo example, do not add plugin source under packages/plugins/ in this repo.

  • Scaffold the plugin into a directory outside the Paperclip checkout (e.g. ~/dev/paperclip-plugins/<name>).
  • Install it into the running Paperclip instance by local absolute path.
  • Edit code in the external package; let Paperclip pick up rebuilt output.

Only edit Paperclip core itself when the user asks to surface a plugin as a bundled example (server/src/routes/plugins.ts, in-repo example lists, docs).

2. Ground rules

Reference docs when you need detail:

  1. doc/plugins/PLUGIN_AUTHORING_GUIDE.md
  2. packages/plugins/sdk/README.md
  3. doc/plugins/PLUGIN_SPEC.md — future-looking context only

Current runtime assumptions:

  • plugin workers are trusted code
  • plugin UI is trusted same-origin host code
  • worker APIs are capability-gated
  • plugin UI is not sandboxed by manifest capabilities
  • no host-provided shared plugin UI component kit yet
  • ctx.assets is not supported in the current runtime

3. CLI-first scaffold workflow

Use paperclipai plugin init. Do not invoke the scaffold package node entrypoint by hand unless the CLI command is unavailable in the environment.

paperclipai plugin init @acme/my-plugin --output ~/dev/paperclip-plugins

Useful flags (all optional):

  • --output <dir> — parent directory; the command creates <dir>/<unscoped-name>/. Defaults to the current directory.
  • --template <default|connector|workspace|environment> — starter template.
  • --category <connector|workspace|automation|ui|environment> — manifest category.
  • --display-name <name>, --description <text>, --author <name> — manifest metadata.
  • --sdk-path <path> — snapshot the local SDK from a Paperclip checkout into .paperclip-sdk/ (useful when developing against an unreleased SDK).

On success the command prints the exact next commands (cd, pnpm install, pnpm dev, paperclipai plugin install <abs-path>). Run them in order.

If paperclipai is not on PATH in your environment, fall back to:

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. Local install + rebuild loop

In the scaffolded plugin folder:

pnpm install
pnpm dev            # esbuild --watch: rebuilds dist/manifest.js, dist/worker.js, dist/ui/
paperclipai plugin install /absolute/path/to/my-plugin

Notes:

  • paperclipai plugin install auto-detects local paths (absolute, ./, ../, ~, or an existing relative folder) and forwards isLocalPath: true to the server. Pass --local to force local mode if the heuristic is ambiguous.
  • Paths are resolved to absolute paths before being sent to the server.
  • The server watches built outputs (dist/) for local-path plugins and restarts the plugin worker on rebuild — you do not need to reinstall after every edit.
  • UI hot reload via the SDK dev server (pnpm dev:ui, port 4177) is optional and template-dependent; only mention it if the template wires devUiUrl and you verified it works end to end.
  • --version only applies to npm package installs. Combining it with a local path is an error.

After install, inspect with:

paperclipai plugin list
paperclipai plugin inspect <plugin-key>

5. After scaffolding, sanity-check the package

Open and confirm:

  • src/manifest.ts — declared capabilities and slots
  • src/worker.ts — worker entry
  • src/ui/index.tsx — UI entry (if applicable)
  • tests/plugin.spec.ts — placeholder test
  • package.json — paperclipPlugin block points at dist/manifest.js, dist/worker.js, dist/ui/

Make sure the plugin:

  • declares only supported capabilities
  • does not use ctx.assets
  • does not import host UI component stubs
  • keeps UI self-contained
  • uses routePath only on page slots

6. Verification (run before declaring success)

From the plugin folder:

pnpm typecheck
pnpm test
pnpm build

If the plugin is already running under pnpm dev, you can keep the watcher up and run pnpm typecheck and pnpm test in a separate shell.

If you changed Paperclip SDK/host/plugin runtime code in addition to the plugin, also run the relevant Paperclip workspace checks.

7. Success checklist (report this back)

When you finish a local plugin task, report:

  • Scaffold path — absolute path of the created plugin folder.
  • Commands run — the exact paperclipai plugin init, pnpm install, pnpm dev, paperclipai plugin install <path> invocations (and any verification commands).
  • Install status — output of paperclipai plugin list / plugin inspect (plugin key, version, status). Note if status is anything other than ready and include lastError.
  • Tests / build result — pnpm typecheck, pnpm test, pnpm build pass/fail with the failing output if any.
  • Reload limitations — call out anything that did not hot-reload (e.g. manifest changes required a reinstall, UI dev server was not wired, etc.).

If any item is missing, mark it as such — do not silently skip.

8. When NOT to edit Paperclip core

Do not add the plugin under packages/plugins/ or update bundled-example wiring unless the user explicitly asks for a bundled example. Local-path installs are the supported development model; npm packages are the production deployment path.

If the user does ask for a bundled example, also update:

  • server/src/routes/plugins.ts example list
  • any docs that enumerate in-repo example plugins

9. Documentation expectations

When authoring or updating plugin docs:

  • distinguish current implementation from future spec ideas
  • be explicit about the trusted-code model
  • do not promise host UI components or asset APIs
  • prefer local-path development + npm-package deployment guidance over repo-local workflows