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 get
The 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>&1
The 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.csv
with 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_user
andgit_email
- Or run
./commit-grid init
to 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