Performance audit
Skill VictorAurelius/claude-starter-kit/skills/quality/performance-audit
Dùng khi user nói 'perf audit', 'performance check', 'load test', 'kiểm tra hiệu năng', 'N+1', 'bundle size', hoặc trước production deploy. Baseline performance metrics /100.From its SKILL.md
npx -y skills add VictorAurelius/claude-starter-kit --skill performance-auditAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 5 commands, including `grep -rn "findAll\|findBy" --include="*.java" src/main/ | grep -v test | head -30` and 4 more.
SKILL.md
4.3 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
/performance-audit — Performance Baseline Assessment (portable)
Score /100. Identify bottlenecks across DB, API, frontend, caching, and resources.
Adapt <placeholder> paths to your project structure.
Process
1. Automated Checks
# DB: N+1 query detection (adapt src dir to your backend modules)
grep -rn "findAll\|findBy" --include="*.java" src/main/ | grep -v test | head -30
grep -rn "@Query" --include="*.java" src/main/ | head -20
# FE bundle: build analysis (adapt to each frontend app)
cd <frontend-app> && npm run build 2>&1 | tail -30
# Caching (broad scope — catches all submodules)
grep -rn "RedisTemplate\|@Cacheable\|cache" --include="*.java" | grep -v test | grep -v target | head -20
# Resource config (broad scope)
grep -rn "pool-size\|max-connections\|timeout\|thread" --include="*.yml" | grep -v target | head -20
2. Primacy: bug-finding > scoring (BLOCKING)
An audit's purpose is to surface performance bombs (N+1, missing pagination, missing bulkhead) BEFORE prod. A
/100score with hidden P0 bombs is WORSE than a low score listing every bomb honestly. Peraudit-skill-rubric-performance-audit.md§4.
Rules for every audit run:
- Enumerate ALL §3 sub-checks per category. NEVER skip "obviously fine."
- Each sub-check returns: PASS / FAIL / N/A-with-reason /
❓ UNCHECKED. No partial credit. - Final output starts with bug list (every FAIL with
file:lineevidence) BEFORE the score. - Score is descriptive only; audit-level verdict = FAIL if ANY P0 sub-check FAILS.
- If audit time-budget runs out, mark
❓ UNCHECKED— do NOT default to PASS.
3. Score 5 Categories with per-check rubric
Every category binds to a per-check pass/fail rule.
| # | Category (20pts) | Per-check rubric file |
|---|---|---|
| 1 | DB Query Efficiency | audit-skill-rubric-performance-audit.md §2.1 (6 sub-checks) |
| 2 | API Response Time | audit-skill-rubric-performance-audit.md §2.2 (6 sub-checks) |
| 3 | Frontend Bundle | audit-skill-rubric-performance-audit.md §2.3 (6 sub-checks) |
| 4 | Caching Strategy | audit-skill-rubric-performance-audit.md §2.4 (6 sub-checks) |
| 5 | Resource Utilization | audit-skill-rubric-performance-audit.md §2.5 (6 sub-checks) |
Per-check scoring (all 5 categories)
For each Category N:
- Walk through every §2 sub-check in the bound rule.
- Mark each sub-check PASS / FAIL / N/A-with-reason /
❓ UNCHECKED. - Score =
20 - (failed_P0_count * 6) - (failed_P1_count * 3) - (failed_P2_count * 1), floor 0; cap 20 if all PASS. - If ANY P0 sub-check fails → category total CAPPED at 16/20 AND audit-level verdict = FAIL.
- Each FAIL surfaces in bug list per §2 primacy.
Legacy scoring narrative: reference/scoring-guide.md retained for backward-compat only.
4. Output
Save to documents/audits/performance/performance-audit-[date].md
Context Management
Token budget ~15-25K (smallest in the audit suite). Watch:
- Build output —
npm run buildoutput can be 100+ lines. ALWAYS| tail -30(only the route sizes table is needed). - Grep N+1 —
| head -30per module. Count occurrences, don't list everything. - No load test during audit — static analysis + config review only. Load test = separate task.
Gotchas
findAll()on a JPA repo without@QueryorPageable= potential N+1- Build output (e.g. Next.js
next build) shows route sizes — flag anything >250KB - Redis config typically lives in
application.ymlunderspring.data.redis - If the project uses a bulkhead library (e.g. Resilience4j) — check thread pool sizes match expected concurrency
- Docker
deploy.resources.limitsmay not be set in dev compose — check k8s/Helm for prod - Build output can be very long — only take the final summary table
- Multi-module scope — a narrow grep dir may miss submodules. Use broad
--include="*.java"from root OR explicit<module>/src/glob - Always
grep -v targetto exclude compiledtarget/classes/duplicates
Skill Contents
reference/scoring-guide.md— Detailed rubric per category
What ships with it: 1 file
4.0 KB alongside SKILL.md
reference/
- scoring-guide.md4.0 KB
Gives 0 of the 12 instructions most audit compliance skills give in ~1.2k tokens
Counted across 960 of the 1,589 authors here whose files we hold, read 2026-09-06
- Read product marketing context before asking questionsin 29 of 960, across 11 files
- Rank findings by severityin 29 of 960, across 22 files
- Generate audit reportin 22 of 960
- Run the audit scriptin 20 of 960, across 19 files
- Generate a prioritized action plan reportin 19 of 960, across 11 files
- Ensure one H1 per pagein 15 of 960, across 5 files
- Ensure sitemap exists and is accessiblein 14 of 960, across 4 files
- Verify alt text on all imagesin 12 of 960, across 3 files
- Determine the audit scope before startingin 12 of 960, across 4 files
- Verify important pages allowed in robots.txtin 11 of 960, across 2 files
- Detect business type from homepage signalsin 11 of 960, across 7 files
- Delegate specialized tasks to subagentsin 11 of 960, across 7 files
Said here and by no other author read
- Enumerate all sub-checks per category
- Surface bug list before the score
- Save audit to documents directory
- Run grep to detect N plus one queries
- Run npm run build for frontend analysis
- Check caching configuration across files
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.