Synopsis
PROJECT_NAME is optional. When --domain and --framework are both provided without a positional argument, a kebab-case slug is auto-generated (for example, healthcare-pydanticai-app). When neither the project name nor the required flags are present, the interactive wizard launches automatically.
Run
create-context-graph --list-domains to see all 22 available domain IDs before scaffolding.Project options
TEXT
Human-readable project name. Used as the root directory name (after converting to a kebab-case slug). Optional — if omitted while
--domain and --framework are supplied, the name is auto-generated as {domain}-{framework}-app.TEXT
Domain ID that selects the industry ontology to use. Examples:
financial-services, healthcare, software-engineering. Run --list-domains to see the full list of 22 built-in IDs. Mutually exclusive with --custom-domain in terms of ontology source, though both set the domain context.choice
Agent framework to scaffold the backend with. Accepted values:
The value is case-insensitive.
PATH
Directory where the generated project is written. Defaults to
./<project-slug> in the current working directory. The target directory must not already exist or must be empty.Data options
flag
default:"false"
Generate synthetic demo data and write it to
data/fixtures.json in the output project. Uses static placeholder data drawn from domain-specific name pools by default. Pass --anthropic-api-key to upgrade to realistic LLM-generated data (80–90 entities, 25+ documents, 8–12 decision traces).flag
default:"false"
Convenience shortcut that expands to
--reset-database --demo-data --ingest. Scaffolds the project, generates demo data, clears the Neo4j database, and ingests everything in a single step.flag
default:"false"
Ingest generated fixture data into Neo4j immediately after scaffolding. Requires a reachable Neo4j instance. Uses
neo4j-agent-memory MemoryClient when available, falling back to the direct neo4j driver.flag
default:"false"
Clear all existing data from Neo4j (
MATCH (n) DETACH DELETE n) before ingesting. Useful when switching domains on a shared Neo4j instance to avoid cross-domain entity collisions.TEXT
SaaS connector to enable. Can be specified multiple times to enable several connectors. Each connector imports real data from the named service instead of (or in addition to) synthetic demo data.Supported values:
github, slack, jira, notion, gmail, gcal, salesforce.Connectors run at scaffold time and are also generated into the project so you can re-import with make import.Neo4j options
TEXT
default:"neo4j://localhost:7687"
Neo4j Bolt connection URI. Accepts
neo4j://, neo4j+s://, bolt://, and bolt+s:// schemes.Environment variable: NEO4J_URITEXT
default:"neo4j"
Neo4j authentication username.Environment variable:
NEO4J_USERNAMETEXT
default:"password"
Neo4j authentication password.Environment variable:
NEO4J_PASSWORDPATH
Path to a Neo4j Aura
.env file that contains NEO4J_URI, NEO4J_USERNAME, and NEO4J_PASSWORD. When provided, these values override the individual flags and the neo4j_type is automatically set to aura. You can download this file directly from the Neo4j Aura console.flag
default:"false"
Use
@johnymontana/neo4j-local for a lightweight local Neo4j instance. No Docker required, but Node.js must be installed. Sets neo4j_type to local and adds make neo4j-start / make neo4j-stop targets to the generated Makefile.API keys
TEXT
Anthropic API key (
sk-ant-...). Enables two features:- LLM-powered data generation — realistic entity names, professional documents, and multi-step decision traces via the Anthropic API when
--demo-datais passed. - Custom domain generation — required when
--custom-domainis used.
ANTHROPIC_API_KEYTEXT
OpenAI API key. Required at runtime for the
openai-agents framework. Also used by LangGraph when configured with OpenAI models. When set in the generated project’s .env, conversation memory automatically upgrades from local sentence-transformers embeddings to OpenAI text-embedding-3-small.Environment variable: OPENAI_API_KEYTEXT
Google / Gemini API key. Required at runtime for the
google-adk framework. A warning is shown during scaffolding if google-adk is selected without this key.Environment variable: GOOGLE_API_KEYAPI keys passed on the command line are written into the generated project’s
.env file. The .env is listed in .gitignore and is never committed to version control. Use environment variables in CI/CD pipelines rather than passing keys inline.Advanced options
TEXT
Natural language description of a custom domain. The LLM generates a complete ontology YAML — entity types, relationships, agent tools, system prompt, demo scenarios, and document templates — from your description. Requires
--anthropic-api-key.Example: "veterinary clinic managing patients, owners, appointments, and treatments"flag
default:"false"
Print a summary of what would be generated (project name, slug, domain, framework, Neo4j type, data source, output path) and exit without creating any files. Useful for validating flag combinations in scripts.
flag
default:"false"
Enable verbose
DEBUG-level logging during scaffolding and data generation. Useful for diagnosing template rendering errors or LLM API failures.flag
Print all available domain IDs and their display names, then exit. No other flags are required.
flag
Print the installed package version and exit.
flag
Show the help message with a summary of all options and exit.
Interactive vs. non-interactive mode
The CLI operates in two modes depending on which flags are provided. Interactive mode launches when--domain or --framework is missing. The 7-step Questionary wizard collects all configuration interactively: project name, domain, framework, data source, Neo4j connection type, and API keys.
Non-interactive mode runs when --domain (or --custom-domain) and --framework are both provided. The wizard is skipped entirely. PROJECT_NAME is optional — if omitted, the slug is auto-generated as {domain}-{framework}-app. This mode is safe for use in CI/CD pipelines and automated scripts.
Environment variables
CLI flags always take precedence over environment variables. Set these in your shell profile or a.env file before running the tool to avoid repeating credentials on every invocation.
Examples
Launch the interactive wizard
Scaffold without any prompts
Auto-generate the project name
When--domain and --framework are provided but PROJECT_NAME is omitted, a slug is generated automatically:
