Files
dev-workflows/skills/dev-router/references/quality-gate.md
EvandroandClaude Opus 5.5 c18d3356ae feat: add the dev-router, lean-code, bugfix/refactor workflows and agents
Every workflow used to run all of its phases for any request, so a one-line
fix paid the cost of a feature. dev-router classifies the request into tiers
0-3 with security triggers that raise the tier, and picks the workflow,
agents and gate tier. Agents get only the tools their role needs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-24 21:45:19 -03:00

3.0 KiB

Quality gate: checagens e configuração

scripts/quality-gate --tier N roda as checagens do nível N e dos níveis abaixo, só sobre os arquivos alterados em relação à branch base (merge-base com origin/HEAD, main ou master). O resultado vai para .dev-workflows/gate.json (ignorado pelo git automaticamente) e uma linha resumida vai para .dev-workflows/log.jsonl.

--list mostra o que rodaria e o que está faltando, sem rodar nada.

Checagens

Nível Checagem Ferramenta Como é detectada
0 lint script lint do package.json, eslint, ruff, go vet, clippy primeira que existir
0 typecheck script typecheck, tsc --noEmit, pyright, mypy tsconfig ou config do checker
0 test script test, pytest (usa .venv se existir), go test, cargo test stack do projeto
0 secrets gitleaks, só nos arquivos alterados binário no PATH
1 diff-coverage diff-cover sobre coverage.xml relatório de cobertura presente
1 semgrep semgrep --config p/default --baseline-commit <base> binário no PATH
1 dead-code (info) knip, vulture binário no projeto ou PATH
2 build script build package.json
2 mutation Stryker nos arquivos alterados; mutmut (paths configurados) config do Stryker ou [tool.mutmut]
2 osv-scanner osv-scanner scan source --recursive . binário no PATH
2 architecture dependency-cruiser, import-linter arquivo de config
2 duplication (info) jscpd binário no projeto
3 trivy vulnerabilidades, misconfig e segredos, HIGH e CRITICAL binário no PATH
3 traceability todo REQ-NNN da spec aparece em algum teste [spec] na config

Estados: pass, fail, unverified (ferramenta ou config ausente, nunca conta como aprovado) e info (só relatório). Veredito: fail se algo falhou; incomplete se algo ficou não verificado; senão pass.

.dev-workflows.toml (opcional, na raiz do projeto)

timeout = 600                 # segundos por checagem

[commands]                    # substitui o que foi detectado
test = "pnpm vitest run --coverage"
lint = "pnpm eslint ."
mutation = "pnpm stryker run --incremental"

[thresholds]
diff_coverage = 80

[coverage]
report = "coverage/cobertura-coverage.xml"

[spec]                        # nível 3: rastreabilidade requisito -> teste
file = "docs/spec.md"
tests = ["tests", "e2e"]

[[check]]                     # checagem extra; kind = "gate" (padrão) ou "info"
name = "lighthouse"
cmd = "npx lhci autorun"
tier = 2

[[check]]
name = "a11y"
cmd = "npx playwright test e2e/a11y.spec.ts"
tier = 2

[[check]]
name = "api-fuzz"
cmd = "schemathesis run http://localhost:8000/openapi.json --checks all"
tier = 2

Frontend, API e carga dependem do app estar de pé, então entram como [[check]] do projeto (Lighthouse CI com orçamento, Playwright com @axe-core/playwright, schemathesis, k6 com thresholds).

DW_GATE=off desliga o hook de Stop numa sessão.