Commit Grid Drawer is a cross-platform CLI tool that automates daily commits to GitHub to "draw" custom patterns on your contribution graph. It provides a modern TUI onboarding experience, flexible scheduling, and multiple strategies for commit intensity.
- Daily automated commits to your GitHub repository
- Pattern drawing support (fixed, random, or CSV-based)
- Interactive onboarding (TUI) to configure repo, user, timezone, and schedule
- Cross-platform scheduling:
- Linux → cron
- macOS → launchd
- Configurable intensity (# of commits per day)
- Lightweight (Go binary, no daemons, instant startup)
- User-friendly CLI with modern UX (Charmbracelet stack)
# Clone the repository
git clone https://github.com/laskydev/commit-grid-drawer.git
cd commit-grid-drawer
# Build the binary
go build -o commit-grid ../commit-grid init./commit-grid enable./commit-grid status./commit-grid run./commit-grid config getThe configuration file is saved in ~/.config/commit-grid-draw/config.yaml:
repo_path: "./drawing" # Path to Git repository
git_user: "your-username" # Git username
git_email: "your-email@example.com" # Git email
timezone: "America/Monterrey" # Timezone (optional)
hour_24: 10 # Execution hour (0-23)
minute: 0 # Execution minute (0-59)
intensity_strategy: "fixed" # Strategy: fixed | random | pattern
intensity_value: 1 # Number of commits per day (for fixed)
pattern_file: "data/pattern.csv" # Pattern file (for pattern)- Language: Go 1.22+
- CLI: spf13/cobra
- TUI: bubbletea, bubbles, lipgloss, glamour, huh
- Configuration: YAML in
~/.config/commit-grid-draw/config.yaml - Scheduler: cron (Linux), launchd (macOS)
- Logs:
- Linux →
~/.local/state/commit-grid-draw/commit-grid.log - macOS →
~/Library/Logs/commit-grid.log
- Linux →
0 10 * * * /path/to/binary/commit-grid run >> ~/.local/state/commit-grid-draw/commit-grid.log 2>&1The file is automatically created in ~/Library/LaunchAgents/com.commitgrid.draw.plist
- Loads user configuration and timezone
- Determines today's intensity (number of commits)
- Ensures the repo is clean
- Updates
data/grid.csvwith today's entry - Makes N commits with messages like:
grid: 2025-08-21 (1/3) - Pushes commits to remote, updating your contribution graph
commit-grid init- Interactive configuration wizardcommit-grid enable- Enables daily schedulercommit-grid disable- Disables daily schedulercommit-grid status- Shows scheduler statuscommit-grid run- Manually executes daily taskcommit-grid config get- Reads current configurationcommit-grid completion- Generates autocompletion script
This error typically indicates a Git problem. Check:
- The repository exists and is valid
- You have permissions to push to remote
- The remote is configured correctly
- Your Git authentication is working
If you need to change the configured Git user:
- Manually edit
~/.config/commit-grid-draw/config.yaml - Change
git_userandgit_email - Or run
./commit-grid initto reconfigure
- Idempotent: enabling replaces previous cron/launchd entries
- Safe: only commits within your chosen repo
- Portable: static Go binary, no CGO
- Logs: all activity is recorded for debugging