neo4j-getting-started-skill
Orchestrates zero-to-running-app in 8 stages — prerequisites → context → provision → model → load → explore → query → build. Each stage reads its own reference file. Supports HITL and fully autonomous operation. Use when starting a new Neo4j project from scratch, provisioning Aura, generating synthe
By neo4j-contrib · 595 installs
npx skills add neo4j-contrib/neo4j-skills --skill neo4j-getting-started-skill
Source repository · Upstream listing
Neo4j Getting Started Skill
Guide a user or agent from zero to a working Neo4j application by executing the 8 stages below in order.
At the start of each stage : read the corresponding ${CLAUDE SKILL DIR}/references/<stage name .md file and follow its instructions. Only load the stage you are currently executing — not all at once.
"User" means both a human developer and an autonomous coding agent.
When to Use
New Neo4j project from scratch (local/Docker/Aura)
Full onboarding: zero → DB → model → load → app
Generating synthetic data for demos or dev
When NOT to Use
Cypher authoring on existing project → neo4j cypher skill
Driver upgrades / Cypher migration → neo4j migration skill
Admin on existing DB (backup, restore, import) → neo4j cli tools skill
Project Structure
All generated code, data, scripts, queries, and notebooks must be written to the working directory so the user can inspect, reuse, and re run them after the session ends. Never generate output only as text in the conversation — always write it to a file.
Organize files into this layout. Create subdirectories before writing files.
Root level files ( .env , requirements.txt , app code) stay at root because tooling expects them there. Everything else goes in the appropriate subfolder.
Progress Tracking
The skill maintains progress.md in the working directory to support resumability.
On startup:
1. Check if progress.md exists.
2. If it exists, find the first pending stage:
3. Resume from that stage. Read its context block (the key=value lines beneath the header) to restore DOMAIN , USE CASE , NEO4J URI , etc. — do not re ask the user for information already recorded.
4. For each completed stage, read every file listed in its files= line before proceeding. These files are the ground truth — do not reconstruct their content from memory.
schema/schema.json → re read before model, load, query, or build stages
queries/queries.cypher → re read before build stage
data/generate.py → re read before import or reset
5. If progress.md does not exist, start from 0 prerequisites .
On stage completion — update (or create) progress.md :
If the stage's section already exists, update status: pending → status: done and append any new key=value lines.
If the section doesn't exist, append it following the format below.
Format:
Execution Protocol
For each stage:
1. Announce the stage: " Stage: <name — <purpose "
2. Read ${CLAUDE SKILL DIR}/references/<name .md
3. Execute the instructions in that file
4. Verify the stage's completion condition
5. Update progress.md with status: done and stage specific context
6. Proceed to the next stage (HITL: pause for approval first)
If a stage fails, recover using the error guidance in the stage reference file. Do not skip stages unless the skip condition below explicitly permits it.
Stages
Stages run in the numbered order shown. Each depends on the one before it completing successfully (except where a skip condition applies). Read the linked reference file when entering each stage.
Shared capabilities used across multiple stages:
Cypher execution: ${CLAUDE SKILL DIR}/references/capabilities/execute cypher.md (3 options; EXEC METHOD chosen in context )
Cypher authoring rules: ${CLAUDE SKILL DIR}/references/capabilities/cypher authoring.md (or defer to neo4j cypher authoring skill )
MCP configuration: ${CLAUDE SKILL DIR}/references/capabilities/mcp config.md (used in prerequisites and build )
Query validation: ${CLAUDE SKILL DIR}/scripts/validate queries.py — batch validate all queries in one call (used in query )
0 — prerequisites
Purpose : Verify and install required CLI tools before doing anything else.
Reference : ${CLAUDE SKILL DIR}/references/0 prerequisites.md
Completes when : neo4j mcp binary is reachable; .gitignore has .env entry.
Never skip.
1 — context
Purpose : Collect domain, use case, experience, infrastructure target, data source, and output type. Detect EXEC METHOD for Cypher execution.
Reference : ${CLAUDE SKILL DIR}/references/1 context.md
Completes when : DOMAIN , USE CASE , EXPERIENCE , DB TARGET , DATA SOURCE , APP TYPE , EXEC METHOD are known.
Skip condition : all variables already provided in conversation context.
2 — provision
Purpose : Provision a running Neo4j database and save credentials to .env .
Reference : ${CLAUDE SKILL DIR}/references/2 provision.md
Completes when : .env exists with NEO4J URI/USERNAME/PASSWORD/DATABASE ; connectivity verified.
Skip condition : DB TARGET=existing → write .env from user credentials, proceed to 3 model .
3 — model
Purpose : Design or discover a graph data model suited to the use case.
Reference : ${CLAUDE SKILL DIR}/references/3 model.md
Completes when : schema.json and schema.cypher written.
Skip condition : DATA SOURCE=demo → use demo schema, proceed to 4 load .
HITL checkpoint (HITL mode only — skip entirely in autonomous mode ): show model draft, wait for approval.
4 — load
Purpose : Apply schema constraints, then import data (demo, synthetic, CSV, or documents).
Reference : ${CLAUDE SKILL DIR}/references/4 load.md
Depends on : 3 model (constraints must exist before import).
Completes when : node count ≥ 50; import/ scripts written; reset.cypher written.
5 — explore
Purpose : Deliver a visual entry point to the graph — the "it clicks" moment.
Reference : ${CLAUDE SKILL DIR}/references/5 explore.md
Completes when : browser URL printed to user, or notebook visualization cell added.
Hard gate — never skip.
6 — query
Purpose : Generate and validate a Cypher query library for the use case.
Reference : ${CLAUDE SKILL DIR}/references/6 query.md
Completes when : queries.cypher has ≥5 queries; ≥2 traversals; ≥3 return results.
7 — build
Purpose : Generate a runnable application, dashboard, notebook, or agent integration.
Reference : ${CLAUDE SKILL DIR}/references/7 build.md
Completes when : artifact exists, passes syntax check, returns non empty use case results.
Success Gates (all 7 required)
Gate Stage Condition
db running provision driver.verify connectivity() succeeds
model valid model ≥2 node labels, ≥1 rel type, ≥1 constraint in DB
data present load MATCH (n) RETURN count(n) ≥ 50
queries work query ≥5 queries; ≥2 traversals; ≥3 return ≥1 result
graph visible explore Browser URL or notebook viz delivered to user
app generated build Artifact exists, passes syntax, returns non empty results
integration ready build MCP config or agent framework code present (if requested)
Fast Paths
Situation Action
DB TARGET=existing Skip provision ; write .env from user creds; go to model
DATA SOURCE=demo Skip custom modeling; use demo schema; jump to load
DB TARGET=existing + data present Skip provision , model , load ; introspect schema; go to explore
HITL vs Autonomous Mode
HITL (conversational): pause after model for model review; pause after load for data review.
Autonomous (CI like, all context provided upfront): never pause for approval at any stage; auto approve all decisions; proceed immediately through all 8 stages; print browser URL to stdout; target ≤15 min from DB running.
How to detect autonomous mode — check at the start of stage 1:
Autonomous if ANY of the following are true:
The initial prompt contains all of: DOMAIN , USE CASE , EXPERIENCE , DB TARGET , DATA SOURCE , APP TYPE (or equivalent phrasing like "Domain: X, use case: Y, ...")
The session was started with auto approve or similar non interactive flag
All context variables are already recorded in progress.md (resuming an autonomous run)
HITL if: the user opened a fresh conversation without providing full context upfront.
In autonomous mode: every HITL checkpoint in every stage reference file is automatically skipped. Do not ask for approval. Do not say "does this look right?" Do not pause. Continue to the next step immediately.
Final Summary (deliver after all gates pass)
Step 1 — write README.md to the working directory using the template below.
Fill in every <placeholder from progress.md and the actual generated files.
This is a required output — do not skip it.
IMPORTANT — portable commands : All re run commands in README.md MUST use python3 (never an absolute path like /opt/homebrew/bin/python3.14 or /usr/local/bin/python3 ). The README is shared with others who have different Python installs.
cypher
// Starter query — shows the full graph sample
MATCH (n) [r] (m) RETURN n, r, m LIMIT 50
bash
python3 m venv .venv skip if .venv already exists
source .venv/bin/activate
pip install r requirements.txt
<run command
bash
cp mcp claude code.json .claude/settings.json
bash
source .env
cypher shell a $NEO4J URI u $NEO4J USERNAME p $NEO4J PASSWORD file schema/reset.cypher
source .venv/bin/activate
python3 data/generate.py or skip if using your own CSVs
python3 data/import.py
cypher
// <use case specific query 1 — fill in from queries/queries.cypher
<query
// <use case specific query 2
<query
Step 2 — print this to the conversation:
Omit lines that don't apply (e.g. omit data/import.py when DATA SOURCE=synthetic ,
omit data/generate.py when DATA SOURCE=csv ).
Checklist
[ ] Prerequisites met (Docker/Python/Java; Aura API key if cloud)
[ ] DB reachable — RETURN 1 in cypher shell
[ ] Constraints + indexes ONLINE before data load
[ ] Data loaded — MATCH (n) RETURN count(n) 0
[ ] queries.cypher: all queries return expected results
[ ] App/notebook runs end to end
[ ] .env gitignored; credentials not hardcoded