Create beautiful art in your GitHub contribution graph! Turn your commit history into ASCII art that displays on your GitHub profile.
- π¨ Create ASCII art in your GitHub contribution graph
- π Automatic date calculation - finds optimal starting points (Sundays for alignment)
- π Live preview - see what your art will look like before creating commits
- π€ Extended character set - supports uppercase, lowercase, numbers, and special characters
- πͺ Flexible configuration - customize spacing, commits per day, and more
- π Modern tooling - uses UV package manager for fast, reliable dependency management
- π Calendar view - visualize your commit pattern week by week
- π― Smart alignment - automatically aligns with GitHub's contribution grid
# Install UV if you haven't already
pip install uv
# Clone the repository
git clone https://github.com/alemazzo/github-artist.git
cd github-artist
# Install the package
uv pip install -e .git clone https://github.com/alemazzo/github-artist.git
cd github-artist
pip install -e .# Preview text before creating commits
github-artist preview "HELLO"# Create art in your GitHub contribution graph
github-artist create your-username your-repo "HELLO"# List all supported characters
github-artist chars
# Show preview of all characters
github-artist chars --show-allThe simplest way to create GitHub art:
github-artist create <username> <repo> <text>Example:
github-artist create alemazzo my-art-repo "CODE"Customize your art with various options:
github-artist create alemazzo my-art-repo "HELLO" \
--start-date 2024-01-01 \
--spacing 2 \
--commits 3 \
--protocol ssh \
--yesgithub-artist create <username> <repo> <text> [OPTIONS]Arguments:
username- Your GitHub usernamerepo- Repository name (will be cloned if it doesn't exist)text- Text to create in the contribution graph
Options:
--start-date YYYY-MM-DD- Start date (default: auto-calculated to next Sunday)--spacing N- Space between letters (default: 1)--commits N- Number of commits per day (default: 1, more commits = darker squares)--weeks-advance N- Start N weeks from now when auto-calculating (default: 1)--protocol {https,ssh}- Clone protocol (default: https)--preview- Preview only, don't create commits--no-push- Create commits but don't push to GitHub-y, --yes- Skip confirmation prompt
Examples:
# Basic usage with auto-calculated start date
github-artist create myusername github-art "HELLO"
# Start on a specific date
github-artist create myusername github-art "2024" --start-date 2024-01-07
# More spacing between letters for better readability
github-artist create myusername github-art "CODE" --spacing 2
# Make darker contributions with more commits per day
github-artist create myusername github-art "HI" --commits 5
# Preview before creating
github-artist create myusername github-art "TEST" --preview
# Skip confirmation prompt (useful for automation)
github-artist create myusername github-art "AUTO" --yesgithub-artist preview <text> [OPTIONS]Arguments:
text- Text to preview
Options:
--start-date YYYY-MM-DD- Start date for preview--spacing N- Letter spacing--commits N- Commits per day--weeks-advance N- Weeks in advance
Examples:
# Simple preview
github-artist preview "HELLO WORLD"
# Preview with custom spacing
github-artist preview "CODE" --spacing 2
# Preview with specific start date
github-artist preview "2024" --start-date 2024-01-07github-artist chars [OPTIONS]Options:
--show-all- Show visual preview of all characters
Examples:
# List supported characters
github-artist chars
# Show preview of each character
github-artist chars --show-allGitHub Artist supports:
- Uppercase letters: A-Z
- Lowercase letters: a-z
- Numbers: 0-9
- Special characters: . , ! ? - _ + = : ; ' " ( ) [ ] / \ @ # & < >
- Symbols: β€ β πΎ (Among Us character)
Use github-artist chars to see the complete list!
github-artist create myusername greeting-repo "HELLO"Output preview:
β β βββββ β β βββββ
β β β β β β β
ββββ ββββ β β β β
β β β β β β β
β β βββββ βββββ βββββ
github-artist create myusername code-art "CODE" --spacing 2 --commits 3github-artist create myusername year-2024 "2024" --start-date 2024-01-07github-artist create myusername lowercase-art "hello world" --spacing 1# Create Among Us character art
github-artist create myusername among-us-art "πΎ" --commits 5
# Preview it first
github-artist preview "πΎ"Create a configuration file for reusable settings:
github-artist config --exampleThis creates github-artist-config.json:
{
"username": "your-username",
"repo_name": "github-art",
"protocol": "https",
"text": "HELLO",
"letter_spacing": 1,
"commits_per_day": 1,
"auto_calculate_start": true,
"weeks_in_advance": 1,
"preview_only": false,
"auto_push": false
}-
Start on Sundays: The auto-calculated start date always picks a Sunday for perfect alignment with GitHub's weekly grid.
-
Preview first: Always use
github-artist previewto see how your art will look. -
Letter spacing: Use
--spacing 2for better readability with longer text. -
Commits per day: Higher values (3-5) create darker squares, making the art more visible.
-
Repository setup: Create a dedicated repository for your GitHub art to keep it separate from your code projects.
- Character Matrix: Each character is defined as a 7x4 (or similar) binary matrix
- Date Calculation: Maps the matrix to dates, column by column (each column = 1 week)
- Commit Creation: Creates commits with backdated timestamps for each active cell
- GitHub Display: GitHub's contribution graph shows the commits as colored squares
github-artist/
βββ github_artist/ # Main package
β βββ __init__.py
β βββ cli.py # Command-line interface
β βββ core/ # Core functionality
β β βββ config.py # Configuration management
β β βββ git_ops.py # Git operations
β β βββ preview.py # Preview and visualization
β βββ data/ # Data files
β β βββ characters.py # Character matrix definitions
β βββ utils/ # Utility modules
β βββ dates.py # Date calculations
βββ main.py # Entry point
βββ pyproject.toml # Project configuration
βββ README.md # This file
# Install development dependencies
uv pip install -e ".[dev]"
# Run tests
pytestEdit github_artist/data/characters.py and add your character matrix to CHAR_MATRICES:
"X": [
[1, 0, 0, 1],
[1, 0, 0, 1],
[0, 1, 1, 0],
[0, 0, 0, 0],
[0, 1, 1, 0],
[1, 0, 0, 1],
[1, 0, 0, 1],
],- GitHub limits: GitHub's contribution graph shows the last year of contributions
- Existing commits: This tool creates new commits and won't affect your existing work
- Repository: Use a dedicated repository for art to avoid cluttering your code projects
- Visibility: Make sure your repository is public for the art to show on your profile
- Time zones: Commits are created with your local timezone
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Add more character matrices
- Improve character designs
- Add emoji support
- Create themes/templates
- Improve documentation
- Write tests
This project is licensed under the MIT License - see the LICENSE file for details.
alemazzo
- GitHub: @alemazzo
- Inspired by the GitHub contribution graph
- Built with β€οΈ and Python
- Powered by UV package manager
- π Report a bug
- π‘ Request a feature
- π Documentation
Happy Drawing! π¨
Made with β€οΈ by the GitHub community