Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Read the Convex deployment's 72h insights (read limits, OCC contention), root-cause each event in code, report evidence-backed perf/cost findings with fixes.
.claude/skills/get-convex-convex-advisor/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 97% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -48% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -6% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 26% | 0% |
<!-- GENERATED from convex-agents content/capabilities/convex-advisor.json — do not edit by hand. -->
Static review guesses; the deployment KNOWS. The official Convex MCP ships an insights tool with typed 72h health events per function — documentsReadLimit / bytesReadLimit (hard limit hits), documentsReadThreshold / bytesReadThreshold (approaching), occFailedPermanently / occRetried (write contention) — each carrying evidence (table_name, bytes_read, documents_read, occ document id + retry count). The advisor turns each event into a root-caused finding by reading the flagged function's actual code, and emits findings on the findings bus (specs/finding.schema.json) so fixers can be dispatched and launch-readiness can score.
status → deployment selector; insights → the typed 72h events; tables → schema + row counts; functionSpec → the public/internal surface. The insights tool is only available on cloud dev/prod deployments when logged in as a user (not on previews or deploy-key-scoped contexts) and needs ~72h of traffic; if it returns nothing or is unavailable, say so and fall back to offering convex-reviewer — do NOT invent findings..collect() / unindexed .filter() / missing pagination on the named table; the fix is an index + .withIndex, .take(n), or .paginate (convex-expert patterns), or an aggregate component for counting shapes.logs (status: failure) → classify: crash loop in a cron, validator rejections, unhandled error shapes.insights after traffic to verify the trend, or re-run the static check immediately.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | fail→fail | 10,874 | 3,057 | -72% | 1 | 1 | 0% | 1,512 | 1,397 | -8% | 0 | 0 | — |
case-01 | fail→fail | 15,283 | 17,210 | +13% | 1 | 1 | 0% | 2,420 | 1,295 | -46% | 0 | 0 | — |
case-02 | fail→fail | 12,453 | 6,851 | -45% | 1 | 1 | 0% | 1,990 | 1,394 | -30% | 0 | 0 | — |
case-03 | fail→fail | 27,813 | 5,244 | -81% | 1 | 1 | 0% | 4,372 | 1,225 | -72% | 0 | 0 | — |
case-04 | fail→pass | 9,336 | 10,801 | +16% | 1 | 1 | 0% | 1,388 | 2,736 | +97% | 0 | 0 | — |
case-05 | fail→pass | 28,677 | 8,463 | -70% | 1 | 1 | 0% | 4,099 | 2,132 | -48% | 0 | 0 | — |
case-07 | pass→pass | 13,338 | 5,457 | -59% | 1 | 1 | 0% | 1,870 | 1,794 | -4% | 0 | 0 | — |
case-08 | fail→pass | 12,117 | 4,441 | -63% | 1 | 1 | 0% | 1,686 | 1,582 | -6% | 0 | 0 | — |
case-09 | pass→pass | 13,139 | 6,540 | -50% | 1 | 1 | 0% | 2,116 | 1,787 | -16% | 0 | 0 | — |
case-10 | fail→pass | 7,931 | 2,485 | -69% | 1 | 1 | 0% | 1,397 | 1,361 | -3% | 0 | 0 | — |
case-11 | fail→pass | 13,632 | 11,616 | -15% | 1 | 1 | 0% | 2,081 | 2,615 | +26% | 0 | 0 | — |
case-12 | pass→pass | 11,700 | 8,560 | -27% | 1 | 1 | 0% | 1,679 | 2,263 | +35% | 0 | 0 | — |
case-13 | pass→pass | 6,609 | 4,372 | -34% | 1 | 1 | 0% | 921 | 1,496 | +62% | 0 | 0 | — |
case-14 | fail→pass | 17,804 | 3,561 | -80% | 1 | 1 | 0% | 3,116 | 1,606 | -48% | 0 | 0 | — |
case-15 | fail→fail | 16,209 | 5,149 | -68% | 1 | 1 | 0% | 2,080 | 1,659 | -20% | 0 | 0 | — |
case-16 | fail→pass | 11,294 | 5,695 | -50% | 1 | 1 | 0% | 1,866 | 1,897 | +2% | 0 | 0 | — |
case-17 | pass→pass | 14,074 | 3,962 | -72% | 1 | 1 | 0% | 1,832 | 1,600 | -13% | 0 | 0 | — |
case-18 | pass→pass | 6,900 | 2,565 | -63% | 1 | 1 | 0% | 871 | 1,372 | +58% | 0 | 0 | — |
case-19 | pass→pass | 8,347 | 4,191 | -50% | 1 | 1 | 0% | 1,100 | 1,533 | +39% | 0 | 0 | — |
case-20 | pass→pass | 8,203 | 8,065 | -2% | 1 | 1 | 0% | 1,173 | 2,136 | +82% | 0 | 0 | — |
case-21 | fail→pass | 10,590 | 3,036 | -71% | 1 | 1 | 0% | 1,370 | 1,427 | +4% | 0 | 0 | — |
case-22 | fail→fail | 11,348 | 3,307 | -71% | 1 | 1 | 0% | 1,475 | 1,415 | -4% | 0 | 0 | — |
case-23 | fail→pass | 12,272 | 4,685 | -62% | 1 | 1 | 0% | 1,875 | 1,646 | -12% | 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. 23 cases were attempted, and 20 counted toward the lift figure. The other 3 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 +39 percentage points is the difference between those two pass rates over the 20 comparable cases. 2 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.