Back to Claude Scientific Skills

Security Validation Record

skills/scholar-evaluation/references/security_validation.md

2.55.03.8 KB
Original Source

Security Validation Record

Validation date: 2026-07-23

Baseline

The repository SECURITY.md entry recorded 10 findings with maximum severity CRITICAL:

  • four CRITICAL cross-file, environment, and network-exfiltration findings;
  • three MEDIUM credential, prompt, and environment-harvesting findings; and
  • three LOW cross-skill, command, and resource-use findings.

The affected files were the two former schematic-generation scripts and the old SKILL.md.

Remediation

  • Deleted both schematic-generation scripts.
  • Removed all network requests, API-key handling, environment access, environment-file loading, third-party model behavior, image handling, child-process execution, cross-skill invocation, and mandatory figure instructions.
  • Replaced the former recommendation-producing score calculator with bounded, transparent descriptive rubric math.
  • Added a strict prohibition on automated or assisted hiring, promotion, tenure, admissions, funding, awards, discipline, person ranking, and other high-impact personnel decisions.
  • Added qualitative-first metric and prestige safeguards.
  • Added construct, provenance, content-evidence, rater, agreement, uncertainty, missingness, not-applicable, traceability, sensitivity, subgroup, conflict, appeal, accessibility, privacy, and accountable-human controls.
  • Added dependency-free, bounded local JSON/CSV tools with duplicate-key, unknown-field, size, depth, non-finite-number, symbolic-link, and private application-field rejection.
  • Added minimized reports that never copy source-document content or emit rater identifiers.
  • Added static AST tests that prohibit network libraries, dynamic-code calls, executable serialization, process launching, environment access, and the deleted schematic files.

Validation results

  • Agent Skills reference validator: PASS
  • Dependency-free CLI help checks: 8 passed
  • Synthetic standard-library tests: 29 passed
  • Explicit AST parse with bytecode disabled: 8 scripts parsed
  • Bytecode artifacts: 0
  • IDE lints: 0
  • Documented local-path check: PASS
  • External source links: 24 passed
  • Direct behavioral security scan: SAFE, 0 findings
  • Pull-request gate with --fail-on HIGH: PASS
    • CRITICAL: 0
    • HIGH: 0
    • LOW: 2 (latest final run; LOW-only LLM wording varied between runs)

Residual LOW findings

The latest LLM-assisted pull-request scan reported:

  1. Bash is broad but constrained. Informational: the manifest declares Bash because the documented fixed python3 commands are shell invocations. The body limits Bash to those local commands, and the direct behavioral scan confirms no process-launching code in the scripts.
  2. Invented missing-file aliases. False positive: the scanner claimed inconsistent alternate directories for bundled assets and references. A direct text search found no alternate template-directory path; every documented local path is under the actual assets, references, or scripts directory; and the deterministic path-resolution test resolves every backticked local path.

The direct behavioral scan is clean. The residual findings neither permit data transmission nor create a missing-file fallback. The generated root SECURITY.md snapshot was intentionally not edited in this scoped refresh.

Reproduction

bash
PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover \
  -s skills/scholar-evaluation/tests -p 'test_*.py' -v

for script in skills/scholar-evaluation/scripts/*.py; do
  PYTHONDONTWRITEBYTECODE=1 python3 "$script" --help >/dev/null || exit 1
done

uv run skills-ref validate skills/scholar-evaluation

uv run skill-scanner scan skills/scholar-evaluation --use-behavioral

uv run python scan_pr_skills.py \
  --fail-on HIGH \
  --output /tmp/scholar-evaluation-pr-scan.md \
  skills/scholar-evaluation