Communitygithub.com

mstfknn/sast-skills

Sammlung von Agenten-Fähigkeiten, die deinen KI-Coder in einen SAST-Scanner verwandeln

Was ist sast-skills?

mstfknn/sast-skills ist eine Sammlung von 31 Agenten-Fähigkeiten (Skills), die KI-Coding-Assistenten wie Claude Code, Codex, OpenCode und Cursor in vollwertige Static Application Security Testing (SAST) Scanner verwandeln. Die Fähigkeiten decken 28 Schwachstellenklassen ab – darunter Injection, unsichere Authentifizierung, Kryptografie-Probleme, Supply-Chain-Risiken und LLM-spezifische Angriffe wie Prompt Injection. Sie werden über eine Vier-Phasen-Orchestrierung gesteuert (Aufklärung → parallele Erkennung → konsolidierter Bericht → evidenzbasierte Priorisierung), die vollständig aus `CLAUDE.md` oder `AGENTS.md` gesteuert wird. Jeder Schritt ist idempotent und wiederaufnehmbar, sodass beim erneuten Ausführen nur veraltete oder fehlende Ergebnisse aktualisiert werden. Die Ausgabe erfolgt maschinenlesbar als JSON, SARIF 2.1.0 oder HTML und kann in CI/CD-Pipelines (z. B. GitHub Code Scanning), Pre-Commit-Hooks oder Docker integriert werden. Das Projekt bietet ein CLI-Werkzeug (`npx sast-skills`) zur Installation, Aktualisierung und zum Export der Ergebnisse und unterstützt sowohl Claude Code als auch AGENTS.md-kompatible Assistenten mit identischen Fähigkeiten in beiden Formaten.

Funktioniert mit✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI✓OpenCode
npx skills add https://github.com/mstfknn/sast-skills/tree/main

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Vorschau

Aus dem Skill-README

npm version
CI
License: MIT
Node.js

Dokumentation

Was macht sast-skills?

npm version CI License: MIT Node.js

Verwandle deinen LLM-Coding-Assistenten in einen vollwertigen SAST-Scanner. Drop-in Agenten-Fähigkeiten für Claude Code, Codex, Opencode, Cursor und jeden Assistenten, der CLAUDE.md / AGENTS.md Skill-Ordner lädt.

Claude Code mit Opus wird für die Qualität empfohlen; jedes leistungsfähige Modell funktioniert.

Highlights

  • 31 Fähigkeiten über 28 Schwachstellenklassen — Injection, defekte Zugriffskontrolle, schwache Kryptografie, Dateihandhabung, Lieferkette, Geschäftslogik und LLM-spezifische Risiken (Prompt Injection, unsichere Ausgabebehandlung).
  • Vier-Phasen-Orchestrierung — Aufklärung → parallele Erkennung → konsolidierter Bericht → evidenzbasierte Priorisierung, vollständig gesteuert über CLAUDE.md / AGENTS.md.
  • Idempotent und wiederaufnehmbar — jede Phase überspringt Arbeit, deren Ausgabe bereits existiert; nach dem Beheben von Problemen erneut ausführen, um nur veraltete Ergebnisse zu aktualisieren.
  • Maschinenlesbare Ausgabe — jede Fähigkeit gibt kanonisches JSON aus; sast-skills export aggregiert zu JSON, SARIF 2.1.0 oder HTML für GitHub Code Scanning und CI.
  • Assistentenübergreifend — identische Fähigkeiten werden für Claude Code (.claude/skills) und jeden AGENTS.md-Assistenten (.agents/skills) ausgeliefert.
  • Zero-Config-CLI — install / update / uninstall / doctor / export, veröffentlicht aus GitHub Actions mit npm-Provenienz (SLSA-Attestierung).

Ablauf

Der Orchestrator führt vier Phasen aus — Aufklärung, parallele Erkennung, Synthese und Priorisierung:

