mcpField
G
github-bot

github-bot

github.com/joelhooks開発6537 回インストール1 日前に更新
リポジトリ

github-bot について

github-botは、GitHub AppのIDとインストールトークンを使ってGitHub APIを呼び出すスキルです。認証、ボット名義での操作、リポジトリアクション、ページネーションを説明し、この連携を明示的に使うワークフローを対象とします。

主な機能

  1. 01短時間有効なインストールトークンの生成
  2. 02認証付きGitHub API呼び出し
  3. 03ボットIDでの操作記録
  4. 04リポジトリとプルリクエストの操作
  5. 05ページ分割されたAPI一覧の処理

活用シーン

  1. 01Issue、プルリクエスト、リリースの作成
  2. 02リポジトリ情報の読み取りや更新
  3. 03ページ分割された結果の全件取得

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/joelhooks/joelclaw --skill github-bot

インストール後、Claude Code で/github-botを入力して読み込まれたか確認します。

同梱ファイルscripts/github-token.sh

詳細

GitHub Bot

ShitRat が作成した作業には、インストール済みの shitrat ツールと shitratgit[bot] のアイデンティティを使用してください。以下で説明する従来のアプリは、それを明示的に所有するインテグレーション向けであり、Joel のエージェントが作成するコミット、PR、コメントのデフォルトのアクターではありません。実際のアプリアクセスを確認してください。以前のリポジトリ数は根拠になりません。

joelclawgithub[bot] GitHub App を介して GitHub API を操作します。@joelhooks の個人アカウントと組織アカウントにある 280 以上のすべてのリポジトリにアクセスできるボットアイデンティティとして動作します。

認証

有効期間が 1 時間のインストールトークンを生成します。

TOKEN=$(SKILL_DIR/scripts/github-token.sh)

API 呼び出しで使用します。

curl -H "Authorization: token $TOKEN" -H "Accept: application/vnd.github+json" \
  https://api.github.com/repos/OWNER/REPO/...

トークンの有効期限は 1 時間です。リクエストが 401 を返した場合は、新しいトークンを生成してください。

シークレット

agent-secrets に保存されています(ハードコードしないでください)。

シークレット内容
github_app_idアプリ ID(2867136)
github_app_client_idクライアント ID
github_app_installation_idインストール ID
github_app_pemRSA 秘密鍵

ボットのアイデンティティ

  • コミット:joelclawgithub[bot] <2867136+joelclawgithub[bot]@users.noreply.github.com>
  • すべての API アクション(コメント、レビュー、PR)は joelclawgithub[bot] として表示されます
  • 以下への読み取り/書き込みアクセス権があります:contents、issues、PRs、actions、deployments、environments、secrets、packages、workflows、checks、statuses、hooks、projects

実行記録

書き込みの実行記録には、検証済みの GitHub URL、識別子、コミット SHA、または API レスポンスを使用してください。呼び出し元のワークフローが対応している場合は、正規の OTel を出力し、永続的な決定事項を Brain .svx に記録してください。以前の slog ジャーナルは廃止されています。再作成しないでください。

関連するアクションには create-pr、push-commit、create-issue、merge-pr、create-release、update-workflow があります。

ページネーション

GitHub API は 100 件ごとにページ分割されます。全件を一覧表示するには、次を使用します。

PAGE=1
while true; do
  RESULT=$(curl -s -H "Authorization: token $TOKEN" \
    "https://api.github.com/endpoint?per_page=100&page=$PAGE")
  # process $RESULT
  [ "$(echo "$RESULT" | python3 -c 'import json,sys; print(len(json.load(sys.stdin)))')" -lt 100 ] && break
  PAGE=$((PAGE+1))
done

コメント