CtrlK
BlogDocsLog inGet started
Tessl Logo

neo4j-graphrag-skill

Build GraphRAG retrieval pipelines on Neo4j using the neo4j-graphrag Python package (v1.16.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, 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.

61

Quality

73%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Optimize this skill with Tessl

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

Quality

Content

64%

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

This is a comprehensive, highly actionable skill with excellent executable code examples covering the full neo4j-graphrag retriever ecosystem. Its main weaknesses are content duplication (the retriever selection tree/table appears twice verbatim), inconsistent step numbering in the workflow, and a monolithic structure that could benefit from splitting reference material into separate files. The common errors table and verification checklist are strong additions.

Suggestions

Remove the duplicate retriever selection decision tree and comparison table — consolidate into a single 'Retriever Selection' section

Fix the step numbering to be consistent (currently jumps from unnumbered sections to 'Step 2') and add explicit validation checkpoints between steps (e.g., 'Verify indexes are ONLINE before proceeding to Step 4')

Split the LLM providers, embedder providers, external retrievers, and common errors sections into separate bundle files referenced from the main SKILL.md to reduce its length

DimensionReasoningScore

Conciseness

The content is mostly efficient with good reference tables and executable code, but has notable redundancy: the retriever selection decision tree and comparison table appear twice (in 'Retriever Selection' and 'Step 2 — Choose Retriever'), and some sections like the Text2CypherRetriever destructive-query guard info is repeated. The LLM/Embedder provider tables are useful reference but could be more compact.

2 / 3

Actionability

Excellent actionability throughout — every retriever type has fully executable Python code examples, Cypher index creation is copy-paste ready, install commands cover all extras, filters and query_params show concrete usage patterns, and the common errors table provides specific fixes. The core HybridCypherRetriever pattern is a complete working example from driver creation to response printing.

3 / 3

Workflow Clarity

The skill has a logical flow (install → choose retriever → create indexes → wire pipeline) and includes a verification checklist, but the step numbering is inconsistent (jumps from no numbering to 'Step 2', 'Step 3', 'Step 4'), and there's no explicit validation checkpoint between steps (e.g., verify index is ONLINE before proceeding to retriever setup). The 'If index not ONLINE: wait, poll every 5s' note is good but not integrated into a clear feedback loop.

2 / 3

Progressive Disclosure

The content is well-organized with clear section headers and a good references section at the bottom, but at ~400+ lines it's a monolithic document that could benefit from splitting detailed provider tables, external retriever examples, and the common errors table into separate referenced files. No bundle files exist to offload this content.

2 / 3

Total

9

/

12

Passed

Description

82%

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

This is a highly detailed and technically specific skill description that excels at listing concrete capabilities and distinguishing itself from related skills through explicit negative boundaries. Its main weakness is the absence of an explicit 'Use when...' clause, which means Claude must infer when to select it rather than having clear trigger guidance. The description is also quite dense and could benefit from slightly more structured formatting.

Suggestions

Add an explicit 'Use when...' clause, e.g., 'Use when the user asks about building retrieval pipelines with Neo4j, configuring GraphRAG retrievers, or integrating neo4j-graphrag with LLM providers.'

Consider adding a brief high-level summary sentence before the detailed list to help Claude quickly assess relevance, e.g., 'Build and configure retrieval-augmented generation pipelines using Neo4j graph databases.'

DimensionReasoningScore

Specificity

The description lists numerous specific concrete actions and components: retriever selection with six named retriever types, external vector DB retrievers, retrieval_query Cypher fragments, query_params, filters, pipeline wiring, LLM providers, embedder setup, index creation, token usage tracking, Cypher 25 SEARCH clause, and framework integrations.

3 / 3

Completeness

The 'what' is thoroughly covered with extensive detail on capabilities. However, there is no explicit 'Use when...' clause or equivalent trigger guidance telling Claude when to select this skill. The negative boundaries ('Does NOT handle...') partially compensate but don't replace explicit positive trigger conditions.

2 / 3

Trigger Term Quality

Excellent coverage of natural terms a user would use: 'GraphRAG', 'Neo4j', 'VectorRetriever', 'HybridRetriever', 'Text2CypherRetriever', 'retrieval pipeline', 'neo4j-graphrag', specific LLM provider names (OpenAI, Anthropic, etc.), external vector DBs (Weaviate, Pinecone, Qdrant), and framework names (LangChain, LlamaIndex). These are terms developers would naturally use.

3 / 3

Distinctiveness Conflict Risk

Exceptionally distinctive with explicit negative boundaries listing four related skills it should NOT be confused with (neo4j-document-import-skill, neo4j-vector-index-skill, neo4j-gds-skill, neo4j-agent-memory-skill). The specific package name, version, and detailed capability list create a very clear niche.

3 / 3

Total

11

/

12

Passed

Validation

81%

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

Validation9 / 11 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (556 lines); consider splitting into references/ and linking

Warning

frontmatter_unknown_keys

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

Warning

Total

9

/

11

Passed

Repository
neo4j-contrib/neo4j-skills
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.