Grades are a hygiene check, not a security guarantee.

Claude Code, Skill

97

Skills distilled from the hard-won lessons of world-renowned programmers, in the spirit of '97 Things Every Programmer Should Know'.

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.

PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST SECRETS_PATH_DOTENV SECRETS_ENV_READ

Why this grade

  • PERMISSION_DELETE_FILES Low

    Contains a call that can delete files.

    scripts/lib/run-harness.mjs, line 146 fs.rmSync(dir, { recursive: true, force: true });

  • NETWORK_NO_FIXED_HOST Low

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

    .todo/done/US-97-mvp/3-skill-before-you-refactor.md, line 7 Picked first because: narrow trigger ("about to refactor"), only 5 source principles to fetch (lowest research overhead), and high everyday value.

  • SECRETS_PATH_DOTENV Low

    Mentions a .env file.

    .gitignore, line 4 .env

  • SECRETS_ENV_READ Note

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

    scripts/smoke-load.mjs, line 290 env: { ...process.env, ...env },

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

    scripts/lib/run-harness.mjs, line 146

    fs.rmSync(dir, { recursive: true, force: true });

    .todo/done/US-v0.3-council-feedback/add-security-traps-skill.md, line 125

    skill and produces `subprocess.run([...], shell=False)` with proper

    .todo/done/US-v0.3-council-feedback/add-security-traps-skill.md, line 126

    argument list, not `os.system(f"cmd {user_input}")`.

    Show more

    skills/security-and-trust-boundaries/SKILL.md, line 52

    2. **`shell=False` is the default; `shell=True` is a vulnerability.** Use `subprocess.run(["git", "clone", url], shell=False)` (argv form), not `subprocess.run(f"git clone {url}",

    skills/self-review/SKILL.md, line 42

    - **String-built SQL, LDAP, or shell commands.** F-strings, `+` concatenation, or `.format()` building a query/command string with interpolated values; `subprocess.run(..., shell=T

  • Install and update

    Pass

    No install-time script found, and dependencies are pinned or absent.

  • Network

    Concern

    can reach a host that is not written as a fixed address.

    NETWORK_NO_FIXED_HOST

    .todo/done/US-97-mvp/3-skill-before-you-refactor.md, line 7

    Picked first because: narrow trigger ("about to refactor"), only 5 source principles to fetch (lowest research overhead), and high everyday value.

    skills/observability/SKILL.md, line 48

    4. **Propagate W3C Trace Context across process boundaries.** Every outgoing HTTP / gRPC / queue call carries the trace headers; every incoming handler reads them and continues the

    skills/observability/SKILL.md, line 66

    | "The downstream call uses raw `requests.get` - no need to thread the trace headers." | The trace breaks at the boundary; the operator cannot see the cross-service path. Propagate

    Show more

    skills/observability/principles.md, line 57

    SDK (raw `requests.get`, manual queue producer, custom RPC) - the

    skills/security-and-trust-boundaries/SKILL.md, line 58

    5. **SSRF: don't fetch arbitrary URLs from input.** Server-side `requests.get(user_url)` lets the attacker pivot into your VPC, hit metadata services (`169.254.169.254`), and read

  • Secrets

    Concern

    reads a credential or environment file.

    SECRETS_ENV_READ SECRETS_PATH_DOTENV

    .gitignore, line 3

    *.log

    .gitignore, line 4

    .env

    scripts/smoke-load.mjs, line 290

    env: { ...process.env, ...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 9cf330d648df. can delete files. can reach a host that is not written as a fixed address. reads a credential or environment file.

Date and source

Date checked:

View source

github.com

Commit graded: 9cf330d648dfb2e22a1310ef190e62d208bd4000

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