interpret-performance-tags
Installation
SKILL.md
Interpret performance tags
After every profile is collected, the analysis engine runs performance rules and attaches tags to entries and to the profile. The built-in rules are slow, n-plus-one, error, chatty, large-payload and zero-rows. This skill explains what each means, how to fix it, how to tune the thresholds, and how to add domain-specific rules. Assumes the core profiler is set up.
The built-in tags
| Tag | What it means | Where the threshold lives | Typical fix |
|---|---|---|---|
slow |
A single operation took ≥ slowThreshold. |
Per collector: ORM slowThreshold (100 ms), HTTP slowThreshold (300 ms). |
Add an index, cache the call, reduce payload, parallelize. |
n-plus-one |
The same query/call ran ≥ nPlusOneThreshold times (identical). |
Per collector: nPlusOneThreshold (ORM/HTTP default 2). |
Eager-load / join / batch (DataLoader), or a single IN (...) query. |
chatty |
A request issued ≥ chattyThreshold total operations. |
Per collector: chattyThreshold (ORM 20, HTTP 10). |
Batch, cache, or restructure to fewer round-trips. |
large-payload |
An HTTP payload was ≥ largePayloadThreshold. |
HTTP largePayloadThreshold (1 MB; 0 disables). |
Paginate, compress, select fewer fields. |
error |
The operation or request errored. | Built-in (no threshold). | Fix the underlying failure; check the Exceptions tab. |
zero-rows |
A write changed nothing — UPDATE/DELETE affecting 0 rows. |
Built-in (no threshold); severity via zeroRowsSeverity. |
Check the WHERE clause / filter — it is usually a silent mismatch. |
Read them in the UI: a collector's nav tab is coloured by its worst tag severity (getBadgeSeverity), and each entry carries its tags. Start from the profile-level tags, then drill into the flagged collector panel.