Grades are a hygiene check, not a security guarantee.

Claude Code, Skill

Agent Standards

Agent Standards, a skill listed in the PlugVet directory.

Compatibility: Not stated.

Grade C

One Medium finding. Read the report before installing.

Graded by PlugVetRubric v2

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

SECRETS_PATH_CREDENTIAL

Why this grade

  • SECRETS_PATH_CREDENTIAL Medium

    Mentions a credential store path (~/.ssh, id_rsa, .npmrc, .aws/credentials, credentials.json, .netrc).

    .agents/skills/asus-router/references/ssh-access.md, line 54 ssh-keygen -t ed25519 -f ~/.ssh/<key-name> -C homelab-agent

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

    Concern

    can delete files.

    PERMISSION_DELETE_FILES

    .agents/hooks/markdown_lint_check.py, line 173

    result = subprocess.run(

    .agents/hooks/no_ai_markers_check.py, line 806

    os.remove(path)

    .agents/hooks/preflight_gate.py, line 4542

    """What eval or Invoke-Expression writes, running code in the current shell."""

    Show more

    .agents/hooks/preflight_gate.py, line 4586

    That is eval and Invoke-Expression, source and dot-sourcing, a shell with

    .agents/skills/windows/references/package-managers.md, line 77

    From the Scoop README: "Run the following commands from a regular (non-admin) PowerShell terminal to install Scoop", followed by `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

    .agents/skills/windows/references/package-managers.md, line 87

    Scoop never needs elevation for its own installs, so an agent can run it once the owner has asked for Scoop. The install line pipes a remote script into `Invoke-Expression`, so the

    CHANGELOG.md, line 600

    inline Python or JavaScript for the path it writes. It reads heredoc, piped, `eval`, `Invoke-Expression` and sourced

    docs/AGENTS-UPDATE.md, line 323

    python3 -c 'import json,subprocess;p=".claude/settings.json";u=json.loads(subprocess.check_output(["git","show","agent-standards/master:"+p],text=True,encoding="utf-8"));s=json.loa

    docs/AGENTS-UPDATE.md, line 329

    python -c 'import json,subprocess;p=".claude/settings.json";u=json.loads(subprocess.check_output(["git","show","agent-standards/master:"+p],text=True,encoding="utf-8"));s=json.load

  • Install and update

    Note

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

    INSTALL_DOCUMENTED_INSTALLER

    docs/MCP_SETUP.md, line 177

    curl -LsSf https://astral.sh/uv/install.sh | sh

  • Network

    Concern

    can reach a host that is not written as a fixed address. can reach example.com. The description does not name that host. can reach app.example.com. The description does not name that host. can reach api. The description does not name that host. can reach api.kde-look.org. The description does not name that host. can reach api.example.com. The description does not name that host. can reach example.dev. The description does not name that host. can reach raw.githubusercontent.com. The description d

    NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST NETWORK_NAMED_HOST

    .agents/skills/ai-regression-testing/SKILL.md, line 231

    await fetch(`/api/items/${id}`, { method: "DELETE" })

    .agents/skills/ai-regression-testing/SKILL.md, line 242

    const res = await fetch(`/api/items/${id}`, { method: "DELETE" })

    .agents/skills/arch-linux/scripts/arch-news-since.py, line 40

    with urllib.request.urlopen(request, timeout=15) as response:

    Show more

    .agents/skills/ascend-memory/SKILL.md, line 83

    curl -s -X POST $BASE/api/v1/memory/insert -H

    .agents/skills/ascend-memory/SKILL.md, line 95

    curl -s "$BASE/api/v1/memory/search?user_id=<user-id>&query=coffee%20preference&limit=5"

    .agents/skills/ascend-memory/SKILL.md, line 121

    curl -s -X DELETE "$BASE/api/v1/memory?memory_id=<id-from-search>"

    .agents/skills/ascend-web-hunter/SKILL.md, line 87

    curl -s --max-time 90 $BASE/api/v2/web/read -X POST -H "Content-Type: application/json" -d '{"url":"https://example.com/jobs/view/123","heavy_mode":true,"include_links":true}'

    .agents/skills/ascend-web-hunter/SKILL.md, line 155

    curl -s -X POST $BASE/api/v2/web/session/establish -H "Content-Type: application/json" -d '{"url":"https://app.example.com/dashboard"}'

    .agents/skills/ascend-web-hunter/references/base-url.md, line 22

    nter.internal http://localhost:7021; do curl -sf --max-time 3 "$candidate/health" >/d

    .agents/skills/docker-patterns/references/dockerfiles.md, line 41

    HEALTHCHECK --interval=30s --timeout=3s CMD wget -qO- http://localhost:3000/health || exit 1

    .agents/skills/docker-patterns/references/dockerfiles.md, line 66

    HEALTHCHECK --interval=30s --timeout=3s CMD wget -qO- http://localhost:8080/health || exit 1

    .agents/skills/docker-patterns/references/dockerfiles.md, line 94

    HEALTHCHECK --interval=30s --timeout=3s CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/health/')" || exit 1

    .agents/skills/syncthing/references/cli-and-rest.md, line 92

    printf 'X-API-Key: %s\n' "$st_key" | curl -s -H @- http://127.0.0.1:8384/rest/system/version

    .agents/skills/syncthing/references/troubleshooting.md, line 22

    printf 'X-API-Key: %s\n' "$st_key" | curl -s -H @- "http://127.0.0.1:8384/rest/db/status?folder=<folder-id>"

    .agents/skills/syncthing/references/troubleshooting.md, line 32

    printf 'X-API-Key: %s\n' "$st_key" | curl -s -H @- "http://127.0.0.1:8384/rest/folder/errors?folder=<folder-id>"

    .agents/skills/syncthing/references/troubleshooting.md, line 80

    printf 'X-API-Key: %s\n' "$st_key" | curl -s -X POST -H @- "http://127.0.0.1:8384/rest/db/scan?folder=<folder-id>"

  • Secrets

    Concern

    reads a credential or environment file.

    SECRETS_ENV_READ SECRETS_PATH_CREDENTIAL SECRETS_PATH_DOTENV

    .agents/skills/ai-regression-testing/references/vitest-nextjs-harness.md, line 44

    process.env.DATABASE_ANON_KEY = ""

    .agents/skills/asus-router/references/ssh-access.md, line 54

    ssh-keygen -t ed25519 -f ~/.ssh/<key-name> -C homelab-agent

    .agents/skills/asus-router/references/ssh-access.md, line 64

    cat ~/.ssh/<key-name>.pub

    Show more

    .agents/skills/asus-router/references/ssh-access.md, line 74

    ssh-keygen -t ecdsa -b 256 -f ~/.ssh/<router-key-name> -C homelab-agent

    .agents/skills/asus-router/references/ssh-access.md, line 88

    HOMELAB_SSH_KEY=~/.ssh/<key-name>

    .agents/skills/docker-patterns/SKILL.md, line 169

    - .env

    .agents/skills/docker-patterns/SKILL.md, line 230

    .env

    .agents/skills/docker-patterns/SKILL.md, line 231

    .env.*

    .agents/skills/docker-patterns/references/compose-and-debugging.md, line 22

    - DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD:?set it in .env}@db:5432/app_dev

    .agents/skills/security-review/SKILL.md, line 53

    const apiKey = process.env.SEARCH_API_KEY

    .agents/skills/security-review/references/cloud-infrastructure-security.md, line 80

    const apiKey = process.env.API_KEY;

  • Agent instructions

    Pass

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

  • Obfuscation

    Note

    a file was over the read cap and was not fully read. the file cap was reached before every file was read.

    OBFUSCATION_FILE_OVER_READ_CAP OBFUSCATION_FILE_CAP_REACHED

    .agents/hooks/preflight_gate.py, line 1

    #!/usr/bin/env python3

    .codex/agents/java-pro.toml, line 1

    name = "java-pro"

  • 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 f392247071d9. can delete files. The docs document an installer that pipes a download into a shell. can reach a host that is not written as a fixed address. can reach example.com. The description does not name that host. can reach app.example.com. The description does not name that host. can reach api. The description does not name that host. can reach api.kde-look.org. The description does not name that host. can reach api.example.com. The description does not name that host. can reach example.dev. The description does not name that host. can reach raw.githubusercontent.com. The description d reads a credential or environment file. a file was over the re

Date and source

Date checked:

View source

github.com

Commit graded: f392247071d97a30f107a13f017a7c37ae802859

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