Contributing to the Shopware CLI
August 20, 2026 ยท View on GitHub
Thanks for your interest in contributing.
Before opening a pull request
Small fixes can go straight to a PR. Examples:
- typo fixes
- broken links
- small documentation improvements
- obvious bug fixes with a clear test or reproduction
For anything larger, please open an issue first and describe what you want to change before starting implementation. This includes:
- new features, commands, or subcommands
- changes to existing command behavior
- changes to flags, arguments, defaults, or output format
- larger refactors
This helps us confirm the direction, avoid duplicate work, and keep the project maintainable.
A draft PR is welcome if it helps explain the idea, but feature PRs should generally be discussed before they are reviewed or merged.
Pull requests
When opening a PR, please include:
- what changed
- why it changed
- how it was tested
- any related issue or discussion
Please keep PRs focused. Smaller PRs are easier to review and merge.
Development
Branch from main and target main with your pull request.
Before submitting, run the relevant checks locally:
go test ./...
golangci-lint run ./...
Add or update tests for bug fixes and new behavior.
Using mise
This repository includes a mise.toml file for managing the recommended Go
and golangci-lint versions and for providing convenient development tasks.
After installing mise, set up the project tools with:
mise install
You can then run the complete local check suite with:
mise run check
Individual tasks are also available:
mise run format # Format Go source files
mise run format-check # Check Go formatting (gofmt and gci) without changing files
mise run build # Build the shopware-cli binary
mise run test # Run the network-isolated test suite (Linux/macOS only)
mise run test-unit # Run Go tests without the sandbox wrapper (works everywhere)
mise run vet # Run go vet
mise run lint # Run golangci-lint
For machine-specific settings, create mise.local.toml. This file is ignored
by Git and should not contain secrets that belong in a dedicated secret
manager.
Reviews
Maintainers may ask for changes, suggest a different direction, or decline a PR if the approach was not discussed beforehand. That is not personal; it is how we keep the project consistent and sustainable.
Releases
Releases happen from the default main branch with everything included there at the time of release.
The specific release process is explained in RELEASING.md and done on demand by the maintainers.