fix: .copilot-no-session/.copilot-no-docs entfernt + alle 3 Docs aktualisiert
- .copilot-no-session entfernt: Session-Pflicht gilt auch fuer dieses Repo - .copilot-no-docs entfernt: Doku-Pflicht gilt, README + Docs sollen aktuell bleiben - copilot-instructions.md (beide): Session END explizit mit Check-6-Hinweis - docs/ADMIN.md: Opt-out Dateien dokumentiert, Troubleshooting aktualisiert - docs/USER.md: /check-consistency ergaenzt, Hook-Fehler Optionen aktualisiert - docs/MAINTAINER.md: Dateistruktur + Designentscheidungen aktuell
This commit is contained in:
parent
ca7f52b0ba
commit
2d318f3654
10 changed files with 188 additions and 15 deletions
7
.github/copilot-instructions.md
vendored
7
.github/copilot-instructions.md
vendored
|
|
@ -9,11 +9,12 @@
|
|||
2. Verstehe den aktuellen Projektzustand bevor du anfängst
|
||||
|
||||
**Session END** – Führe `/history` im Copilot Chat aus um die Session abzuschließen:
|
||||
1. Erstelle `history/prompts/YYYY-MM-DD_kurzbeschreibung_session.md` mit vollständigem Log
|
||||
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` — der post-commit Hook erkennt daran das Agent-Log
|
||||
und hängt den Git-Block automatisch an statt eine neue Datei zu erstellen.
|
||||
2. Aktualisiere `history/summary/PROJECT_CONTEXT.md` mit dem neuen Projektstand
|
||||
3. Stage beide Dateien: `git add history/`
|
||||
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.
|
||||
|
||||
> Kein Bypass. Kein Vergessen. Kein "mache ich beim nächsten Mal".
|
||||
> Die History ist das Gedächtnis des Projekts.
|
||||
|
|
|
|||
|
|
@ -78,6 +78,30 @@ chmod +x /path/to/repo/.git/hooks/pre-commit
|
|||
chmod -x .git/hooks/pre-commit
|
||||
```
|
||||
|
||||
### Quality Gate – Übersicht der Checks
|
||||
|
||||
| Check | Was wird geprüft | Opt-out Datei |
|
||||
|---|---|---|
|
||||
| 1 | Tests gestaged bei Code-Änderungen | `.copilot-no-tests` |
|
||||
| 2 | Mindestens eine Zielgruppen-Doku aktualisiert | `.copilot-no-docs` |
|
||||
| 3 | Alle 3 Zielgruppen-Docs vorhanden (USER/ADMIN/MAINTAINER) | – |
|
||||
| 4 | `history/summary/PROJECT_CONTEXT.md` aktualisiert | – |
|
||||
| 5 | `docs/requirements/REQUIREMENTS.md` keine unstaged Änderungen | `.copilot-no-requirements` |
|
||||
| 6 | Eine `*_session.md` ist in diesem Commit gestaged | – (kein Opt-out) |
|
||||
|
||||
**Opt-out Dateien** – einfach im Repo-Root anlegen um einen Check zu deaktivieren:
|
||||
|
||||
```bash
|
||||
touch .copilot-no-tests # Repo hat kein Test-Framework
|
||||
touch .copilot-no-docs # Repo hat keine Doku-Pflicht (reine Scripts/Config)
|
||||
touch .copilot-no-requirements # Repo verwendet keine REQUIREMENTS.md
|
||||
```
|
||||
|
||||
Opt-out Dateien committen damit sie für alle gelten:
|
||||
```bash
|
||||
git add .copilot-no-tests && git commit -m "chore: disable test check (no test framework)"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Bestehende Repos ausstatten
|
||||
|
|
@ -122,5 +146,8 @@ fish_add_path ~/.local/bin
|
|||
|---|---|---|
|
||||
| `copilot-bootstrap.sh: command not found` | `~/.local/bin` nicht im PATH | Siehe "PATH" oben |
|
||||
| `git init` ruft Bootstrap nicht auf | Git-Alias nicht gesetzt | `deploy.sh` erneut ausführen |
|
||||
| Hook schlägt fehl obwohl alles ok | Falsch-positiver Match | `.copilot-no-tests` oder `.copilot-no-docs` anlegen; oder Hook-Script prüfen |
|
||||
| Hook schlägt fehl: Tests fehlen | Code geändert ohne Tests | `/write-tests` in Copilot Chat, oder `.copilot-no-tests` anlegen |
|
||||
| Hook schlägt fehl: Doku fehlt | Code geändert ohne Doku-Update | Docs aktualisieren, oder `.copilot-no-docs` anlegen |
|
||||
| Hook schlägt fehl: Session fehlt | `*_session.md` nicht gestaged | Copilot Chat → `/history`, dann `git add history/` |
|
||||
| Hook schlägt fehl: REQUIREMENTS.md unstaged | Requirements geändert aber nicht gestaged | `git add docs/requirements/REQUIREMENTS.md` |
|
||||
| Hook nicht aktiv nach `git clone` | Hooks werden bei `clone` nicht kopiert | `copilot-bootstrap.sh` im geklonten Repo ausführen |
|
||||
|
|
|
|||
|
|
@ -42,20 +42,25 @@ rd13_copilot_setup/
|
|||
│ │ ├── settings.json ← Repo-spezifische VS Code Einstellungen
|
||||
│ │ └── extensions.json ← Empfohlene Extensions für neue Repos
|
||||
│ ├── hooks/
|
||||
│ │ └── pre-commit ← Agent Quality Gate (Tests + Doku-Check)
|
||||
│ │ ├── pre-commit ← Agent Quality Gate (6 Checks)
|
||||
│ │ ├── post-commit ← Hängt Git-Block an *_session.md an
|
||||
│ │ └── post-merge ← Opt-in: copilot-update.sh nach git pull
|
||||
│ ├── docs/
|
||||
│ │ ├── USER.md ← Template Endnutzer-Doku
|
||||
│ │ ├── ADMIN.md ← Template Admin-Doku
|
||||
│ │ └── MAINTAINER.md ← Template Maintainer-Doku
|
||||
│ │ ├── MAINTAINER.md ← Template Maintainer-Doku
|
||||
│ │ └── requirements/
|
||||
│ │ └── REQUIREMENTS.md ← Template für persistente Anforderungen
|
||||
│ └── history/
|
||||
│ └── summary/
|
||||
│ └── PROJECT_CONTEXT.md ← Template Agent-Kontext-Summary
|
||||
├── prompts/ ← Wiederverwendbare Copilot-Workflows
|
||||
│ └── *.prompt.md
|
||||
│ └── *.prompt.md ← /requirements /history /check-consistency ...
|
||||
├── scripts/
|
||||
│ ├── deploy.sh ← Bash-Deploy (macOS + Linux)
|
||||
│ ├── deploy.fish ← Fish-Deploy (Linux)
|
||||
│ ├── copilot-bootstrap.sh ← POSIX-sh Bootstrap für einzelne Repos (Haupt-Script)
|
||||
│ ├── copilot-bootstrap.sh ← POSIX-sh Bootstrap für einzelne Repos
|
||||
│ ├── copilot-update.sh ← Aktualisiert Templates + Hooks in Repos
|
||||
│ └── copilot-bootstrap.fish ← Fish-Variante (legacy, optional)
|
||||
└── user-settings/
|
||||
└── settings.json ← VS Code User-Level Settings (Layer 1)
|
||||
|
|
@ -121,4 +126,5 @@ Dateien unter `git-templates/` bearbeiten → `deploy.sh` ausführen → neue Re
|
|||
| 3 Zielgruppen-Docs (USER/ADMIN/MAINTAINER) | Klare Trennung: Nutzer ≠ Ops ≠ Dev; jede Gruppe findet ihren Kontext direkt |
|
||||
| `data/` gitignored, Ordner-Struktur tracked | Persistente Daten gehören nie ins Git; Struktur als Konvention dokumentiert |
|
||||
| `history/prompts/` committed | Vollständige Agent-History bleibt im Repo erhalten; ermöglicht lückenlose Nachvollziehbarkeit |
|
||||
| pre-commit Hook als Quality Gate | Automatisches Netz verhindert dass Tests/Doku vergessen werden; Opt-outs via `.copilot-no-tests` / `.copilot-no-docs` für Repos ohne Framework |
|
||||
| pre-commit Hook als Quality Gate (6 Checks) | Automatisches Netz: Tests, Doku, 3-Zielgruppen, PROJECT_CONTEXT, Requirements, Session-Datei; Opt-outs via `.copilot-no-tests` / `.copilot-no-docs` / `.copilot-no-requirements` |
|
||||
| Check 6: Session-Datei muss in jedem Commit gestaged sein | Jeder Commit ist mit Agent-Session verknüpft; kein Opt-out; erzwingt `/history` vor `git commit` |
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ In GitHub Copilot Chat einfach `/` tippen:
|
|||
| `/done-check` | Definition of Done Checkliste |
|
||||
| `/docker` | Docker/Compose-Aufgaben |
|
||||
| `/history` | Agent-History loggen + Kontext-Summary aktualisieren |
|
||||
| `/check-consistency` | Konsistenzprüfung: Code vs. Requirements vs. Docs |
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -116,10 +117,12 @@ fish_add_path ~/.local/bin # fish
|
|||
Das deploy-Skript wurde noch nicht auf diesem System ausgeführt. Schritt 1+2 wiederholen.
|
||||
|
||||
**Der pre-commit Hook blockiert meinen Commit**
|
||||
Der Hook hat Tests oder Dokumentation vermisst. Optionen:
|
||||
Der Hook hat Tests, Dokumentation, Session-Datei oder Requirements vermisst. Optionen:
|
||||
- Tests schreiben: Copilot Chat → `/write-tests`
|
||||
- Dokumentation aktualisieren: `docs/USER.md`, `docs/ADMIN.md` oder `docs/MAINTAINER.md`
|
||||
- Tests/Docs opt-out: `.copilot-no-tests` oder `.copilot-no-docs` im Repo-Root anlegen
|
||||
- Session-Datei stagen: Copilot Chat → `/history`, dann `git add history/`
|
||||
- Für Repos ohne Test-Framework: `.copilot-no-tests` im Repo-Root anlegen
|
||||
- Für Repos ohne Doku-Pflicht: `.copilot-no-docs` im Repo-Root anlegen
|
||||
|
||||
**Ich will die Templates aktualisieren**
|
||||
Im `rd13_copilot_setup`-Repo die Dateien in `git-templates/` ändern, committen, dann `deploy.sh` erneut ausführen.
|
||||
|
|
|
|||
|
|
@ -9,11 +9,12 @@
|
|||
2. Verstehe den aktuellen Projektzustand bevor du anfängst
|
||||
|
||||
**Session END** – Führe `/history` im Copilot Chat aus um die Session abzuschließen:
|
||||
1. Erstelle `history/prompts/YYYY-MM-DD_kurzbeschreibung_session.md` mit vollständigem Log
|
||||
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` — der post-commit Hook erkennt daran das Agent-Log
|
||||
und hängt den Git-Block automatisch an statt eine neue Datei zu erstellen.
|
||||
2. Aktualisiere `history/summary/PROJECT_CONTEXT.md` mit dem neuen Projektstand
|
||||
3. Stage beide Dateien: `git add history/`
|
||||
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.
|
||||
|
||||
> Kein Bypass. Kein Vergessen. Kein "mache ich beim nächsten Mal".
|
||||
> Die History ist das Gedächtnis des Projekts.
|
||||
|
|
|
|||
33
history/prompts/2026-06-03_master_ca7f52b.md
Normal file
33
history/prompts/2026-06-03_master_ca7f52b.md
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# Auto-Log: fix: pre-commit Check 6 – Session-Datei muss in Commit gestaged sein
|
||||
|
||||
---
|
||||
|
||||
## Git Commit
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Datum | 2026-06-03 05:55:36 |
|
||||
| Branch | `master` |
|
||||
| Commit | `ca7f52b0baca026837687469193cd3d322a1f782` |
|
||||
| Autor | Conrad Schulz <conradschulz@me.com> |
|
||||
|
||||
### Commit Message
|
||||
|
||||
```
|
||||
fix: pre-commit Check 6 – Session-Datei muss in Commit gestaged sein
|
||||
```
|
||||
|
||||
### Geänderte Dateien
|
||||
|
||||
| Status | Datei |
|
||||
|---|---|
|
||||
| A | .copilot-no-session |
|
||||
| M | git-templates/hooks/pre-commit |
|
||||
| M | history/prompts/2026-06-02_review-fixes-requirements-engineering_session.md |
|
||||
| M | history/summary/PROJECT_CONTEXT.md |
|
||||
| M | prompts/history.prompt.md |
|
||||
|
||||
---
|
||||
*Git-Block automatisch generiert durch post-commit hook.*
|
||||
|
||||
*Kein Agent-Log vorhanden. Für vollständige Konversation: Copilot Chat → `/history` vor dem Commit ausführen.*
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
# 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 Block
|
||||
- `history/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.md` fü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 |
|
||||
|
||||
---
|
||||
|
||||
## Offene Punkte
|
||||
|
||||
- [ ] `git copilot-update` ausführen um neuen Hook + history.prompt.md in andere Repos zu distribuieren
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
## Aktueller Projektstatus
|
||||
|
||||
**Letzte Aktualisierung:** 2026-06-03 – pre-commit Check 6 von Block auf Warnung umgestellt
|
||||
**Letzte Aktualisierung:** 2026-06-03 – .copilot-no-session/no-docs entfernt, alle 3 Docs aktualisiert
|
||||
**Phase:** Produktion / stabil – wird bei Bedarf erweitert
|
||||
|
||||
---
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue