CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

neo4j-document-import-skill

Ingests unstructured and semi-structured documents into Neo4j as a knowledge graph. Use when chunking PDFs, HTML, plain text, or Markdown; extracting entities and relationships from text with an LLM (SimpleKGPipeline, neo4j-graphrag); loading JSON via apoc.load.json; building Document→Chunk→Entity graph structures; or connecting LangChain/LlamaIndex document loaders to Neo4j. Covers neo4j-graphrag SimpleKGPipeline, LLM Graph Builder web UI, entity resolution, chunking strategies, and graph schema design for RAG pipelines. Does NOT handle structured CSV/relational import — use neo4j-import-skill. Does NOT handle GraphRAG retrieval after ingestion — use neo4j-graphrag-skill. Does NOT handle vector index creation — use neo4j-vector-search-skill.

Quality

94%

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

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

This is a strong, highly actionable reference: executable code throughout, a clearly sequenced pipeline with validation on both sides of batch ingestion, and a real one-level-deep bundle file that carries genuine overflow content. The main weaknesses are redundancy (GraphSchema/constraints documented two to three times) and a ~570-line body that keeps advanced API detail inline instead of pushing it to the existing reference file.

Suggestions

Merge the 'GraphSchema — Current API (≥1.8.0)' section into Step 1 (or move it to references/kg-construction.md): the NodeType/PropertyType/ConstraintType material and constraint examples are currently documented twice, with constraints covered a third time in 'Constraints and Indexes'.

Consolidate the scattered version-sensitive notes (v1.13.0, v1.14.0, v1.15.0, pin >=1.23.0 / error 22N41, Python 3.13/3.14) into a single 'Version and deprecation notes' or 'Old patterns' section so the main workflow reads cleanly without time-sensitive caveats inline at every step.

Move secondary integration detail (LangChain loop, Parquet export, SchemaFromTextExtractor, LexicalGraphConfig field list) into references/kg-construction.md alongside the resolver and loader depth already there, keeping SKILL.md as the decision table + Steps 1–5 + verification core.

DimensionReasoningScore

Conciseness

The body is dense and assumes competence — no padding explaining what PDFs, knowledge graphs, or pip are — and nearly every section is code, a table, or terse guidance. It is not a 5 because of concrete tightening opportunities: the GraphSchema API is documented twice ("Step 1 — Define Graph Schema" Option B and the later "GraphSchema — Current API (≥1.8.0)" section repeat the NodeType/PropertyType/constraint material, including overlapping ConstraintType examples), constraints are covered a third time in "Constraints and Indexes", and version-sensitive notes ("added v1.15.0", "v1.14.0+", "pin >=1.23.0... error 22N41") are scattered inline rather than consolidated in a deprecation/old-patterns section, which the guidelines penalize. It stays above level 3 because there is essentially no explanation of concepts Claude already knows — the excess is redundant API content, not educational fluff.

4 / 5

Actionability

Nearly everything is copy-paste ready: install extras per provider, a complete SimpleKGPipeline constructor with commented parameters, run_async calls for PDF/Markdown/raw-text/batch, FixedSizeSplitter with tuned values, three resolver invocations, executable Cypher for apoc.load.json, constraints, and post-ingestion verification, and a full LangChain loop. The Common Errors table maps 12 concrete error strings to specific fixes. This matches the level-5 anchor ('fully executable; copy-paste ready; specific examples cover the common cases'); the only gaps (the inline WebPageLoader sketch noted 'strip HTML in real impl', no LlamaIndex code sample) are covered by the full patterns in references/kg-construction.md and an external doc link respectively.

5 / 5

Workflow Clarity

The core workflow is explicitly sequenced as Step 1 (Define Graph Schema) through Step 5 (Entity Resolution) with an upstream gate — "Constraints and Indexes (Run Before Ingestion)" including a poll loop ("SHOW INDEXES... WHERE state <> 'ONLINE'; If rows returned: wait, then re-run. ONLINE = safe to ingest") — and downstream validation (post-ingestion verification Cypher, an 11-item Verification Checklist, and a Common Errors table that serves as an error-recovery feedback loop). Batch ingestion is exactly the context where the rubric demands validation, and it is present on both sides of the run. This matches the level-5 anchor ('clear sequence with explicit validation steps; feedback loops for error recovery; checklists'); the only quibble — the constraints section appearing late in document order despite its '(Run Before Ingestion)' label — is mitigated by that explicit label and the checklist, so level 4 does not fit better.

