CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

testland/graphql-n-plus-one-remediation

Use whenever a GraphQL query fires one database query per item (N+1), a slow-query alert traces to GraphQL, or a PR adds a list resolver: find the fan-out, write a test that counts queries, and fix it with DataLoader batching, parent projection or selection-set prefetch.

Quality

94%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

Quality

Content

86%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A strong, practitioner-grade skill body: an unambiguous detect → map → classify → fix → prove workflow backed by executable code at every step and a clean two-file reference layer. The two gaps are minor — some concept re-explanation duplicated with references/fixes.md, and no recovery guidance when the Step 4 call-count assertion still fails.

Suggestions

Trim the duplicated cautions: keep the one-sentence version inline (re-map is mandatory; cartesian explosion) and let references/fixes.md carry the full explanation, cutting ~10 lines from Fix A and Fix B sections.

Add a two-line recovery loop to Step 4: if the count assertion still shows N calls after Fix A, check that the loader is constructed per-request and that the resolver uses .load() rather than an awaited per-row call.

Compress the opening 'What N+1 looks like' section to the resolver-tree mechanics and the symptom bullets; the arithmetic walk-through of 1 + N = N+1 re-explains a pattern Claude already knows.

DimensionReasoningScore

Conciseness

The body is largely efficient — tables, tight code, and a scope section that earns its tokens — but the opening N+1 concept walk-through ("One field returns a list of N rows... So 1 outer query plus N inner queries equals N+1") re-explains a pattern Claude knows, and the re-map/cartesian-explosion cautions are stated both inline and again in references/fixes.md. Not 5 because of these duplicated passages; not 3 since nearly everything else is load-bearing with no padding.

4 / 5

Actionability

Every step ships executable material: grep commands for detection, a parent/child mapping table, a six-row classification rubric, complete TypeScript for all three fixes, a jest call-count spy test, and the Prisma log constructor. Copy-paste ready and covering the common cases (Prisma, Apollo-style resolvers, graphql-parse-resolve-info), matching the fully-executable anchor. Not 4 because no step requires the reader to fill in missing detail.

5 / 5

Workflow Clarity

Steps 0–4 are clearly sequenced with a decision table for fix choice and an explicit validation gate in Step 4 ("A structural fix is not done until a test pins the call count") plus query-log interpretation for both outcomes. It falls short of the 5 anchor because there is no error-recovery feedback loop telling the reviewer what to re-examine when the count assertion still shows N calls after applying a fix.

4 / 5

Progressive Disclosure

The skill keeps core runnable code inline and clearly signals exactly two one-level-deep references — "[references/fixes.md](references/fixes.md)" for fix contracts and "[references/examples.md](references/examples.md)" for worked examples — both of which exist and contain the promised content without nesting further. Structure matches the clear-overview anchor; the only nit (slight inline/reference duplication) is a conciseness issue, not a navigation one.

5 / 5

Total

18

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is a model example: it pairs an explicit 'Use whenever' trigger clause covering symptom-, alert-, and PR-shaped invocations with a precise statement of what the skill does (locate, test via call-count, fix via three named strategies). It is specific, natural-sounding, and unambiguous about scope.

DimensionReasoningScore

Specificity

"find the fan-out, write a test that counts queries, and fix it with DataLoader batching, parent projection or selection-set prefetch" lists multiple concrete actions plus three named remediation techniques, matching the comprehensive-coverage anchor. It exceeds the 4 anchor ('several specific actions; minor gaps') because detection, verification, and fix are each named explicitly with no coverage gap.

5 / 5

Completeness

"Use whenever a GraphQL query fires one database query per item (N+1), a slow-query alert traces to GraphQL, or a PR adds a list resolver" explicitly answers 'when' with concrete triggers, and the action list explicitly answers 'what', matching the anchor for both clearly present. A 4 would require the 'when' to be less explicit than the three named trigger scenarios here.

5 / 5

Trigger Term Quality

Natural practitioner phrasings are covered with synonyms: "N+1", "one database query per item", "slow-query alert", "list resolver", "PR" — symptom-, code-, and workflow-shaped triggers a user would actually say. Not 4 because no commonly-used variation of the trigger vocabulary for this problem is missing.

5 / 5

Distinctiveness Conflict Risk

The niche (GraphQL N+1 remediation) is distinct and every trigger is GraphQL- or resolver-specific, so it would not fire for generic database-performance or caching skills. Minimal conflict risk, matching the clear-niche anchor rather than the 4 anchor's 'minor overlap risk'.

5 / 5

Total

20

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Reviewed

On this page