Claude Code, Plugin
ClaudeSkillAndPluginsWithMasterPrompt
ClaudeSkillAndPluginsWithMasterPrompt, a plugin 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/caveman-compress/scripts/compress.py, line 66
# by extension, but credentials.md / secrets.txt / ~/.aws/credentials would - 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/caveman-compress/scripts/compress.py, line 412
result = subprocess.run(
skills/cinescroll/scripts/check_assets.py, line 40
r = subprocess.run(
skills/cinescroll/scripts/check_assets.py, line 65
r = subprocess.run(
Show more
skills/cinescroll/scripts/frames.py, line 26
out = subprocess.run(
skills/cinescroll/scripts/frames.py, line 69
os.remove(os.path.join(args.outdir, f))
skills/cinescroll/scripts/frames.py, line 89
r = subprocess.run(cmd, capture_output=True, text=True)
skills/cinescroll/scripts/frames.py, line 100
os.remove(os.path.join(args.outdir, f))
skills/cinescroll/scripts/frames.py, line 108
dim = subprocess.run(
skills/impeccable/scripts/build-phase.mjs, line 908
try { fs.rmSync(path.join(BUILD_DIR, 'pending.json'), { force: true }); } catch { /* absent */ }
skills/impeccable/scripts/font-match.mjs, line 186
try { const d = fs.mkdtempSync(path.join(os.tmpdir(), 'fm-')); fs.rmSync(d, { recursive: true, force: true }); return; } catch { /* not writable */ }
skills/impeccable/scripts/hook-admin.mjs, line 541
fs.rmSync(manifestPath, { force: true });
skills/impeccable/scripts/hook-admin.mjs, line 757
fs.unlinkSync(filePath);
skills/impeccable/scripts/hook-admin.mjs, line 768
fs.unlinkSync(filePath);
skills/impeccable/scripts/hook-before-edit.mjs, line 348
fs.rmSync(dir, { recursive: true, force: true });
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. can reach api.openai.com. The description does not name that host. can reach assets4.lottiefiles.com. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
skills/cinescroll/assets/scrollkit.js, line 101
fetch(opts.manifest)
skills/impeccable/scripts/concept-seed.mjs, line 174
fetch(`${API_BASE}/roll?${params}`, { signal: controller.signal }),
skills/impeccable/scripts/concept-seed.mjs, line 211
await fetch(`${API_BASE}/chosen`, {
Show more
skills/impeccable/scripts/context.mjs, line 1097
const res = await fetch(`${UPDATE_HOST}/api/version`, { signal: AbortSignal.timeout(FETCH_TIMEOUT_MS) });
skills/impeccable/scripts/generate-image.mjs, line 408
response = await fetch('https://api.openai.com/v1/images/edits', {
skills/impeccable/scripts/generate-image.mjs, line 414
response = await fetch('https://api.openai.com/v1/images/generations', {
skills/impeccable/scripts/live-complete.mjs, line 91
const res = await fetch(`http://localhost:${info.port}/poll`, {
skills/impeccable/scripts/live-poll.mjs, line 25
// Node's built-in fetch (undici under the hood) enforces a 300s headers
skills/impeccable/scripts/live-poll.mjs, line 115
const res = await fetch(`${base}/poll`, {
skills/impeccable/scripts/live-server.mjs, line 1585
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 188
const res = await fetch(`http://localhost:${port}/`, { signal: controller.signal, redirect: 'follow' });
skills/impeccable/scripts/live-browser.js, line 3788
const res = await fetch('http://localhost:' + PORT + '/manual-edit-stash?token=' + encodeURIComponent(TOKEN), {
skills/impeccable/scripts/live-browser.js, line 7307
const doSend = () => fetch('http://localhost:' + PORT + '/events?token=' + encodeURIComponent(TOKEN), {
skills/impeccable/scripts/live-browser.js, line 10930
fetch('http://localhost:' + PORT + '/status?token=' + TOKEN, { cache: 'no-store' })
skills/impeccable/scripts/live-browser.js, line 12088
fetch(`http://localhost:${PORT}/design-system.json?token=${TOKEN}`, { cache: 'no-store' }),
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_CREDENTIAL SECRETS_PATH_DOTENV
skills/caveman-compress/scripts/compress.py, line 65
# developers on sensitive codebases cannot cross. detect.py already skips .env
skills/caveman-compress/scripts/compress.py, line 66
# by extension, but credentials.md / secrets.txt / ~/.aws/credentials would
skills/caveman-compress/scripts/compress.py, line 70
r"\.env(\..+)?"
Show more
skills/caveman-compress/scripts/compress.py, line 71
r"|\.netrc"
skills/caveman-compress/scripts/compress.py, line 387
api_key = os.environ.get("ANTHROPIC_API_KEY")
skills/caveman-compress/scripts/detect.py, line 14
".toml", ".env", ".lock", ".css", ".scss", ".html", ".xml",
skills/caveman-compress/scripts/detect.py, line 89
return "code" if ext not in {".json", ".yaml", ".yml", ".toml", ".ini", ".cfg", ".env"} else "config"
skills/impeccable/scripts/context.mjs, line 1502
if (!process.env.OPENAI_API_KEY) return;
skills/impeccable/scripts/generate-image.mjs, line 368
const key = process.env.OPENAI_API_KEY;
skills/impeccable/scripts/hook-lib.mjs, line 83
String.raw`(?:^|[/\\])\.env(?:\.|$)`,
skills/impeccable/scripts/hook-lib.mjs, line 85
String.raw`(?:^|[/\\])id_rsa(?:$|[._-])[^/\\]*$`,
skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx, line 29
const MAPTILER_KEY = process.env.REMOTION_MAPTILER_KEY;
skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx, line 30
const GOOGLE_MAPS_API_KEY = process.env.REMOTION_GOOGLE_MAPS_API_KEY;
skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md, line 66
const mapboxAccessToken = process.env.REMOTION_MAPBOX_TOKEN;
skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md, line 83
const mapboxAccessToken = process.env.REMOTION_MAPBOX_TOKEN;
skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md, line 159
const mapboxAccessToken = process.env.REMOTION_MAPBOX_TOKEN;
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/data/font-index.json, line 1
{"schema":2,"text":"The quick brown fox jumps over the lazy dog 0123456789 HAMBURGEVONS","textCaps":"THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 0123456789 HAMBURGEVONS","sizes":[4
Show more
skills/impeccable/scripts/detector/detect-antipatterns-browser.js, line 1
/**
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
skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json, line 1
{
skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json, line 1
{
skills/remotion-docs/SKILL.md, line 1
---
Licence
Note
no licence file found.
LICENCE_MISSING
No file path was stored.
no licence file found.
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit d90f34bfac20. can delete files. can reach a host that is not written as a fixed address. can reach api.openai.com. The description does not name that host. can reach assets4.lottiefiles.com. The description does not name that host. reads a credential or environment file. contains a minified payload. no licence file found.
Date and source
Date checked:
github.com
Commit graded: d90f34bfac207f9ddb323ce46e528b1c99a8e997
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.