About github-bot
github-bot is a skill for making GitHub API requests through a GitHub App identity and its installation token. It documents authentication, bot attribution, repository actions, and pagination for workflows that explicitly use this integration.
Key features
- 01Generate short-lived installation tokens
- 02Make authenticated GitHub API calls
- 03Attribute actions to the bot identity
- 04Support repository and pull request actions
- 05Handle paginated API listings
Use cases
- 01Creating issues, pull requests, or releases
- 02Reading or updating repository resources
- 03Listing all results from paginated endpoints
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ joelhooks/ joelclaw --skill github-botAfter installing, type/github-botin Claude Code to confirm it loaded.
Bundled filesscripts/github-token.sh
Details
From the project READMEGitHub Bot
For ShitRat-authored work, use the installed shitrat tooling and shitratgit[bot] identity. The legacy app described below is for integrations that explicitly own it, not a default actor for Joel’s agent-authored commits, PRs, or comments. Discover actual app access; old repository counts are not authority.
Interact with GitHub API via the joelclawgithub[bot] GitHub App. Acts as a bot identity with access to all 280+ repos across @joelhooks personal and org accounts.
Authentication
Generate a 1-hour installation token:
TOKEN=$(SKILL_DIR/scripts/github-token.sh)
Use in API calls:
curl -H "Authorization: token $TOKEN" -H "Accept: application/vnd.github+json" \
https://api.github.com/repos/OWNER/REPO/...
Token expires in 1 hour. Generate a new one if a request returns 401.
Secrets
Stored in agent-secrets (do not hardcode):
| Secret | Content |
|---|---|
github_app_id | App ID (2867136) |
github_app_client_id | Client ID |
github_app_installation_id | Installation ID |
github_app_pem | RSA private key |
Bot Identity
- Commits:
joelclawgithub[bot] <2867136+joelclawgithub[bot]@users.noreply.github.com> - All API actions (comments, reviews, PRs) show as
joelclawgithub[bot] - Has read/write access to: contents, issues, PRs, actions, deployments, environments, secrets, packages, workflows, checks, statuses, hooks, projects
Receipts
Use the verified GitHub URL, identifier, commit SHA, or API response as the write receipt. Emit canonical OTel when the calling workflow supports it, and capture durable decisions in Brain .svx. The former slog journal is retired; do not recreate it.
Relevant actions include create-pr, push-commit, create-issue, merge-pr, create-release, and update-workflow.
Pagination
GitHub API paginates at 100 items. For full listing:
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