Visualizes GitHub contribution graphs as Space Shooter!
Transform your GitHub contribution graph into an epic space shooter game!

A web interface is available for on-demand GIF generation without installing anything locally.
Automatically update your game GIF daily using GitHub Actions! Add this workflow to your repository at .github/workflows/update-game.yml:
name: Update Space Shooter Game
on:
schedule:
- cron: '0 0 * * *' # Daily at midnight UTC
workflow_dispatch: # Allow manual trigger
permissions:
contents: write
jobs:
update-game:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 2 # This is crucial!
- uses: czl9707/gh-space-shooter@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
output-path: 'game.gif'
strategy: 'random'
Then display it in your README:

Github Action V2 Change: : By default, the action amends the previous commit if it only contains the game file with the same commit message. This prevents repository bloat from daily commits. Set
no-amend: trueto disable this behavior.
Needfetch-depth: 2inactions/checkout@v6to have this working.
Action Inputs:
github-token (required): GitHub token for fetching contributionsusername (optional): Username to generate game for (defaults to repo owner)output-path (optional): Where to save the animation, supports .gif or .webp (default: gh-space-shooter.gif)strategy (optional): Attack pattern - column, row, or random (default: random)fps (optional): Frames per second for the animation (default: 40)no-amend (optional): Set to true to disable amending previous commits (default: false)commit-message (optional): Commit message for the updatepip install gh-space-shooter
# Clone the repository
git clone https://github.com/yourusername/gh-space-shooter.git
cd gh-space-shooter
# Install with uv
uv sync
# Or with pip
pip install -e .
Create a GitHub Personal Access Token:
read:userSet up your environment:
# Copy the example env file
touch .env
echo "GH_TOKEN=your_token_here" >> .env
Alternatively, export the token directly:
export GH_TOKEN=your_token_here
Transform your GitHub contributions into an epic space shooter!
# Basic usage - generates username-gh-space-shooter.gif
gh-space-shooter <username>
# Examples
gh-space-shooter torvalds
gh-space-shooter octocat
# Specify custom output filename (GIF or WebP)
gh-space-shooter torvalds --output my-epic-game.gif
gh-space-shooter torvalds -o my-game.webp
# Choose enemy attack strategy
gh-space-shooter torvalds --strategy row # Enemies attack in rows
gh-space-shooter torvalds -s random # Random chaos (default)
# Adjust animation frame rate
gh-space-shooter torvalds --fps 25 # Lower Frame rate, Smaller file size
gh-space-shooter torvalds --fps 40 # Default Frame rate, Larger file size
# Stop the animation earlier
gh-space-shooter torvalds --max-frame 200 # Stop after 200 frames
This creates an animated GIF showing:
# Save raw contribution data to JSON
gh-space-shooter torvalds --raw-output data.json
# Load from previously saved JSON (saves API rate limits)
gh-space-shooter --raw-input data.json --output game.webp
# Combine options
gh-space-shooter torvalds -o game.webp -ro data.json -s column
When saved to JSON, the data includes:
{
"username": "torvalds",
"total_contributions": 1234,
"weeks": [
{
"days": [
{
"date": "2024-01-01",
"count": 5,
"level": 2
}
]
}
]
}
MIT