flowchart TD
    U(["Benutzer: Schwachstellenscan ausführen"]) --> R{"CLAUDE.md / AGENTS.md Orchestrator"}
    R --> S1["Schritt 1 — sast-analysis<br/>Codebasis- und Architekturzuordnung"]
    S1 -->|sast/architecture.md| S2["Schritt 2 — paralleler Schwachstellenscan<br/>28 Fähigkeiten: Aufklärung, batchgeprüft, Zusammenführung"]
    S2 -->|sast/*-results.md und *-results.json| S3["Schritt 3 — sast-report<br/>Konsolidieren und bewerten"]
    S3 -->|sast/final-report.md| S4["Schritt 4 — sast-triage<br/>Falsch-Positiv-Eliminierung,<br/>Schweregradanpassung mit Nachweisen"]
    S4 -->|sast/final-report-triaged.md und triaged.json| EXP["npx sast-skills export<br/>JSON, SARIF, HTML"]
    EXP --> CS(["GitHub Code Scanning, CI, Dashboards"])

Jeder Schritt ist idempotent: Wenn seine Ausgabedatei bereits existiert, überspringt der Orchestrator sie. Führe den Scan nach der Behebung von Problemen erneut aus, um nur veraltete Ergebnisse zu aktualisieren.


Was er erkennt

Alle Fähigkeiten folgen dem gleichen Drei-Phasen-Muster: Aufklärung → batchgeprüfte Verifikation (parallele Unteragenten, 3 pro Batch) → Zusammenführung. Jede schreibt einen menschenlesbaren Markdown-Bericht und eine kanonische JSON-Ergebnisdatei, die sast-skills export aggregiert.

Aufklärung & Synthese

FähigkeitRolle
sast-analysisCodebasis-Aufklärung, Architekturzuordnung, Bedrohungsmodell
sast-reportKonsolidieren klassenspezifischer Ergebnisse in einen bewerteten Bericht
sast-triageEntfernen von Falsch-Positiven und Anpassen von Schweregraden mit Codebasis-Nachweisen

Injection

FähigkeitSchwachstellenklasse
sast-sqliSQL-Injection
sast-nosqlNoSQL-Injection (Mongo, Firestore, DynamoDB)
sast-ldapLDAP-Filter-/DN-Injection
sast-graphqlUnsichere GraphQL-Dokumentkonstruktion
sast-xssCross-Site Scripting
sast-sstiServer-Side Template Injection
sast-rceRemote Code Execution (Befehlsinjection, eval, unsichere Deserialisierung)
sast-xxeXML External Entity
sast-ssrfServer-Side Request Forgery
sast-openredirectOffene Weiterleitung (Phishing / OAuth-Token-Diebstahl)

Zugriffskontrolle & Authentifizierung

FähigkeitSchwachstellenklasse
sast-idorInsecure Direct Object Reference
sast-missingauthFehlende Authentifizierung / defekte funktionsbezogene Autorisierung
sast-jwtUnsichere JWT-Implementierungen
sast-csrfCross-Site Request Forgery
sast-corsCORS-Fehlkonfiguration

Dateien, Kryptografie & Laufzeit

FähigkeitSchwachstellenklasse
sast-pathtraversalPfad-/Verzeichnis-Traversal
sast-fileuploadUnsicherer Dateiupload
sast-cryptoSchwache Primitiven, schlechte Modi, IV-Wiederverwendung, schwacher PRNG
sast-prototypeJavaScript-Prototype-Pollution
sast-redosKatastrophales Backtracking-Regex-DoS
sast-raceWettlaufbedingungen und TOCTOU

Datenexposition & Lieferkette

FähigkeitSchwachstellenklasse
sast-hardcodedsecretsAPI-Schlüssel / Tokens / Anmeldeinformationen im kundenseitigen Code
sast-piiPII- und Anmeldeinformations-Lecks in Logs / Telemetrie / Fehlerseiten
sast-depsBekannt anfällige Abhängigkeiten (CVE in Lockfiles)
sast-iacUnsichere IaC (Dockerfile / Terraform / Kubernetes / GitHub Actions)

Geschäftslogik & LLM-spezifisch

FähigkeitSchwachstellenklasse
sast-businesslogicPreis-Manipulation, Workflow-Umgehung, Belohnungsmissbrauch
sast-promptinjectionNicht vertrauenswürdiger Text, der einen LLM-Prompt erreicht (OWASP LLM #1)
sast-llmoutputUnbestätigte LLM-Ausgabe, die Code / HTML / SQL / Shell-Sinks erreicht (OWASP LLM #2)

Installation

npx sast-skills install

Der Installer fragt, welchen Assistenten er anvisieren soll (claude / agents / all) und ob in das aktuelle Projekt oder das Benutzer-Home-Verzeichnis installiert werden soll (project / global). Um Eingabeaufforderungen zu überspringen:

npx sast-skills install --yes --assistant claude --scope project

Wenn Ihr Projekt bereits eine CLAUDE.md oder AGENTS.md enthält, weigert sich der Installer standardmäßig, sie zu überschreiben — sichern Sie sie oder verwenden Sie --force.

Manuelle Installation (ohne npx / npm)

Verwenden Sie diesen Pfad, wenn Sie npx nicht ausführen können (Unternehmens-Proxy, npm-Registrierung nicht erreichbar, Offline-Umgebung) oder wenn Sie auf die Quelle dieses Forks statt auf das veröffentlichte npm-Paket setzen möchten. Der CLI-Installer macht nur zwei Dinge — die Orchestrator-Einstiegsdatei im Projektstamm ablegen und jede Fähigkeiten-SKILL.md in das richtige versteckte Verzeichnis spiegeln — also reproduziert ein einfaches cp -R es genau.

1. Holen Sie sich die gebündelten Dateien

git clone https://github.com/mstfknn/sast-skills.git

Alles, was Sie brauchen, befindet sich unter sast-skills/sast-files/:

sast-files/
├── CLAUDE.md                       # Orchestrator-Einstieg für Claude Code
├── AGENTS.md                       # Orchestrator-Einstieg für Gemini CLI / Codex / OpenCode / Cursor
├── .claude/skills/sast-*/SKILL.md  # 31 Fähigkeiten im Claude Code-Format
└── .agents/skills/sast-*/SKILL.md  # Gleiche 31 Fähigkeiten gespiegelt für AGENTS.md-Assistenten

