attach-cli について
attach CLI でメディアをアップロードし、公開 URL を返すスキルです。人間向けと GitHub App エージェント向けの手順を分け、認証情報の扱いも定めています。
主な機能
- 01attach CLI によるメディアアップロード
- 02プレビュー URL と raw URL の返却
- 03dry-run による検証
- 04人間向けデバイスコードログイン
- 05GitHub App エージェント登録手順
活用シーン
- 01プレビュー URL によるアップロードメディアの共有
- 02アップロードメディアの Markdown 埋め込み
- 03削除前の対象 URL 検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ uinaf/ attach --skill attach-cliインストール後、Claude Code で/attach-cliを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/agent.mdhuman.md詳細
attach-cli
メディアを attach Worker にアップロードし、公開 URL を返します。人間にはインストール済みの CLI を優先して使用し、JWT 登録を使用するのは GitHub App エージェントのみです。
CLI を必須とする(人間向け)
command -v attach || command -v gh
attach --help 2>/dev/null || gh attach --help 2>/dev/null || true
attach が見つからない場合は、処理を中断し、ユーザーに承認済みの方法
(brew install uinaf/tap/attach、npm i -g @uinaf/attach-cli、または
gh extension install uinaf/gh-attach)でインストールするよう依頼してください。
このスキルからインストーラーをダウンロードしないでください。curl/fetch を使ったアップロード
スクリプトを作成しないでください。gh attach … は同じバイナリとして扱い、gh auth は決して変更しないでください。
人間向けワークフロー
ホストされている https://attach.uinaf.dev サービスには、公開 GitHub App クライアント
ID がバンドルされているため、attach login に環境設定は不要です。カスタムの
ATTACH_API_BASE を使用する場合は、デプロイ先独自の ATTACH_GITHUB_CLIENT_ID
(GitHub App の設定)が必要です。このカスタム上書きがない場合に限り、処理を中断して依頼してください。
attach login- CLI が検証 URL とデバイスコードを出力したら、両方を対象のユーザーにすぐに伝え、 ユーザーが認証する間はログイン処理を実行したままにします。短時間のみ有効なコードは、ヘッドレス環境の制約を越えるために必要です。
attach put <file> [--repo owner/name] [--pr N]:デフォルトはプレビュー/p/…。 生データ用/o/…には--url、埋め込みには--markdown、API 本文には--jsonを使用します。--dry-runを追加すると、認証情報やネットワークリクエストなしでローカルに検証できますattach delete <url-or-key>を実行し、その後curl -sI <url>→ 成功とする前に 404/410 を確認します- 認証情報の使用が終わったら
attach logout
機械可読なコマンド仕様を確認するには attach help --json を使用します。構造化された結果とエラーが必要な場合は、コマンドに --json を追加します。削除対象を実行前に検証して正規化するには、
attach delete <url-or-key> --dry-run を使用します。
許可リストによる拒否またはログイン失敗が発生した場合は、阻害要因を報告して処理を中断してください。
エージェント向けワークフロー(GitHub App)
JWT クレーム、ヘッダーファイルを使った HTTP、シークレットの取り扱い:
references/agent.md。Worker の
AGENT_REGISTRY に App の公開鍵が必要です。App PEM はエージェントのシークレットストアに保管し(チャットには決して記載しないでください)。
- JWT に署名します:
iss=attach:<app_id>、aud= 公開ホスト、exp≤120s、新しいjti - ヘッダーファイルを介して Authorization を指定し、
POST /v1/enroll/agentを実行します(argv には決して渡さないでください)。 JSON はプロセス内で解析し、tokenはメモリまたはシークレットストア内だけに保持します - 同じ方法で
PUT /v1/objectsを実行します。JSON にurlとpreview_urlの両方が含まれる場合に限り成功とします - put が 401 になった場合:一度だけ再登録(新しい
jti)して put を再実行します。それでも失敗した場合はハードフェイルします
厳守事項
att_キーのみでアップロードし、GitHub トークン/PAT/ghs_/インストールトークンは決して使用しないでください- ログインのデバイスコードは、有効なログインフロー中に対象のユーザーにのみ伝えてください。 ログ、issue、コミット、PR、その他の公開または永続的な成果物には決して記載しないでください
- App PEM や
att_値(登録 JSON を含む)を決して出力しないでください - プレビュー URL を優先し、コンシューマーが埋め込みを必要とする場合に限り
--markdown/生データのurlを使用してください
put が URL を返したとき、削除済みであることを確認できたとき、またはインストール、カスタムクライアント ID、許可リスト、レジストリ、認証に関する問題で処理が妨げられたときは、そこで中断してください。結果の URL または正確な阻害要因を報告してください。