$npx -y skills add gtrabanco/agentic-workflow --skill review-perfInternal performance review pass of the agentic-workflow review pack — composed in-turn by review-change and product-audit; not a menu entry. Checks the changed paths for algorithmic and resource regressions: N+1s, hot-path allocations, asset weight, and leaks. Findings only; nev
| 1 | # Review Performance (internal) |
| 2 | |
| 3 | Composed by `review-change` / `product-audit` within their conversation — on any |
| 4 | agent, follow this file inline as the routed step. **Findings only; never edits, |
| 5 | never refactors.** |
| 6 | |
| 7 | ## Scope |
| 8 | |
| 9 | The diff or path/glob the caller passes; default the current change vs the |
| 10 | default branch. State the scope at the top of the returned table. |
| 11 | |
| 12 | ## Checklist (evaluate EVERY item — none is optional; n/a must be stated) |
| 13 | |
| 14 | - ✓ No N+1 query/IO pattern on changed data-access paths (loop bodies issuing |
| 15 | queries/requests — cite) |
| 16 | - ✓ Algorithmic complexity of new code paths stated where input can grow (an |
| 17 | unbounded O(n²) on user data is a major finding) |
| 18 | - ✓ No blocking IO/sync work added on hot/request paths where the platform is |
| 19 | async |
| 20 | - ✓ Resources opened by the change are closed/released on ALL paths including |
| 21 | errors (files, connections, subscriptions, timers) |
| 22 | - ✓ No unbounded growth introduced (caches without eviction, arrays that only |
| 23 | append, listeners never removed) |
| 24 | - ✓ Web only: bundle/asset impact of the change stated (new dep size, image |
| 25 | weight, lazy-loading where the project uses it) — n/a otherwise |
| 26 | - ✓ Repeated computation hoisted where a loop recomputes an invariant (cite) |
| 27 | - ✓ Pagination/limits on any new listing that reads user-scaled data |
| 28 | - ✓ No premature optimization either: complexity added for speed without a |
| 29 | cited measurement is a finding (the repo forbids overengineering) |
| 30 | - ✓ **Measured evidence when declared** — the project's agent guide declares a |
| 31 | `Performance commands` block with a `bench` command AND the diff touches |
| 32 | paths its benchmarks cover: RUN the benchmark on the base branch and on the |
| 33 | change, and cite both numbers in Evidence as |
| 34 | `<cmd> → base <x> / change <y> (<±z%>)`. A regression beyond the noise band |
| 35 | (the project's declared band, else ±5%) is a **major** finding; a delta |
| 36 | inside the band is no finding. The declared command failing (non-zero exit) |
| 37 | is itself a finding (the gate can't measure) — never silently skipped. |
| 38 | - ✓ **No declared perf commands** → state exactly |
| 39 | `n/a — no declared perf commands` for the item above (never skip it |
| 40 | silently), and if the diff adds algorithmic code on input that can grow, |
| 41 | add a **minor** finding recommending the project adopt the tooling via |
| 42 | `init-workspace`'s Performance tooling round. |
| 43 | |
| 44 | ## Return exactly |
| 45 | |
| 46 | ``` |
| 47 | REVIEW PERF — scope: <scope> |
| 48 | |
| 49 | | # | Finding | Sev | Evidence | Suggested fix | |
| 50 | |---|---------|-----|----------|---------------| |
| 51 | | 1 | <what> | critical|major|minor | <file:line — or, for measured findings, `<cmd> → base <x> / change <y> (<±z%>)`> | <smallest action> | |
| 52 | |
| 53 | Checklist: <n> evaluated, <n> pass, <n> findings, <n> n/a (<which + why>) |
| 54 | Summary: <1-2 sentences> |
| 55 | Decision: PASS | FAIL |
| 56 | ``` |
| 57 | |
| 58 | FAIL if any critical or major finding is open; PASS otherwise. Minor findings |
| 59 | never block — they route to the caller's triage step. |
| 60 | |
| 61 | ## Done when |
| 62 | |
| 63 | - Every checklist item was evaluated with evidence (file:line or command output) |
| 64 | or explicitly marked n/a with the reason. |
| 65 | - The fixed-format block above is returned — nothing more, nothing less — and |
| 66 | no code was changed. |