Die beiden Fähigkeitenbäume werden durch npm run sync synchron gehalten — der Inhalt ist identisch, nur der Verzeichnisname unterscheidet sich.

2a. Für Claude Code installieren

Setzen Sie SAST_SRC auf den Clone-Pfad, damit die folgenden Befehle kopierbar bleiben:

export SAST_SRC=/absoluter/pfad/zu/sast-skills
cd /pfad/zu/ihrem-projekt

Projektbereich (empfohlen — versioniert zusammen mit Ihrem Repository):

cp "$SAST_SRC/sast-files/CLAUDE.md" ./CLAUDE.md
cp -R "$SAST_SRC/sast-files/.claude" ./

Wenn Sie bereits eine projektbezogene CLAUDE.md verwenden, überschreiben Sie sie nicht — Claude Code liest nur eine CLAUDE.md pro Projekt. Führen Sie stattdessen den Orchestrator-Inhalt (den Vier-Phasen-Ablauf) in Ihre bestehende Datei zusammen.

Globaler Bereich (Fähigkeiten in jedem Projekt verfügbar; Orchestrator wird weiterhin pro Projekt kopiert):

mkdir -p ~/.claude/skills
cp -R "$SAST_SRC/sast-files/.claude/skills/." ~/.claude/skills/
# Dann in jedem Projekt, in dem Sie den Scan-Ablauf wünschen:
cp "$SAST_SRC/sast-files/CLAUDE.md" /pfad/zu/ihrem-projekt/CLAUDE.md

