gh-attach について
gh-attach は、GitHub CLI からファイルをアップロードして添付 URL を取得するスキルです。GitHub の issue や pull request に表示可能なファイルを添付でき、プライベートリポジトリにも対応します。
主な機能
- 01ファイルをアップロードして URL を出力
- 02指定先への添付ファイルのダウンロード
- 03issue や pull request のコメントへの URL 埋め込み
- 04GitHub Cloud と GHES のリポジトリに対応
活用シーン
- 01pull request にスクリーンショットを添付
- 02issue コメントに動画やファイルを追加
- 03プライベートリポジトリの添付ファイルを取得
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ github/ awesome-copilot --skill gh-attachインストール後、Claude Code で/gh-attachを入力して読み込まれたか確認します。
詳細
gh-attach
gh attach は、ファイルを GitHub の内部ユーザー添付ファイルエンドポイント(公開 API はありません)にアップロードして URL を出力します。この URL は、貼り付けた場所で GitHub によって自動的にレンダリングされます(画像/動画/ファイル)。URL の公開範囲はリポジトリの公開範囲を引き継ぐため、プライベートリポジトリへのアップロードは非公開のままです。
前提条件
gh extension list | grep -q 'gh attach' || gh extension install sudosubin/gh-attach
アップロードには gh トークンではなく、GitHub のブラウザーセッション Cookie を使用します。デフォルトでは、gh-attach が対応するブラウザーアカウントを選択できるよう、gh で認証しておく必要があります。誤ったアカウントが選択された場合は、--browser <name> --profile <name> を追加してください。ヘッドレス環境で使用する場合は、GH_ATTACH_SESSION_TOKEN に値が user_session Cookie のみのセッショントークンを設定してください。これはアカウントの完全な認証情報として扱ってください。
手順
1. アップロード:絶対パスを引用符で囲んで指定します。リポジトリ内では -R は省略可能です。GHES の場合は -R host/owner/repo を使用します。コマンドは URL を 1 行で出力します。GitHub が自動的にレンダリングするため(画像/動画/ファイル)、そのまま使用してください。
URL=$(gh attach "$FILE" -R <owner>/<repo>)
2. 埋め込み(常に --body-file - を使用します。例:gh pr comment/edit、gh issue comment/edit)。
printf '## Screenshots\n\n%s\n' "$URL" | gh pr comment <pr> -R <owner>/<repo> --body-file -
3. ダウンロード:保存先を明示的に指定します。プライベートな添付ファイルには、アクティブな gh トークンを使用します。認証に失敗した場合は、ブラウザー Cookie が代替として使われます。
gh attach download "$URL" -O "$FILE"
注意事項
- プライベートリポジトリ:URL は認証された閲覧者にのみ表示されます。匿名での取得では 404 または 403 が返されるのが想定される動作です。
- サイズ調整:URL のみを記載する代わりに、
<img width="800" src="$URL">を埋め込みます。 - GitHub Cloud と GHES で、受け入れ可能なファイル拡張子とコンテンツタイプが決まります。