Build and configure a GraphQL API backed by Neo4j using @neo4j/graphql v7 (current) or v5 (LTS). Covers Neo4jGraphQL constructor, getSchema(), assertIndexesAndConstraints(), type definitions with @node, @relationship (IN/OUT/UNDIRECTED), @cypher for custom resolvers, @authorization/@authentication for JWT/JWKS security, auto-generated queries/mutations, OGM programmatic access, subscriptions via CDC, and Apollo Federation. Use when writing typeDefs, securing fields, or wiring Neo4j to Apollo Server. Does NOT handle raw Cypher outside resolvers — use neo4j-cypher-skill. Does NOT cover Spring Data Neo4j entity mapping — use neo4j-spring-data-skill.
91
88%
Does it follow best practices?
Impact
96%
1.10xAverage score across 3 eval scenarios
Passed
No known issues
Core schema setup with @node, relationships, and v7 query syntax
@node on all types
100%
100%
@id on identity fields
100%
100%
@timestamp for Book audit fields
100%
100%
Relationship direction correctness
100%
100%
Inverse direction consistency
100%
100%
Rating as relationship properties
100%
100%
assertIndexesAndConstraints called
100%
100%
getSchema() used
100%
100%
v7 eq filter syntax
0%
100%
v7 sort/limit as direct args
62%
100%
Connection API for rel properties
50%
100%
No connectOrCreate
100%
100%
JWT authorization and schema access control directives
JWKS authorization config
100%
100%
Token passed in context
100%
100%
Public provider access without auth
70%
80%
@authorization validate on HealthRecord
100%
100%
BEFORE timing on READ validate
100%
100%
Patient self-access filter
62%
87%
@authentication with role check
100%
100%
Custom JWT @jwt type
100%
100%
@alias for email mapping
100%
100%
@mutation disabled on audit log
100%
100%
@node on all node types
0%
100%
@cypher custom resolvers and OGM data seeding
@cypher columnName matches RETURN alias
100%
100%
this in field-level @cypher
100%
100%
$paramName for Cypher arguments
100%
100%
Default value on @cypher field arg
100%
100%
extend type for computed fields
0%
0%
@cypher on Query type
100%
100%
OGM separate package
100%
100%
ogm.init() awaited before model use
100%
100%
OGM used for seeding (not mutations)
100%
100%
@filterable/@sortable on description
100%
100%
@plural on Series type
100%
100%
66ed0e1
Table of Contents
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.