2b. Für Gemini CLI (und andere AGENTS.md-Assistenten) installieren

export SAST_SRC=/absoluter/pfad/zu/sast-skills
cd /pfad/zu/ihrem-projekt
cp "$SAST_SRC/sast-files/AGENTS.md" ./AGENTS.md
cp -R "$SAST_SRC/sast-files/.agents" ./

AGENTS.md ist die assistentenübergreifende Konvention, die von Gemini CLI, Codex CLI, OpenCode und Cursor beachtet wird. Wenn Ihre Version von Gemini CLI nach GEMINI.md sucht, benennen Sie sie um — der Inhalt bleibt unverändert:

mv AGENTS.md GEMINI.md

3. Installation überprüfen

# Projektbereich (Claude Code)
ls CLAUDE.md && ls .claude/skills/ | head

# Projektbereich (Gemini / AGENTS.md)
ls AGENTS.md && ls .agents/skills/ | head

# Globaler Bereich (Claude Code)
ls ~/.claude/skills/ | head

Sie sollten alle 31 sast-*-Fähigkeitenverzeichnisse sehen. Öffnen Sie das Projekt in Ihrem Assistenten und geben Sie "Schwachstellenscan ausführen" ein — der Orchestrator in CLAUDE.md / AGENTS.md steuert von dort die vier Phasen.

4. Manuelle Installation aktuell halten

cd "$SAST_SRC" && git pull
# Führen Sie die cp-Befehle aus Schritt 2a / 2b erneut aus, um zu aktualisieren — sie sind idempotent.

Wenn Sie den Clone behalten, ist cd "$SAST_SRC" && git pull && <cp erneut ausführen> das manuelle Äquivalent zu npx sast-skills update.

CLI-Befehle

