9.1 KiB
Agent-Instructions: How to execute this Improvement-Plan
Historical execution notes: this file was written for a specific long-running improvement-plan workflow. Do not execute it blindly from the repository root. Current instructions in
AGENTS.md,docs/agent-entrypoints.md, and active operator messages take precedence. In particular, push/deploy/nonstop/subagent rules below are historical unless a current operator explicitly reactivates this plan.
Archivhinweis: Lies das hier nur, wenn du gezielt an einem reaktivierten Task aus docs/improvement-plan/ arbeitest. Prüfe vorher die aktuellen Repo-Entry-Points.
Mission
Diese Boilerplate von 8/10 auf 10/10 bringen. Du arbeitest die Tasks aus docs/improvement-plan/ ab, in der Reihenfolge die 00-execution-order.md vorgibt. Du hörst nicht auf bis alle aktiven (non-backlog) Tasks completed sind.
Harte Regeln
Regel 1 — Subagents für historische Planarbeit
Für die ursprüngliche Planarbeit waren Subagents vorgesehen, damit große Phasen parallel analysiert werden können. In aktuellen Sessions gelten die jeweils aktiven Tool-/Agent-Anweisungen.
- Pro Implementation-Block einen
general-purpose-Subagent (z.B. „Implement Shared-Store-Package nach Spec X") - Pro Test-Block einen Subagent (Tests schreiben, ausführen, Coverage prüfen)
- Pro Verification-Block einen Subagent (prüft ob Acceptance-Criteria erfüllt sind)
- Für Code-Review nach jedem Phase-Abschluss:
gsd-code-reviewer-Subagent - Für Recherche (Library-Wahl, Best-Practice)
Exploreodergeneral-purpose
Nicht: bei reaktivierten Großphasen alles selber im Hauptkontext machen.
Regel 2 — Atomic Commits
Pro logischer Einheit ein Commit. Definition „logisch":
- Eine neue Datei + zugehörige Tests = ein Commit
- Eine Refactoring-Operation auf N Dateien = ein Commit
- Ein Migration-Step (DB-Schema-Change + Code-Anpassung + Tests) = ein Commit
Niemals: „WIP — alles auf einmal" oder Commits mit mehr als 15 Files (außer es ist ein Rename).
Commit-Message-Format:
<phase>/<task-id>: <short description>
<longer body if needed>
Refs: docs/improvement-plan/<phase>/<task-file>.md
Beispiel:
03-scaling/shared-store: add redis adapter with TTL support
Implements RedisAdapter alongside MemoryAdapter behind the
SharedStore interface. Auto-selection via REDIS_URL env.
Refs: docs/improvement-plan/03-scaling-infrastructure/shared-store.md
Regel 3 — Tests sind PFLICHT
Jeder Task hat eine ## Test Requirements Section in seiner Detail-MD. Du MUSST:
- Tests SCHREIBEN bevor du den Task als done markierst. Test-First wo möglich.
- Test-Files folgen Convention:
<source>.test.tsneben Source-File. - Vitest für Unit/Integration, Playwright für E2E.
- Coverage muss nach Phase 10 (Test-Coverage-Task) die Per-Module-Gates erfüllen — bis dahin: jeder neue Code hat Tests.
- Tests müssen passen, bevor du committed:
pnpm test:packages+ relevanter Filter. - Bei Refactoring von altem Code: bestehende Tests müssen grün bleiben + neue für veränderte Behavior.
Regel 4 — Historische Fortschrittslogik
Wenn ein reaktivierter Improvement-Plan-Task fertig ist:
- Markiere ihn
completedin der Detail-MD UND in PROGRESS.md - Schau in
00-execution-order.mdwas als nächstes dran ist - Öffne dessen Detail-MD und fang an
Wenn du einen Blocker hast (z.B. „Lib X funktioniert nicht wie erwartet"):
- Dokumentiere den Blocker im Detail-MD-Progress-Log
- Markiere Status
blocked: <reason>in PROGRESS.md - Wähle den nächsten Task der nicht von diesem Blocker abhängt
- Suche einen nächsten unabhängigen Task, wenn der aktuelle Operator-Auftrag das vorsieht.
Wenn wirklich alles blockiert ist: schreib eine BLOCKERS.md im improvement-plan-Verzeichnis mit der vollständigen Situation, dann beende die Session.
Regel 5 — Abhaken + dokumentieren
Nach jedem atomic commit:
- Detail-MD updaten — im
## Progress Log-Section eine Zeile dazu:- 2026-MM-DD HH:MM — <commit-sha-short> — <kurzbeschreibung> - PROGRESS.md updaten — Status-Spalte aktualisieren (pending → in_progress → completed)
- Wenn ein neuer Insight aufkommt (z.B. „dieser Ansatz funktioniert nicht, ich nehme Y stattdessen") — kurz in der Detail-MD im
## Deviations from Plan-Section festhalten
Regel 6 — Staging-Server für Tests
Du hast Zugang zu einem Hetzner-Staging-Server mit Coolify-Deployment des Boilerplates.
Was du dort darfst:
- Branches deployen und testen (Coolify-Auto-Deploy via Git-Push auf bestimmte Branches)
- Externe Services (Redis, Sentry, Authentik, etc.) testweise hochziehen
- DB-Migrations laufen lassen
- Performance-/Last-Tests durchführen
- AV-Scanner, Plugin-Sandbox usw. real testen
Was du NICHT darfst:
- Die Production-CI/CD-Pipeline brechen — alle Experimente in eigenem Branch
- Production-Branch deployen ohne menschliches Review
Wie du drauf kommst:
- SSH-Zugang ist in
docs/improvement-plan/archive/STAGING-ACCESS.mddokumentiert (vom Operator manuell einzurichten) - Coolify-Web-UI für Container-Management
- Deployment-Branch z.B.
agent/experimentsoder pro-Task-Branch
Regel 7 — Dependencies prüfen vor Start
Bevor du einen Task anfängst:
- Lies
00-execution-order.mdund schau ob alleDepends on-Taskscompletedsind - Wenn nicht → wähle einen anderen Task
- Falls du dir unsicher bist über Reihenfolge: spawne
Explore-Subagent der den Codebase-Stand prüft
Regel 8 — Kein Schema/API-Bruch ohne Migration-Plan
Bei DB-Schema-Änderungen:
- Prisma-Migration generieren + im gleichen Commit
- Wenn Daten-Backfill nötig: Migration-Script in
prisma/migrations/<timestamp>_<name>/data.ts - Rollback-Plan in der Detail-MD
## Rollback Strategy-Section dokumentieren
Bei API-Breaking-Changes:
- Versionierung (oder Deprecate + Sunset-Plan) statt direkter Bruch
- TS-SDK-Regenerierung wenn Task #63 schon durch ist
Regel 9 — Code-Style + Quality-Gates respektieren
pnpm lintmuss grün sein vor Commit (max-warnings=0)pnpm typecheckmuss grün seinpnpm testSubset muss grün sein- Bei Hook-Failure: nicht
--no-verifybenutzen, sondern den Failure-Grund beheben
Regel 10 — Security-Track läuft parallel
Es gibt einen separaten Security-Track (siehe /tmp/security-audit-2026-05-16/) der parallel von einem anderen Agent abgearbeitet wird. Achte auf Konflikt-Potenzial:
- Wenn du eine Datei bearbeitest, die im Security-Track ebenfalls touched wird: git pull häufig, kleine Branches.
- Wenn du Security-Issues entdeckst während du arbeitest: dokumentiere im
## Security Notes-Section deiner Detail-MD und ggf. ein Hinweis inBLOCKERS.md.
Workflow pro Task
1. Open detail-md → lies vollständig
2. Check Dependencies in execution-order.md
3. Plan → Spawn `Plan`-Subagent mit detail-md als Input für Implementation-Strategy
4. Implement → Spawn `general-purpose`-Subagent mit klarem Brief
5. Test → Spawn `general-purpose`-Subagent für Test-Suite
6. Verify → Spawn `Explore`-Subagent oder `gsd-verifier` für Acceptance-Criteria-Check
7. Commit atomically (mehrere Commits wenn nötig)
8. Update detail-md (Progress Log) + PROGRESS.md (Status)
9. Historical only: push to remote if the current operator and network context explicitly allow it
10. Move to next task
Verbotene Aktionen
- ❌
git commit --no-verifyohne ausdrückliche Erlaubnis - ❌ Pushes ohne aktuellen Operator-Auftrag
- ❌
git push --forceauf main/master - ❌ Production-DB-Migrationen ohne Backup-Verify
- ❌ Secrets/
.envcommitten - ❌ Tasks „skippen" weil zu schwer — dokumentier den Blocker, beweg dich weiter zu unblocked Tasks
- ❌ Eigene Tasks erfinden die nicht im Plan stehen — wenn was fehlt, dokumentier in
PROPOSED-TASKS.mdund mach erst was geplant ist - ❌ Detail-MDs löschen / „aufräumen" — die sind die einzige Quelle der Wahrheit
- ❌ Mehrere Tasks gleichzeitig anfangen ohne sie zu finishen — Eine Aufgabe nach der anderen
Wenn etwas unklar ist
Nicht „best-guess" und commits machen. Stattdessen:
ASK-OPERATOR.mdim improvement-plan-Verzeichnis anlegen oder erweitern- Frage präzise formulieren mit Kontext + Optionen
- Task auf
blocked: waiting-for-operator-inputsetzen - Nächsten unblocked Task wählen und weitermachen
Definition of Done pro Task
Ein Task ist completed wenn:
- Acceptance-Criteria aus Detail-MD alle erfüllt
- Tests geschrieben + laufen grün
pnpm lint+pnpm typecheckgrün- Atomic Commits lokal erstellt; Push nur mit aktueller Freigabe
- Detail-MD Progress-Log aktualisiert
- PROGRESS.md Status auf
completed - Falls externe Infrastruktur involviert (z.B. Sentry/Authentik): auf Staging verifiziert
- Doku-Files (
docs/<feature>.md) wenn im Detail-MD gefordert
Definition of Done für die ganze Phase
Eine Phase ist completed wenn:
- Alle Tasks der Phase
completed - Phase-README hat
## Phase Summarymit Lessons-Learned-Section - Integration-Test über die Phasen-Features (gesamte Phase als ein Flow getestet)
gsd-code-reviewerSubagent hat die Phasen-Commits reviewed