CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

neo4j-driver-dotnet-skill

Neo4j .NET Driver v6 — IDriver lifecycle, DI registration (singleton), ExecutableQuery fluent API, ExecuteReadAsync/ExecuteWriteAsync managed transactions, IResultCursor (FetchAsync/ ToListAsync), record value access (.Get<T>/As<T>), null safety, UNWIND batching, temporal types, await using, EagerResult, object mapping, CancellationToken, error handling, and common traps. Use when writing C# or .NET code connecting to Neo4j. Also triggers on Neo4j.Driver, IDriver, ExecutableQuery, ExecuteReadAsync, ExecuteWriteAsync, IResultCursor, IAsyncSession, or any Bolt/Aura work in .NET/C#. Does NOT handle Cypher authoring — use neo4j-cypher-skill. Does NOT cover driver version upgrades — use neo4j-migration-skill.

73

Quality

92%

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

SKILL.md
Quality
Evals
Security

Quality

Content

82%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 reference: executable code for every common case, explicit wrong/right contrasts for the driver's real traps, and clean one-level-deep offloading of advanced topics to existing reference files. The main costs are redundancy between inline traps and the Common Mistakes table, a displaced table row in the FetchAsync section, and implicit rather than explicit validation steps for batch writes.

Suggestions

Fix the structural glitch in the FetchAsync Loop section: the orphaned `| SingleAsync() | … |` row is separated from the cursor-consumption table by the `IResultSummary` profiling paragraph — merge it back into the table.

Deduplicate the traps: the inline ❌/✅ blocks (cursor return, async-void, await using) restate rows of the Common Mistakes table; keep one canonical location and cross-reference it to trim tokens.

Add an explicit verify step for UNWIND batch writes — e.g. compare `summary.Counters.NodesCreated` against the input row count and retry/log on mismatch — to close the feedback loop for batch database operations.

DimensionReasoningScore

Conciseness

The body is dense and assumes competence — tables, ❌/✅ contrasts, and copy-paste code with almost no filler or explanation of concepts Claude already knows. It falls short of 'every token earns its place' because of redundancy: traps are stated both inline (e.g. the cursor and async-void ❌/✅ blocks) and again in the 22-row Common Mistakes table, and `.WithConfig(new QueryConfig(database: "neo4j"))` boilerplate repeats in nearly every snippet. Not level 3 — there is no unnecessary explanation, only repetition that could be tightened.

4 / 5

Actionability

Guidance is fully executable throughout: install command (`dotnet add package Neo4j.Driver`), complete DI/shutdown/service registration code, runnable ExecutableQuery and managed-transaction snippets, a decision table for choosing the API, and concrete exception-handling code with real error codes (`Neo.ClientError.Schema.ConstraintValidationFailed`). Specific examples cover the common cases (reads, writes, batching, mapping), matching the copy-paste-ready level-5 anchor; level 4 would imply minor gaps in coverage, which are not evident.

5 / 5

Workflow Clarity

As a reference skill it provides a clear selection workflow ("Choose the Right API" table), fail-fast startup validation (`VerifyConnectivityAsync`), error-recovery loops (rollback isolation with logging, idempotent-write guidance for commit uncertainty), and a final checklist — so the batch/database-operation feedback-loop cap at 3 does not apply. It stays below 5 because some checkpoints are implicit rather than explicit steps, e.g. no demonstrated verify-after-write pattern for UNWIND batches (comparing `Counters.NodesCreated` to input count) and the checklist is a flat list rather than a sequenced validate-then-proceed flow.

4 / 5

Progressive Disclosure

Structure is good: three real, one-level-deep reference files (transactions.md, performance.md, object-mapping.md — all present in the bundle with no nested links), each clearly signaled under "References — Load on demand" with a content summary, while the main API path stays inline. Minor organization gaps keep it below 5: an orphaned table row (`| SingleAsync() | … Expect one row |`) sits detached from the cursor-consumption table above, and the ~460-line body inlines some material (full type-mapping table, the entire Common Mistakes catalog) that could live in a reference file, leaving SKILL.md less of a lean overview.

4 / 5

Total

17

/

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 excellent description: dense with concrete API-level capabilities, explicit 'Use when' triggers with synonyms (C#/.NET, Bolt/Aura, class names), and clear negative boundaries that steer away from sibling skills. The length is keyword-dense rather than padded — every phrase is either a capability or a trigger.

DimensionReasoningScore

Specificity

The description enumerates many concrete capabilities — "IDriver lifecycle, DI registration (singleton), ExecutableQuery fluent API, ExecuteReadAsync/ExecuteWriteAsync managed transactions, IResultCursor (FetchAsync/ToListAsync), record value access (.Get<T>/As<T>), null safety, UNWIND batching, temporal types, await using, EagerResult, object mapping, CancellationToken, error handling, and common traps" — giving comprehensive, API-level coverage of the driver surface. It is not the level-4 case because there are no meaningful coverage gaps; the actions named are specific and span the skill's whole scope.

5 / 5

Completeness

It explicitly answers both questions: 'what' via the long capability list and 'when' via "Use when writing C# or .NET code connecting to Neo4j. Also triggers on …" with concrete trigger phrases. It goes beyond the level-5 anchor by also stating negative boundaries ("Does NOT handle Cypher authoring", "Does NOT cover driver version upgrades"), so it clearly exceeds level 4.

5 / 5

Trigger Term Quality

Trigger coverage is comprehensive with synonyms and both natural and technical phrasings: "writing C# or .NET code connecting to Neo4j", "Neo4j.Driver, IDriver, ExecutableQuery, ExecuteReadAsync, ExecuteWriteAsync, IResultCursor, IAsyncSession, or any Bolt/Aura work in .NET/C#". Users would naturally say most of these when needing the skill; only trivial variants (e.g. "Neo4j client") are absent, which keeps it at 5 rather than dropping to the 'a few natural terms missing' level-4 anchor.

5 / 5

Distinctiveness Conflict Risk

The niche is unambiguous (Neo4j .NET Driver v6) and it actively disambiguates from adjacent skills: "Does NOT handle Cypher authoring — use neo4j-cypher-skill" and "Does NOT cover driver version upgrades — use neo4j-migration-skill". This is stronger than the level-4 anchor's 'minor overlap risk with closely related skills' — conflicts with the sibling Neo4j skills are explicitly preempted.

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-driver-dotnet-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.