This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
backendhigh PriorityID: neo4j-cypher-graph-optimization

Neo4j Cypher Graph Database & Relationship Indexing Standard

Production database standard for graph applications using Neo4j and Cypher. Enforces parameterized query execution, relationship directionality, uniqueness constraints, index hints, and batch periodic commits to eliminate graph query stalls.

Prohibited Anti-Pattern: AI constructs raw string Cypher queries with unbounded Cartesian products (MATCH (a), (b)), crashing Neo4j CPU cores.

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Neo4j Cypher Graph Database & Relationship Indexing Standard - Production database standard for graph applications using Neo4j and Cypher. Enforces parameterized query execution, relationship directionality, uniqueness constraints, index hints, and batch periodic commits to eliminate graph query stalls.
globs: **/*neo4j*.ts, **/*cypher*.py, **/*graph*.py
alwaysApply: false
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/neo4j-cypher-graph-optimization"
---

# Neo4j Cypher Graph Database & Relationship Indexing Standard

> **Severity**: HIGH | **Category**: backend
> **Anti-Pattern Warning**: AI constructs raw string Cypher queries with unbounded Cartesian products (MATCH (a), (b)), crashing Neo4j CPU cores.

## System Constraints
You are a graph database and Neo4j systems specialist. When writing Cypher queries, NEVER concatenate strings or execute un-parameterized queries. Always specify relationship directions ([:REL]->), create uniqueness constraints for entity identifiers, and use CALL { ... } IN TRANSACTIONS OF 1000 ROWS for bulk mutations.

## Strict Guidelines
- Always pass dynamic variables via query parameters ($param); never interpolate values directly into Cypher strings.
- Always define relationship directionality (e.g. (u)-[:MEMBER_OF]->(g)); undirected matching doubles traversal depth exponentially.
- Ensure entity identifiers are backed by uniqueness constraints (CREATE CONSTRAINT FOR (u:User) REQUIRE u.uuid IS UNIQUE).
- Batch massive graph writes using 'CALL { ... } IN TRANSACTIONS OF 1000 ROWS' to avoid filling up the Java heap with transaction logs.

## Bad vs Good Implementations
### Parameterized Directed Pattern Matching vs Cartesian Product

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Vulnerable to Cypher injection and causes full table scans with quadratic complexity on large graphs.
```python
# ANTI-PATTERN: String interpolation and undirected cartesian match
user_id = req.args["user_id"]
cypher = f"MATCH (u:User), (g:Group) WHERE u.id = '{user_id}' AND (u)-(g) RETURN g.name"
session.run(cypher)
```

#### Production Standard (Correct)
> **Standard**: Utilizes the unique constraint index on :User(uuid) for an O(1) start point, traversing only direct outbound edges.
```python
# PRODUCTION STANDARD: Parameterized Directed Pattern with Index Lookup
cypher = """
MATCH (u:User {uuid: $user_uuid})-[:MEMBER_OF]->(g:Group)
WHERE g.status = $active_status
RETURN g.uuid AS groupId, g.name AS groupName
LIMIT $limit
"""
params = {"user_uuid": user_uuid, "active_status": "ACTIVE", "limit": 50}
records = session.run(cypher, params)
```

### Batch Transaction Writes with CALL IN TRANSACTIONS

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Exceeds Neo4j memory limits, triggers full Java garbage collection freezes, and crashes the database.
```cypher
// ANTI-PATTERN: Ingesting 1,000,000 nodes in a single unbounded transaction
UNWIND $events AS event CREATE (:Event {id: event.id});
```

#### Production Standard (Correct)
> **Standard**: Commits transaction state incrementally every 1,000 rows, preserving smooth database throughput.
```cypher
// PRODUCTION STANDARD: Batched sub-transactions with memory commit checkpoints
:auto UNWIND $events AS event
CALL {
  WITH event
  MERGE (e:Event {id: event.id})
} IN TRANSACTIONS OF 1000 ROWS;
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Recommended Agent Skills (askills.dev)

Ready-to-use executable skill functions tailored to this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Neo4j Cypher Graph Database & Relationship Indexing Standard

Neo4j Cypher Graph Database & Relationship Indexing Standard defines an industrial-grade behavioral standard for backend engineering. Production database standard for graph applications using Neo4j and Cypher. Enforces parameterized query execution, relationship directionality, uniqueness constraints, index hints, and batch periodic commits to eliminate graph query stalls. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: AI constructs raw string Cypher queries with unbounded Cartesian products (MATCH (a), (b)), crashing Neo4j CPU cores. Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftAI constructs raw string Cypher queries with unbounded Cartesian products (MATCH (a), (b)), crashing Neo4j CPU cores.High
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Always pass dynamic variables via query parameters ($param)

Always pass dynamic variables via query parameters ($param); never interpolate values directly into Cypher strings.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Always define relationship directionality (e.g. (u)-[

Always define relationship directionality (e.g. (u)-[:MEMBER_OF]->(g)); undirected matching doubles traversal depth exponentially.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Ensure entity identifiers are backed by uniqueness constraints (CREATE CONSTRAINT FOR (u

Ensure entity identifiers are backed by uniqueness constraints (CREATE CONSTRAINT FOR (u:User) REQUIRE u.uuid IS UNIQUE).

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Batch massive graph writes using 'CALL { ... } IN TRANSACTIONS OF 1000 ROWS' to avoid filling up the Java heap with transaction logs.

Batch massive graph writes using 'CALL { ... } IN TRANSACTIONS OF 1000 ROWS' to avoid filling up the Java heap with transaction logs.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Neo4j Cypher Graph Database & Relationship Indexing Standard critical for AI coding assistants?

Production database standard for graph applications using Neo4j and Cypher. Enforces parameterized query execution, relationship directionality, uniqueness constraints, index hints, and batch periodic commits to eliminate graph query stalls. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (AI constructs raw string Cypher queries with unbounded Cartesian products (MATCH (a), (b)), crashing Neo4j CPU cores.) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

Neo4j