paperclip-page について
paperclip-page は、設定済みの Paperclip pages ホストに静的ディレクトリを公開するスキルです。公開前に構成を検証し、指定されたバケットとプレフィックスに書き込みます。更新時にリモートオブジェクトは削除しません。
主な機能
- 01静的ディレクトリの公開
- 02公開前のディレクトリ構成検証
- 03URL スラッグの指定または自動導出
- 04更新時は上書きのみでリモート削除なし
- 05シンボリックリンクと隠しファイルの拒否
活用シーン
- 01ルートに index.html がある静的サイトの公開
- 02固定 URL パスでのページ公開
- 03元のソースディレクトリからの安全な更新
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ paperclipai/ paperclip --skill paperclip-pageインストール後、Claude Code で/paperclip-pageを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdscripts/publish.shpublish.test.mjs詳細
Paperclip ページ
設定済みの Paperclip ページホスト(例:https://pages.paperclip.ing/<slug>/)に静的ディレクトリを公開するには、このスキルを使用します。
要件
- ソースディレクトリのルートに
index.htmlが含まれていること。 - ライブ公開には、
awsCLI v2、curl、jqが PATH 上で利用可能であること。 - 環境変数が設定されていること:
PAPERCLIP_PAGE_BUCKETPAPERCLIP_PAGE_BASE_URLAWS_REGIONPAPERCLIP_PAGE_AWS_ACCESS_KEY_IDおよびPAPERCLIP_PAGE_AWS_SECRET_ACCESS_KEYに Paperclip Secrets のページアップローダー認証情報が設定されていること
- 任意の環境変数:
PAPERCLIP_PAGE_DEFAULT_PREFIXPAPERCLIP_PAGE_AWS_PROFILE(名前空間付きキーのペアの代わりに使用)PAPERCLIP_PAGE_AWS_SESSION_TOKEN(名前空間付きキーのペアと併用する場合のみ)
ページアップローダーの認証情報をグローバルな AWS_ACCESS_KEY_ID /
AWS_SECRET_ACCESS_KEY として設定しないでください。静的な環境変数キーはすべての AWS SDK で AWS_PROFILE より優先されるため、グローバル設定の値によって、エージェントの実行中にすべてのプロセスでホストの ID が気付かれないまま置き換えられます。名前空間付き変数を使うと、アップローダーの ID をこのヘルパーのみに限定できます。PAPERCLIP_PAGE_AWS_* の認証情報変数が設定されていない場合は、環境に応じた認証情報チェーンが引き続きフォールバックとして機能します。
ワークフロー
- ソースディレクトリを確認し、公開用の静的コンテンツのみであることを確認します。
scripts/publish.sh <dir> --dry-runを実行して、ローカル構造を検証し、解決された URL とプレフィックスを確認します。- スラッグを選択します:
- ユーザーから固定の URL パスが指定されている場合は、
--slug <slug>を使用します。 --slugを省略すると、ソースディレクトリ名からスラッグが生成されます。
- ユーザーから固定の URL パスが指定されている場合は、
- 公開します:
.agents/skills/paperclip-page/scripts/publish.sh ./site --slug my-page
- 表示された公開 URL と S3 プレフィックスを課題またはユーザーに返します。
更新ワークフロー
更新では、既存オブジェクトへの追加上書きのみを行います。このヘルパーがリモートオブジェクトを削除することはありません。
.agents/skills/paperclip-page/scripts/publish.sh ./site --slug my-page --update
対象のプレフィックスがすでに存在する場合、--update を実行するには、同じソースディレクトリから以前に公開した際に生成された ./site/.paperclip-page/state.json によるローカル所有権の証明が必要です。その状態ファイルがない場合は、別のページを上書きせず、新しいスラッグを作成してください。
安全規則
- 公開コンテンツのみを公開してください。秘密情報、顧客データ、社外秘の社内資料、認証情報、内部ログは公開しないでください。
- AWS のシークレット値を表示しないでください。
- このスキルからバケットポリシー、IAM、DNS、CloudFront、ACM の設定を変更しないでください。セットアップは公開ヘルパーではなく、オペレーター用の手順書に従って行います。
- 設定済みのバケットとプレフィックスの外部にはアップロードしないでください。
aws s3 sync --deleteを使用したり、v1 でs3:DeleteObjectを必須にしたりしないでください。- このヘルパーは
--no-follow-symlinksを強制し、ソースにシンボリックリンクがある場合は失敗します。 - このヘルパーは、独自の
.paperclip-page/state.jsonを除く隠しファイルとドットセグメントのパスを拒否します。 - スラッグとプレフィックスの各セグメントには、小文字の ASCII 文字、数字、ハイフンのみを使用してください。
404.htmlなどのサイト全体のルートオブジェクトは、オペレーターが管理してください。公開先は常に<slug>/...または<default-prefix>/<slug>/...です。
トラブルシューティング
Slug already exists:別のスラッグを選ぶか、.paperclip-page/state.jsonを含む元のソースディレクトリから--updateを使用してください。Missing index.html:先に静的サイトをビルドするか、ルート HTML ファイルを含むディレクトリをヘルパーに指定してください。Found symlink:公開前にシンボリックリンクを実ファイルに置き換えてください。AccessDenied:アップローダーの IAM ポリシーで、設定済みバケット/プレフィックスに対するListBucket、GetObject、PutObjectが許可されていることと、エージェントに Paperclip Secrets が渡されていることを確認してください。- 公開 URL の検証に失敗した場合:CloudFront のデプロイ/DNS、オブジェクトの存在、およびディストリビューションがプライベートな S3 REST オリジンで HTTPS を使用していることを確認してください。
オペレーターによるセットアップ、AWS ポリシーの例、認証情報のローテーション、インストール/アタッチ用コマンドについては、このスキルと同じ場所にある README.md を参照してください。