paperclip-create-plugin について
paperclip-create-pluginは、ローカルのPaperclipインスタンス向けにプラグインを作成・開発するスキルです。独立したパッケージを基本とし、CLIでの作成、ローカル導入、再ビルド、検証を案内します。
主な機能
- 01CLIによるプラグイン作成
- 02独立パッケージでの開発手順
- 03ローカルパスでの導入ガイド
- 04再ビルドとワーカー再起動
- 05型チェック・テスト・ビルド検証
活用シーン
- 01Paperclipのチェックアウト外でプラグインを作成
- 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— 今後の展望を把握する目的に限って参照してください
現在のランタイムに関する前提:
- プラグインのワーカーは信頼されたコードです
- プラグインの UI は、信頼された同一オリジンのホストコードです
- ワーカー 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>)を表示します。順番に実行してください。
環境で paperclipai が PATH にない場合は、次の方法に切り替えてください。
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/)を監視し、再ビルド時にプラグインワーカーを再起動します。そのため、編集のたびに再インストールする必要はありません。 - SDK 開発サーバー(
pnpm dev:ui、ポート4177)による UI のホットリロードは省略可能で、テンプレートによって異なります。devUiUrlが設定されており、エンドツーエンドで動作を確認できた場合に限り、そのことに触れてください。 --versionは npm パッケージのインストールにのみ適用されます。ローカルパスと組み合わせるとエラーになります。
インストール後、次のコマンドで確認してください。
paperclipai plugin list
paperclipai plugin inspect <plugin-key>
5. スキャフォールディング後にパッケージを確認する
次のファイルを開いて確認してください。
src/manifest.ts— 宣言されたケイパビリティとスロットsrc/worker.ts— ワーカーのエントリーポイントsrc/ui/index.tsx— UI のエントリーポイント(該当する場合)tests/plugin.spec.ts— プレースホルダーのテストpackage.json—paperclipPluginブロックがdist/manifest.js、dist/worker.js、dist/ui/を指していること
プラグインが次の条件を満たすことを確認してください。
- サポートされているケイパビリティのみを宣言している
ctx.assetsを使用していない- ホスト UI コンポーネントのスタブをインポートしていない
- UI が自己完結している
routePathをpageスロットでのみ使用している
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 パッケージを使ったデプロイの案内を優先する