Grades are a hygiene check, not a security guarantee.

Claude Code, Plugin

Neo4J Skills

Neo4j Skills for Coding and other Agents including Cypher

Compatibility: Not stated.

Grade B

Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.

Graded by PlugVetRubric v2

Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.

Rescanned at commit 309e908c0494.

NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST SECRETS_PATH_DOTENV PERMISSION_SHELL_DECLARED INSTALL_DOCUMENTED_INSTALLER SECRETS_ENV_READ

Why this grade

  • NETWORK_NO_FIXED_HOST Low

    Makes a network call whose host is not written as a fixed address.

    neo4j-aura-agent-skill/SKILL.md, line 61 TOKEN=$(curl -s --request POST 'https://api.neo4j.io/oauth/token' \

  • NETWORK_UNNAMED_HOST Low

    Calls a fixed host that the description does not name.

    neo4j-aura-agent-skill/SKILL.md, line 61 TOKEN=$(curl -s --request POST 'https://api.neo4j.io/oauth/token' \

  • SECRETS_PATH_DOTENV Low

    Mentions a .env file.

    neo4j-aura-agent-skill/scripts/fetch_schema.py, line 21 load_dotenv(Path(__file__).parent.parent / ".env")

  • PERMISSION_SHELL_DECLARED Note

    Runs shell commands, and the manifest or description says so.

    scripts/bump-version.py, line 136 result = subprocess.run(

  • INSTALL_DOCUMENTED_INSTALLER Note

    Documentation shows an installer that pipes a download into a shell.

    neo4j-cli-tools-skill/SKILL.md, line 5 management, agent skill catalog install; install with curl -sSfL https://neo4j.sh/install.sh | bash),

  • SECRETS_ENV_READ Note

    Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.

    neo4j-aura-agent-skill/scripts/fetch_schema.py, line 66 password = os.environ.get("NEO4J_PASSWORD")

Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.

Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.

What was checked

Plain notes from the hygiene checks.

  • Permissions

    Note

    requests shell access. The manifest names this permission.

    PERMISSION_SHELL_DECLARED

    scripts/bump-version.py, line 136

    result = subprocess.run(

    scripts/lint_skills.py, line 176

    result = subprocess.run(

    neo4j-cli-tools-skill/references/aura-cli-reference.md, line 306

    result = subprocess.run(cmd, capture_output=True, text=True)

    Show more

    neo4j-cli-tools-skill/references/aura-cli-reference.md, line 311

    result = subprocess.run(cmd, capture_output=True, text=True)

    neo4j-cli-tools-skill/references/neo4j-mcp-reference.md, line 334

    process = subprocess.Popen(

  • Install and update

    Note

    The docs document an installer that pipes a download into a shell.

    INSTALL_DOCUMENTED_INSTALLER

    neo4j-cli-tools-skill/SKILL.md, line 5

    management, agent skill catalog install; install with curl -sSfL https://neo4j.sh/install.sh | bash),

    neo4j-cli-tools-skill/SKILL.md, line 38

    curl -sSfL https://neo4j.sh/install.sh | bash # recommended

  • Network

    Concern

    can reach a host that is not written as a fixed address. can reach api.neo4j.io. The description does not name that host.

    NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST

    neo4j-aura-agent-skill/SKILL.md, line 61

    TOKEN=$(curl -s --request POST 'https://api.neo4j.io/oauth/token' \

    neo4j-aura-agent-skill/SKILL.md, line 81

    curl -s https://api.neo4j.io/v1/tenants \

    neo4j-aura-agent-skill/SKILL.md, line 97

    curl -s "https://api.neo4j.io/v1/instances?tenantId=${AURA_PROJECT_ID}" \

    Show more

    neo4j-aura-agent-skill/SKILL.md, line 228

    curl -s -X POST \

    neo4j-aura-agent-skill/scripts/invoke_agent.py, line 35

    r = requests.post(

    neo4j-aura-agent-skill/scripts/invoke_agent.py, line 62

    r = requests.post(

    neo4j-aura-agent-skill/scripts/manage_agent.py, line 33

    r = requests.post(

    neo4j-aura-agent-skill/scripts/manage_agent.py, line 59

    r = requests.get(agents_url(args.org_id, args.project_id), headers=headers(token))

  • Secrets

    Concern

    reads a credential or environment file.

    SECRETS_ENV_READ SECRETS_PATH_DOTENV

    neo4j-aura-agent-skill/scripts/fetch_schema.py, line 66

    password = os.environ.get("NEO4J_PASSWORD")

    neo4j-aura-agent-skill/scripts/invoke_agent.py, line 32

    client_secret = os.environ.get("AURA_CLIENT_SECRET")

    neo4j-aura-agent-skill/scripts/fetch_schema.py, line 21

    load_dotenv(Path(__file__).parent.parent / ".env")

    Show more

    neo4j-aura-agent-skill/scripts/manage_agent.py, line 30

    client_secret = os.environ.get("AURA_CLIENT_SECRET")

    neo4j-cypher-skill/scripts/generate_schema.py, line 32

    PASSWORD = os.getenv("NEO4J_PASSWORD")

    neo4j-driver-javascript-skill/SKILL.md, line 55

    const PASSWORD = process.env.NEO4J_PASSWORD

    neo4j-driver-javascript-skill/SKILL.md, line 75

    neo4j.auth.basic(process.env.NEO4J_USER, process.env.NEO4J_PASSWORD)

    neo4j-driver-javascript-skill/SKILL.md, line 104

    neo4j.auth.basic(process.env.NEO4J_USER, process.env.NEO4J_PASSWORD))

    neo4j-driver-python-skill/SKILL.md, line 54

    PASSWORD = os.getenv("NEO4J_PASSWORD", "")

    neo4j-aura-agent-skill/scripts/fetch_schema.py, line 70

    sys.exit("ERROR: NEO4J_URI and NEO4J_PASSWORD must be set in .env or environment")

    neo4j-aura-agent-skill/scripts/invoke_agent.py, line 17

    load_dotenv(Path(__file__).parent.parent / ".env")

    neo4j-aura-agent-skill/scripts/invoke_agent.py, line 34

    sys.exit("ERROR: AURA_CLIENT_ID and AURA_CLIENT_SECRET must be set in .env or environment")

    neo4j-aura-agent-skill/scripts/invoke_agent.py, line 57

    sys.exit(f"ERROR: {flag} required (or set {env} in .env)")

    neo4j-aura-agent-skill/scripts/manage_agent.py, line 15

    load_dotenv(Path(__file__).parent.parent / ".env")

    neo4j-aura-agent-skill/scripts/manage_agent.py, line 32

    sys.exit("ERROR: AURA_CLIENT_ID and AURA_CLIENT_SECRET must be set in .env or environment")

    neo4j-aura-agent-skill/scripts/manage_agent.py, line 142

    sys.exit("ERROR: --org-id required (or set AURA_ORG_ID in .env)")

  • Agent instructions

    Pass

    No instruction to ignore earlier instructions or to hide a step.

  • Obfuscation

    Pass

    No encoded or minified payload found.

  • Licence

    Pass

    A licence file is present (LICENSE).

  • Maintainer activity

    Pass

    The latest commit is within the last 365 days.

Note

Hygiene check of commit 309e908c0494. requests shell access. The manifest names this permission. can reach a host that is not written as a fixed address. can reach api.neo4j.io. The description does not name that host. reads a credential or environment file.

Date and source

Date checked:

View source

github.com

Commit graded: 309e908c0494d4c8efceda04c56879895544a9d0

This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.

Read how this letter is chosen