CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

neo4j-query-tuning-skill

Diagnoses and fixes slow Neo4j Cypher queries by reading execution plans, identifying bad operators (AllNodesScan, CartesianProduct, Eager, NodeByLabelScan), and prescribing fixes (indexes, hints, query rewrites, runtime selection). Use when a query is slow, when EXPLAIN or PROFILE output needs interpretation, when dbHits or pageCacheHitRatio are poor, when cardinality estimation diverges from actuals, or when deciding between slotted/pipelined/parallel runtimes. Covers USING INDEX / USING SCAN / USING JOIN hints, db.stats.retrieve, SHOW QUERIES, SHOW TRANSACTIONS, TERMINATE TRANSACTION. Does NOT write new Cypher from scratch — use neo4j-cypher-skill. Does NOT cover GDS algorithm tuning — use neo4j-gds-skill. Does NOT cover index/constraint creation syntax details — use neo4j-cypher-skill references/indexes.md.

Quality

93%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

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, highly actionable body: an explicit diagnostic runbook with before/after validation, executable Cypher for every common plan problem, and clean deferral to two real reference files. The only weaknesses are minor — slight duplication between the inline operator table and the reference file, and missing verification guidance around the destructive TERMINATE TRANSACTION command.

Suggestions

Trim the inline operator table to only the handful of operators the diagnostic workflow keys on (AllNodesScan, NodeByLabelScan, CartesianProduct, Eager, NodeIndexSeek), deferring the full ~20-row listing entirely to references/plan-operators.md, and collapse the redundant "Executes query?"/"Returns data?" rows in the EXPLAIN vs PROFILE table into one row.

Add a verification step before TERMINATE TRANSACTION / TERMINATE QUERY: confirm the transactionId or queryId comes from SHOW TRANSACTIONS / SHOW QUERIES output (checking currentQuery and username) and, for user-owned sessions, confirm with the user before killing — this closes the validation gap on the skill's one destructive action.

Consider adding a one-line note on the Eager "CALL IN TRANSACTIONS" batch strategy about how to verify batching worked (e.g., re-PROFILE to confirm the Eager operator is gone), mirroring the existing before/after dbHits comparison used elsewhere.

DimensionReasoningScore

Conciseness

The body is dense and Neo4j-specific (operator semantics, dbHits thresholds, runtime selection) with almost no explanation of concepts Claude already knows. Minor trims remain: the EXPLAIN/PROFILE table's "Executes query?" and "Returns data?" rows are redundant with each other, and the ~20-row inline operator table partially duplicates references/plan-operators.md. This matches "efficient; minor instances of over-explanation that could be trimmed" rather than the every-token-earns-its-place anchor.

4 / 5

Actionability

Guidance is fully executable throughout: "SHOW INDEXES YIELD name, type, labelsOrTypes, properties, state", "CREATE INDEX person_email IF NOT EXISTS FOR (n:Person) ON (n.email)", "USING INDEX p:Person(email)", "CYPHER 25 runtime=parallel", and complete before/after code pairs for CartesianProduct, Eager, and LIMIT pushdown. Copy-paste-ready commands cover the common cases.

5 / 5

Workflow Clarity

The 5-step "Diagnostic Workflow (Agent Runbook)" is clearly sequenced with explicit checkpoints ("Wait for state = 'ONLINE' before measuring", "Compare dbHits and elapsed ms before/after", "Target: NodeIndexSeek replaces scan operators") and a closing checklist — a genuine fix-and-remeasure feedback loop. It falls short of a 5 because the destructive "TERMINATE TRANSACTION $transactionId" and batch "CALL … IN TRANSACTIONS" are presented without any verification step (e.g., confirming the transactionId from SHOW TRANSACTIONS or checking with the user before killing work), a minor validation gap on destructive operations.

4 / 5

Progressive Disclosure

SKILL.md is a clean overview: summary operator and metrics tables inline, with well-signaled one-level-deep pointers — "Full operator reference → [references/plan-operators.md]" and "Full monitoring reference → [references/stats-and-monitoring.md]" — both verified to exist as substantive files with no further nested references. Content is appropriately split and easy to navigate.

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.

An exemplary description: concrete capabilities named with specific operators and fix types, an explicit multi-condition "Use when" clause with natural trigger phrases, and clear negative boundaries that disambiguate it from sibling Neo4j skills. All in third-person voice with no fluff or over-claims.

DimensionReasoningScore

Specificity

"Diagnoses and fixes slow Neo4j Cypher queries by reading execution plans, identifying bad operators (AllNodesScan, CartesianProduct, Eager, NodeByLabelScan), and prescribing fixes (indexes, hints, query rewrites, runtime selection)" lists multiple concrete actions with named operators and fix categories, matching the comprehensive-coverage anchor. It is not a 4 because coverage spans diagnosis, plan interpretation, and fix prescription with no notable capability gaps.

5 / 5

Completeness

It explicitly answers both "what" ("Diagnoses and fixes slow Neo4j Cypher queries by reading execution plans, identifying bad operators… prescribing fixes") and "when" ("Use when a query is slow, when EXPLAIN or PROFILE output needs interpretation…") with concrete trigger phrases. Both the what and when clauses are specific and explicit, so it is not a 4.

5 / 5

Trigger Term Quality

Trigger phrases like "Use when a query is slow, when EXPLAIN or PROFILE output needs interpretation, when dbHits or pageCacheHitRatio are poor" are exactly what a user with this problem would naturally say, alongside domain keywords (SHOW QUERIES, TERMINATE TRANSACTION, slotted/pipelined/parallel). Coverage is comprehensive including synonym phrasings ("query is slow", "slow Neo4j Cypher queries").

5 / 5

Distinctiveness Conflict Risk

The niche (Neo4j Cypher query performance tuning) is distinct, and explicit negative boundaries — "Does NOT write new Cypher from scratch — use neo4j-cypher-skill", "Does NOT cover GDS algorithm tuning — use neo4j-gds-skill", "Does NOT cover index/constraint creation syntax details" — route overlapping cases to sibling skills, minimizing conflict risk.

5 / 5

Total

20

/

20

Passed

Validation

93%

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

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository

neo4j-contrib/neo4j-skills

Path

neo4j-query-tuning-skill/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.