Complete reference for all Goal commands and options.
These options can be used with any Goal command:
| Option | Short | Description |
|---|---|---|
--config PATH |
-c PATH |
Path to goal.yaml config file |
--yes |
-y |
Skip all prompts (run automatically) |
--all |
-a |
Automate all stages including tests, commit, push, and publish |
--upgrade-deps |
-u |
Update project dependencies to latest available versions |
--recursive |
-r |
Scan subfolders for dependency manifests (monorepo support) |
--interactive |
-i |
Ask before processing each subproject during dependency updates |
--dry-run |
Show what would be done without doing it | |
--markdown |
Use markdown output format (default) | |
--ascii |
Use ASCII output format | |
--help |
-h |
Show help message |
--version |
Show version and exit |
Short flags can be combined, e.g. -au, -aur, -aiu.
Run the interactive push workflow.
goal [OPTIONS]Options:
--bump, -b {patch,minor,major}: Version bump type (default: patch)--yes, -y: Skip all prompts (run automatically)--all, -a: Automate all stages including tests, commit, push, and publish--upgrade-deps, -u: Update project dependencies to latest available versions--recursive, -r: Scan subfolders for dependency manifests (monorepo support)--interactive, -i: Ask before processing each subproject during dependency updates--dry-run: Show what would be done without doing it
Examples:
goal # Interactive workflow
goal --bump minor # Interactive with minor bump
goal --yes # Automatic workflow
goal --all # Full automation
goal -au # Full automation + upgrade dependencies
goal -aur # Monorepo: recursive dependency upgrades
goal -aiu # Monorepo: ask per subproject before upgrading
goal --dry-run # Preview changesAdd, commit, tag, and push changes to remote.
goal push [OPTIONS]Options:
--bump, -b {patch,minor,major}: Version bump type (default: patch)--no-tag: Skip creating git tag--no-changelog: Skip updating changelog--no-version-sync: Skip syncing version to project files--message, -m TEXT: Custom commit message--dry-run: Show what would be done without doing it--yes, -y: Skip all prompts--split: Create separate commits per change type--ticket TEXT: Ticket prefix for commit titles
Examples:
goal push # Interactive
goal push --yes # Automatic
goal push --bump minor # Minor version bump
goal push -m "Custom message" # Custom message
goal push --split # Split by type
goal push --no-tag # No git tag
goal push --dry-run # PreviewRun the full goal -a workflow in every git repository with uncommitted
changes under the given paths. Use it from a folder that contains many
independent repositories (a "monorepo of repos"). Clean repositories and
non-git directories are skipped.
goal all [PATHS...]Arguments:
PATHS...: Directories or globs to sweep (default:*— all entries in the current directory).
Behavior:
- Lists the matched dirty projects and asks a single batch confirmation
before running (skipped with
-y/--yes, or with--dry-run). - Runs
goal -ain each project as an isolated subprocess. - Continues past per-project failures; prints a succeeded/failed summary and exits non-zero if any project failed.
Equivalent forms:
goal -a ./*— combining-a/--allwith path arguments routes togoal all.goal auto all,goal auto ./*,goal auto—autois a word-form of the-aflag (sogoal auto all==goal -a all,goal auto==goal -a).
Examples:
goal all ./* # Sweep every dirty sub-repo
goal -a ./* # Same, shorthand
goal auto all # Same; defaults to * (all sub-folders)
goal all ./* --dry-run # Preview, no commits/pushes
goal all ./* -y # Skip the batch confirmation
goal all packages/* # Only repos under packages/Initialize Goal in current repository.
goal init [OPTIONS]Options:
--force, -f: Overwrite existing goal.yaml
Creates:
VERSIONfile with initial versionCHANGELOG.mdwith templategoal.yamlwith auto-detected settings
Examples:
goal init # Initialize if not exists
goal init --force # Regenerate configView or manage user configuration stored in ~/.goal.
goal config [OPTIONS]Options:
--reset: Reset configuration and run setup again--show: Show current configuration (default)
Configuration includes:
- Author name and email (from git config)
- Default license preference
- License classifier for package managers
Examples:
goal config # Show current configuration
goal config --reset # Reset and reconfigureWhat it shows:
======================================================================
📋 Goal User Configuration
======================================================================
Config file: /home/tom/.goal
Current settings:
Author name: Tom Sapletta
Author email: info@softreck.com
License: Apache License 2.0 (Apache-2.0)
💡 Tip: Run 'goal config --reset' to reconfigure
Show current git status and version info.
goal status [OPTIONS]Options:
--markdown/--ascii: Output format (default: markdown)
Shows:
- Current version
- Current branch
- Staged files
- Unstaged/untracked files
Show or bump version.
goal version [OPTIONS]Options:
--type, -t {patch,minor,major}: Version bump type (default: patch)
Examples:
goal version # Show current and next versions
goal version --bump minor # Show next minor versionValidate version consistency across project files, README badges, and published registry versions.
goal check-versions [OPTIONS]Options:
--update-badges: Update README badges if they don't match current version
Behavior:
- Compares local version with registry versions (PyPI, npm, crates.io, RubyGems)
- Validates README badge versions match current version
- Checks version consistency across project files (package.json, pyproject.toml, etc.)
- Warns about mismatches before publishing
Examples:
goal check-versions # Check all versions
goal check-versions --update-badges # Check and update badgesOutput:
🔍 Version Check for v2.1.33
Detected project types: python
📦 Registry Versions:
✅ python: Version 2.1.33 is up to date
🏷️ README Badges:
✅ Badges are up to date
📁 Local Version Files:
✅ pyproject.toml: 2.1.33
✅ All version files are consistent
📋 Summary:
✅ All versions are consistent and ready for publishing!
Publish the current version to package registries.
goal publish [OPTIONS]Options:
--yes, -y: Skip confirmation prompts--dry-run: Show what would be published without doing it
Behavior:
- Detects project type and builds packages if needed
- Uploads only the current version artifacts (not everything in
dist/) - Shows clear error messages for common issues (File already exists, Authentication)
Examples:
goal publish # Interactive
goal publish --yes # AutomaticNote: If a Makefile with a publish target exists, goal publish will use make publish instead.
Generate a smart commit message for current changes.
goal commit [OPTIONS]Options:
--detailed, -d: Generate detailed commit message with body--unstaged, -u: Analyze unstaged changes instead of staged--markdown/--ascii: Output format (default: markdown)--ticket TEXT: Ticket prefix for commit title
Examples:
goal commit # Simple message
goal commit --detailed # Detailed message with body
goal commit --unstaged # Analyze unstaged changesManage goal.yaml configuration.
Show current configuration.
goal config show [OPTIONS]Options:
--key, -k KEY: Show specific config key (dot notation)
Examples:
goal config show # Show full config
goal config show -k project # Show project section
goal config show -k git.commit.strategy # Show specific keyGet a configuration value.
goal config get KEYArguments:
KEY: Configuration key (dot notation)
Examples:
goal config get project.name
goal config get versioning.filesSet a configuration value.
goal config set KEY VALUEArguments:
KEY: Configuration key (dot notation)VALUE: Value to set (JSON parsed for complex types)
Examples:
goal config set git.commit.scope "my-app"
goal config set versioning.bump_rules.minor 100
goal config set versioning.files '["VERSION", "pyproject.toml:version"]'Validate goal.yaml configuration.
goal config validateReturns:
- Success if configuration is valid
- List of errors if invalid
Update goal.yaml based on project detection.
goal config updateUpdates:
- Detected project types
- Version files
- Other auto-detected settings
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General error |
| 2 | Invalid arguments |
| 3 | Git repository not found |
| 4 | Configuration error |
| 5 | Tests failed (when using --yes) |
Interactive guided setup for new projects.
goal wizard [OPTIONS]Options:
--reset: Reset and reconfigure everything--skip-git: Skip git repository setup--skip-user: Skip user configuration--skip-project: Skip project configuration
Description: The wizard walks you through complete project setup:
- Git repository initialization and remote configuration
- User configuration (name, email, license preference)
- Project configuration (name, description, versioning strategy)
- Commit message strategy and changelog settings
Examples:
goal wizard # Full interactive setup
goal wizard --skip-git # Skip git setup
goal wizard --reset # Reset all configurationManage project licenses.
goal license <SUBCOMMAND> [OPTIONS]Subcommands:
Create a LICENSE file with the specified license.
Options:
--fullname, -n TEXT: Copyright holder full name--year, -y INTEGER: Copyright year--force, -f: Overwrite existing LICENSE file
Examples:
goal license create MIT --fullname "John Doe"
goal license create Apache-2.0 --year 2024Update existing LICENSE file.
Options:
--license, -l TEXT: New SPDX license ID--fullname, -n TEXT: New copyright holder name--year, -y INTEGER: New copyright year
Validate the LICENSE file.
Show information about a license.
Check compatibility between two licenses.
List available license templates.
Options:
--custom: Show only custom templates
Add or show custom license templates.
Options:
--file, -f PATH: Template file path to add
Manage project authors and team members.
goal authors <SUBCOMMAND> [OPTIONS]Subcommands:
List all project authors.
Add an author to the project.
Options:
--role, -r TEXT: Author role or title--alias, -a TEXT: Short alias for reference
Examples:
goal authors add "Jane Doe" jane@example.com --role "Developer"
goal authors add "Bob Smith" bob@company.com --alias "bob"Remove an author from the project.
Update an author's information.
Options:
--name, -n TEXT: New name--role, -r TEXT: New role--alias, -a TEXT: New alias
Import authors from git history.
Export authors to CONTRIBUTORS.md.
Find an author by name, email, or alias.
Show current user's author information.
Generate a co-author trailer for commit messages.
Add co-authors to commits using the --co-author flag:
goal commit --co-author "Jane Doe <jane@example.com>"
goal commit --co-author "Jane <jane@example.com>" --co-author "Bob <bob@example.com>"The co-author trailers are automatically formatted as:
Co-authored-by: Jane Doe <jane@example.com>
Co-authored-by: Bob Smith <bob@example.com>
| Variable | Description |
|---|---|
PYPI_TOKEN |
PyPI authentication token |
NPM_TOKEN |
npm authentication token |
CARGO_REGISTRY_TOKEN |
Cargo registry token |
GITHUB_TOKEN |
GitHub token for releases |
Goal looks for goal.yaml in this order:
- Path specified with
--config - Current directory
- Parent directories (up to git root)
goal # Interactive commit and push
### CI/CD Pipeline
```bash
goal --all --bump patch # Full automation
goal push -m "fix: critical bug" --yesgoal push --no-tag --no-changelog # No release on feature branchgoal push --split # Separate commits by typegoal -c staging.yaml --all # Use staging config- Configuration Guide - Detailed configuration options
- Examples - Practical examples
- Troubleshooting - Common issues