Neo4j

Write Cypher queries with proper patterns for merging, traversal, and performance.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "Neo4j" with this command: npx skills add ivangdavila/neo4j

MERGE Trap

  • MERGE matches the FULL pattern—MERGE (a)-[:KNOWS]->(b) creates duplicates if relationship missing
  • Safe upsert: merge nodes separately, then merge relationship
  • Use ON CREATE SET and ON MATCH SET for conditional properties—without these, nothing updates on match
  • For simple node upsert: MERGE (n:User {id: $id}) with unique constraint on id

Indexes

  • No index on property = full label scan—always index properties used in WHERE
  • Unique constraint auto-creates index—prefer constraint over plain index when applicable
  • Check plan with EXPLAIN before production—look for "NodeByLabelScan" without filter pushdown
  • Text search needs full-text index: CREATE FULLTEXT INDEX FOR (n:Post) ON EACH [n.title, n.body]

Variable-Length Paths

  • Unbounded [*] explodes on connected graphs—always set upper bound [*1..5]
  • [*0..] includes start node—usually unintended, start from [*1..]
  • shortestPath() returns one path only—use allShortestPaths() for all equally short paths
  • Filter inside path is expensive: [r:KNOWS* WHERE r.active] scans then filters—consider data model change

Cartesian Product

  • Two disconnected patterns multiply: MATCH (a:User), (b:Product) returns rows × rows
  • Connect patterns or split with WITH—unintended cartesian kills performance
  • Same variable in two patterns = implicit join, no cartesian
  • PROFILE query shows "CartesianProduct" operator when it happens

WITH Scope Reset

  • Only variables in WITH carry forward—MATCH (a)--(b) WITH a loses b
  • Aggregation forces WITH: MATCH (u:User) WITH u.country AS c, count(*) AS n
  • Common mistake: filtering after aggregation requires second WITH
  • Pagination: WITH n ORDER BY n.created SKIP 10 LIMIT 10

NULL Propagation

  • OPTIONAL MATCH returns NULL for missing patterns—NULLs propagate through expressions
  • WHERE after OPTIONAL MATCH filters out NULLs—use COALESCE() to preserve rows
  • count(NULL) returns 0—useful: OPTIONAL MATCH (u)-[:REVIEWED]->(p) RETURN count(p)
  • Property access on NULL throws no error, returns NULL—silent data loss

Direction

  • Query direction ignored with no arrow: (a)-[:KNOWS]-(b) matches both ways
  • Creation requires direction—must pick one, can't create undirected
  • Wrong direction = empty results—if relationship is (a)-[:OWNS]->(b), query (b)-[:OWNS]->(a) finds nothing

Batch Operations

  • Large creates in single transaction exhaust heap—use CALL {} IN TRANSACTIONS OF 1000 ROWS
  • UNWIND $list AS item CREATE (n:Node {id: item.id}) for batch inserts
  • apoc.periodic.iterate() for complex batch logic with progress
  • Delete in batches: MATCH (n:Old) WITH n LIMIT 10000 DETACH DELETE n in loop

Parameter Injection

  • Always use parameters $param not string concatenation—prevents Cypher injection
  • Parameters also enable query plan caching—literal values recompile each time
  • Pass as map: {param: value} in driver, :param {param: value} in browser
  • List parameter for IN: WHERE n.id IN $ids

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Fitbit Tracker

Personal Fitbit integration for daily health tracking with adaptive sleep and activity reporting

Registry SourceRecently Updated
General

Ollama Load Balancer

Ollama load balancer for Llama, Qwen, DeepSeek, and Mistral inference across multiple machines. Load balancing with auto-discovery via mDNS, health checks, q...

Registry SourceRecently Updated
General

Google Merchant Center

Google Merchant Center integration. Manage Accounts. Use when the user wants to interact with Google Merchant Center data.

Registry SourceRecently Updated
General

Twitter/X All-in-One — Search, Monitor & Publish Text & Media Posts

Searches and reads X (Twitter): profiles, timelines, mentions, followers, tweet search, trends, lists, communities, and Spaces. Publishes posts, likes/unlike...

Registry SourceRecently Updated