neo4j-getting-started-skill について
開発者やコーディングエージェント向けに、データベースの準備からアプリ構築まで Neo4j プロジェクトを段階的に進めるスキルです。進捗をファイルに記録し、後から再開できます。
主な機能
- 018段階の導入手順を順に実行
- 02進捗記録による作業の再開
- 03グラフモデル、データ、クエリのファイル生成
- 04デモ、合成、CSV、文書データに対応
- 05アプリ、ダッシュボード、エージェント連携の構築
活用シーン
- 01Neo4j プロジェクトの新規作成
- 02デモや開発用の合成データ生成
- 03記録済みの進捗からプロジェクトを再開
- 04Neo4j グラフを使ったアプリの構築
MCP 対応
前提条件と構築の段階で MCP 設定を扱います。必要に応じて MCP 設定やエージェントフレームワークのコードを生成できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ neo4j-contrib/ neo4j-skills --skill neo4j-getting-started-skillインストール後、Claude Code で/neo4j-getting-started-skillを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdREADME.mdreferences/0-prerequisites.md1-context.md2-provision.md3-model.md4-load.md5-explore.md6-query.md7-build.mddomain-patterns.mdquick-reference.mdreferences/capabilities/cypher-authoring.mdexecute-cypher.mdkg-from-documents.mdmcp-config.mdscripts/validate_queries.py詳細
Neo4j はじめてガイドスキル
以下の8つのステージを順番に実行し、ユーザーまたはエージェントがゼロから動作する Neo4j アプリケーションを構築できるようにガイドします。
各ステージの開始時:対応する ${CLAUDE_SKILL_DIR}/references/<stage-name>.md ファイルを読み、その指示に従ってください。現在実行中のステージだけを読み込んでください。一度にすべて読み込まないでください。
「ユーザー」とは、人間の開発者と自律型コーディングエージェントの両方を指します。
使用する場面
- Neo4j の新規プロジェクトをゼロから始める場合(ローカル/Docker/Aura)
- 初期設定全般:ゼロ → DB → モデル → 読み込み → アプリ
- デモや開発用の合成データを生成する場合
使用しない場面
- 既存プロジェクトでの Cypher 作成 →
neo4j-cypher-skill - ドライバーのアップグレード/Cypher の移行 →
neo4j-migration-skill - 既存 DB の管理(バックアップ、復元、インポート)→
neo4j-cli-tools-skill
プロジェクト構成
生成したすべてのコード、データ、スクリプト、クエリ、ノートブックは、作業ディレクトリに書き込んでください。これにより、ユーザーはセッション終了後も内容を確認し、再利用して再実行できます。出力を会話内のテキストとしてのみ生成してはいけません。必ずファイルに書き込んでください。
ファイルは以下の構成に整理します。ファイルを書き込む前にサブディレクトリを作成してください。
.env ← DB credentials (gitignored, loaded by python-dotenv)
aura.env ← Aura API credentials (gitignored, never overwrite)
progress.md ← stage-by-stage progress (this skill writes it)
requirements.txt ← Python dependencies
schema/
schema.json ← graph model definition
schema.cypher ← DDL: constraints + indexes
reset.cypher ← wipe all data (keep schema)
data/
generate.py ← synthetic data generator (DATA_SOURCE=synthetic)
import.py ← CSV/file importer (DATA_SOURCE=csv or relational)
*.csv ← any provided or generated data files
queries/
queries.cypher ← validated Cypher query library
scripts/
provision_aura.py ← Aura provisioning script (generated during provision stage)
notebook.ipynb ← app artifact (root — standard jupyter convention)
app.py ← app artifact (root — streamlit run app.py)
main.py ← app artifact (root — uvicorn main:app)
graphrag_app.py ← app artifact (root)
ルートレベルのファイル(.env、requirements.txt、アプリのコード)は、ツールがその場所を想定しているため、ルートに置きます。それ以外は適切なサブフォルダーに配置します。
進捗の追跡
このスキルは、再開できるように作業ディレクトリ内の progress.md を管理します。
起動時:
progress.mdが存在するか確認します。- 存在する場合、最初の未完了ステージを見つけます。
grep -B1 "^status: pending" progress.md | grep "^###" | head -1 - そのステージから再開します。コンテキストブロック(見出しの下にある key=value の行)を読み取り、
DOMAIN、USE_CASE、NEO4J_URIなどを復元してください。すでに記録されている情報をユーザーに再度尋ねてはいけません。 - 完了済みの各ステージについて、続行する前に
files=行に記載されたすべてのファイルを読みます。これらのファイルを正として扱い、記憶から内容を再構成してはいけません。schema/schema.json→ model、load、query、build の各ステージの前に再読しますqueries/queries.cypher→ build ステージの前に再読しますdata/generate.py→ import または reset の前に再読します
progress.mdが存在しない場合は、0-prerequisitesから開始します。
ステージ完了時 — progress.md を更新(または作成)します。
- そのステージの
###セクションがすでにある場合は、status: pendingをstatus: doneに更新し、新しい key=value 行を追加します。 - セクションがない場合は、以下の形式に従って追加します。
形式:
# Neo4j Getting-Started — Progress
### 0-prerequisites
status: done
### 1-context
status: done
DOMAIN=social
USE_CASE=friend recommendations
EXPERIENCE=beginner
DB_TARGET=aura-free
DATA_SOURCE=synthetic
APP_TYPE=notebook
EXEC_METHOD=query-api
### 2-provision
status: done
NEO4J_URI=neo4j+s://abc123.databases.neo4j.io
### 3-model
status: done
labels=Person,Post
relationships=FOLLOWS,POSTED
constraints=2
### 4-load
status: done
nodes=200 Person, 50 Post
relationships=1400 FOLLOWS, 300 POSTED
### 5-explore
status: pending
### 6-query
status: pending
### 7-build
status: pending
実行プロトコル
各ステージで、次の手順を実行します。
- ステージを告知します:
"## Stage: <name> — <purpose>" ${CLAUDE_SKILL_DIR}/references/<name>.mdを読みます- そのファイルの指示を実行します
- ステージの完了条件を確認します
status: doneとステージ固有のコンテキストを使ってprogress.mdを更新します- 次のステージに進みます(HITL:先に承認を得るため一時停止します)
ステージが失敗した場合は、ステージの参照ファイルにあるエラー対応の指示に従って復旧します。以下のスキップ条件で明示的に許可されている場合を除き、ステージを飛ばしてはいけません。
ステージ
ステージは、以下に示す番号順に実行します。スキップ条件が適用される場合を除き、各ステージは直前のステージが正常に完了していることを前提とします。各ステージに入るとき、リンク先の参照ファイルを読んでください。
0-prerequisites → 1-context → 2-provision → 3-model → 4-load → 5-explore → 6-query → 7-build
複数のステージで使用する共通機能:
- Cypher の実行:
${CLAUDE_SKILL_DIR}/references/capabilities/execute-cypher.md(3つのオプション。EXEC_METHODはcontextで選択) - Cypher 作成ルール:
${CLAUDE_SKILL_DIR}/references/capabilities/cypher-authoring.md(またはneo4j-cypher-authoring-skillに委ねます) - MCP の設定:
${CLAUDE_SKILL_DIR}/references/capabilities/mcp-config.md(prerequisitesとbuildで使用) - クエリの検証:
${CLAUDE_SKILL_DIR}/scripts/validate_queries.py— 1回の呼び出しですべてのクエリを一括検証します(queryで使用)
0 — prerequisites
目的:何よりも先に、必要な CLI ツールを確認してインストールします。
参照:${CLAUDE_SKILL_DIR}/references/0-prerequisites.md
完了条件:neo4j-mcp バイナリにアクセスでき、.gitignore に .env のエントリがあること。
必ず実施してください。
1 — context
目的:ドメイン、ユースケース、経験、インフラストラクチャの対象、データソース、出力形式を収集します。Cypher の実行に使用する EXEC_METHOD を判定します。
参照:${CLAUDE_SKILL_DIR}/references/1-context.md
完了条件:DOMAIN、USE_CASE、EXPERIENCE、DB_TARGET、DATA_SOURCE、APP_TYPE、EXEC_METHOD が判明していること。
スキップ条件:すべての変数が会話のコンテキストですでに提供されている場合。
2 — provision
目的:稼働中の Neo4j データベースを用意し、認証情報を .env に保存します。
参照:${CLAUDE_SKILL_DIR}/references/2-provision.md
完了条件:.env に NEO4J_URI/USERNAME/PASSWORD/DATABASE が記載され、接続が確認されていること。
スキップ条件:DB_TARGET=existing → ユーザーの認証情報から .env を作成し、3-model に進みます。
3 — model
目的:ユースケースに適したグラフデータモデルを設計または特定します。
参照:${CLAUDE_SKILL_DIR}/references/3-model.md
完了条件:schema.json と schema.cypher が作成されていること。
スキップ条件:DATA_SOURCE=demo → デモスキーマを使用し、4-load に進みます。
HITL チェックポイント(HITL モードのみ — 自律モードでは完全にスキップしてください):モデル案を提示し、承認を待ちます。
4 — load
目的:スキーマ制約を適用してから、データ(デモ、合成データ、CSV、またはドキュメント)をインポートします。
依存関係:3-model(インポートの前に制約を作成する必要があります)。
完了条件:ノード数が 50 以上で、import/ スクリプトと reset.cypher が作成されていること。
5 — explore
目的:グラフへの視覚的な入り口を提供します。「腑に落ちる」瞬間を生み出します。
参照:${CLAUDE_SKILL_DIR}/references/5-explore.md
完了条件:ブラウザーの URL をユーザーに表示するか、ノートブックに可視化セルを追加していること。
必須条件 — 必ず実施してください。
6 — query
目的:ユースケース向けの Cypher クエリライブラリを生成し、検証します。
参照:${CLAUDE_SKILL_DIR}/references/6-query.md
完了条件:queries.cypher に 5 件以上のクエリと 2 件以上のトラバーサルが含まれ、3 件以上のクエリが結果を返すこと。
7 — build
目的:実行可能なアプリケーション、ダッシュボード、ノートブック、またはエージェントとの連携を生成します。
参照:${CLAUDE_SKILL_DIR}/references/7-build.md
完了条件:成果物が存在し、構文チェックに合格し、ユースケースに沿った空でない結果を返すこと。
成功条件(7 項目すべて必須)
| 条件 | ステージ | 条件の詳細 |
|---|---|---|
db_running | provision | driver.verify_connectivity() が成功する |
model_valid | model | ノードラベルが 2 件以上、リレーションシップタイプが 1 件以上、DB 内の制約が 1 件以上 |
data_present | load | MATCH (n) RETURN count(n) が 50 以上 |
queries_work | query | クエリが 5 件以上、トラバーサルが 2 件以上、1 件以上の結果を返すクエリが 3 件以上 |
graph_visible | explore | ブラウザーの URL またはノートブックの可視化をユーザーに提供する |
app_generated | build | 成果物が存在し、構文チェックに合格し、空でない結果を返す |
integration_ready | build | 要求された場合、MCP 設定またはエージェントフレームワークのコードが存在する |
ファストパス
| 状況 | アクション |
|---|---|
DB_TARGET=existing | provision をスキップし、ユーザーの認証情報から .env を作成して model に進む |
DATA_SOURCE=demo | カスタムモデリングをスキップし、デモスキーマを使用して load に進む |
DB_TARGET=existing + データが存在する | provision、model、load をスキップし、スキーマを調査して explore に進む |
HITL モードと自律モード
HITL(対話型):モデルの確認のため、model の後に一時停止します。データの確認のため、load の後に一時停止します。
自律モード(CI のように、コンテキストをすべて事前に提供):どの段階でも承認のために一時停止しません。すべての判断を自動承認し、8 つすべてのステージを直ちに進めます。ブラウザーの URL を標準出力に表示します。DB の起動から 15 分以内を目標とします。
自律モードの判定方法 — ステージ 1 の開始時に確認します:
次のいずれかに該当する場合は自律モードです:
- 最初のプロンプトに次のすべてが含まれている:
DOMAIN、USE_CASE、EXPERIENCE、DB_TARGET、DATA_SOURCE、APP_TYPE(または「Domain: X, use-case: Y, ...」のような同等の表現) - セッションが
--auto-approveなどの非対話型フラグを指定して開始された - すべてのコンテキスト変数がすでに
progress.mdに記録されている(自律実行を再開する場合)
HITL モードの場合:ユーザーが必要なコンテキストをすべて事前に提示せず、新しい会話を開始しています。
自律モードでは:すべてのステージの参照ファイルにある HITL チェックポイントをすべて自動的にスキップします。 承認を求めてはいけません。「これでよさそうですか?」などと尋ねてはいけません。一時停止してはいけません。直ちに次のステップに進みます。
最終サマリー(すべてのゲート通過後に提出)
ステップ 1 — README.md を作成します。以下のテンプレートを使用して、作業ディレクトリに作成します。
progress.md と実際に生成されたファイルを参照し、すべての <placeholder> を埋めてください。
これは必須の成果物です。省略してはいけません。
重要 — ポータブルなコマンド:README.md 内の再実行コマンドには、すべて python3 を使用してください(/opt/homebrew/bin/python3.14 や /usr/local/bin/python3 などの絶対パスは使用しないでください)。README は、異なる Python 環境を使う他のユーザーと共有します。
# <DOMAIN> Graph — <USE_CASE>
A synthetic <DOMAIN> graph built with Neo4j, covering <USE_CASE>.
Generated by the neo4j-getting-started-skill on <date>.
## What's in the graph
| Label | Count | Description |
|-------|-------|-------------|
| <Label> | <N> | <one line> |
**Relationships:** <TYPE1>, <TYPE2>, ...
**Constraints:** <N> uniqueness constraints applied
## Explore visually
Open in Neo4j Browser:
<browser_url>
Use `NEO4J_PASSWORD` from `.env` to connect, then run:
```cypher
// Starter query — shows the full graph sample
MATCH (n)-[r]->(m) RETURN n, r, m LIMIT 50
ファイル
| ファイル | 用途 | 再実行 |
|---|---|---|
schema/schema.json | グラフモデル | — |
schema/schema.cypher | 制約とインデックス | source .env && cypher-shell -a $NEO4J_URI -u $NEO4J_USERNAME -p $NEO4J_PASSWORD --file schema/schema.cypher |
schema/reset.cypher | スキーマを保持してデータを消去 | source .env && cypher-shell -a $NEO4J_URI -u $NEO4J_USERNAME -p $NEO4J_PASSWORD --file schema/reset.cypher |
data/generate.py | 合成データを再生成 | source .venv/bin/activate && python3 data/generate.py |
data/import.py | CSV を Neo4j に再インポート | source .venv/bin/activate && python3 data/import.py |
queries/queries.cypher | クエリライブラリ | Neo4j Browser に貼り付け |
<artifact> | <アプリの種類> | <実行コマンド> |
requirements.txt | Python の依存関係 | source .venv/bin/activate && pip install -r requirements.txt |
(DATA_SOURCE=csv の場合は data/generate.py の行を省略します。DATA_SOURCE=synthetic の場合は data/import.py の行を省略します。)
アプリの実行
python3 -m venv .venv # skip if .venv already exists
source .venv/bin/activate
pip install -r requirements.txt
<run command>
<FastAPI の場合のみ — このセクションを含めます:> インタラクティブな API ドキュメントは http://localhost:8000/docs で開きます。
< MCP 統合の場合 — APP_TYPE に mcp が含まれている場合、このセクションを含めます:>
MCP 統合
グラフを Claude から直接クエリするには:
Claude Code — mcp-claude-code.json を .claude/settings.json にコピーします:
cp mcp-claude-code.json .claude/settings.json
その後、Claude Code を再読み込みします(/reload または再起動)。「Neo4j データベースにはどのノードラベルがありますか?」と尋ねます。
Claude Desktop — mcp-claude-desktop.json を
~/Library/Application Support/Claude/claude_desktop_config.json にマージしてから、Claude Desktop を再起動します。
利用可能な MCP ツール:get-schema、read-cypher、write-cypher。
リセットと再読み込み
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
サンプルクエリ
// <use-case-specific query 1 — fill in from queries/queries.cypher>
<query>
// <use-case-specific query 2>
<query>
(Cypher のコメントには -- ではなく // を使用します。)
次のステップ
- GraphAcademy で Neo4j の知識を深めましょう
data/*.csvを編集してデータセットを変更し、data/import.pyを再実行します- モデルを拡張するには、
schema/schema.jsonに新しいノードラベルやリレーションシップタイプを追加します
**Step 2 — print this to the conversation:**
✓ Neo4j Getting-Started — 完了
データベース: <NEO4J_URI> ブラウザー: https://browser.neo4j.io/?connectURL=
── 生成されたファイル(これらのファイルは保持してください) ─────────────────────── schema/schema.json グラフモデルの定義 schema/schema.cypher 制約/インデックスを再適用: cypher-shell ... --file schema/schema.cypher schema/reset.cypher スキーマを保持してデータを消去: cypher-shell ... --file schema/reset.cypher data/generate.py 合成データを再生成: source .venv/bin/activate && python3 data/generate.py data/*.csv ソースデータファイル — 編集してデータセットを変更 data/import.py CSV から再インポート: source .venv/bin/activate && python3 data/import.py queries/queries.cypher クエリライブラリ — Neo4j Browser に貼り付けるか、cypher-shell で実行 requirements.txt 依存関係をインストール: source .venv/bin/activate && pip install -r requirements.txt
── ゲート ─────────────────────────────────────────────────────── db_running ✓ model_valid ✓ data_present ✓ queries_work ✓ graph_visible ✓ app_generated ✓ integration_ready ✓/–
── 次のステップ ──────────────────────────────────────────────────
- 確認: Browser の URL を開く → MATCH (n)-[r]->(m) RETURN n,r,m LIMIT 50 を実行
- 反復: data/*.csv を編集 → source .venv/bin/activate && python3 data/import.py(先にリセット)
- 学習: https://graphacademy.neo4j.com
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