Claude Code, Skill
Light Skills
An AI workflow skill pack for research, competitions, and innovation projects.
Compatibility: Not stated.
Grade C
One Medium finding. Read the findings before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit 6b44f57d1274, unchanged since the check below.
SECRETS_PATH_CREDENTIAL
Why this grade
- SECRETS_PATH_CREDENTIAL Medium
Mentions a credential store path (~/.ssh, id_rsa, .npmrc, .aws/credentials, credentials.json, .netrc).
skills/light-project-structure/scripts/scaffold.py, line 46
"id_rsa",
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
_shared/__init__.py, line 174
shutil.rmtree(base, ignore_errors=True)
examples/e2e-research-demo/scripts/run_demo.py, line 17
subprocess.run([sys.executable, str(ROOT / "scripts" / script)], check=True, cwd=ROOT, env=env)
examples/e2e-research-demo/scripts/run_demo.py, line 46
subprocess.run([rscript, str(ROOT / "scripts" / "r_gallery_panels.R")], check=True, cwd=ROOT, env=env)
Show more
projects/photocatalytic-dye-kinetics-study/scripts/build_paper.py, line 175
subprocess.run(
projects/photocatalytic-dye-kinetics-study/scripts/build_paper.py, line 182
subprocess.run(
projects/photocatalytic-dye-kinetics-study/scripts/run_all.py, line 16
subprocess.run([sys.executable, str(SCRIPTS / script)], cwd=ROOT, check=True, env=env)
scripts/bootstrap_agent_skills.py, line 135
shutil.rmtree(path)
scripts/bootstrap_agent_skills.py, line 220
shutil.rmtree(base)
skills/light-data-engineering/scripts/split_leakage.py, line 505
os.remove(tmp)
skills/light-experiment-coding/scripts/review_gate.py, line 137
"msg": "os.system() - - 命令注入风险,用 subprocess.run([...]) 列表参数、不走 shell。"})
skills/light-experiment-coding/scripts/review_gate.py, line 273
os.system("rm " + cmd) # os.system 命令注入
skills/light-experiment-coding/scripts/review_gate.py, line 274
subprocess.run(cmd, shell=True) # shell=True
skills/light-figure/scripts/figure_visual_qa.py, line 292
shutil.rmtree(tmp, ignore_errors=True)
skills/light-figure/scripts/r_ggplot.py, line 804
os.remove(p)
skills/light-file-reading/scripts/docx_read.py, line 327
shutil.rmtree(tmp, ignore_errors=True)
skills/light-file-reading/scripts/pdf_ops.py, line 546
shutil.rmtree(tmp, ignore_errors=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 doi.org. The description does not name that host. can reach api2.openreview.net. The description does not name that host. can reach api.crossref.org. The description does not name that host. can reach export.arxiv.org. The description does not name that host. can reach www.ebi.ac.uk. The description does not name that host. can reach api.openalex.org. The description does not name that host. can reach doaj.org. The description do
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST NETWORK_NAMED_HOST
skills/light-citation/scripts/citation_verify_gate.py, line 170
f"http.doi_ra={http.get('doi_ra')};http.crossref={http.get('crossref')};"
skills/light-citation/scripts/citation_verify_gate.py, line 171
f"http.datacite={http.get('datacite')}"),
skills/light-citation/scripts/doi_to_any.py, line 10
curl -LH "Accept: application/x-bibtex" https://doi.org/10.1038/s41597-023-02555-8
Show more
skills/light-citation/scripts/doi_to_any.py, line 11
curl -LH "Accept: application/vnd.citationstyles.csl+json" https://doi.org/<doi>
skills/light-citation/scripts/doi_to_any.py, line 12
curl -LH "Accept: text/x-bibliography; style=apa" https://doi.org/<doi>
skills/light-citation/scripts/doi_to_any.py, line 103
with urllib.request.urlopen(req, timeout=timeout) as r:
skills/light-citation/scripts/verify_citation_edge.py, line 67
with urllib.request.urlopen(req, timeout=timeout) as r:
skills/light-citation/scripts/verify_refs.py, line 139
with urllib.request.urlopen(req, timeout=timeout) as response:
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_CREDENTIAL SECRETS_PATH_DOTENV
skills/light-citation/scripts/verify_citation_edge.py, line 50
_S2_API_KEY = os.environ.get("S2_API_KEY", "").strip()
skills/light-citation/scripts/verify_refs.py, line 54
_OPENALEX_KEY = os.environ.get("OPENALEX_API_KEY", "").strip()
skills/light-project-structure/scripts/scaffold.py, line 46
"id_rsa",
Show more
skills/light-citation/scripts/verify_refs.py, line 55
_S2_KEY = os.environ.get("S2_API_KEY", "").strip()
skills/light-literature-search/scripts/biomedical_search.py, line 46
_API_KEY = os.environ.get("NCBI_API_KEY", "").strip()
skills/light-literature-search/scripts/cn_journal_probe.py, line 33
_API_KEY = os.environ.get("OPENALEX_API_KEY", "").strip()
skills/light-literature-search/scripts/search_normalize.py, line 57
_API_KEY = os.environ.get("OPENALEX_API_KEY", "").strip()
skills/light-literature-search/scripts/snowball.py, line 59
_API_KEY = os.environ.get("OPENALEX_API_KEY", "").strip()
skills/light-literature-search/scripts/snowball.py, line 60
_S2_API_KEY = os.environ.get("S2_API_KEY", "").strip()
skills/light-project-structure/scripts/scaffold.py, line 44
".env",
skills/light-project-structure/scripts/scaffold.py, line 45
".env.local",
skills/light-project-structure/scripts/scaffold.py, line 48
"credentials.json",
skills/light-project-structure/scripts/scaffold.py, line 1621
(dirty / ".env").write_text(
skills/light-project-structure/scripts/structure_governance_gate.py, line 344
"结构整理/脚手架交付前必须做 secret scan;.env ignore 不是秘密不会提交的证明。",
skills/light-project-structure/scripts/structure_governance_gate.py, line 910
"findings": [{"locator": ".env", "kind": "api_key", "raw_value": "REDACTED-IN-BAD-FIXTURE", "status": "OPEN"}],
docs/e2e/project-structure-round2.md, line 19
- ignored `.env` 与 `scratch/cache.tmp`;
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Note
a file was over the read cap and was not fully read. the file cap was reached before every file was read.
OBFUSCATION_FILE_OVER_READ_CAP OBFUSCATION_FILE_CAP_REACHED
projects/photocatalytic-dye-kinetics-study/data/synthetic_uvvis_timeseries.csv, line 1
condition_id,catalyst,loading_g_L,pH,irradiance_mW_cm2,scavenger,replicate,time_min,C_over_C0,absorbance_664nm
skills/light-research-ethics/scripts/consent_scope_gate.py, line 1
#!/usr/bin/env python3
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 6b44f57d1274. can delete files. can reach a host that is not written as a fixed address. can reach doi.org. The description does not name that host. can reach api2.openreview.net. The description does not name that host. can reach api.crossref.org. The description does not name that host. can reach export.arxiv.org. The description does not name that host. can reach www.ebi.ac.uk. The description does not name that host. can reach api.openalex.org. The description does not name that host. can reach doaj.org. The description do reads a credential or environment file. a file was over the read cap and was not fully read. the file cap was reached before ever
Date and source
Date checked:
github.com
Commit graded: 6b44f57d1274eb38a6c79dc29c2d21e5e0a225a9
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.