Claude Code, Skill
agents
agents, a skill listed in the PlugVet directory.
Compatibility: Not stated.
Grade D
Two or more Medium findings, or a High. Only try it in a sandbox.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
SECRETS_PATH_CREDENTIAL OBFUSCATION_MINIFIED_PAYLOAD
Why this grade
- SECRETS_PATH_CREDENTIAL Medium
Mentions a credential store path (~/.ssh, id_rsa, .npmrc, .aws/credentials, credentials.json, .netrc).
skills/impeccable/scripts/hook-lib.mjs, line 84
String.raw`(?:^|[/\\])id_rsa(?:$|[._-])[^/\\]*$`, - OBFUSCATION_MINIFIED_PAYLOAD Medium
Contains a very long line with almost no spaces in a script or style file.
skills/impeccable/scripts/live-browser.js, line 1
/**
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
skills/impeccable/scripts/hook-admin.mjs, line 540
fs.rmSync(manifestPath, { force: true });
skills/impeccable/scripts/hook-admin.mjs, line 752
fs.unlinkSync(filePath);
skills/impeccable/scripts/hook-admin.mjs, line 763
fs.unlinkSync(filePath);
Show more
skills/impeccable/scripts/hook-before-edit.mjs, line 348
fs.rmSync(dir, { recursive: true, force: true });
skills/impeccable/scripts/live-commit-manual-edits.mjs, line 691
fs.rmSync(absolute);
skills/impeccable/scripts/live-server.mjs, line 1440
try { fs.rmSync(state.sessionDir, { recursive: true, force: true }); } catch {}
skills/impeccable/scripts/live-server.mjs, line 1493
fs.rmSync(file, { force: true });
skills/impeccable/scripts/live-server.mjs, line 1632
try { fs.unlinkSync(existingRecord.path); } catch {}
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Concern
can reach proxy.example.com. The description does not name that host. can reach a host that is not written as a fixed address. can reach api.openai.com. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
skills/agent-browser/references/proxy-support.md, line 166
curl -x http://proxy.example.com:8080 https://httpbin.org/ip
skills/fal-image-gen/SKILL.md, line 33
curl -s -H "Authorization: Key $FAL_AI" -H "Content-Type: application/json" \
skills/fal-image-gen/SKILL.md, line 41
curl -s -H "Authorization: Key $FAL_AI" "$RESPONSE_URL" | jq -r '.images[0].url'
Show more
skills/fal-image-gen/SKILL.md, line 49
curl -s -H "Authorization: Key $FAL_AI" -H "Content-Type: application/json" \
skills/impeccable/scripts/concept-seed.mjs, line 173
fetch(`${API_BASE}/roll?${params}`, { signal: controller.signal }),
skills/impeccable/scripts/concept-seed.mjs, line 210
await fetch(`${API_BASE}/chosen`, {
skills/impeccable/scripts/context.mjs, line 1007
const res = await fetch(`${UPDATE_HOST}/api/version`, { signal: AbortSignal.timeout(FETCH_TIMEOUT_MS) });
skills/impeccable/scripts/generate-image.mjs, line 246
response = await fetch('https://api.openai.com/v1/images/edits', {
skills/impeccable/scripts/live-complete.mjs, line 91
const res = await fetch(`http://localhost:${info.port}/poll`, {
skills/impeccable/scripts/live-server.mjs, line 1556
const res = await fetch(`http://localhost:${info.port}/stop?token=${info.token}`);
skills/impeccable/scripts/live-status.mjs, line 18
const res = await fetch(`http://localhost:${info.port}/status?token=${info.token}`);
skills/impeccable/scripts/detector/node/file-system.mjs, line 176
const res = await fetch(`http://localhost:${port}/`, { signal: controller.signal, redirect: 'follow' });
skills/scorch/SKILL.md, line 17
curl -fsS http://127.0.0.1:33000/ready
skills/impeccable/scripts/live-browser.js, line 3769
const res = await fetch('http://localhost:' + PORT + '/manual-edit-stash?token=' + encodeURIComponent(TOKEN), {
skills/impeccable/scripts/live-browser.js, line 7156
const doSend = () => fetch('http://localhost:' + PORT + '/events?token=' + encodeURIComponent(TOKEN), {
skills/impeccable/scripts/live-browser.js, line 10628
fetch('http://localhost:' + PORT + '/status?token=' + TOKEN, { cache: 'no-store' })
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_CREDENTIAL SECRETS_PATH_DOTENV
skills/impeccable/scripts/context.mjs, line 1335
if (!process.env.OPENAI_API_KEY) return;
skills/impeccable/scripts/generate-image.mjs, line 206
const key = process.env.OPENAI_API_KEY;
skills/impeccable/scripts/hook-lib.mjs, line 84
String.raw`(?:^|[/\\])id_rsa(?:$|[._-])[^/\\]*$`,
Show more
skills/impeccable/scripts/hook-lib.mjs, line 82
String.raw`(?:^|[/\\])\.env(?:\.|$)`,
skills/react-bits-pro/SKILL.md, line 54
# 1. Add the license key to .env.local (never commit it):
skills/rust-best-practices/references/chapter_01.md, line 582
// Similar-looking lines, but the `.env` and `.toml` formats are
skills/react-bits-pro/SKILL.md, line 39
3. **The license key is a secret.** Put it in `.env.local`, never commit it, never hardcode it.
skills/react-bits-pro/SKILL.md, line 168
Add the key to `.env.local` at the project root:
skills/react-bits-pro/SKILL.md, line 174
- **Never commit `.env.local`.** Ensure `.gitignore` includes it (shadcn's `init` does this by default).
skills/react-bits-pro/SKILL.md, line 209
the environment / `.env.local`. Configure `@reactbits-starter` even if you only plan to use blocks -
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Concern
contains a minified payload.
OBFUSCATION_MINIFIED_PAYLOAD
skills/impeccable/scripts/live-browser.js, line 1
/**
skills/impeccable/scripts/modern-screenshot.umd.js, line 6
`);return t.appendChild(r),t}function pt(e,t){let{width:r,height:n}=t;if(I(e)&&(!r||!n)){const i=e.getBoundingClientRect();r=r||i.width||Number(e.getAttribute("width"))||0,n=n||i.h
skills/impeccable/scripts/detector/detect-antipatterns-browser.js, line 1
/**
Show more
skills/impeccable/scripts/detector/rules/checks.mjs, line 1
import {
skills/impeccable/scripts/lib/concept-catalog.mjs, line 34
const WEB_LEVERAGE_RE = /(?:\b3d\b|\badaptive\b|\banimat(?:e|ed|ion)\b|\bapi\b|\baria\b|\baudio\b|\bautomated?\b|\bbarcode\b|\bbroadcastchannel\b|\bbrowser\b|\bcamera\b|canvas\b|\b
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 a7ecbd4f892e. can delete files. can reach proxy.example.com. The description does not name that host. can reach a host that is not written as a fixed address. can reach api.openai.com. The description does not name that host. reads a credential or environment file. contains a minified payload.
Date and source
Date checked:
github.com
Commit graded: a7ecbd4f892e2de1c868edd8c892924a98b7ae9c
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.