Automate GitHub profile achievements. Earn Pair Extraordinaire, Pull Shark, Galaxy Brain, Quickdraw, and YOLO badges through automated workflows.
| Achievement | Description | Tiers |
|---|---|---|
| Pair Extraordinaire | Coauthored commits on merged PRs | 1 / 10 / 24 / 48 |
| Pull Shark | Merged pull requests | 2 / 16 / 128 / 1024 |
| Galaxy Brain | Accepted answers in Discussions | 2 / 8 / 16 / 32 |
| Quickdraw | Close issue within 5 min of opening | 1 |
| YOLO | Merge PR without code review | 1 |
Galaxy Brain and YOLO require a second GitHub account (helper account).
# Clone
git clone https://github.com/n0/GitHub-Achievement-CLI.git
cd GitHub-Achievement-CLI
# Install & build
npm install
npm run build
# Run (setup wizard guides you)
npm start- Node.js 16+
- GitHub Personal Access Token with
reposcope - A repository you own (the tool creates branches/PRs here)
- Go to https://github.com/settings/tokens
- Generate new token (classic)
- Select
reposcope - Copy the token
Run npm start for the interactive menu:
- Run Achievements - Select achievements and tiers to execute
- View Status - Check progress on current achievements
- List Achievements - See all available achievements
- Reset Repo History - Squash commits after completion
- Reconfigure - Change tokens and settings
Created automatically during setup in .env:
GITHUB_TOKEN=ghp_xxx
GITHUB_USERNAME=your-username
TARGET_REPO=your-username/your-repo
# Optional: For Galaxy Brain / YOLO
HELPER_TOKEN=ghp_xxx- Creates temporary branches in your target repo
- Makes commits (with coauthor for Pair Extraordinaire)
- Opens and merges PRs
- Cleans up branches
- Tracks progress locally per account
Each achievement type uses a specific workflow that triggers GitHub's achievement system.
The tool creates many commits/PRs. To clean up:
- Use Reset Repo History from the menu (squashes to single commit)
- To also clear PR history from your profile: delete and recreate the repo
The tool respects GitHub's API limits:
- 2 concurrent operations
- 15 operations/minute (under GitHub's 80 content-requests/min limit)
- Automatic retry with backoff on rate limit errors
MIT