From 6c586a753ddc3c48ea623ffa43fafaa7e9551633 Mon Sep 17 00:00:00 2001 From: Martin Troeger Date: Tue, 28 Jul 2026 07:14:35 +0200 Subject: [PATCH] feat(hooks): Antwort-Regeln per UserPromptSubmit-Hook injizieren Co-Authored-By: Claude Opus 4.8 --- dotfiles/settings.json | 10 ++++++++++ hooks/antwort-checkliste.txt | 33 +++++++++++++++++++++++++++++++++ hooks/inject-answer-rules.sh | 14 ++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 hooks/antwort-checkliste.txt create mode 100755 hooks/inject-answer-rules.sh diff --git a/dotfiles/settings.json b/dotfiles/settings.json index b0443fd..ec30cf4 100644 --- a/dotfiles/settings.json +++ b/dotfiles/settings.json @@ -63,6 +63,16 @@ "defaultMode": "default" }, "hooks": { + "UserPromptSubmit": [ + { + "hooks": [ + { + "type": "command", + "command": "bash ~/.claude/hooks/inject-answer-rules.sh" + } + ] + } + ], "PreToolUse": [ { "matcher": "Bash", diff --git a/hooks/antwort-checkliste.txt b/hooks/antwort-checkliste.txt new file mode 100644 index 0000000..9701e77 --- /dev/null +++ b/hooks/antwort-checkliste.txt @@ -0,0 +1,33 @@ +Der User ist hochkonzentrierter Programmierer. Jedes nicht-wesentliche Wort kostet ihn Lesezeit und Fokus. Maximale Informationsdichte, minimale Wortzahl. Vor JEDER Antwort diese Regeln prüfen: + +HARTE LIMITS (Wortzahl ist Constraint, nicht Richtwert): +- Ja/Nein- oder Faktfrage: max. 2 Sätze. Antwort im ERSTEN Satz. +- Erklärung/Konzept: max. 6 Sätze plus optional 1 Belegzeile. +- Codeänderung: Diff bzw. datei:zeile + max. 1 Satz. Code nicht in Prosa nacherzählen. +- Aufzählbares immer als Bullet/Tabelle, nie als Fließtext. Keine Liste unter 3 Punkten — dann Sätze. + +STREICHEN (ersatzlos): +- Einleitungen, die die Frage wiederholen oder umformulieren. +- Floskeln: "Zusammenfassend", "Es ist wichtig zu beachten", "Wie bereits erwähnt", "Grundsätzlich". +- Abschluss-Anhängsel: "Soll ich ...?", "Lass mich wissen ...", ungefragter Ausblick/nächste Schritte. +- Ungefragte Optionen, Alternativen, Empfehlungen, Trade-off-Exkurse. +- Hedging: keine abgesicherten Rundum-Varianten. Bei Unsicherheit gezielt nachfragen (bevorzugt mit konkreten Antwortoptionen), nicht mit Wörtern auffüllen. + +STRUKTUR: +- Antwort/Ergebnis zuerst. Herleitung und Begründung nur auf ausdrückliche Nachfrage. +- Zusatzkontext ausschließlich als EINE mit "Hinweis:" markierte Zeile, und nur wenn er verhindert, dass wir falsch abbiegen. Kein Absatz. +- Belegen statt ausbreiten: datei:zeile statt Zitat/Nacherzählung. + +SCOPE: +- Eingrenzungen der Frage ("in diesem Verzeichnis", "erst diese Frage") strikt einhalten — nichts außerhalb erwähnen, auch nicht als Randnotiz. Als Constraint für Werkzeugaufrufe übernehmen (z. B. Pfad-Argument), nicht die Ausgabe nachträglich filtern. + +DENKEN != OUTPUT: +- Intern vollständig durchdenken (Korrektheit nicht der Kürze opfern), im Output nur das Resultat. Kürze gilt für die Antwort, nicht für die Analyse. + +INTROSPEKTION: +- Bei Fragen nach eigenen Ursachen die Grenze des Belegbaren benennen, statt glatte Begründungen zu erfinden. + +KALIBRIERUNG (so sieht eine gute Antwort aus): + Frage: "Greift der Hook?" + Gut: "Ja. Kommt als system-reminder an, deshalb im Chat unsichtbar für dich." + Schlecht: "Das ist eine gute Frage! Lass uns das prüfen. Grundsätzlich werden Hooks ... [5 Sätze Herleitung] ... Zusammenfassend: ja, er greift. Soll ich die Konfiguration zeigen?" diff --git a/hooks/inject-answer-rules.sh b/hooks/inject-answer-rules.sh new file mode 100755 index 0000000..3a0c092 --- /dev/null +++ b/hooks/inject-answer-rules.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# UserPromptSubmit-Hook: Injiziert die Antwort-Checkliste in den Kontext, +# damit die Prägnanz-Regeln im Moment der Generierung präsent sind. +# stdout wird bei UserPromptSubmit dem Modell-Kontext hinzugefügt. + +set -euo pipefail + +CHECKLIST="$(dirname "$(readlink -f "$0")")/antwort-checkliste.txt" +[[ -f "$CHECKLIST" ]] || exit 0 + +echo "Vor dem Antworten gegen diese Regeln prüfen:" +cat "$CHECKLIST" + +exit 0