Grades are a hygiene check, not a security guarantee.

Claude Code, Skill

skills

Claude Code skills for founders, developers, and web3 builders.

Compatibility: Not stated.

Grade D

Two or more Medium findings, or a High finding. Only try it in a sandbox.

Graded by PlugVetRubric v2

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

Rescanned at commit db4b27ce40ac, unchanged since the check below.

INSTALL_REMOTE_SCRIPT NETWORK_HOST_FROM_INPUT SECRETS_PATH_CREDENTIAL

Why this grade

  • INSTALL_REMOTE_SCRIPT High

    Fetches a script from the network and runs it (a pipe to a shell, or an install hook with a URL).

    skills/go-dev/SKILL.md, line 58 curl -sSfL https://golangci-lint.run/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.14.0

  • NETWORK_HOST_FROM_INPUT Medium

    A file takes a URL or endpoint as input and has no fixed host list.

    archive/cloudflare-workers/SKILL.md, line 78 async fetch(request: Request, env: Env): Promise<Response> {

  • SECRETS_PATH_CREDENTIAL Medium

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

    skills/gh-cli/references/other.md, line 523 $ gh codespace cp -e -- -F ~/.ssh/codespaces_config 'remote:~/*.go' ./gofiles/

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.

If you think this grade is wrong, email [email protected] with the entry link and your evidence. We aim to acknowledge within two working days and decide within seven. If we confirm an error, we aim to correct it within 24 hours of confirming it. These are aims, not guarantees.

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

    archive/audio-quality-check/scripts/analyze_recording.py, line 48

    result = subprocess.run(

    archive/audio-quality-check/scripts/analyze_recording.py, line 63

    subprocess.run(

    archive/audio-quality-check/scripts/analyze_recording.py, line 601

    shutil.rmtree(tmpdir, ignore_errors=True)

    Show more

    scripts/check_skills.py, line 599

    return subprocess.run(

    scripts/check_skills.py, line 645

    result = subprocess.run(command, cwd=repo_root, text=True, capture_output=True)

    scripts/check_skills.py, line 689

    whoami = subprocess.run(["clawhub", "whoami"], cwd=repo_root, text=True, capture_output=True)

    scripts/prepare_skill_release.py, line 60

    return subprocess.run(

    scripts/prepare_skill_release.py, line 373

    shutil.rmtree(dist_dir)

    scripts/publish_release.py, line 18

    return subprocess.run(

    skills/lance-format/references/docs/quickstart/index.md, line 71

    shutil.rmtree("/tmp/test.lance", ignore_errors=True)

    skills/lance-format/references/docs/quickstart/index.md, line 84

    shutil.rmtree("/tmp/test.parquet", ignore_errors=True)

    skills/lance-format/references/docs/quickstart/index.md, line 85

    shutil.rmtree("/tmp/test.lance", ignore_errors=True)

    skills/mcp-best-practices/references/security-auth.md, line 165

    Server-side, the ordinary rule applies: never interpolate tool input into a shell command (`child_process.exec` with unsanitized arguments produced [CVE-2025-53967](https://nvd.nis

  • Install and update

    Serious

    install fetches a script from the network. The docs document an installer that pipes a download into a shell.

    INSTALL_REMOTE_SCRIPT INSTALL_DOCUMENTED_INSTALLER

    skills/go-dev/SKILL.md, line 58

    curl -sSfL https://golangci-lint.run/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.14.0

    skills/go-dev/SKILL.md, line 525

    curl -sSfL https://golangci-lint.run/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.14.0

    skills/go-dev/references/golangci-lint-reference.md, line 11

    curl -sSfL https://golangci-lint.run/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.14.0

    Show more

    skills/rust-dev/SKILL.md, line 31

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

    skills/solana-development/references/anchor.md, line 29

    curl --proto '=https' --tlsv1.2 -sSfL https://solana-install.solana.workers.dev | bash

    skills/swift-macos/references/spm-build.md, line 302

    curl -L https://swift.org/install | bash

  • Network

    Concern

    can reach a host that is not written as a fixed address. can reach api.example.com. The description does not name that host. accepts a host from input, with no fixed list in this file. can reach attacker.example. The description does not name that host. can reach peps.python.org. The description does not name that host. can reach logs.example.com. The description does not name that host. can reach auth. The description does not name that host. can reach internal-api. The description does not nam

    NETWORK_HOST_FROM_INPUT NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST NETWORK_NAMED_HOST

    archive/cloudflare-workers/SKILL.md, line 78

    async fetch(request: Request, env: Env): Promise<Response> {

    archive/cloudflare-workers/SKILL.md, line 99

    async fetch(request: Request, env: Env): Promise<Response> {

    archive/cloudflare-workers/SKILL.md, line 158

    async fetch(request: Request, env: Env, ctx: ExecutionContext) {

    Show more

    archive/cloudflare-workers/SKILL.md, line 251

    async fetch(request: Request, env: Env, ctx: ExecutionContext) {

    archive/cloudflare-workers/SKILL.md, line 276

    async fetch(request: Request): Promise<Response> {

    archive/cloudflare-workers/SKILL.md, line 364

    async fetch(request: Request, env: Env): Promise<Response> {

    archive/cloudflare-workers/SKILL.md, line 407

    async fetch(request: Request, env: Env): Promise<Response> {

    archive/cloudflare-workers/SKILL.md, line 430

    async fetch(request: Request): Promise<Response> {

    skills/go-dev/references/go-migrate-reference.md, line 25

    curl -L https://github.com/golang-migrate/migrate/releases/download/v4.20.1/migrate.linux-amd64.tar.gz | tar xvz

    skills/mpp/SKILL.md, line 193

    const res = await fetch('http://localhost:3000/api/resource')

    skills/mpp/references/sessions.md, line 126

    const res = await fetch('http://localhost:3000/api/resource')

  • Secrets

    Concern

    reads a credential or environment file.

    SECRETS_ENV_READ SECRETS_PATH_CREDENTIAL SECRETS_PATH_DOTENV

    archive/privy-integration/SKILL.md, line 211

    appSecret: process.env.PRIVY_APP_SECRET!

    skills/erc-8004/SKILL.md, line 73

    privateKey: process.env.PRIVATE_KEY,

    skills/gh-cli/references/other.md, line 523

    $ gh codespace cp -e -- -F ~/.ssh/codespaces_config 'remote:~/*.go' ./gofiles/

    Show more

    skills/foundry-solidity/references/testing.md, line 526

    // Read .env

    skills/gh-cli/references/other.md, line 400

    # Set multiple variables imported from the ".env" file

    skills/gh-cli/references/other.md, line 401

    $ gh variable set -f .env

    skills/gh-cli/references/other.md, line 1098

    # Set multiple secrets imported from the ".env" file

    skills/gh-cli/references/other.md, line 1099

    $ gh secret set -f .env

    skills/gh-cli/references/other.md, line 1603

    $ gh codespace ssh --config > ~/.ssh/codespaces

    skills/gh-cli/references/other.md, line 1604

    $ printf 'Match all\nInclude ~/.ssh/codespaces\n' >> ~/.ssh/config

    skills/mpp/SKILL.md, line 244

    apiKey: process.env.OPENAI_API_KEY,

    skills/mpp/references/discovery-and-proxy.md, line 15

    secretKey: process.env.MPP_SECRET_KEY,

    skills/mpp/references/discovery-and-proxy.md, line 24

    apiKey: process.env.OPENAI_API_KEY,

    skills/mpp/references/discovery-and-proxy.md, line 31

    apiKey: process.env.ANTHROPIC_API_KEY,

    skills/mpp/references/discovery-and-proxy.md, line 63

    bearer: process.env.SEARCH_TOKEN, // Authorization: Bearer <token>

    skills/mpp/references/sessions.md, line 192

    secretKey: process.env.MPP_SECRET_KEY!,

  • 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 db4b27ce40ac. can delete files. install fetches a script from the network. 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 api.example.com. The description does not name that host. accepts a host from input, with no fixed list in this file. can reach attacker.example. The description does not name that host. can reach peps.python.org. The description does not name that host. can reach logs.example.com. The description does not name that host. can reach auth. The description does not name that host. can reach internal-api. The description does not nam reads a credential

Date and source

Date checked:

View source

github.com

Commit graded: db4b27ce40acebb3371c0b995f7135636d0bdb3a

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