Commitdog
zero-bs git helper: smart conventional commit suggestions from staged changes, quick revert of recent commits, GitHub repo init + first push. No AI, no tracking, pure Go single binary.Pick the first one if you want it ultra-short and matching the existing vibe.
Install / Use
/learn @aysdog/CommitdogREADME
commitdog
git workflow CLI. zero dependencies. single binary.
commit messages, branch management, sync, log, PR, release — all from one tool. pure Go stdlib. no AI. no telemetry.
star history
</div>install
Linux / macOS
curl -fsSL https://aysdog.com/install-commitdog.sh | sh
macOS (Homebrew)
brew tap aysdog/commitdog && brew install commitdog
Arch Linux (AUR)
yay -S commitdog-bin
Windows (PowerShell)
irm https://aysdog.com/install-commitdog.ps1 | iex
Windows (winget)
winget install aysdog.commitdog
setup
run once to save your GitHub email and a classic PAT:
commitdog setup
stored at ~/.config/commitdog/config.toml with 0600 permissions. never leaves your machine except when calling the GitHub API.
you need a classic Personal Access Token with repo, write:org, and read:user scopes. get one at github.com/settings/tokens.
commands
| command | what it does |
|---------|-------------|
| commitdog | stage all, suggest 4 commit messages, pick, commit, push |
| commitdog <file> | stage a specific file only |
| commitdog log | interactive git log with colored branch graph |
| commitdog pr | create PR on feature branch · list/review/merge PRs on main |
| commitdog release | bump version, build 5 binaries, changelog, tag, push, GitHub release + checksums |
| commitdog release --changelog-only | preview grouped changelog since last tag |
| commitdog release --init-ci | generate .github/workflows/release.yml |
| commitdog status | project dashboard — commits, PRs, branches, version, issues |
| commitdog branch | interactive branch menu |
| commitdog switch | jump to branch switcher |
| commitdog branch create | create new branch with optional base |
| commitdog branch delete | delete branch locally + optionally remote |
| commitdog merge | merge a branch into current with diff preview |
| commitdog sync | fetch + pull rebase + push — auto-recovers on errors |
| commitdog stash | save, pop, or drop stashes interactively |
| commitdog revert | pick from last 5 commits and revert |
| commitdog init | create GitHub repo, git init, first commit, first push |
| commitdog setup | save GitHub email and PAT |
| commitdog --update | update to latest release |
| commitdog --version | print version |
commit
commitdog
nothing staged. staging all changes...
suggestions:
1 feat(auth): add refreshToken and verifyToken
2 feat: implement refreshToken in auth
3 feat: update auth module
4 feat(auth): add refreshToken, add verifyToken — update middleware
[1/2/3/4] pick, [e] edit, [q] quit › 1
✓ committed: feat(auth): add refreshToken and verifyToken
✓ pushed to origin/main
suggestions come from your actual diff — function names, file types, scope inference. no AI, no network call. pick e to open $EDITOR with the suggestion pre-filled.
secret detection
before showing suggestions, commitdog silently scans your staged diff. if it finds a secret, it blocks and shows exactly where:
✗ possible secret detected in staged changes:
· AWS access key in config.go
var awsKey = "AKIAIOSFODNN7EXAMPLE"
commit anyway? this will push secrets to your remote. [y/N] ›
catches AWS keys, GitHub tokens, private keys, Stripe keys, Slack tokens, generic passwords and API keys. skips _test files automatically.
sync with auto-recovery
commitdog sync
if push fails with HTTPS auth:
push failed: GitHub no longer supports HTTPS password auth.
switch remote to SSH? (git@github.com:you/repo.git) [Y/n] › Y
✓ remote switched to SSH
retrying push...
✓ pushed to origin/main
other auto-recoveries: non-fast-forward, stale remote tag, missing upstream, protected branch.
release with atomic rollback
commitdog release
detected: Go · current version: v0.2.4
1 patch → v0.2.5
2 minor → v0.3.0
3 major → v1.0.0
4 custom
[1/2/3/4/q] pick › 1
changelog preview:
### Bug Fixes
- fix(changelog): native SHA256, clean release body
release v0.2.4 → v0.2.5? [y/n] › y
bumping version in main.go... ✓
building linux/amd64... ✓
building linux/arm64... ✓
building darwin/amd64... ✓
building darwin/arm64... ✓
building windows/amd64... ✓
committing... ✓
tagging v0.2.5... ✓
pushing... ✓
creating GitHub release... ✓
uploading commitdog-linux-amd64... ✓
uploading commitdog-linux-arm64... ✓
uploading commitdog-darwin-amd64... ✓
uploading commitdog-darwin-arm64... ✓
uploading commitdog-windows-amd64.exe... ✓
uploading checksums.txt... ✓
✓ v0.2.5 released
https://github.com/aysdog/commitdog/releases/tag/v0.2.5
every step registers an undo. if anything fails — network cut, GitHub API down, build error — commitdog rolls back every completed step in reverse. your repo is always left clean.
version drift detection — if your version file says v0.2.3 but the latest git tag is v0.2.5, commitdog warns before touching anything.
pull requests
commitdog pr
on a feature branch — interactive diff viewer → create PR. on main — list all open PRs, pick one to review, merge (merge / squash / rebase), or close. deletes the remote branch after merge.
git log
commitdog log

each branch gets its own RGB color. j/k to scroll, a to show all commits, q to quit.
new project
commitdog init
creates a GitHub repo via API, runs git init, makes the first commit, sets the remote, and pushes — no browser needed.
version history
| version | what shipped | |---------|-------------| | v0.2.5 | native Go SHA256 · clean release body · packagemanagers.go separated | | v0.2.4 | secret detection · atomic release rollback · detectAndRecover · version drift check · changelog.go | | v0.2.3 | initial rollback chain · sync hardened | | v0.2.2 | commitdog status · log graph · auto-changelog · SHA256 checksums · Homebrew + AUR automation | | v0.2.1 | Homebrew · AUR · winget · smart version init | | v0.2.0 | commitdog pr · commitdog release | | v0.1.9 | HTTPS→SSH auto-fix · merge commit revert | | v0.1.8 | commitdog log with branch graph | | v0.1.4 | branch / switch / merge / sync / stash / revert |
uninstall
# Linux / macOS
rm $(which commitdog) && rm -rf ~/.config/commitdog
# Windows (PowerShell)
Remove-Item "$env:USERPROFILE\AppData\Local\commitdog.exe"
Remove-Item -Recurse "$env:APPDATA\commitdog"
contributing
open an issue first. if it fits — zero telemetry, pure stdlib, no external deps — we'll merge it.
rule #1: don't add telemetry. not "anonymous" telemetry. not a single ping.
MIT license.
Related Skills
apple-reminders
344.4kManage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
gh-issues
344.4kFetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]
healthcheck
344.4kHost security hardening and risk-tolerance configuration for OpenClaw deployments
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
