What this is
Skylos Quality Gate is a ratchet: it does not punish you for legacy tech debt. It only blocks the changes that make things worse.“We ignore your existing 500 bugs. We only block you if you add Bug #501.”That means you can ship features and steadily improve code quality over time.
Key concepts
The Ratchet
Skylos compares the current scan against a baseline (usually yourmain branch).
- Legacy issues: already existed → shown, but don’t block
- New issues: introduced by your change → can block the gate
Governance actions
When a new issue appears, Skylos supports three resolution paths:- Fix (preferred): change code and re-run the scan
- Suppress a specific finding (adult workflow): mark one finding as False Positive / Accept Risk so it stops blocking
- Emergency Override (last resort): unblock the entire scan with a logged reason (for hotfixes)
Who does what (roles)
Developer
- Runs Skylos locally before pushing
- Fixes issues when possible
- If blocked, uses the dashboard link to resolve (or escalates)
Tech Lead / Security Lead
- Reviews new findings introduced by PRs
- Uses per-finding suppression for true false positives (with a reason, optional expiry)
- Keeps overrides rare and justified
CTO / Admin
- Defines policy (strict mode, who can override/suppress, audit requirements)
- Enables “no-bypass” rules for production branches
- Reviews audit logs and recurring suppressions
Free vs Pro/Enterprise
| Capability | Free (Local) | Pro / Enterprise (Cloud) |
|---|---|---|
| Ratchet baseline | ✅ Local history / local baseline | ✅ Cloud baseline on main (team-wide) |
| Blocking behavior | ✅ CLI exits non-zero (fail the step) | ✅ CLI can wait/poll for approval (unblocks instantly) |
| Override method | --force (manual / insecure) | Dashboard override button (audit logged) |
| Per-finding suppression | Limited / local-only | ✅ Persistent + team-governed + audited |
| Strict mode | ❌ Anyone can bypass | ✅ Admin can disable --force |
| CI/CD integration | Basic fail/pass | ✅ GitHub checks / commit status turns green on approval |
The workflow (at a glance)
When you wrap your deploy/test command with Skylos, Skylos becomes the “bouncer”:Quickstart
1) Install
2) Run locally (recommended before every push)
What a failure looks like
If Skylos detects new violations, it blocks and prints an action link:What happens next depends on your tier
- Free: CLI exits with a failure code (your script stops)
- Pro/Enterprise: CLI can wait/poll until the scan becomes approved
How to resolve (the “adult” way)
Option A — Fix the code (preferred)
- Open the scan
- Click the finding to see the snippet and context
- Fix the code
- Re-run:
- Gate passes when there are 0 new unsuppressed findings
Option B — Suppress a specific finding (False Positive / Accept Risk)
Use this when the scanner is wrong or you accept the risk temporarily (hotfix pressure, mitigating controls exist, etc). Developer flow- Click the scan link
- Select the blocking finding
- Click Suppress
-
Choose a reason type:
- False Positive (scanner is incorrect)
- Accept Risk (known risk accepted temporarily)
- Add a reason (and optionally an expiry like “30 days”)
- That specific finding stops blocking the gate
- The scan updates immediately
- In Pro/Enterprise, your CLI wakes up and continues
Option C — Emergency Override (last resort)
Use only when you must ship and can’t triage properly.- Click Emergency Override
- Enter a reason (required)
- Entire scan becomes “passed”
- Audit log records who approved it and why
Strict Mode (Enterprise)
Strict Mode disables local bypass flags so production controls can’t be sidestepped.-
If Strict Mode is on:
--forceis rejected- Approval must happen via dashboard governance
Configuration
pyproject.toml
Recommended policy defaults
Formain / production deploys
- Strict Mode: ON
- Allow override: CTO/Security Lead only
- Require suppression reasons: ON
- Prefer suppression over override: ON
- Optional: suppression expiry default 30–90 days
- Strict Mode: optional
- Allow suppression for false positives: ON
- Allow override: optional (but track it)
CI/CD example (GitHub Actions)
Pro workflow behavior
- If the gate fails, the job can wait for dashboard approval
- When a lead suppresses/overrides, the PR/check turns green and the job continues
FAQ
”Will this block me because my repo already has 500 issues?”
No. The ratchet only blocks new issues introduced by your change.”When should we suppress vs override?”
- Suppress when it’s a real false positive or a controlled accepted risk.
- Override only when you must ship and can’t triage (rare).
”What’s the biggest mistake teams make?”
Using override as the default. It defeats the point of the gate. Suppression is the safe release valve.Recommended rollout plan
- Turn on the ratchet in “warn mode” for 1–2 weeks (non-blocking)
- Enable blocking on
main - Enable Strict Mode for production
- Train leads on suppression vs override
- Track suppressions with expiry to force periodic re-review
