Add agent security skills for Codex and Claude Code

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>
This commit is contained in:
Grovy311 2026-10-15 09:40:33 +02:00
parent 431f9ff059
commit 67476ea59b
68 changed files with 6600 additions and 0 deletions

View file

@ -0,0 +1,47 @@
---
name: threat-model-light
description: >
Leichtgewichtiges Threat-Model für eine App oder ein Feature: Assets, Angreifer, Vertrauensgrenzen,
Risiken mit Maßnahme und prüfbarem Beleg. Eine Seite, kein STRIDE-Roman.
TRIGGER WENN der User sagt: "Threat Model", "Bedrohungsanalyse", "was kann schiefgehen",
"Risiken", "/threat-model-light", zum Projektstart, oder bevor ein Feature mit Login, Rollen,
Zahlungen, Uploads, externen Schnittstellen oder personenbezogenen/Gesundheitsdaten gebaut wird.
Ergebnis: Risikotabelle mit Maßnahme und Beleg pro Risiko, als docs/THREATMODEL.md im Repo.
---
# threat-model-light
## Ablauf
1. **System skizzieren** (aus Code und Compose, nicht raten): Komponenten, Ports, Proxy
(Caddy/Authelia?), Datenbank, externe Dienste, wer sich wie anmeldet. Eine Zeile pro
Datenfluss: `Browser → Caddy → App:3141 → SQLite`.
2. **Assets:** Was ist schützenswert? (Personendaten, Arbeitszeiten, Abwesenheiten, Zugangsdaten,
Kundendaten, Verfügbarkeit). Gesundheitsdaten (z. B. „krank“) und Daten Dritter markieren.
3. **Angreifer:** anonym aus dem Internet, eingeloggter Nutzer mit niedriger Rolle, Kollege mit
gleicher Rolle (IDOR!), jemand im LAN am Proxy vorbei, kompromittiertes Paket, KI-Agent mit
Schreibrechten.
4. **Vertrauensgrenzen** markieren: wo wird Identität festgestellt, wo geprüft, wo nur vertraut?
Typische Lücke: App vertraut einem Header, den nur der Proxy setzen sollte, Port ist aber
direkt erreichbar.
5. **Risiken** je Grenze und Asset. Für jedes Risiko eine **konkrete Maßnahme** und einen
**prüfbaren Beleg** (Test, Scan, Konfiguration). Risiko ohne Beleg = offen.
6. **Datensparsamkeit:** Für jedes sensible Feld fragen: brauchen wir es? Neutrale Alternative
(z. B. „abwesend“ statt „krank“) spart Datenschutzaufwand.
## Ausgabe: `docs/THREATMODEL.md`
```
# Threat-Model <App> (Stand <Datum>)
## System
<Datenflüsse, eine Zeile je Fluss>
## Assets
| Asset | Schutzbedarf | Bemerkung |
## Risiken
| # | Risiko | Angreifer | Wirkung | Prio | Maßnahme | Beleg | Status |
| 1 | Identitäts-Header fälschbar | LAN | Vollzugriff | K | Shared Secret + Port nur intern | Spoofing-Test, compose ports | offen |
## Offene Entscheidungen
<fachliche Fragen an den User, z. B. Rollenmatrix, Speicherung Abwesenheitsgrund>
```
Prioritäten wie ASVS-light: K / H / M. Offene K-Risiken blockieren den Release (`pre-release-gate`).
Danach: Risiken mit Status „offen“ als Tests umsetzen (`authz-idor-audit`, `test-baseline-setup`).