Designs, reviews, and refactors property graph schemas (Neo4j, Memgraph, Neptune). Provides 46 rules for correct graph modeling with Cypher examples.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pproenca-dot-skills-1:graph-schemaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Comprehensive graph database data modeling guide for property graphs (Neo4j, Memgraph, Amazon Neptune, etc.). Contains 46 rules across 8 categories, prioritized by modeling impact from critical (entity classification, relationship design) to incremental (scale and evolution). Each rule includes detailed explanations, real-world Cypher examples comparing incorrect vs. correct models, and specifi...
Comprehensive graph database data modeling guide for property graphs (Neo4j, Memgraph, Amazon Neptune, etc.). Contains 46 rules across 8 categories, prioritized by modeling impact from critical (entity classification, relationship design) to incremental (scale and evolution). Each rule includes detailed explanations, real-world Cypher examples comparing incorrect vs. correct models, and specific impact descriptions.
Philosophy: Data modeling correctness first, performance second. Always ask "what is the user trying to achieve?" before choosing structure.
Reference these guidelines when:
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Entity Classification | CRITICAL | entity- |
| 2 | Relationship Design | CRITICAL | rel- |
| 3 | Property Placement | HIGH | prop- |
| 4 | Query-Driven Refinement | HIGH | query- |
| 5 | Structural Patterns | HIGH | pattern- |
| 6 | Anti-Patterns | MEDIUM | anti- |
| 7 | Constraints & Integrity | MEDIUM | constraint- |
| 8 | Scale & Evolution | LOW-MEDIUM | scale- |
entity-events - Model multi-participant events as first-class nodesentity-shared-values - Promote shared property values to nodesentity-specific-labels - Use specific labels over generic onesentity-multi-label - Qualify entities with multiple labelsentity-identity-state - Separate identity from mutable stateentity-reify-actions - Reify lifecycle actions into nodesentity-avoid-god-nodes - Avoid kitchen-sink entity nodesrel-specific-types - Use specific relationship types over generic onesrel-meaningful-direction - Choose semantically meaningful directionrel-naming-conventions - Follow UPPER_SNAKE_CASE for relationship typesrel-no-redundant-reverse - Don't create redundant reverse relationshipsrel-properties-scope - Put data on relationships only when it describes the connectionrel-single-semantic - One relationship type per semantic meaningrel-typed-over-filtered - Prefer typed relationships over generic + property filterprop-no-foreign-keys - Don't embed foreign keys as propertiesprop-promote-to-node - Promote frequently-queried values to nodesprop-correct-data-types - Use appropriate data types for propertiesprop-no-arrays-for-connections - Don't use property arrays when you need relationshipsprop-relationship-vs-node-data - Know when data belongs on relationship vs. nodequery-critical-traversals - Design for your most critical traversals firstquery-shortcut-relationships - Add shortcut relationships for frequent multi-hop queriesquery-denormalize-reads - Denormalize for read-heavy pathsquery-filter-by-rel-props - Use relationship properties to filter traversalsquery-test-before-deploy - Test model against real queries before deployingpattern-intermediary-nodes - Use intermediary nodes for multi-entity relationshipspattern-hierarchy - Model hierarchies with category nodes and depth relationshipspattern-linked-list - Use linked lists for ordered sequencespattern-timeline-tree - Apply timeline trees for temporal datapattern-fan-out - Fan-out pattern for event streams and activity feedspattern-bipartite - Use bipartite structure for many-to-many with contextanti-join-table-nodes - Don't model relational join tables as nodesanti-generic-relationships - Don't use generic RELATED_TO or CONNECTED relationshipsanti-relational-porting - Don't port relational schemas directly to graphanti-over-modeling - Don't make everything a nodeanti-duplicate-data - Don't duplicate data instead of creating relationshipsanti-string-encoded-structure - Don't encode structured data as delimited stringsconstraint-unique-identifiers - Define uniqueness constraints on natural identifiersconstraint-existence - Use existence constraints for required propertiesconstraint-index-traversals - Create indexes on traversal entry point propertiesconstraint-no-over-index - Don't over-index — each index has a write costconstraint-node-key - Use composite node keys for natural multi-part identifiersscale-supernode-mitigation - Mitigate supernodes with fan-out or partitioningscale-temporal-versioning - Separate current state from historical statescale-schema-migration - Plan for label and relationship type evolutionscale-batch-refactoring - Use APOC or batched queries for schema refactoringscale-dense-node-detection - Monitor and detect emerging supernodesRead individual reference files for detailed explanations and code examples:
| File | Description |
|---|---|
| references/_sections.md | Category definitions and ordering |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |
npx claudepluginhub pproenca/dot-skillsDesigns, reviews, and refactors Neo4j graph data models. Use when choosing labels vs relationships vs properties, migrating schemas to graph, detecting anti-patterns, or enforcing schema with constraints and indexes.
Creates rigorous, validated models of entities, relationships, and constraints for database schemas, knowledge graphs, ontologies, API data models, and taxonomies. Covers relational, document, graph, event/time-series, and dimensional patterns with lifecycle modeling, soft deletes, polymorphic associations, and hierarchies.
Knowledge graph specialist for entity resolution and causal modeling. Provides Cypher query patterns and graph traversal strategies for Neo4j and FalkorDB.