5 / 5

Progressive Disclosure

The bundle structure is genuinely one-level-deep and well signaled: references/kg-construction.md exists and is referenced at point of need ("Chunking strategy by use-case and full resolver config: [references/kg-construction.md]") and again in a "References — Load on demand" section, and the split is deliberate — inline working basics (Step 5 resolvers) vs. reference depth (resolver class hierarchy, full configs, thresholds). It falls short of level 5 because SKILL.md itself is a ~570-line manual rather than an overview pointing to detailed materials: advanced API material that mirrors the reference file's role (the duplicate "GraphSchema — Current API" section with composite-key constraints, SchemaFromTextExtractor, Parquet export, LexicalGraphConfig fields, and the LangChain integration pattern) lives inline, so the split is good but not clean. It is clearly above level 3, where references are present but buried and separation is ad hoc.

4 / 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 states a concrete capability in third person, provides an explicit 'Use when' clause with five concrete trigger scenarios, names the specific tools and formats involved, and actively disambiguates against three sibling Neo4j skills. All four dimensions sit at the top anchor.

DimensionReasoningScore

Specificity

Quotes: "Ingests unstructured and semi-structured documents into Neo4j as a knowledge graph", "chunking PDFs, HTML, plain text, or Markdown", "extracting entities and relationships from text with an LLM (SimpleKGPipeline, neo4j-graphrag)", "loading JSON via apoc.load.json", "building Document→Chunk→Entity graph structures", "connecting LangChain/LlamaIndex document loaders to Neo4j". Six concrete actions span the whole domain (ingestion, chunking, extraction, JSON loading, graph modeling, framework integration), matching the 'comprehensive coverage' anchor; it exceeds the level-4 anchor ('several specific actions; minor gaps') because no core capability of the domain is left unnamed.

5 / 5

Completeness

The 'what' is explicit ("Ingests unstructured and semi-structured documents into Neo4j as a knowledge graph") and the 'when' is an explicit "Use when" clause with concrete triggers ("Use when chunking PDFs, HTML, plain text, or Markdown; extracting entities and relationships... loading JSON via apoc.load.json... or connecting LangChain/LlamaIndex document loaders to Neo4j"), plus explicit negative boundaries. This is a direct match for the level-5 anchor ('clearly and explicitly answers both what AND when with concrete trigger phrases'); level 4 is ruled out because the 'when' clause is not merely present but enumerates five distinct concrete triggers.

5 / 5

Trigger Term Quality

Natural phrases a user would actually say are enumerated: "chunking PDFs", "extracting entities and relationships", "knowledge graph", "entity resolution", "LangChain/LlamaIndex document loaders", "apoc.load.json", "SimpleKGPipeline", "LLM Graph Builder", "RAG pipelines", plus formats ("PDFs, HTML, plain text, Markdown"). This matches the comprehensive synonym-plus-tool-name coverage of the level-5 anchor; it is above level 4 because the trigger set is broader than that anchor's 'good coverage; a few natural terms missing' — only file extensions (e.g. '.pdf') are absent, and the format names cover the same intent.

5 / 5

Distinctiveness Conflict Risk

The niche (unstructured document → knowledge graph ingestion in Neo4j) is staked out with named tools (SimpleKGPipeline, neo4j-graphrag, apoc.load.json, LLM Graph Builder) and three explicit disambiguation clauses: "Does NOT handle structured CSV/relational import — use neo4j-import-skill", "Does NOT handle GraphRAG retrieval after ingestion — use neo4j-graphrag-skill", "Does NOT handle vector index creation — use neo4j-vector-search-skill". This active routing to sibling skills gives minimal conflict risk, matching the level-5 'clear niche with distinct triggers' anchor.

5 / 5

Total

20

/

20

Passed

Validation

87%

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

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

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

Warning

frontmatter_unknown_keys

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

Warning

Total

14

/

16

Passed

Repository

neo4j-contrib/neo4j-skills

Path

neo4j-document-import-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.