BefehlWas er tut
npx sast-skills installKopiert CLAUDE.md / AGENTS.md und den Fähigkeitenbaum in Ihr Projekt oder $HOME
npx sast-skills updateAktualisiert eine bestehende Installation mit den aktuell gebündelten Fähigkeitendateien
npx sast-skills uninstallEntfernt installierte Fähigkeiten; weigert sich, eine modifizierte CLAUDE.md ohne --force zu löschen
npx sast-skills doctorÜberprüft eine Installation und meldet OK / MISSING / MODIFIED pro Datei; beendet sich mit Fehler bei Problemen
npx sast-skills export --input sast/ --format sarif --output report.sarifAggregiert sast/*-results.json in JSON, SARIF 2.1.0 oder HTML
npx sast-skills export --input sast/ --triaged --format sarifBevorzugt das priorisierte sast/triaged.json gegenüber rohen Einzelfähigkeitenergebnissen
npx sast-skills --versionGibt die installierte CLI-Version aus

Installations-Flags

FlagZweck
--yesNicht interaktiv; erforderlich, wenn stdin kein TTY ist
--assistant <claude|agents|all>Welcher Fähigkeitenbaum installiert werden soll
--scope <projekt|global>Installation in ./.claude/skills/ oder $HOME/.claude/skills/
--target <pfad>Explizites Installationsziel (überschreibt --scope)
--forceÜberschreibt eine vorhandene CLAUDE.md / AGENTS.md
--dry-runGibt den Dateiplan aus ohne zu schreiben

Ausführen eines Scans

Öffnen Sie nach der Installation das Projekt in Ihrem KI-Assistenten und fragen Sie:

Schwachstellenscan ausführen

oder

Finde Schwachstellen in dieser Codebasis

Der Orchestrator übernimmt. Er führt automatisch alle vier Phasen aus, respektiert die Idempotenz (erneute Ausführungen übernehmen nur, was fehlt) und schreibt alles in sast/ im Stammverzeichnis Ihres Projekts.

Ausgabedateien

DateiBeschreibung
sast/architecture.mdTechnologie-Stack, Architektur, Einstiegspunkte, Datenflüsse
sast/*-results.mdErgebnisse pro Schwachstellenklasse (menschenlesbar)
sast/*-results.jsonKanonische maschinenlesbare Ergebnisse (von sast-skills export verwendet)
sast/final-report.mdKonsolidierter Rohbericht nach Schweregrad sortiert
sast/final-report-triaged.mdPriorisierter Bericht — Falsch-Positive entfernt, Schweregrade mit Nachweisen angepasst
sast/triaged.jsonKanonische priorisierte Ergebnisse (bevorzugt von sast-skills export --triaged)

Ergebnis-Schema

Jede Fähigkeit schreibt sast/<skill>-results.json als einfache Ergebnisliste:

{
  "findings": [
    {
      "id": "sast-sqli-0001",
      "skill": "sast-sqli",
      "severity": "critical|high|medium|low|info",
      "title": "SQL injection in /api/user",
      "description": "…",
      "location": { "file": "src/api/user.js", "line": 42, "column": 10 },
      "remediation": "…"
    }
  ]
}

sast-skills export aggregiert diese Dateien in ein Dokument, das in einen run-Umschlag eingewickelt ist — { "run": { "tool": "sast-skills", "version": "<cli-version>" }, "findings": [...] } — und stempelt die Version der CLI, die den Bericht erstellt hat. Der Priorisierungsschritt schreibt sast/triaged.json in derselben umschlossenen Form.

Priorisierte Ergebnisse fügen triage_status (confirmed|upgraded|downgraded|false_positive), triage_original_severity (wenn sich der Schweregrad geändert hat) und triage_evidence mit konkreten Codebasis-Zitaten hinzu.


CI-Integrationen

GitHub Code Scanning (SARIF)

Composite-Aktion unter .github/actions/scan/action.yml:

- uses: mstfknn/sast-skills/.github/actions/scan@main
  with:
    input: sast/
    output: sast-skills.sarif

Dies führt sast-skills export --format sarif aus und lädt das Ergebnis über github/codeql-action/upload-sarif@v3 in Code Scanning hoch.

Pre-Commit-Hook

Kopieren Sie hooks/pre-commit nach .git/hooks/pre-commit, um sast-skills doctor jeden Commit überwachen zu lassen.

Docker

docker build -t sast-skills .
docker run --rm -v "$PWD:/work" sast-skills export --input sast/ --format sarif --output report.sarif

Das gebündelte Dockerfile basiert auf node:20-alpine mit sast-skills als Einstiegspunkt.


Überprüfen & Fehlerbehebung

# Ist die Installation in der erwarteten Form?
npx sast-skills doctor --target . --assistant claude

# Versionsprüfung
npx sast-skills --version
npm view sast-skills version    # neueste Version in der Registrierung

# Upgrade
npx sast-skills update

doctor beendet sich mit 0, wenn jede gebündelte Datei im Ziel mit der Kopie der installierten Version übereinstimmt, und mit 1, wenn eine Datei MISSING oder MODIFIED ist. MODIFIED bedeutet, dass die Datei von der gebündelten Kopie abweicht — zu erwarten, wenn Sie die Einstiegsdatei bearbeiten, ansonsten ein Signal, update auszuführen.


Mitwirken

Siehe CONTRIBUTING.md. Entwickler-Loop:

npm install
npm test                                  # vitest-Suite (TDD-Guard aktiviert)
npm run sync                              # .claude/skills → .agents/skills spiegeln
node scripts/scaffold-skill.js sast-foo   # neue Fähigkeit in beiden Bäumen anlegen
node scripts/register-skill.js sast-foo foo "Foo" "Foo injection description"
npm run lint:md                           # markdownlint

Verwandte Skills