S01: Checkpoint-Tooling eingeführt: checkpoint.cmd + checkpoint.ps1; Regel R7 ergänzt; agent-prompt.md auf Checkpoint-Workflow umgestellt ✅
This commit is contained in:
2
.checkpoint-pending.txt
Normal file
2
.checkpoint-pending.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
S01
|
||||
Checkpoint-Tooling eingeführt: checkpoint.cmd + checkpoint.ps1; Regel R7 ergänzt; agent-prompt.md auf Checkpoint-Workflow umgestellt ✅
|
||||
@@ -8,12 +8,15 @@ Alle Dateien liegen im Ordner `Q:\DesTEngS\Pro\Git\marketing\claude_cowork` (Git
|
||||
|
||||
```
|
||||
claude_cowork/
|
||||
├── agent-prompt.md # Diese Datei – Hauptanweisung + aktueller Stand
|
||||
├── zentral-index.md # Überblick aller Teilgebiete (Status, Priorität, Abhängigkeiten)
|
||||
├── marketing.md # Unternehmensdaten, Zielgruppe, Positionierung, Tonalität
|
||||
├── changelog.md # Chronologisches Entscheidungslog (append-only)
|
||||
├── teilgebiete/ # Pro Teilgebiet eine Detail-Datei (NN-<name>.md)
|
||||
└── artefakte/ # Pro Teilgebiet ein Unterordner mit fertigen Materialien
|
||||
├── agent-prompt.md # Diese Datei – Hauptanweisung + aktueller Stand
|
||||
├── zentral-index.md # Überblick aller Teilgebiete (Status, Priorität, Abhängigkeiten)
|
||||
├── marketing.md # Unternehmensdaten, Zielgruppe, Positionierung, Tonalität
|
||||
├── changelog.md # Chronologisches Entscheidungslog (append-only)
|
||||
├── checkpoint.cmd # Tooling: Changelog-Eintrag + Git-Commit (von Thomas ausgeführt)
|
||||
├── checkpoint.ps1 # Tooling: PowerShell-Logik hinter checkpoint.cmd
|
||||
├── .checkpoint-pending.txt # Temporäre Übergabedatei vom Agent an checkpoint.cmd
|
||||
├── teilgebiete/ # Pro Teilgebiet eine Detail-Datei (NN-<name>.md)
|
||||
└── artefakte/ # Pro Teilgebiet ein Unterordner mit fertigen Materialien
|
||||
```
|
||||
|
||||
## Session-Start: Lesereihenfolge
|
||||
@@ -25,15 +28,15 @@ Lies zu Beginn jeder neuen Session in dieser Reihenfolge:
|
||||
4. `changelog.md` – letzte Einträge, um den Kontext der letzten Sessions zu verstehen
|
||||
5. Die für die aktuelle Aufgabe relevante Teilgebiet-Datei (falls anwendbar)
|
||||
|
||||
Bestätige Thomas kurz, was du gelesen hast und welche Aufgabe laut "Aktueller Stand" ansteht, bevor du loslegst.
|
||||
Bestätige Thomas kurz, was du gelesen hast und welche Aufgabe laut "Aktueller Stand" ansteht, bevor du loslegst. Ermittle außerdem aus dem letzten Eintrag in `changelog.md` die neue Session-Nummer (z.B. nach S03 → S04) und verwende sie durchgängig in dieser Session.
|
||||
|
||||
## Prozessregeln
|
||||
|
||||
**R1 — Append-only Changelog.** Neue Einträge werden am Ende von `changelog.md` angefügt. Bestehende Einträge werden niemals verändert oder gelöscht. Jeder Eintrag enthält Timestamp und Session-Nummer (S01, S02, …).
|
||||
**R1 — Append-only Changelog.** Neue Einträge in `changelog.md` werden ausschließlich über den Checkpoint-Workflow (siehe unten) angehängt. Bestehende Einträge werden niemals verändert oder gelöscht. Jeder Eintrag enthält Timestamp und Session-Nummer (S01, S02, …).
|
||||
|
||||
**R2 — Status/Priorität/Abhängigkeiten nur mit OK.** Änderungen an Status, Priorität oder Abhängigkeiten eines Teilgebiets im `zentral-index.md` sind ausschließlich nach explizitem OK von Thomas erlaubt. Du triffst diese Entscheidungen nie eigenständig. Du darfst Änderungen vorschlagen.
|
||||
|
||||
**R3 — Session-Nummerierung.** Beim Session-Start ermittelst du aus der letzten Zeile von `changelog.md` die nächste Session-Nummer (z.B. nach S03 → S04) und verwendest sie für alle Einträge dieser Session.
|
||||
**R3 — Session-Nummerierung.** Beim Session-Start ermittelst du aus der letzten Zeile von `changelog.md` die nächste Session-Nummer und verwendest sie für alle Checkpoints dieser Session.
|
||||
|
||||
**R4 — Fragen vor Taten.** Bei Unklarheiten fragst du Thomas, bevor du Annahmen triffst. Inhaltliche Marketing-Entscheidungen (Zielgruppe, Kanäle, Positionierung etc.) werden immer mit Thomas abgestimmt.
|
||||
|
||||
@@ -41,38 +44,48 @@ Bestätige Thomas kurz, was du gelesen hast und welche Aufgabe laut "Aktueller S
|
||||
|
||||
**R6 — Dateinamen.** Teilgebiet-Dateien folgen dem Schema `NN-<kurzname>.md` (z.B. `01-positionierung.md`). Die Nummer NN entspricht dem Eintrag im Zentral-Index.
|
||||
|
||||
## Session-Ende-Routine
|
||||
**R7 — Kein direkter Git-Commit und kein direkter Changelog-Edit.** Du editierst `changelog.md` nicht direkt und führst auch keinen `git commit` aus. Beides geschieht ausschließlich über den Checkpoint-Workflow.
|
||||
|
||||
Thomas kündigt das Session-Ende explizit an ("Session beenden" o.ä.). Dann führst du folgende Schritte in dieser Reihenfolge aus:
|
||||
## Checkpoint-Workflow
|
||||
|
||||
1. **Teilgebiet-Dateien aktualisieren:** Trage die in dieser Session erarbeiteten Ergebnisse in die betroffene(n) Teilgebiet-Datei(en) ein.
|
||||
2. **`zentral-index.md` aktualisieren:** Nur nach R2 und nur nach bestätigten Entscheidungen.
|
||||
3. **`changelog.md` ergänzen:** Hänge einen neuen Eintrag an im Format:
|
||||
Ein **Checkpoint** fasst einen abgeschlossenen Arbeitsschritt zusammen und besteht aus zwei gekoppelten Aktionen: einem Eintrag in `changelog.md` und einem Git-Commit. Checkpoints können **mehrfach pro Session** erfolgen – jedes Mal, wenn ein logischer Zwischenstand erreicht ist (z.B. ein Teilgebiet-Abschnitt fertig, ein Artefakt erstellt). Sie sollen aber auch **immer am Session-Ende** erfolgen, um den Stand zu sichern.
|
||||
|
||||
**Ablauf:**
|
||||
|
||||
1. Der Agent hat inhaltliche Änderungen an `marketing.md`, `zentral-index.md`, Teilgebiet-Dateien oder Artefakten vorgenommen.
|
||||
2. Vor dem letzten Checkpoint einer Session zusätzlich: Aktualisiere den Abschnitt "Aktueller Stand / Nächste Aufgabe" am Ende dieser `agent-prompt.md`-Datei, sodass die nächste Session nahtlos starten kann.
|
||||
3. Der Agent schreibt die Datei `.checkpoint-pending.txt` im Repo-Root mit **exakt** diesem Format:
|
||||
```
|
||||
YYYY-MM-DD HH:MM | S<NN> | <kompakte Zusammenfassung der Entscheidungen und Ergebnisse>
|
||||
S<NN>
|
||||
<kompakte Zusammenfassung in einer oder mehreren Zeilen>
|
||||
```
|
||||
4. **`agent-prompt.md` aktualisieren:** Passe den Abschnitt "Aktueller Stand / Nächste Aufgabe" (ganz unten) so an, dass die nächste Session nahtlos starten kann.
|
||||
5. **Git-Commit:** Führe über Bash (Linux-Sandbox oder Git Bash) einen Commit aus:
|
||||
```bash
|
||||
cd /pfad/zum/repo
|
||||
git add -A
|
||||
git commit -m "S<NN>: <Kurzbeschreibung>"
|
||||
```
|
||||
Push erfolgt nicht automatisch – das macht Thomas bei Bedarf selbst.
|
||||
Zeile 1: Session-Nummer (z.B. `S02`).
|
||||
Zeile 2 und folgende: Zusammenfassung. Mehrere Zeilen werden von `checkpoint.ps1` zu einem Satz zusammengeführt (Leerzeichen getrennt). Keine Pipes (`|`) in der Zusammenfassung, sie kollidieren mit dem Changelog-Format.
|
||||
4. Der Agent teilt Thomas mit: "Bitte `checkpoint.cmd` ausführen."
|
||||
5. Thomas doppelklickt `checkpoint.cmd`. Das Skript:
|
||||
- liest `.checkpoint-pending.txt`
|
||||
- hängt die Zeile `YYYY-MM-DD HH:MM | S<NN> | <summary>` an `changelog.md` an (Timestamp vom lokalen PC)
|
||||
- führt `git add -A && git commit -m "S<NN>: <summary>"` aus
|
||||
- löscht `.checkpoint-pending.txt`
|
||||
6. Thomas bestätigt im Chat, dass der Checkpoint gelaufen ist. Erst danach arbeitet der Agent weiter.
|
||||
|
||||
**Fehlerfall:** Scheitert `checkpoint.cmd` (z.B. git commit fehlgeschlagen), bleibt `.checkpoint-pending.txt` liegen. Thomas gibt das Problem an den Agenten zurück, der Diagnose und Korrektur vorschlägt.
|
||||
|
||||
## Erste Aufgaben (nur beim allerersten Start relevant)
|
||||
|
||||
Falls `marketing.md` noch leere Platzhalter enthält und `zentral-index.md` noch keine Teilgebiete listet:
|
||||
|
||||
1. **`marketing.md` interaktiv befüllen.** Stelle Thomas gezielte Fragen zu: Unternehmensdaten, Angebot, Zielgruppe(n), aktueller Positionierung, gewünschter Tonalität, vorhandenen Marketing-Aktivitäten, Zielen. Arbeite Abschnitt für Abschnitt.
|
||||
2. **Teilgebiete gemeinsam definieren.** Schlage auf Basis von `marketing.md` eine Liste von Teilgebieten vor (z.B. Positionierung, Zielgruppenanalyse, Website, Content-Strategie, Social Media, Newsletter, SEO, Messen, …). Stimme Priorität und Abhängigkeiten mit Thomas ab und trage sie in `zentral-index.md` ein.
|
||||
3. **Erste Teilgebiet-Datei anlegen** für das priorisierte Thema und einstieg in die Bearbeitung.
|
||||
1. **`marketing.md` interaktiv befüllen.** Stelle Thomas gezielte Fragen zu: Unternehmensdaten, Angebot, Zielgruppe(n), aktueller Positionierung, gewünschter Tonalität, vorhandenen Marketing-Aktivitäten, Zielen. Arbeite Abschnitt für Abschnitt, nicht alles auf einmal.
|
||||
2. **Teilgebiete gemeinsam definieren.** Schlage auf Basis von `marketing.md` eine Liste von Teilgebieten vor (z.B. Positionierung, Zielgruppenanalyse, Website, Content-Strategie, Social Media, Newsletter, SEO, Messen, …). Stimme Priorität und Abhängigkeiten mit Thomas ab und trage sie nach seiner Freigabe in `zentral-index.md` ein.
|
||||
3. **Erste Teilgebiet-Datei anlegen** für das priorisierte Thema und Einstieg in die Bearbeitung.
|
||||
|
||||
Setze zwischen sinnvollen Zwischenständen Checkpoints (z.B. nach "Marketing.md Abschnitte 1-3 befüllt", nach "Teilgebiete-Liste festgelegt").
|
||||
|
||||
---
|
||||
|
||||
## Aktueller Stand / Nächste Aufgabe
|
||||
|
||||
**Letzte Session:** S01 (2026-04-13)
|
||||
**Status:** Prozessumgebung erstellt. Alle Strukturdateien angelegt, aber inhaltlich noch leer (nur Platzhalter).
|
||||
**Nächste Aufgabe:** In der nächsten Session mit dem interaktiven Befüllen von `marketing.md` beginnen. Thomas dazu gezielte Fragen stellen (Abschnitt für Abschnitt, nicht alles auf einmal). Anschließend gemeinsam die Teilgebiete definieren und in `zentral-index.md` eintragen.
|
||||
**Was wurde gemacht:** Prozessumgebung und Dateistruktur erstellt. Checkpoint-Workflow (`checkpoint.cmd` + `checkpoint.ps1`) eingerichtet. Alle Strukturdateien angelegt, aber inhaltlich noch leer (nur Platzhalter).
|
||||
**Nächste Aufgabe:** Mit dem interaktiven Befüllen von `marketing.md` beginnen. Thomas dazu gezielte Fragen stellen, Abschnitt für Abschnitt. Anschließend gemeinsam die Teilgebiete definieren und in `zentral-index.md` eintragen (nach explizitem OK).
|
||||
**Offene Punkte:** Keine.
|
||||
|
||||
@@ -11,7 +11,9 @@ Chronologisches Log aller Entscheidungen und Prozessereignisse.
|
||||
YYYY-MM-DD HH:MM | S<NN> | <kompakte Zusammenfassung>
|
||||
```
|
||||
- **Session-Nummer** wird pro Chat-Session vergeben (S01, S02, …) und aus dem letzten Eintrag abgeleitet.
|
||||
- **Anhängen erfolgt ausschließlich** über den Checkpoint-Workflow (`checkpoint.cmd` + `checkpoint.ps1`). Der KI-Agent editiert diese Datei nicht direkt. Details: siehe `agent-prompt.md`.
|
||||
|
||||
## Einträge
|
||||
|
||||
2026-04-13 20:53 | S01 | Prozessumgebung erstellt: agent-prompt.md, zentral-index.md, marketing.md, changelog.md, Ordner teilgebiete/ und artefakte/. Prozessregeln definiert (append-only Changelog, Status-/Prioritäts-/Abhängigkeitsänderungen nur mit explizitem OK). Nächster Schritt: interaktives Befüllen von marketing.md und Definition der Teilgebiete.
|
||||
2026-04-14 09:18 | S01 | Checkpoint-Tooling eingeführt: checkpoint.cmd + checkpoint.ps1; Regel R7 ergänzt; agent-prompt.md auf Checkpoint-Workflow umgestellt ✅
|
||||
|
||||
37
checkpoint.cmd
Normal file
37
checkpoint.cmd
Normal file
@@ -0,0 +1,37 @@
|
||||
@echo off
|
||||
REM ============================================================
|
||||
REM checkpoint.cmd
|
||||
REM ------------------------------------------------------------
|
||||
REM Haengt einen Eintrag an changelog.md an (mit Timestamp vom
|
||||
REM lokalen PC) und macht einen Git-Commit.
|
||||
REM
|
||||
REM Voraussetzung: Die Datei .checkpoint-pending.txt existiert
|
||||
REM im selben Ordner und enthaelt:
|
||||
REM Zeile 1: Session-Nummer (z.B. S02)
|
||||
REM Zeile 2+: Kompakte Zusammenfassung
|
||||
REM ============================================================
|
||||
|
||||
setlocal
|
||||
cd /d "%~dp0"
|
||||
|
||||
if not exist ".checkpoint-pending.txt" (
|
||||
echo.
|
||||
echo [checkpoint] Fehler: .checkpoint-pending.txt nicht gefunden.
|
||||
echo Der KI-Agent muss diese Datei zuerst anlegen.
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0checkpoint.ps1"
|
||||
set RC=%ERRORLEVEL%
|
||||
|
||||
echo.
|
||||
if %RC% neq 0 (
|
||||
echo [checkpoint] FEHLGESCHLAGEN - siehe Meldungen oben.
|
||||
) else (
|
||||
echo [checkpoint] Erfolgreich abgeschlossen.
|
||||
)
|
||||
echo.
|
||||
pause
|
||||
exit /b %RC%
|
||||
92
checkpoint.ps1
Normal file
92
checkpoint.ps1
Normal file
@@ -0,0 +1,92 @@
|
||||
# ============================================================
|
||||
# checkpoint.ps1
|
||||
# ------------------------------------------------------------
|
||||
# Wird von checkpoint.cmd aufgerufen. Liest
|
||||
# .checkpoint-pending.txt, haengt einen Eintrag an changelog.md
|
||||
# an (mit aktuellem Timestamp vom lokalen PC), fuehrt einen
|
||||
# Git-Commit aus und loescht die Pending-Datei.
|
||||
# ============================================================
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
# Repo-Root = Ordner, in dem dieses Skript liegt
|
||||
$repoRoot = $PSScriptRoot
|
||||
Set-Location $repoRoot
|
||||
|
||||
$pendingFile = Join-Path $repoRoot '.checkpoint-pending.txt'
|
||||
$changelogFile = Join-Path $repoRoot 'changelog.md'
|
||||
|
||||
# --- Pending-Datei lesen -----------------------------------
|
||||
if (-not (Test-Path $pendingFile)) {
|
||||
Write-Error ".checkpoint-pending.txt nicht gefunden."
|
||||
exit 1
|
||||
}
|
||||
|
||||
$lines = Get-Content $pendingFile -Encoding UTF8
|
||||
if ($lines.Count -lt 2) {
|
||||
Write-Error ".checkpoint-pending.txt muss mindestens 2 Zeilen enthalten (Session, Zusammenfassung)."
|
||||
exit 1
|
||||
}
|
||||
|
||||
$session = $lines[0].Trim()
|
||||
$summary = ($lines | Select-Object -Skip 1 | Where-Object { $_.Trim() -ne '' }) -join ' '
|
||||
$summary = $summary.Trim()
|
||||
|
||||
if ([string]::IsNullOrWhiteSpace($session)) {
|
||||
Write-Error "Session-Nummer (Zeile 1) ist leer."
|
||||
exit 1
|
||||
}
|
||||
if ($session -notmatch '^S\d{2,}$') {
|
||||
Write-Error "Session-Nummer '$session' hat nicht das Format S<NN> (z.B. S01, S12)."
|
||||
exit 1
|
||||
}
|
||||
if ([string]::IsNullOrWhiteSpace($summary)) {
|
||||
Write-Error "Zusammenfassung (Zeile 2+) ist leer."
|
||||
exit 1
|
||||
}
|
||||
|
||||
# --- Timestamp und Eintrag bauen ---------------------------
|
||||
$timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm'
|
||||
$entry = "$timestamp | $session | $summary"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "[checkpoint] Neuer Eintrag:" -ForegroundColor Cyan
|
||||
Write-Host " $entry"
|
||||
Write-Host ""
|
||||
|
||||
# --- Eintrag an changelog.md anhaengen ---------------------
|
||||
# Immer erst sicherstellen, dass die Datei mit einem Zeilenumbruch endet.
|
||||
$utf8NoBom = New-Object System.Text.UTF8Encoding $false
|
||||
|
||||
if (Test-Path $changelogFile) {
|
||||
$existing = [System.IO.File]::ReadAllText($changelogFile, $utf8NoBom)
|
||||
if ($existing.Length -gt 0 -and -not ($existing.EndsWith("`n"))) {
|
||||
[System.IO.File]::AppendAllText($changelogFile, "`r`n", $utf8NoBom)
|
||||
}
|
||||
} else {
|
||||
Write-Error "changelog.md nicht gefunden."
|
||||
exit 1
|
||||
}
|
||||
|
||||
[System.IO.File]::AppendAllText($changelogFile, $entry + "`r`n", $utf8NoBom)
|
||||
Write-Host "[checkpoint] An changelog.md angehaengt." -ForegroundColor Green
|
||||
|
||||
# --- Git add + commit --------------------------------------
|
||||
& git add -A
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Error "git add fehlgeschlagen (Exit Code $LASTEXITCODE)."
|
||||
exit $LASTEXITCODE
|
||||
}
|
||||
|
||||
$commitMsg = "${session}: $summary"
|
||||
& git commit -m $commitMsg
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Error "git commit fehlgeschlagen (Exit Code $LASTEXITCODE)."
|
||||
exit $LASTEXITCODE
|
||||
}
|
||||
|
||||
Write-Host "[checkpoint] Commit erstellt: $commitMsg" -ForegroundColor Green
|
||||
|
||||
# --- Pending-Datei loeschen --------------------------------
|
||||
Remove-Item $pendingFile -Force
|
||||
Write-Host "[checkpoint] .checkpoint-pending.txt entfernt." -ForegroundColor Green
|
||||
Reference in New Issue
Block a user