gh-space-shooter 🚀
Transform your GitHub contribution graph into an epic space shooter game!
Usage
Onetime Generation
A web interface is available for on-demand GIF generation without installing anything locally.
GitHub Action
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.gifor.webp(default:gh-space-shooter.gif)strategy(optional): Attack pattern -column,row, orrandom(default:random)fps(optional): Frames per second for the animation (default:40)no-amend(optional): Set totrueto disable amending previous commits (default:false)commit-message(optional): Commit message for the update
From PyPI
pip install gh-space-shooter
From Source
# 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 .
Setup
-
Create a GitHub Personal Access Token:
- Go to https://github.com/settings/tokens
- Click "Generate new token (classic)"
- Select scopes:
read:user - Copy the generated token
-
Set 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
CLI Usage
Generate Your Game Animation (GIF or WebP)
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:
- Your contribution graph as enemies (more contributions = stronger enemies)
- A Galaga-style spaceship battling through your coding history
- Enemy attack patterns based on your chosen strategy
- Smooth animations with randomized particle effects
- Your contribution stats displayed in the console
Advanced Options
# 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
Data Format
When saved to JSON, the data includes:
{
"username": "torvalds",
"total_contributions": 1234,
"weeks": [
{
"days": [
{
"date": "2024-01-01",
"count": 5,
"level": 2
}
]
}
]
}
License
MIT
Release files for gh-space-shooter 2.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gh_space_shooter-2.0.5.tar.gz | 11.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gh_space_shooter-2.0.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.2 MB
Release files / gh_space_shooter-2.0.5.tar.gz
| Download URL | gh_space_shooter-2.0.5.tar.gz |
|---|---|
| Size | 11.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
929c8a4e6280244c63d079b863d5bfc6435039a9bff5adddf115e4b3d949cb55
|
|
BLAKE2b-256 checksum How to use checksums |
c901522a8c44f0391a6ce44653e00e8854bd16ad85e91e4af1207d23e98d8464
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.
Transparency logRelease files / gh_space_shooter-2.0.5-py3-none-any.whl
| Download URL | gh_space_shooter-2.0.5-py3-none-any.whl |
|---|---|
| Size | 31.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
80d281cfd3e31dc37db220752630fca4caf09b9150382cc884805ae92405aeaf
|
|
BLAKE2b-256 checksum How to use checksums |
b623bf26001539e2a39a6f608188cf6aaa7ab0e27fb7e10eb148f55d76524be3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.
Transparency log