- pre-commit Hook Check 6: prueft jetzt Datum im Dateinamen + mind. 1 ### Prompt-Eintrag - .github/copilot-instructions.md: Session END Schritt 2 mit Format-Template + Nachtrag-Warnung - git-templates/.github/copilot-instructions.md: dasselbe
10 KiB
pre-commit Check 6: Session-Pflicht pro Commit – 2026-06-03
Aufgabe / Ziel
Check 6 verbessern: statt grober Datumsprüfung ("Session für heute vorhanden?")
soll geprüft werden ob eine *_session.md im konkreten Commit gestaged ist.
Außerdem: /history soll bestehende Session-Dateien lesen und nur ergänzen, nicht überschreiben.
Verlauf
Prompt 1
„Das ist kein guter check weil zu grob was ist wenn ich mehrere änderungen kurz hintereinander mache? Was für ideen hast du um das besser zu machen?"
Antwort 1
Drei Ansätze vorgestellt:
- A) Session-Datei muss im aktuellen Commit gestaged sein – präzise, direkter Zusammenhang zwischen Commit und Session. Nachteil: zwingt bei jedem Commit zu /history.
- B) Nur Warnung, kein Block – Agent wird erinnert, Mensch entscheidet.
- C) Session-Datei muss in den letzten 2h geändert worden sein – zeitfensterbasiert, willkürliche Grenze.
Vorschlag: A als Warnung (Kombination).
Prompt 2
(User wurde direkt vom Hook blockiert — Fehlermeldung)
Es existiert kein Agent-Log für heute (2026-06-02_*_session.md).
Antwort 2
Das Problem live demonstriert: heute = 3. Juni, Session-Datei vom 2. Juni → Hook
blockiert. Check 6 auf Warnung umgestellt (kein Block, prüft ob *_session.md
im aktuellen Stage ist).
Änderungen:
git-templates/hooks/pre-commit: Check 6 → Warnung statt Blockhistory/summary/PROJECT_CONTEXT.md: aktualisiert
Commit 6ab2614 – Quality Gate bestanden.
Prompt 3
„ich will das es bei jedem commit gestaged sein muss. es findet immer konversation statt die abgelegt werden soll. eben so muss der agent schauen was schon drin ist und nur das ergänzen was noch fehlt."
Antwort 3
Zwei Änderungen gleichzeitig:
Check 6 wieder als Block – aber jetzt korrekt: prüft ob *_session.md in den
gestagten Dateien des aktuellen Commits ist (nicht Kalendertag).
prompts/history.prompt.md überarbeitet:
- Schritt 1: Bestehende
YYYY-MM-DD_*_session.mdfür heute suchen und lesen - Wenn vorhanden: nur neuen Teil ergänzen (neue Prompts/Antworten seit letztem Eintrag)
- Ergebnis/Entscheidungen/Offene Punkte danach aktualisieren
- Wenn nicht vorhanden: neue Datei anlegen
.copilot-no-session für Setup-Repo angelegt (manuelle Commits ohne Chat-Kontext
sollen nicht blockiert werden).
Commit ca7f52b – Quality Gate bestanden, gepusht.
Prompt 4
„jetzt ist aber mein letzter promt immer noch nicht in der history..."
Antwort 4
Korrekt – heute ist der 3. Juni, bestehende Session-Datei ist vom 2. Juni.
Neue Session-Datei für heute angelegt: 2026-06-03_pre-commit-check6-session-pflicht_session.md
Ergebnis
Geänderte Dateien
| Datei | Änderung |
|---|---|
git-templates/hooks/pre-commit |
Check 6: Staged-Prüfung statt Datumsprüfung |
prompts/history.prompt.md |
Liest bestehende Session, ergänzt nur neuen Teil |
.copilot-no-session |
Neu: Opt-out für Setup-Repo |
history/summary/PROJECT_CONTEXT.md |
Aktualisiert |
Commits dieser Session
6ab2614– feat: pre-commit Check 6 (Warnung, Zwischenschritt)ca7f52b– fix: pre-commit Check 6 – Session-Datei muss in Commit gestaged sein
Entscheidungen
| Entscheidung | Begründung |
|---|---|
| Check 6 prüft gestagten Commit, nicht Kalendertag | Präziser: direkter Zusammenhang Commit ↔ Session |
/history ergänzt statt überschreibt |
Mehrere Commits in einer Session = kein Datenverlust |
.copilot-no-session im Setup-Repo |
Manuelle Fixes sollen nicht blockiert werden |
| post-commit Git-Block entfernt | Dirty Working Tree nach jedem Commit war unerwünscht; kein Mehrwert |
| Agent führt /history automatisch aus | Kein expliziter Aufruf nötig; Agent macht es vor jedem Commit selbst |
Offene Punkte
git copilot-updateausführen um neuen Hook + history.prompt.md + copilot-instructions.md in andere Repos zu distribuieren
Nachtrag: copilot-update.sh Self-Update + Framework-Sektion immer aktualisieren
Ursache der Probleme in rd13_tile_server:
~/.local/bin/copilot-update.shupdated sich nie selbst → war veraltet (post-commit, alte TODO-Logik)copilot-instructions.mdwurde nur bei TODO-Platzhaltern überschrieben → angepasste Repos bekamen nie Framework-Updates
Fixes:
copilot-update.sh+copilot-update.fish: Self-Update-Schritt hinzugefügt (Schritt 1b)- Vergleicht sich mit Cache-Version via
cmp -s - Wenn unterschiedlich: kopiert neue Version + startet sich neu mit
exec
- Vergleicht sich mit Cache-Version via
copilot-instructions.md-Update-Logik neu: Framework-Sektion (alles vor---) immer aus Template, Projekt-Sektion (ab---) bleibt repo-spezifisch- Einmalig manuell deployed:
cp scripts/copilot-update.sh ~/.local/bin/copilot-update.sh
Nachtrag: post-commit Git-Block entfernt + Agent-History automatisiert
Commits: 2d318f3, d9508f7
Was geändert wurde
post-commit Hook → no-op (exit 0):
- Git-Block wurde nach jedem Commit automatisch an
_session.mdangehängt - Erzeugte Dirty Working Tree nach jedem Commit (35 Zeilen unstaged)
- Kein echtes Problem lösbar: Session-Inhalt fehlt trotzdem wenn Agent nicht aktiv war
- Entscheidung: Hook entfernt, stattdessen Agent-Automatisierung
copilot-instructions.md (beide) → Session END automatisch:
- Vorher: "Führe
/historyim Copilot Chat aus" (erforderte expliziten Benutzer-Aufruf) - Jetzt: "Der Agent führt dies automatisch am Ende jeder Aufgabe aus, bevor er
git commitausführt" - Agent wartet nicht mehr auf
/history-Aufruf
Bereinigungen:
deploy.sh: post-commit nicht mehr installiertcopilot-update.fish: post-commit nicht mehr kopiertREADME.md,docs/MAINTAINER.md,prompts/history.prompt.md: alle Referenzen entfernt- Auto-Stub
2026-06-03_master_ca7f52b.mdgelöscht - Git-Block aus dieser Session-Datei entfernt
Prompt 5 (danach)
„warum ist jetzt noch die neue session datei als change nicht im commit?"
Antwort 5
post-commit Hook läuft nach dem Commit → kann nicht Teil desselben Commits sein. 3 Optionen erklärt. Empfehlung: Option 1 (pragmatisch, nichts ändern).
Prompt 6
„den git block brauche ich garnicht in der datei noch sonst wo lass und das einfach entfernen."
Antwort 6
post-commit Hook auf no-op gesetzt. Alle Referenzen aus Scripts/Docs/Prompts entfernt.
Git-Block + Auto-Stub aus history/ gelöscht. Commit d9508f7.
Prompt 7
„Dann will ich das history als pre commit hook ausgeführt wird."
Antwort 7
Technisch nicht möglich — /history ist ein Copilot Chat Prompt, der das KI-Modell
benötigt. Git Hooks sind Shell-Prozesse ohne Zugang zu Copilot.
Alternative vorgeschlagen: Hook stagt Session-Datei automatisch wenn sie existiert.
Prompt 8
„aber warum ging das dann als post commit hook? bzw das sollte doch das gleiche verhalten sein wie mit der dokumentation und anderen anweisungen für den agenten. Warum kann der agent dann nicht daruf hören und das machen bevor der commit gemacht wird?"
Antwort 8
Unterschied erklärt:
- post-commit hat nur Shell-Arbeit gemacht (git log lesen, Text schreiben) — kein Modell nötig
- copilot-instructions.md ist kein automatischer Trigger — nur aktiv wenn Agent in Chat-Session ist
- Lösung: Agent muss /history selbst vor jedem Commit ausführen (ohne expliziten Aufruf)
Prompt 9
„ja genau das will ich!!!"
Antwort 9
copilot-instructions.md (beide) aktualisiert:
- Session END: "Der Agent führt dies automatisch am Ende jeder Aufgabe aus, bevor er
git commitausführt" - "Der Agent wartet nicht auf expliziten
/history-Aufruf – er führt es automatisch vor jedem Commit aus" Commit5f35c90.
Prompt 10 (/history)
Expliziter /history-Aufruf — Session-Datei war unvollständig (Prompt 5–9 fehlten).
Antwort 10
Session-Datei mit Prompts 5–9 ergänzt. history/summary/PROJECT_CONTEXT.md aktualisiert.
Commit b093ad6.
Prompt 11
„im repo rd13_tile_server habe ich git copilot-update ausgeführt aber die letzten änderungen gerade die der history betreffend sind nicht hinzugefügt worden. Warum ist das so, und warum scheint der update pfad über git pull direkt von forgejo nicht zu funktionieren?"
Antwort 11
Zwei Probleme identifiziert:
~/.local/bin/copilot-update.shupdated sich nie selbst → war noch die alte Version (mitpost-commit-Hook undTODO-only-Logik fürcopilot-instructions.md)copilot-instructions.mdUpdate-Logik: prüfte nur obTODOvorhanden → bei angepassten Repos (TODOs ausgefüllt) wurde die Datei nie aktualisiert
Fixes in copilot-update.sh + copilot-update.fish:
- Self-Update-Schritt (1b):
cmp -s→execneue Version copilot-instructions.md: Framework-Sektion (vor---) immer aus Template aktualisieren, Projekt-Sektion (ab---) bleibt unberührt Einmalig manuell deployed. Commitfa007db.
Prompt 12
„Wieder fehlen die Promts in der history warum hast du das schon wieder vor dem Commiten vergessen anständig zu befüllen?"
Antwort 12
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:
- pre-commit Hook Check 6 erweitert – drei neue Bedingungen:
- Dateiname muss heutiges Datum enthalten
- Datei muss mindestens einen
### Prompt-Eintrag enthalten (viagit show ":$FILE") - Klare Fehlermeldung mit korrektem Format-Beispiel
- 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.