performance-optimization — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited performance-optimization (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Profile first. Every performance intuition is wrong until the profiler confirms it. The code that looks slow is rarely the bottleneck; the bottleneck is almost always somewhere the code looks unremarkable. An optimization without a measurement is a guess. A guess that happens to speed things up does not mean you found the right thing.
No change before you have a baseline measurement and a profiled bottleneck. If you cannot name the specific file, function, and line where the most time or memory is spent - with numbers - you are still in the investigation phase.
Define what "slow" means in terms the problem must satisfy:
Run the scenario and record the baseline:
# For Node.js / server-side
node --prof app.js # then: node --prof-process isolate-*.log
# or: clinic flame -- node app.js
# For queries
EXPLAIN ANALYZE SELECT ... # PostgreSQL
# or the equivalent for your database
# For browser / frontend
# Use the browser devtools Performance panel; record the scenario end-to-end
# Look at the flame chart, not just the summarySave the baseline number. The optimization is only valid if the after-measurement is better than this.
Read the profiler output - do not guess from the source. Identify:
Common bottlenecks that do not look like bottlenecks:
JSON.parse / JSON.stringify inside a tight loopState it exactly: "The bottleneck is X at file:line because Y, which will be fixed by Z."
Be specific enough to be falsifiable. "The code is slow because it does too much" is not a hypothesis. "The getUser function issues one SQL query per item in the results array at src/db/users.ts:44, so a page with 50 results makes 50 database round trips; replacing this with a single WHERE id IN (...) query should reduce the query time from ~500ms to ~10ms" is a hypothesis.
Address only the identified bottleneck. Do not:
The change should be the minimum needed to fix the specific bottleneck. Multiple simultaneous changes make the measurement impossible to attribute.
Run the same scenario under the same conditions as the baseline:
If the improvement is less than 20% or does not meet the target, re-profile - you may have fixed a symptom, or the bottleneck may have shifted to a new location now that the first one is gone.
An optimization that breaks behavior is not an optimization - it is a bug. Run the full test suite. If there are no tests covering the modified path, write one before treating the optimization as done.
Check specifically:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.