Rules Distill
Scannt installierte Skills, extrahiert übergreifende Prinzipien, die in mehreren Skills vorkommen, und destilliert sie in Regeln – durch Anhängen an bestehende Regeldateien, Überarbeiten veralteter Inhalte oder Erstellen neuer Regeldateien.
Wendet das Prinzip „deterministische Sammlung + LLM-Urteil” an: Skripte sammeln Fakten vollständig, dann liest ein LLM den gesamten Kontext und erstellt Urteile.
Wann verwenden
- Regelmäßige Regelpflege (monatlich oder nach Installation neuer Skills)
- Nach einer Skill-Bestandsaufnahme, die Muster offenbart, die zu Regeln werden sollten
- Wenn sich Regeln im Vergleich zu den verwendeten Skills unvollständig anfühlen
Funktionsweise
Der Rules-Distillation-Prozess durchläuft drei Phasen:
Phase 1: Bestandsaufnahme (deterministische Sammlung)
1a. Skill-Inventar sammeln
bash ~/.claude/skills/rules-distill/scripts/scan-skills.sh
1b. Regel-Index sammeln
bash ~/.claude/skills/rules-distill/scripts/scan-rules.sh
1c. Dem Benutzer präsentieren
Rules Distillation — Phase 1: Bestandsaufnahme
───────────────────────────────────────────────
Skills: {N} Dateien gescannt
Regeln: {M} Dateien ({K} Überschriften indiziert)
Fahre mit der quergelesenen Analyse fort...
Phase 2: Querlesen, Abgleich & Urteil (LLM-Urteil)
Extraktion und Abgleich sind in einem einzigen Durchlauf vereint. Regeldateien sind klein genug (~800 Zeilen insgesamt), sodass der vollständige Text dem LLM bereitgestellt werden kann – kein Grep-Vorfiltern erforderlich.
Batch-Verarbeitung
Gruppiere Skills in thematische Cluster basierend auf ihren Beschreibungen. Analysiere jedes Cluster in einem Unteragenten mit dem vollständigen Regeltext.
Clusterübergreifender Zusammenführen
Nach Abschluss aller Batches Zusammenführen der Kandidaten über Batches hinweg:
- Entferne Duplikate von Kandidaten mit denselben oder überlappenden Prinzipien
- Überprüfe erneut die „2+ Skills”-Anforderung anhand der Nachweise aus allen Batches zusammen – ein Prinzip, das in 1 Skill pro Batch gefunden wurde, aber insgesamt 2+ Skills betrifft, ist gültig
Unteragenten-Prompt
Starte einen allgemeinen Agenten mit folgendem Prompt:
Du bist ein Analyst, der Skills querliest, um Prinzipien zu extrahieren, die zu Regeln erhoben werden sollten.
## Eingabe
- Skills: {vollständiger Text der Skills in diesem Batch}
- Bestehende Regeln: {vollständiger Text aller Regeldateien}
## Extraktionskriterien
Füge einen Kandidaten NUR dann hinzu, wenn ALLE diese Bedingungen erfüllt sind:
1. **Tritt in 2+ Skills auf**: Prinzipien, die nur in einem Skill vorkommen, sollten in diesem Skill bleiben
2. **Handlungsorientierte Verhaltensänderung**: Kann als „tu X” oder „tu nicht Y” formuliert werden – nicht „X ist wichtig”
3. **Klares Verletzungsrisiko**: Was schiefgeht, wenn dieses Prinzip ignoriert wird (1 Satz)
4. **Noch nicht in Regeln enthalten**: Überprüfe den vollständigen Regeltext – einschließlich Konzepten, die mit anderen Worten ausgedrückt sind
## Abgleich & Urteil
Vergleiche für jeden Kandidaten mit dem vollständigen Regeltext und weise ein Urteil zu:
- **Anhängen**: Zu einem bestehenden Abschnitt einer vorhandenen Regeldatei hinzufügen
- **Überarbeiten**: Vorhandener Regelinhalt ist ungenau oder unzureichend – schlage eine Korrektur vor
- **Neuer Abschnitt**: Einen neuen Abschnitt zu einer vorhandenen Regeldatei hinzufügen
- **Neue Datei**: Eine neue Regeldatei erstellen
- **Bereits abgedeckt**: Ausreichend in bestehenden Regeln abgedeckt (auch wenn anders formuliert)
- **Zu spezifisch**: Sollte auf Skill-Ebene bleiben
## Ausgabeformat (pro Kandidat)
```json
{
"principle": "1-2 Sätze in 'tu X' / 'tu nicht Y'-Form",
"evidence": ["skill-name: §Abschnitt", "skill-name: §Abschnitt"],
"violation_risk": "1 Satz",
"verdict": "Anhängen / Überarbeiten / Neuer Abschnitt / Neue Datei / Bereits abgedeckt / Zu spezifisch",
"target_rule": "Dateiname §Abschnitt, oder 'neu'",
"confidence": "hoch / mittel / niedrig",
"draft": „Entwurfstext für Urteile Anhängen/Neuer Abschnitt/Neue Datei”,
"revision": {
"reason": "Warum der vorhandene Inhalt ungenau oder unzureichend ist (nur Überarbeiten)",
"before": „Aktueller Text, der ersetzt werden soll (nur Überarbeiten)”,
"after": „Vorgeschlagener Ersatztext (nur Überarbeiten)”
}
}
```
## Ausschlusskriterien
- Offensichtliche, bereits in Regeln enthaltene Prinzipien
- Sprach-/Framework-spezifisches Wissen (gehört in sprachspezifische Regeln oder Skills)
- Codebeispiele und Befehle (gehören in Skills)
Urteilsreferenz
| Urteil | Bedeutung | Dem Benutzer präsentiert |
|---|---|---|
| Anhängen | Zu vorhandenem Abschnitt hinzufügen | Ziel + Entwurf |
| Überarbeiten | Ungenauen/unzureichenden Inhalt korrigieren | Ziel + Grund + Vorher/Nachher |
| Neuer Abschnitt | Neuen Abschnitt zu vorhandener Datei hinzufügen | Ziel + Entwurf |
| Neue Datei | Neue Regeldatei erstellen | Dateiname + vollständiger Entwurf |
| Bereits abgedeckt | In Regeln abgedeckt (möglicherweise andere Formulierung) | Grund (1 Zeile) |
| Zu spezifisch | Sollte in Skills bleiben | Link zum relevanten Skill |
Anforderungen an die Urteilsqualität
# Gut
Anhängen an rules/common/security.md §Eingabevalidierung:
„Behandle LLM-Ausgabe, die im Speicher oder in Wissensspeichern abgelegt wird, als nicht vertrauenswürdig – bereinige beim Schreiben, validiere beim Lesen.”
Nachweise: llm-memory-trust-boundary, llm-social-agent-anti-pattern beschreiben beide
akkumulierte Prompt-Injektionsrisiken. Aktuelle security.md deckt nur
menschliche Eingabevalidierung ab; die Vertrauensgrenze für LLM-Ausgabe fehlt.
# Schlecht
Anhängen an security.md: LLM-Sicherheitsprinzip hinzufügen
Phase 3: Benutzerüberprüfung & Ausführung
Zusammenfassungstabelle
# Rules Distillation Report
## Zusammenfassung
Gescannte Skills: {N} | Regeln: {M} Dateien | Kandidaten: {K}
| # | Prinzip | Urteil | Ziel | Vertrauen |
|---|---------|--------|------|-----------|
| 1 | ... | Anhängen | security.md §Eingabevalidierung | hoch |
| 2 | ... | Überarbeiten | testing.md §TDD | mittel |
| 3 | ... | Neuer Abschnitt | coding-style.md | hoch |
| 4 | ... | Zu spezifisch | — | — |
## Details
(Detailangaben pro Kandidat: Nachweise, Verletzungsrisiko, Entwurfstext)
Benutzeraktionen
Benutzer antwortet mit Nummern für:
- Genehmigen: Entwurf unverändert in Regeln übernehmen
- Ändern: Entwurf vor Übernahme bearbeiten
- Überspringen: Diesen Kandidaten nicht anwenden
Ändere niemals Regeln automatisch. Fordere immer die Benutzerfreigabe an.
Ergebnisse speichern
Speichere Ergebnisse im Skill-Verzeichnis (results.json):
- Zeitstempelformat:
date -u +%Y-%m-%dT%H:%M:%SZ(UTC, Sekundengenauigkeit) - Kandidaten-ID-Format: Kebab-Case abgeleitet vom Prinzip (z. B.
llm-output-trust-boundary)
{
"distilled_at": "2026-03-18T10:30:42Z",
"skills_scanned": 56,
"rules_scanned": 22,
"candidates": {
"llm-output-trust-boundary": {
"principle": "Behandle LLM-Ausgabe als nicht vertrauenswürdig, wenn sie gespeichert oder erneut injiziert wird",
"verdict": "Anhängen",
"target": "rules/common/security.md",
"evidence": ["llm-memory-trust-boundary", "llm-social-agent-anti-pattern"],
"status": "angewendet"
},
"iteration-bounds": {
"principle": „Definiere explizite Stoppbedingungen für alle Iterationsschleifen”,
"verdict": "Neuer Abschnitt",
"target": "rules/common/coding-style.md",
"evidence": ["iterative-retrieval", "continuous-agent-loop", "agent-harness-construction"],
"status": "übersprungen"
}
}
}
Beispiel
End-to-End-Durchlauf
$ /rules-distill
Rules Distillation — Phase 1: Bestandsaufnahme
───────────────────────────────────────────────
Skills: 56 Dateien gescannt
Regeln: 22 Dateien (75 Überschriften indiziert)
Fahre mit der quergelesenen Analyse fort...
[Unteragenten-Analyse: Batch 1 (Agenten/Meta-Skills) ...]
[Unteragenten-Analyse: Batch 2 (Codierungs-/Muster-Skills) ...]
[Batchübergreifendes Zusammenführen: 2 Duplikate entfernt, 1 batchübergreifender Kandidat befördert]
# Rules Distillation Report
## Zusammenfassung
Gescannte Skills: 56 | Regeln: 22 Dateien | Kandidaten: 4
| # | Prinzip | Urteil | Ziel | Vertrauen |
|---|---------|--------|------|-----------|
| 1 | LLM-Ausgabe: normalisieren, typüberprüfen, bereinigen vor Wiederverwendung | Neuer Abschnitt | coding-style.md | hoch |
| 2 | Definiere explizite Stoppbedingungen für Iterationsschleifen | Neuer Abschnitt | coding-style.md | hoch |
| 3 | Kontext an Phasengrenzen komprimieren, nicht während der Aufgabe | Anhängen | performance.md §Kontextfenster | hoch |
| 4 | Geschäftslogik von I/O-Framework-Typen trennen | Neuer Abschnitt | patterns.md | hoch |
## Details
### 1. LLM-Ausgabevalidierung
Urteil: Neuer Abschnitt in coding-style.md
Nachweise: parallel-subagent-batch-merge, llm-social-agent-anti-pattern, llm-memory-trust-boundary
Verletzungsrisiko: Formatabweichungen, Typkonflikte oder Syntaxfehler in LLM-Ausgabe lassen nachgelagerte Verarbeitung abstürzen
Entwurf:
## LLM-Ausgabevalidierung
Normalisiere, typüberprüfe und bereinige LLM-Ausgabe vor Wiederverwendung...
Siehe Skill: parallel-subagent-batch-merge, llm-memory-trust-boundary
[... Details für Kandidaten 2-4 ...]
Genehmigen, ändern oder überspringen Sie jeden Kandidaten durch Nummer:
> Benutzer: Genehmige 1, 3. Überspringe 2, 4.
✓ Angewendet: coding-style.md §LLM-Ausgabevalidierung
✓ Angewendet: performance.md §Kontextfensterverwaltung
✗ Übersprungen: Iterationsgrenzen
✗ Übersprungen: Grenztypkonvertierung
Ergebnisse gespeichert in results.json
Entwurfsprinzipien
- Was, nicht Wie: Extrahiere nur Prinzipien (Regelterritorium). Codebeispiele und Befehle bleiben in Skills.
- Rückverweise: Entwurfstext sollte
Siehe Skill: [Name]-Referenzen enthalten, damit Leser das detaillierte Wie finden. - Deterministische Sammlung, LLM-Urteil: Skripte garantieren Vollständigkeit; das LLM garantiert kontextuelles Verständnis.
- Anti-Abstraktionssicherung: Der 3-stufige Filter (Nachweise aus 2+ Skills, handlungsorientierter Verhaltenstest, Verletzungsrisiko) verhindert, dass zu abstrakte Prinzipien in Regeln gelangen.