Same skills in .agents/skills (Codex) and .claude/skills (Claude Code): codeguard, security-review, dependency-vetting, pre-release-gate, authz-idor-audit, threat-model-light. Source: cj/claude-skills. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
| name | description |
|---|---|
| dependency-vetting | Neue Pakete (PyPI, npm) vor dem Einbau prüfen: existiert das Paket wirklich, ist es frisch angelegt, ein Typosquat, ungepflegt oder kaum genutzt. TRIGGER WENN eine neue Dependency hinzukommen soll (pip install, npm install, Eintrag in requirements/pyproject/package.json), der User sagt "prüf das Paket", "ist das Paket sicher", "dependency check", "/dependency-vetting", oder ein Diff neue Pakete enthält. Ergebnis: pro Paket ein Urteil OK / WARNUNG / EXISTIERT NICHT mit Gründen. |
dependency-vetting
KI-Agenten erfinden Paketnamen („Slopsquatting“). Angreifer registrieren genau diese Namen.
Deshalb wird jede neue Dependency vor install geprüft.
Ablauf
- Paketnamen exakt so sammeln, wie sie installiert würden (
pypi:name,npm:name, npm-Scopes wienpm:@scope/name). - Prüfskript ausführen. Im App-Repo mit Baseline:
Ohne Baseline direkt aus diesem Skill:make vet-deps PKGS="pypi:fastapi npm:zod"
Exit-Code: 0 = alles OK, 1 = Warnungen, 2 = mindestens ein Paket existiert nicht.python3 <skill-ordner>/scripts/vet_deps.py pypi:fastapi npm:zod - Urteil pro Paket übernehmen und selbst einordnen:
- EXISTIERT NICHT → nie installieren. Vermutlich halluziniert; richtigen Namen suchen.
- WARNUNG (jünger als 90 Tage, wenige Releases, kaum Downloads, Name ähnelt einem bekannten Paket, kein Repository-Link) → dem User zeigen, Alternative vorschlagen, nur mit ausdrücklichem OK installieren.
- OK → installieren, danach
make audit(bekannte Lücken).
- Braucht man das Paket überhaupt? Für 20 Zeilen Code keine neue Abhängigkeit.
Grenzen
Das Skript prüft Metadaten, keinen Code. Ein gekapertes, populäres Paket fällt nicht auf;
dafür sind make audit und gepinnte Lockfiles da. Ohne Netzzugang meldet das Skript
„nicht prüfbar“ – das ist kein OK.