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>
42 lines
1.9 KiB
Markdown
42 lines
1.9 KiB
Markdown
---
|
||
name: dependency-vetting
|
||
description: >
|
||
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
|
||
1. Paketnamen exakt so sammeln, wie sie installiert würden (`pypi:name`, `npm:name`,
|
||
npm-Scopes wie `npm:@scope/name`).
|
||
2. Prüfskript ausführen. Im App-Repo mit Baseline:
|
||
```bash
|
||
make vet-deps PKGS="pypi:fastapi npm:zod"
|
||
```
|
||
Ohne Baseline direkt aus diesem Skill:
|
||
```bash
|
||
python3 <skill-ordner>/scripts/vet_deps.py pypi:fastapi npm:zod
|
||
```
|
||
Exit-Code: 0 = alles OK, 1 = Warnungen, 2 = mindestens ein Paket existiert nicht.
|
||
3. 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).
|
||
4. 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.
|