speed-budgetslisted
Install: claude install-skill app-vitals/shipwright
# speed-budgets skill
## Purpose
Encode speed as a first-class design constraint, not an emergent property. Slow tests are not run; tests not run are not coverage.
## The default budgets
| Layer | Per-test 95p target | Per-test hard cap | Full-layer suite target |
|---|---|---|---|
| Unit | <50 ms | <200 ms | <30 s |
| Integration | <2 s | <10 s | <3 min |
| Smoke | <5 s | <15 s | <30 s sequential / <60 s full |
| E2E | <30 s | <90 s | <10 min |
| Full PR pipeline | — | — | **<15 min** |
| Canary suite | — | — | **<60 s** |
A repo may tighten budgets in Phase 2 (`test-system.md`). It may never loosen them below these defaults — that's the point of "default."
**Source of truth:** the per-layer speed budgets below are this skill's own content, but the testing-domain principle that justifies them — `t6_layer_speed_mismatch` — lives in `references/principles.md`. Tests must sit in the correct speed tier; a test exceeding its layer's hard cap is at the wrong layer regardless of correctness. Treat `references/principles.md` as canonical.
## Rationale baked in
### Why speed = trust
The closer to the keystroke, the more trustworthy the validation:
- Unit suite <30s → runs on every save
- Layer suite <3min → runs before every commit
- Pipeline <15min → runs before every push
- Pipeline >20min → engineers route around it
Autonomous programming cannot tolerate "route around." The feedback loop must be tight enough that the agent gets a verdict in seconds, not minutes.
### Wh