Install any skill in seconds. Free to start, no credit card required.
Get Started Free →- Before and after a PR to measure performance impact
.claude/skills/loulanyue-benchmark-performance-baseline-regression-detection/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 53% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -46% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -51% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -68% | 0% |
Measures real browser metrics via browser MCP:
1. Navigate to each target URL
2. Measure Core Web Vitals:
- LCP (Largest Contentful Paint) — target < 2.5s
- CLS (Cumulative Layout Shift) — target < 0.1
- INP (Interaction to Next Paint) — target < 200ms
- FCP (First Contentful Paint) — target < 1.8s
- TTFB (Time to First Byte) — target < 800ms
3. Measure resource sizes:
- Total page weight (target < 1MB)
- JS bundle size (target < 200KB gzipped)
- CSS size
- Image weight
- Third-party script weight
4. Count network requests
5. Check for render-blocking resourcesBenchmarks API endpoints:
1. Hit each endpoint 100 times
2. Measure: p50, p95, p99 latency
3. Track: response size, status codes
4. Test under load: 10 concurrent requests
5. Compare against SLA targetsMeasures development feedback loop:
1. Cold build time
2. Hot reload time (HMR)
3. Test suite duration
4. TypeScript check time
5. Lint time
6. Docker build timeRun before and after a change to measure impact:
/benchmark baseline # saves current metrics
# ... make changes ...
/benchmark compare # compares against baselineOutput:
| Metric | Before | After | Delta | Verdict |
|--------|--------|-------|-------|---------|
| LCP | 1.2s | 1.4s | +200ms | ⚠ WARN |
| Bundle | 180KB | 175KB | -5KB | ✓ BETTER |
| Build | 12s | 14s | +2s | ⚠ WARN |Stores baselines in .ecc/benchmarks/ as JSON. Git-tracked so the team shares baselines.
/benchmark compare on every PR/canary-watch for post-deploy monitoring/browser-qa for full pre-ship checklist| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→pass | 15,776 | 14,544 | -8% | 1 | 1 | 0% | 3,286 | 3,591 | +9% | 0 | 0 | — |
case-01 | fail→pass | 11,970 | 13,951 | +17% | 1 | 1 | 0% | 2,041 | 3,114 | +53% | 0 | 0 | — |
case-03 | fail→fail | 6,259 | 11,474 | +83% | 1 | 1 | 0% | 1,015 | 2,445 | +141% | 0 | 0 | — |
case-04 | pass→pass | 12,617 | 10,802 | -14% | 1 | 1 | 0% | 1,817 | 1,729 | -5% | 0 | 0 | — |
case-05 | pass→pass | 8,074 | 2,361 | -71% | 1 | 1 | 0% | 1,345 | 1,028 | -24% | 0 | 0 | — |
case-06 | fail→pass | 23,330 | 4,656 | -80% | 1 | 1 | 0% | 2,670 | 1,454 | -46% | 0 | 0 | — |
case-07 | fail→pass | 12,670 | 2,868 | -77% | 1 | 1 | 0% | 2,112 | 1,032 | -51% | 0 | 0 | — |
case-13 | fail→pass | 17,718 | 2,280 | -87% | 1 | 1 | 0% | 2,968 | 957 | -68% | 0 | 0 | — |
case-08 | pass→pass | 12,616 | 9,301 | -26% | 1 | 1 | 0% | 2,032 | 2,063 | +2% | 0 | 0 | — |
case-09 | pass→pass | 14,780 | 8,911 | -40% | 1 | 1 | 0% | 2,420 | 2,125 | -12% | 0 | 0 | — |
case-10 | fail→pass | 12,465 | 2,242 | -82% | 1 | 1 | 0% | 1,876 | 936 | -50% | 0 | 0 | — |
case-11 | fail→pass | 10,407 | 2,374 | -77% | 1 | 1 | 0% | 1,660 | 895 | -46% | 0 | 0 | — |
case-12 | fail→pass | 11,029 | 3,073 | -72% | 1 | 1 | 0% | 1,736 | 1,010 | -42% | 0 | 0 | — |
case-14 | fail→pass | 12,270 | 2,334 | -81% | 1 | 1 | 0% | 1,859 | 1,016 | -45% | 0 | 0 | — |
case-15 | fail→pass | 17,998 | 18,021 | +0% | 1 | 1 | 0% | 2,836 | 3,592 | +27% | 0 | 0 | — |
case-16 | fail→pass | 13,721 | 2,623 | -81% | 1 | 1 | 0% | 2,225 | 968 | -56% | 0 | 0 | — |
case-17 | fail→pass | 19,170 | 2,264 | -88% | 1 | 1 | 0% | 1,654 | 959 | -42% | 0 | 0 | — |
case-18 | pass→pass | 9,666 | 2,677 | -72% | 1 | 1 | 0% | 1,403 | 1,049 | -25% | 0 | 0 | — |
case-19 | pass→pass | 14,123 | 2,129 | -85% | 1 | 1 | 0% | 2,187 | 960 | -56% | 0 | 0 | — |
case-20 | pass→pass | 13,275 | 11,205 | -16% | 1 | 1 | 0% | 2,462 | 2,533 | +3% | 0 | 0 | — |
case-21 | pass→pass | 9,823 | 7,611 | -23% | 1 | 1 | 0% | 1,861 | 2,088 | +12% | 0 | 0 | — |
case-22 | pass→pass | 38,449 | 21,438 | -44% | 1 | 1 | 0% | 3,959 | 4,688 | +18% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +55 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.