diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 6c3afb5..b4b1f1c 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -10,11 +10,22 @@ **Session END** – Der Agent führt dies **automatisch** am Ende jeder Aufgabe aus, bevor er `git commit` ausführt: 1. Lies die bestehende `history/prompts/YYYY-MM-DD_*_session.md` (falls vorhanden) und ergänze nur den neuen Teil - **Dateiformat zwingend:** Suffix `_session.md` -2. Aktualisiere `history/summary/PROJECT_CONTEXT.md` mit dem neuen Projektstand -3. **Stage beide Dateien VOR `git commit`:** `git add history/` - Der pre-commit Hook (Check 6) blockiert wenn keine `*_session.md` gestaged ist. - Kein Opt-out möglich – jeder Commit braucht eine Session-Datei. + **Dateiformat zwingend:** Suffix `_session.md`, Dateiname beginnt mit heutigem Datum (`YYYY-MM-DD`) +2. **Für jeden Benutzer-Prompt seit dem letzten Commit** einen Block ergänzen: + ``` + ### Prompt N + «wörtlicher Benutzertext» + + ### Antwort N + «Zusammenfassung der Agent-Antwort + relevante Commits/Dateien» + ``` + ⚠ Kein „Nachtrag"-Block statt echter Prompt-Einträge. Die Benutzer-Nachricht **wörtlich** zitieren. +3. Aktualisiere `history/summary/PROJECT_CONTEXT.md` mit dem neuen Projektstand +4. **Stage beide Dateien VOR `git commit`:** `git add history/` + Der pre-commit Hook (Check 6) blockiert wenn: + - keine `*_session.md` gestaged ist + - der Dateiname nicht mit dem heutigen Datum beginnt + - die Datei keinen einzigen `### Prompt`-Eintrag enthält > Kein Bypass. Kein Vergessen. Kein "mache ich beim nächsten Mal". > Die History ist das Gedächtnis des Projekts. diff --git a/git-templates/.github/copilot-instructions.md b/git-templates/.github/copilot-instructions.md index 6c3afb5..b4b1f1c 100644 --- a/git-templates/.github/copilot-instructions.md +++ b/git-templates/.github/copilot-instructions.md @@ -10,11 +10,22 @@ **Session END** – Der Agent führt dies **automatisch** am Ende jeder Aufgabe aus, bevor er `git commit` ausführt: 1. Lies die bestehende `history/prompts/YYYY-MM-DD_*_session.md` (falls vorhanden) und ergänze nur den neuen Teil - **Dateiformat zwingend:** Suffix `_session.md` -2. Aktualisiere `history/summary/PROJECT_CONTEXT.md` mit dem neuen Projektstand -3. **Stage beide Dateien VOR `git commit`:** `git add history/` - Der pre-commit Hook (Check 6) blockiert wenn keine `*_session.md` gestaged ist. - Kein Opt-out möglich – jeder Commit braucht eine Session-Datei. + **Dateiformat zwingend:** Suffix `_session.md`, Dateiname beginnt mit heutigem Datum (`YYYY-MM-DD`) +2. **Für jeden Benutzer-Prompt seit dem letzten Commit** einen Block ergänzen: + ``` + ### Prompt N + «wörtlicher Benutzertext» + + ### Antwort N + «Zusammenfassung der Agent-Antwort + relevante Commits/Dateien» + ``` + ⚠ Kein „Nachtrag"-Block statt echter Prompt-Einträge. Die Benutzer-Nachricht **wörtlich** zitieren. +3. Aktualisiere `history/summary/PROJECT_CONTEXT.md` mit dem neuen Projektstand +4. **Stage beide Dateien VOR `git commit`:** `git add history/` + Der pre-commit Hook (Check 6) blockiert wenn: + - keine `*_session.md` gestaged ist + - der Dateiname nicht mit dem heutigen Datum beginnt + - die Datei keinen einzigen `### Prompt`-Eintrag enthält > Kein Bypass. Kein Vergessen. Kein "mache ich beim nächsten Mal". > Die History ist das Gedächtnis des Projekts. diff --git a/git-templates/hooks/pre-commit b/git-templates/hooks/pre-commit index b6b9cb2..9235769 100755 --- a/git-templates/hooks/pre-commit +++ b/git-templates/hooks/pre-commit @@ -135,6 +135,38 @@ if [ -d "history/prompts" ] && [ ! -f ".copilot-no-session" ]; then echo " → Kein Chat-Kontext (z.B. CI/manuell)? Opt-out anlegen:" echo " touch .copilot-no-session && git add .copilot-no-session" ERRORS=$((ERRORS + 1)) + else + # Dateiname muss heutiges Datum enthalten (YYYY-MM-DD) + TODAY=$(date +%Y-%m-%d) + SESSION_DATE=$(basename "$SESSION_STAGED" | grep -o '^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}') + if [ "$SESSION_DATE" != "$TODAY" ]; then + echo "" + echo "✗ AGENT QUALITY GATE [6/6]: Session-Datei hat nicht das heutige Datum" + echo " Gestagt: $SESSION_STAGED" + echo " Erwartet: Dateiname beginnt mit $TODAY" + echo "" + echo " → Neue Session-Datei für heute anlegen: history/prompts/${TODAY}_beschreibung_session.md" + ERRORS=$((ERRORS + 1)) + else + # Datei muss mindestens einen ### Prompt-Eintrag enthalten + # (verhindert reine 'Nachtrag'-Blöcke ohne echte Prompt-Dokumentation) + SESSION_FILE_CONTENT=$(git show ":$SESSION_STAGED" 2>/dev/null) + PROMPT_COUNT=$(printf '%s\n' "$SESSION_FILE_CONTENT" | grep -c '^### Prompt') + if [ "$PROMPT_COUNT" -eq 0 ]; then + echo "" + echo "✗ AGENT QUALITY GATE [6/6]: Session-Datei enthält keine '### Prompt'-Einträge" + echo " Gestagt: $SESSION_STAGED" + echo "" + echo " Jede Session-Datei muss die Benutzer-Prompts im Format:" + echo " ### Prompt N" + echo " «wörtlicher Benutzertext»" + echo " ### Antwort N" + echo " «Zusammenfassung der Agent-Antwort»" + echo "" + echo " → Copilot Chat: /history (ergänzt Session-Datei korrekt)" + ERRORS=$((ERRORS + 1)) + fi + fi fi fi diff --git a/history/prompts/2026-06-03_pre-commit-check6-session-pflicht_session.md b/history/prompts/2026-06-03_pre-commit-check6-session-pflicht_session.md index 9b73767..f4c6e6d 100644 --- a/history/prompts/2026-06-03_pre-commit-check6-session-pflicht_session.md +++ b/history/prompts/2026-06-03_pre-commit-check6-session-pflicht_session.md @@ -218,3 +218,21 @@ Einmalig manuell deployed. Commit `fa007db`. Prompts 10–12 ergänzt. Ursache: Session-Datei wurde vor Commit `fa007db` nicht aktualisiert, obwohl `copilot-instructions.md` das als Pflicht festlegt. Fehler des Agents. +### Prompt 13 +„Wie konnte das passieren und wie kannst du das verhindern?" + +### Antwort 13 +Ursache analysiert: Commit `fa007db` enthielt die Session-Datei (Check 6 passiert), aber nur +als „Nachtrag"-Block ohne `### Prompt`-Einträge → Hook hat Inhalt nicht geprüft, nur Präsenz. + +Zwei Maßnahmen implementiert: +1. **pre-commit Hook Check 6 erweitert** – drei neue Bedingungen: + - Dateiname muss heutiges Datum enthalten + - Datei muss mindestens einen `### Prompt`-Eintrag enthalten (via `git show ":$FILE"`) + - Klare Fehlermeldung mit korrektem Format-Beispiel +2. **copilot-instructions.md** (beide: `.github/` + `git-templates/.github/`) **präzisiert:** + - Schritt 2 neu: explizit „Für jeden Benutzer-Prompt" + Format-Template im Code-Block + - Warnung: „⚠ Kein Nachtrag-Block statt echter Prompt-Einträge" + - Check-6-Bedingungen in der Anleitung aufgelistet +Commit `PENDING`. + diff --git a/history/summary/PROJECT_CONTEXT.md b/history/summary/PROJECT_CONTEXT.md index 336a239..bdd3459 100644 --- a/history/summary/PROJECT_CONTEXT.md +++ b/history/summary/PROJECT_CONTEXT.md @@ -8,7 +8,7 @@ ## Aktueller Projektstatus -**Letzte Aktualisierung:** 2026-06-03 – copilot-update Self-Update + Framework-Sektion; session history nachgepflegt +**Letzte Aktualisierung:** 2026-06-03 – Check 6 Inhaltsprüfung + copilot-instructions.md Prompt-Format-Pflicht **Phase:** Produktion / stabil – wird bei Bedarf erweitert ---