This is my attempt at recreating some tools that I had written and worked on at my previous companies and side projects. Although inspiration has been taken from what I remember of those tools I am writing these from scratch in golang as an opportunity to learn golang.
review- Creates pull requests with automatic branch naming, PR templates, and commit message updateskeychain- Manages GitHub tokens securely in macOS keychainlint- Code linting and formatting tools
The tools support multiple configuration sources with the following precedence (highest to lowest):
- Command-line flags (highest priority)
- Environment variables (with
REVIEW_prefix) - User-level config files (
~/.git-review.yamlor~/.config/git-review.yaml) - Hardcoded defaults (lowest priority)
Note: For security and consistency, behavioral settings like open-browser, draft, and labels are intentionally NOT configurable per repository. These remain user-level preferences only.
All settings can be configured via environment variables with the REVIEW_ prefix:
# Configure default behavior via environment variables
export REVIEW_OPEN_BROWSER=false
export REVIEW_DRAFT=true
export REVIEW_NO_VERIFY=false
export REVIEW_LABELS="auto-generated,needs-review"Create ~/.git-review.yaml for persistent user preferences:
# User-level preferences (applies to all repositories)
open-browser: false
draft: true
no-verify: false
labels:
- "auto-generated"
- "needs-review"open-browser(boolean, default:true) - Whether to automatically open the pull request in your browser after creationdraft(boolean, default:false) - Whether to create pull requests as drafts by defaultno-verify(boolean, default:false) - Whether to skip pre-push checks by defaultlabels(array/string, default:[]) - Default labels to add to pull requests
# Set user preference to not open browser
echo "open-browser: false" > ~/.git-review.yaml
# Override with environment variable
REVIEW_OPEN_BROWSER=true go run ./review
# Override both with command-line flag
REVIEW_OPEN_BROWSER=true go run ./review --open-browser=false# Use defaults from config files/environment
go run ./review
# Override specific settings
go run ./review --open-browser=false --draft --labels "hotfix,urgent"
# Use environment variables for this session
REVIEW_LABELS="feature,frontend" go run ./review --draft