CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

neo4j-graphrag-skill

Build GraphRAG retrieval pipelines on Neo4j using the neo4j-graphrag Python package (v1.22.0+). Covers retriever selection (VectorRetriever, HybridRetriever, VectorCypherRetriever, HybridCypherRetriever, Text2CypherRetriever, ToolsRetriever), external vector DB retrievers (Weaviate, Pinecone, Qdrant), retrieval_query Cypher fragments, query_params, filters, GraphRAG pipeline wiring (GraphRAG + LLM + prompt), all LLM providers (OpenAI, Anthropic, Gemini/VertexAI, Bedrock, Cohere, Mistral, Ollama), embedder setup, index creation, token usage tracking, Cypher 25 SEARCH clause, and LangChain/LlamaIndex integration. Does NOT handle KG construction — use neo4j-document-import-skill. Does NOT handle plain vector search — use neo4j-vector-index-skill. Does NOT handle GDS analytics — use neo4j-gds-skill. Does NOT handle agent memory — use neo4j-agent-memory-skill.

Quality

80%

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

Fix and improve this skill with Tessl

tessl review fix ./neo4j-graphrag-skill/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

78%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, dense body that is almost entirely non-obvious package-specific knowledge with executable examples, explicit index-ONLINE validation, an error-recovery table, and a clean one-level-deep reference structure. Remaining issues are small: duplicated guard/schema notes, a few context-dependent code fragments, and step numbering that starts at Step 2.

Suggestions

Label the Install section as "Step 1" (or renumber) so the Install → Step 2 → Step 3 → Step 4 sequence is coherent.

Deduplicate the Text2Cypher destructive-query guard (keep it in one place) and move the neo4j_schema trimming note out of the ORDER BY section into the Text2Cypher section.

Make secondary snippets self-contained — the ToolsRetriever example should construct or note the origin of vector_retriever/text2cypher_retriever rather than referencing undefined variables.

DimensionReasoningScore

Conciseness

The body is dense with version-gated API knowledge Claude cannot be assumed to know (auto-routing behavior, import moves, the v1.19–1.22 name-mismatch bug) and almost zero concept padding, but the Text2Cypher destructive-query guard is stated twice ("Security (v1.16.0+): Every LLM-generated Cypher is run through EXPLAIN" and again "Destructive-query guard [v1.16+]") and the neo4j_schema trimming note is duplicated under ORDER BY. Not 5 due to this redundant/misplaced content; not 3 since the over-explanation is minor and localized.

4 / 5

Actionability

The core HybridCypherRetriever pattern is complete and copy-paste ready (full imports, driver setup, retrieval_query, GraphRAG wiring, search call), and install commands, index Cypher, filters, and query_params are all executable. Minor gaps keep it below 5: the ToolsRetriever snippet references undefined variables ("retrievers=[vector_retriever, text2cypher_retriever]") and the VectorCypherRetriever snippet reuses rag/retrieval_query from a prior section without redefinition.

4 / 5

Workflow Clarity

There is a clear sequence — Install → Choose Retriever → Create Indexes → Core Pattern — with an explicit validation checkpoint ("Confirm ONLINE before ingesting... If index not ONLINE: wait, poll every 5s"), a Common Errors recovery table, and a final Verification Checklist. Not 5 because the steps are numbered 2–4 with no labeled Step 1 (Install is unnumbered), a small sequencing incoherence.

4 / 5

Progressive Disclosure

Five real reference files (retrievers.md, providers.md, pipeline-dsl.md, kg-builder.md, knowledge-graph-construction.md) are all exactly one level deep with no nested references, signaled inline ("Full API → references/pipeline-dsl.md") and consolidated in a "Load on demand" References section. The core retrieval flow lives inline while per-retriever constructors, providers, and KG-builder detail are delegated — matching the top anchor.

5 / 5

Total

17

/

20

Passed

Description

75%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.

A highly specific, well-bounded description with excellent negative-scope routing to sibling skills. Its one structural weakness is the absence of an explicit positive "Use when..." trigger clause, which caps the completeness dimension.

Suggestions

Add an explicit positive trigger clause, e.g. "Use when building RAG/GraphRAG applications or retrieval pipelines over a Neo4j knowledge graph with the neo4j-graphrag package" — this would lift completeness from 3 to 5.

Include common natural synonyms such as "RAG", "retrieval augmented generation", and "chat with your graph" alongside "GraphRAG" to broaden trigger-term coverage.

DimensionReasoningScore

Specificity

Opens with a concrete action ("Build GraphRAG retrieval pipelines on Neo4j using the neo4j-graphrag Python package") and lists many specific capabilities by name — "retrieval_query Cypher fragments, query_params, filters", "token usage tracking, Cypher 25 SEARCH clause", named retriever classes, and all LLM providers. Coverage is comprehensive rather than having minor gaps, so it fits the top anchor, not the 4 anchor.

5 / 5

Completeness

The "what" is clear and detailed, but there is no positive "Use when..." clause — the only trigger guidance is negative ("Does NOT handle KG construction — use neo4j-document-import-skill"), which per the judging guidelines caps completeness at 3. Not 4 because the positive "when" is absent, not merely under-specified.

3 / 5

Trigger Term Quality

Good keyword coverage of terms users would naturally say in this domain — GraphRAG, Neo4j, vector search, hybrid, LLM providers, LangChain/LlamaIndex — but it leans heavily on class names (VectorRetriever, HybridCypherRetriever, etc.) and omits natural variations like "RAG" or "retrieval augmented generation". Not 3 since most relevant natural terms are present; not 5 since synonym coverage is incomplete.

4 / 5

Distinctiveness Conflict Risk

It names the exact package and version and explicitly routes four adjacent tasks to sibling skills ("Does NOT handle KG construction... plain vector search... GDS analytics... agent memory"), giving it a clear niche with minimal conflict risk. Nothing pushes it down to the 4 anchor, which allows minor overlap risk.

5 / 5

Total

17

/

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-graphrag-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.