Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when auditing performance in any codebase — cold starts, hot paths, dependency weight, storage query patterns. Assess by default, optimize on request; measure, don't guess, and every number carries the command that produced it.
.claude/skills/automagik-dev-perf/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 51% | 0% |
| case-21 | ✗→✓ | ▲ Improved | 24% | 0% |
Runtime syntax: invoke the plugin copy through the active runtime's owner-qualified skill selector; use a bare selector only when intentionally selecting a user-tier copy (a separately installed personal copy; Genie no longer seeds this tier). Cross-skill prose below uses bare names as portable semantic routes; the orchestrator resolves the selector for the active runtime.
This lane begins performance work with measurement of the running system, never with intuition about the code. Every claim carries the command that produced it and the number it produced. The USE method frames each resource — utilization, saturation, errors. The most expensive performance bug is the one "fixed" without measuring before and after.
This lane's lens is inspired by the work of Brendan Gregg — author of Systems Performance, inventor of flame graphs and the USE method.
Assess and report by default. Apply optimizations only when the invocation explicitly asks — and then only with a before/after measurement pair. Never report an estimate where a measurement is obtainable this session. Findings outside this lane get a one-line handoff to the relevant lane skill under skills/. When you have enough numbers to conclude, conclude.
Before measuring anything, establish what the product is and which latency its users actually feel: a CLI pays cold start per invocation (and per hook event, if it's invoked by hooks — the hook timeout is then the hard ceiling); a server pays per-request latency and saturation; a batch tool pays throughput. Read the entry points, the build config (bundling, minification, what's inlined), the manifest for dependency weight, and CLAUDE.md/AGENTS.md for stated performance constraints and deliberate tradeoffs (fork-per-event models, zero-daemon rules, chosen storage engines). Identify the shipped artifact users run — measure that, not the dev-mode path. Never carry numbers forward from documentation; a documented size or timing is a claim to re-measure.
Repo profile — recall, verify, persist. Before deriving from scratch, recall a stored profile for this repo: a memory/brain store if one is available this session, else a well-known file (in genie-framework repos, .genie/repo-profile.md). For this lane the profile records the headline paths, hard ceilings, and baseline numbers with the commands that produced them. Baselines are the one profile entry you never trust — re-measure the headline path every run and report the delta against the stored baseline; that delta is often the most valuable finding. After the audit, persist the new numbers: update rather than duplicate, delete what proved wrong.
Profile write boundary. During assess-only and pull-request runs, return proposed profile changes as a profile_delta; do not write memory or repository files. Persist a profile only when the user explicitly asks.
hyperfine or a 10+-run loop; report median and spread, with first-run (cold cache) noted separately. Compare against any hard ceiling discovery found (hook timeouts, SLOs). Done when you have medians with exact commands.Every number was produced by a command this session and is quoted with that command; anything else is either inferred (calculation shown) or explicitly unmeasured (with the command that would measure it).
Lead with a one-sentence verdict anchored on the headline number vs its ceiling. Then findings ranked by user-felt impact, each with the measurement, the mechanism in plain language, and a recommended change whose expected effect is stated testably. Close with what was not measured and how to measure it. In a genie-framework repo, use CRITICAL/HIGH/MEDIUM/LOW for finding severities and SHIP/FIX-FIRST/BLOCKED only for the overall verdict; optimization campaigns bigger than one change belong in a wish via wish with the baseline numbers as its acceptance criteria.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 19,504 | 6,368 | -67% | 1 | 1 | 0% | 3,189 | 1,557 | -51% | 0 | 0 | — |
case-02 | fail→fail | 23,644 | 6,075 | -74% | 1 | 1 | 0% | 3,937 | 1,541 | -61% | 0 | 0 | — |
case-20 | pass→pass | 13,572 | 8,547 | -37% | 1 | 1 | 0% | 1,937 | 2,489 | +28% | 0 | 0 | — |
case-08 | pass→pass | 12,750 | 6,908 | -46% | 1 | 1 | 0% | 2,023 | 2,366 | +17% | 0 | 0 | — |
case-09 | fail→pass | 10,687 | 4,205 | -61% | 1 | 1 | 0% | 1,577 | 1,908 | +21% | 0 | 0 | — |
case-10 | fail→pass | 17,033 | 14,813 | -13% | 1 | 1 | 0% | 2,559 | 3,350 | +31% | 0 | 0 | — |
case-03 | fail→fail | 42,960 | 6,005 | -86% | 1 | 1 | 0% | 1,263 | 1,514 | +20% | 0 | 0 | — |
case-04 | pass→fail | 16,385 | 8,450 | -48% | 1 | 1 | 0% | 3,105 | 1,565 | -50% | 0 | 0 | — |
case-05 | pass→fail | 16,099 | 5,104 | -68% | 1 | 1 | 0% | 2,804 | 2,119 | -24% | 0 | 0 | — |
case-06 | pass→fail | 13,806 | 4,187 | -70% | 1 | 1 | 0% | 2,589 | 1,896 | -27% | 0 | 0 | — |
case-07 | pass→pass | 11,700 | 6,987 | -40% | 1 | 1 | 0% | 1,914 | 2,398 | +25% | 0 | 0 | — |
case-11 | pass→pass | 18,200 | 13,386 | -26% | 1 | 1 | 0% | 2,870 | 3,353 | +17% | 0 | 0 | — |
case-12 | pass→pass | 13,908 | 10,254 | -26% | 1 | 1 | 0% | 2,140 | 2,729 | +28% | 0 | 0 | — |
case-13 | fail→pass | 11,338 | 6,790 | -40% | 1 | 1 | 0% | 1,752 | 2,260 | +29% | 0 | 0 | — |
case-14 | pass→pass | 7,357 | 6,359 | -14% | 1 | 1 | 0% | 1,135 | 2,206 | +94% | 0 | 0 | — |
case-15 | fail→pass | 15,852 | 16,760 | +6% | 1 | 1 | 0% | 2,760 | 4,173 | +51% | 0 | 0 | — |
case-16 | fail→fail | 12,963 | 6,172 | -52% | 1 | 1 | 0% | 2,035 | 2,204 | +8% | 0 | 0 | — |
case-17 | pass→pass | 10,314 | 5,141 | -50% | 1 | 1 | 0% | 1,543 | 1,965 | +27% | 0 | 0 | — |
case-18 | pass→pass | 9,981 | 3,188 | -68% | 1 | 1 | 0% | 1,564 | 1,789 | +14% | 0 | 0 | — |
case-19 | pass→pass | 10,358 | 6,888 | -34% | 1 | 1 | 0% | 1,550 | 2,218 | +43% | 0 | 0 | — |
case-21 | fail→pass | 9,432 | 3,922 | -58% | 1 | 1 | 0% | 1,440 | 1,783 | +24% | 0 | 0 | — |
case-22 | fail→pass | 11,852 | 2,045 | -83% | 1 | 1 | 0% | 1,731 | 1,572 | -9% | 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, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 18 comparable cases. 5 cases got worse with the skill loaded, and they are included in that figure.
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.