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.

Quality

93%

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

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 high-quality, trap-oriented driver reference: fully executable examples, explicit wrong/right contrasts, and a clean overview-to-references split. Weaknesses are modest — a broken markdown table (the IResultSummary profiling paragraph is inserted mid-table, orphaning the SingleAsync row at line 289), deliberate duplication between the Common Mistakes table and earlier sections, and a reference-style rather than sequenced workflow.

Suggestions

Fix the broken "Cursor consumption methods" table: move the IResultSummary profiling paragraph (SKILL.md line 288) below the table and restore the orphaned `| SingleAsync() | ✅ exactly 1 | ❌ | Expect one row |` row (line 289) as a proper table row.

Reduce duplication between the Common Mistakes table and preceding sections — keep only rows not already illustrated inline (e.g., await using, cursor-after-loop, and the AsObject using directive are each covered twice) — and consolidate version-gated notes (the 6.4.0 pin, v6.3.0 profile changes, 6.2 UUID support) into a single version-compatibility section.

Close the batch-operation feedback loop: after the UNWIND example, verify the write by checking `summary.Counters.NodesCreated` against the input count before declaring success.

DimensionReasoningScore

Conciseness

Largely lean — terse rules, tables, and code with no explanation of concepts Claude already knows — but the 22-row Common Mistakes table substantially restates rules already covered in preceding sections (await using, cursor rules, AsObject using directive, rollback isolation), and time-sensitive version notes sit inline ("Pin Neo4j.Driver >= 6.4.0", "[v6.3.0+]", "[driver 6.2+, Bolt 6.1, Neo4j 2026.08+]") rather than in a dedicated version/deprecated section. Efficient with minor trimmable redundancy — anchor 4, not 5; not 3 because there is no padding or generic filler.

4 / 5

Actionability

Every section gives complete, executable C#: `dotnet add package Neo4j.Driver`, full DI registration including a hosted shutdown service, fluent ExecutableQuery examples with parameters/config, managed-transaction callbacks, UNWIND batching, object mapping, and typed catch blocks with an `ex.Code` filter. Copy-paste ready and covering the common cases — anchor 5; not 4 because there is no pseudocode and no missing key details.

5 / 5

Workflow Clarity

Strong checkpoints are present — the "Choose the Right API" decision table, ❌/✅ contrast patterns, `VerifyConnectivityAsync()` fail-fast, counters checks, rollback isolation, idempotent-write guidance for commit uncertainty, and a final Checklist — but the document is a reference layout rather than a sequenced task flow, and the UNWIND batching example lacks an inline post-write verification step. Anchor 4; not 5 because there is no explicit end-to-end sequence, and not 3 because validation/verification is substantially present, so the database/batch cap does not bind.

4 / 5

Progressive Disclosure

The body carries the high-frequency core patterns while genuinely advanced material is split into three real, one-level-deep files, each clearly signaled under "Load on demand" with a one-line description: references/transactions.md (bookmarks, TransactionConfig, commit uncertainty), references/performance.md (spatial types, pool tuning, streaming), references/object-mapping.md (blueprint/lambda mapping, repository pattern) — all verified present in the bundle. Matches anchor 5's overview-plus-labeled-references structure; not 4 because nothing that plainly belongs in a reference is inlined and navigation is easy.

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: comprehensive concrete capability enumeration, an explicit use-when clause with natural trigger terms (package, API, protocol, and cloud names), and explicit negative boundaries that disambiguate sibling skills. Dense rather than padded — every clause carries triggering or capability information.

DimensionReasoningScore

Specificity

Enumerates concrete capabilities in detail: "IDriver lifecycle, DI registration (singleton), Executable Query 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". This comprehensively covers the driver v6 surface with specific API-level capabilities, matching the anchor-5 example's multi-action comprehensiveness; it is not 4 because there are no notable coverage gaps, and each item names a concrete capability rather than generic language.

5 / 5

Completeness

Explicitly answers both questions: the "what" is the concrete capability list, and the "when" is "Use when writing C# or .NET code connecting to Neo4j" plus concrete "Also triggers on…" phrases — mirroring the anchor-5 example structure. Not 4 because the when-clause is explicit and trigger-phrase-specific rather than merely present.

5 / 5

Trigger Term Quality

Explicit trigger clause: "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#". These are exactly the tokens a developer would naturally produce (package name, API type names, protocol, cloud service, language variants). Synonym coverage is broad (Neo4j/Bolt/Aura; C#/.NET), matching anchor 5 rather than 4, where only a few natural terms would be missing.

5 / 5

Distinctiveness Conflict Risk

Clear niche (Neo4j .NET driver only) with explicit disambiguation: "Does NOT handle Cypher authoring — use neo4j-cypher-skill. Does NOT cover driver version upgrades — use neo4j-migration-skill". Trigger terms are driver-API-specific, so conflict risk with sibling Neo4j skills is minimal — anchor 5.

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.