Claude
Skills
Sign in
Back

github-bot

Included with Lifetime
$97 forever

Interact with the GitHub API as the joelclawgithub[bot] app. Use when creating PRs, pushing commits, managing issues, checking CI status, listing repos, or any GitHub API operation. Triggers on "create a PR", "push to GitHub", "open an issue", "check CI", "list repos", "merge PR", "GitHub API", or any task requiring programmatic GitHub access. All actions appear as joelclawgithub[bot], not as @joelhooks.

Backend & APIsscripts

What this skill does


# GitHub Bot

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:

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

Use in API calls:

```bash
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

## Logging

Log all GitHub write operations with slog:

```bash
slog write --action "ACTION" --tool "github-bot" --detail "what was done" --reason "why"
```

Actions: `create-pr`, `push-commit`, `create-issue`, `merge-pr`, `create-release`, `update-workflow`, etc.

## Pagination

GitHub API paginates at 100 items. For full listing:

```bash
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
```
Files: 2
Size: 3.4 KB
Complexity: 26/100
Category: Backend & APIs

Related in Backend & APIs