Skip to content

Commit aa2e8fa

Browse files
committed
docs: add supply chain security TODO for external skills manifests
1 parent 437affe commit aa2e8fa

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

CLAUDE.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,19 @@ python3 scripts/aggregate_stability.py
3535
- Results: `research/benchmarks/results/`
3636
- Scoring: rubric-coverage evaluation (prompt checklist vs annotated fixture issues)
3737
- Seeds: 3 jackknife windows per critic; aggregate stability in `stability-report.md`
38+
39+
## TODO: Supply Chain Security for External Skills
40+
41+
The external skills manifests (`external-skills-manifest.yaml`) pin upstream skills by commit SHA, but the current tooling has supply chain gaps that need to be addressed:
42+
43+
1. **No diff review on refresh**`refresh_external_skills.py` updates pins to HEAD silently. No changelog or diff of what changed in upstream SKILL.md files between the old and new pin.
44+
2. **No content scanning** — nothing checks incoming skill content for suspicious patterns (prompt injection markers, instruction overrides, encoded payloads). These skills are prompt text injected into Claude's context.
45+
3. **No signature/author verification** — anyone with push access to an upstream repo can change what gets loaded.
46+
4. **No approval gate** — refresh runs and updates pins automatically with no PR/review step.
47+
48+
Minimum next steps:
49+
- Add diff output to `refresh_external_skills.py` so changes are visible before committing new pins.
50+
- Add basic content scanning rules (flag suspicious patterns like "ignore previous instructions", base64 blocks, etc.).
51+
- Consider requiring a PR for pin updates rather than committing directly.
52+
53+
See also: drupal-critic has the same gaps and the same TODO.

0 commit comments

Comments
 (0)