Quick start
Get a Python repo gated with the same commands you will use in CI and pre-commit.
Requires Python 3.11–3.14 (prefer 3.13). On 3.14, Semgrep and deadcode
skip with an explicit requires_python message instead of crashing.
Try this
pip install shipgate # or: uv add --dev shipgate
shipgate init # scaffolds .shipgate/ (pick yaml or pyproject)
shipgate install # tools for the suite in project policy
shipgate format --target . # write formatters
shipgate check --target . # report-only quality gates
shipgate init is a group: use shipgate init yaml or shipgate init pyproject
when you want to choose the policy form explicitly.
Structural rules (separate from catalog suites):
shipgate refactor check .
Browse last reports (optional):
pip install 'shipgate[server]'
shipgate serve --open
What you should see
| Command | Success | Failure |
|---|---|---|
install |
Tools land under .shipgate/tools/ for env: managed |
Non-zero exit; stderr names the failed install |
format / check |
Exit 0, little or no stderr |
Non-zero exit; findings on stderr in your error-format |
check (always) |
Canonical JSON under .shipgate/reports/ |
Same path; fix findings, do not weaken thresholds to go green |
refactor check |
Exit 0 and [] (or empty hit list) on stdout |
Exit 1 and indented JSON hits |
serve on 127.0.0.1 |
UI at http://127.0.0.1:8765/ |
Bind/port errors on stderr |
Compact findings look like:
src/app.py:12: error: F401 `os` imported but unused
List what your install can run:
shipgate list suites
shipgate list tools
Next
- Day-to-day suites, CI, pre-commit, and report UI unlock → Usage
- Policy file fields and Radon gates → Configuration
refactor fix/ packs /--strict→ Refactor