agents.md — Konventionen für KI-Agenten und Coding-Agenten
Dieses Dokument beschreibt, wie ein KI-Agent (Claude, Codex, Cursor, Continue, etc.) in diesem Repo
arbeitet. Es ist verbindlich für jede Session und sollte beim Start jeder neuen Konversation mitgelesen
werden — typischerweise zusammen mit HANDOFF.md. Es ist unsere „Way of Working" und wird laufend
aktuell gehalten: ändert sich, wie wir zusammenarbeiten, landet es hier (kein paralleles Prozess-Doc —
Decision-Sprawl vermeiden).
1. Repo-Philosophie: „Everything as Code"
Alle Artefakte des Projekts leben im Repo: Spezifikation, Entscheidungen, Architektur, Code, Diagramme, Konventionen. Nichts Überlebenswertes verbleibt im flüchtigen Konversations-Verlauf oder im Session-Memory einer einzelnen Agenten-Instanz.
Konsequenzen:
- GitHub
drkv-com/medidentasist die einzige Quelle der Wahrheit. - Eine neue Session startet nicht „bei null" — sie liest
HANDOFF.md,docs/fachlich/Lastenheft.mdund dieses Dokument und ist sofort im Kontext. - Wenn etwas entschieden wird, landet es als Commit im Repo, bevor die Konversation endet.
2. Doku-Format: Markdown + Mermaid (kein .docx, kein .pdf)
Regel: Alle versionierten Dokumente sind .md mit Inline-Mermaid für Diagramme. Keine binären
Formate (.docx, .pdf, .pptx, .xlsx) als Master-Quelle. Falls ein externer Stakeholder PDF/Word
braucht, kann es bei Bedarf aus dem .md exportiert werden (pandoc, Mermaid-CLI für SVG).
Begründung: Git-diffbar, reviewable, mergeable; Diagramme als Code (Mermaid) sind genauso versioniert
wie der Prosa-Text; Coding-Agenten können .md direkt lesen, ändern und Diffs erzeugen; keine
Tooling-Abhängigkeit.
Mermaid-Typen, die wir im Repo verwenden:
| Typ | Wofür |
|---|---|
flowchart | Use-Cases, Architektur, Prozess-Logik |
erDiagram | Datenmodell, Entitäts-Beziehungen |
stateDiagram-v2 | Lifecycle (Mandant, Dokument, Unterschrift) |
sequenceDiagram | Interaktionen (NextCloud-Upload, Signatur-Webhook) |
gantt | zeitliche Abläufe (Wiedervorlagen, Fristen) |
3. Identifikator-System
Jede Entscheidung, jedes Feld, jede Empfehlung, jeder offene Punkt hat eine kurze stabile ID. Diese IDs sind über das gesamte Repo durchsuchbar und werden in Commits, PRs, Issues, Chats referenziert.
| Präfix | Bedeutung | Quelle |
|---|---|---|
G-n | Globales Prinzip | CLAUDE.md / Lastenheft §3 |
Rx | Modul (R1 Mandant, R2 Onboarding, …) | Lastenheft §4–5 |
Rx-F## | Feld einer Entität | Lastenheft Tabellen |
A-n | Architektur-Entscheidung | Lastenheft §9 / docs/architektur/ |
S-n | Vereinfachung | Lastenheft §10 |
UC-x | Kern-Use-Case | Lastenheft §2 |
OP-<Thema>-n | Offener Punkt (z. B. OP-SIGN-1, OP-STACK-1) | Lastenheft §11 / HANDOFF.md §4 |
FR-n | Future-Release-Note | Lastenheft §12 |
<TOOL>-n | Anforderung eines Spezial-Tools (tool-scoped, z. B. DEX-n für Dexman) | docs/spezialtools/<Tool>.md |
Regel für Commits: Wenn ein Commit eine entscheidungs-relevante Änderung vornimmt, ID(s) in der Commit-Message nennen, z. B.:
Resolve OP-SIGN-1: E-Signatur-Provider = DocuSign (eIDAS-QES für Verträge)
4. Verbindliche Dokumente (lesen in dieser Reihenfolge)
HANDOFF.md— Wie ist der aktuelle Stand? Status, geparkte Fragen, nächste Schritte. Zuerst.docs/fachlich/Lastenheft.md— Was bauen wir? Vollständige fachliche Spezifikation. Master.docs/konventionen/agents.md— dieses Dokument.CLAUDE.md/README.md— gebündelte Leitplanke bzw. Setup/Orientierung.
Außerdem gepflegt: docs/betrieb/Timesheet.md — Arbeitszeit-Timesheet; am Session-Ende
aktualisieren. Protokoll → §5.1 „Arbeitszeit erfassen".
5. Verhaltensregeln für Agenten
5.1 Was tun
- IDs respektieren: Beim Verweis auf existierende Entscheidungen ID nennen.
- Lastenheft und HANDOFF gemeinsam pflegen: Eine neue Entscheidung landet im Lastenheft (Kern-Spec) und in HANDOFF.md (kompakt für die nächste Session).
- Markdown + Mermaid: Neue Dokumente in
.md. Diagramme als Mermaid inline. - Single Source of Truth: Wenn ein Wert abgeleitet werden kann, wird er abgeleitet — nirgends doppelt gespeichert (z. B. „Onboarding vollständig?" aus den Pflicht-Items).
- Standardwerkzeuge bevorzugen (G-1): Wo ein bewährtes Standard-Tool die Aufgabe löst, anbinden statt nachbauen (Dokumente → NextCloud, Unterschriften → DocuSign/PandaDoc, Kundenstamm → CRM). Eigenbau begründen (warum kein Standard).
- Selbsterklärbarkeit (G-3): durchgängig sprechende, eindeutige Bezeichnungen (Beratungs-/ Back-office-Sprache statt technischer Labels; z. B. „Unterschrift ausstehend" statt „pending"). UI und Doku.
- Rechtssichere, lückenlose Doku (G-4): Beratungsdoku, Unterschriften, Belege append-only + auditierbar.
- Datenschutz by design (G-5): PII minimal, EU-/CH-Residenz, keine PII/Secrets im Klartext.
- Jedes Feature wird dokumentiert (goldene Regel): Kein Feature ist „fertig", bevor die zuständige Produkt-/Architektur-Doku es beschreibt. HANDOFF ist das Arbeitslog, kein Ersatz für die Fach-Docs.
- Doku-Konsistenz-Check (verbindlich, OP-DOCS-1): Die Doku muss in sich konsistent sein und
(sobald Code existiert) zur Implementierung passen. Cadence: zu Session-Beginn sichten und
vor jedem PR/Merge gegenprüfen. Zwei Achsen:
- Doku↔Doku: IDs (
G-/R-/A-/S-/OP-…) existieren & sind eindeutig, Glossar-Begriffe einheitlich, Modul-/Phasen-Liste und Status (✅/🟡/⛔) stimmen überHANDOFF.md·Lastenheft.md·CHANGELOG.mdüberein, Querverweise lösen auf, keine widersprüchlichen Aussagen. - Doku↔Implementierung: genannte Feldnamen/Enums/DTOs/Routen existieren im Code (und umgekehrt); beschriebene Features sind gebaut — und Gebautes ist beschrieben.
- Mechanik: der maschinell prüfbare Teil läuft als
bash scripts/check-doc-consistency.sh(tote Links/Bilder + Log-Hygiene) — warnt, blockt nicht. Der semantische Teil ist Agenten-Pflicht. Bei Unklarheit/Widerspruch: nachfragen (nicht raten).
- Doku↔Doku: IDs (
- Audit-Trail: Entscheidungen + Diskussionsergebnisse festhalten: Jede Design-/Architektur-/Prozess-
Entscheidung und jedes Diskussionsergebnis (auch verworfene Optionen mit Begründung) landet in der
Doku — fachlich/OP in
HANDOFF.md§4 + Lastenheft, Architektur indocs/architektur/, Guiding Principles inCLAUDE.md. - CHANGELOG.md pflegen (je PR): ein Eintrag pro PR — Datum · PR-Nummer mit Link · kurze Beschreibung inkl. getroffener Entscheidungen, neueste zuerst.
- Versionierung (je PR):
APP_VERSION(SemVer) bewusst setzen, sobald die Single-Source-Stelle existiert (OP-STACK-1) — Build-Nummer kommt dann automatisch. Solange nur Doku: keine Versions-Datei nötig. - Log-Hygiene (regelmäßig): die
merge=union-Logs (CHANGELOG/HANDOFF/Timesheet) zu Session-Beginn- nach Merges glätten (Duplikate raus, IDs eindeutig, chronologisch) —
check-doc-consistency.shflaggt Kandidaten. Detail: §6.
- nach Merges glätten (Duplikate raus, IDs eindeutig, chronologisch) —
- Annahmen sichtbar machen + Optionen zuerst: Berührt eine Aufgabe versteckte Annahmen oder Produkt-/ Datenmodell-Entscheidungen, nicht drauflosbauen — Annahme explizit auflisten + begründen, Optionen mit Empfehlung vorlegen, entscheiden lassen, dann bauen + Entscheidung dokumentieren.
- Verifizieren statt behaupten: Previewbare Änderungen live verifizieren (z. B.
docs-site-Build) statt den User prüfen zu lassen. - Arbeitszeit erfassen:
docs/betrieb/Timesheet.mdpflegen — Start/Stop je Session, Gap-Regel (> 1 h seit letzter Interaktion → User nach Stop fragen, neue Session). Am Session-Ende aktualisieren. - Proaktives Compliance-Flagging: kritische/regulatorisch relevante Themen für DE/AT/CH (DSGVO/revDSG, eIDAS/ZertES, Aufbewahrungsfristen …) aktiv flaggen + Optionen zeigen; im Risikoregister eintragen.
5.2 Was NICHT tun
- ❌ Keine binären Dokumente als Master-Quelle.
- ❌ Keine ungefragten Refactorings am Lastenheft oder Code. Erst klären, dann tun.
- ❌ Kein Pushen ohne Confirm in
main, wenn der Wert der Änderung unklar ist. Lieber Branch + PR. - ❌ Keine duplizierten Decision-Docs außerhalb von Lastenheft + HANDOFF (Decision-Sprawl vermeiden).
- ❌ Kein Eigenbau, wo ein Standard-Werkzeug passt (G-1) — ohne begründete Ausnahme.
- ❌ Keine PII / Passwörter / Secrets in Klartext committen.
5.3 Bei Unsicherheit
- Lieber eine kurze Frage stellen als annehmen.
- Wenn nicht entscheidbar: Punkt als
OP-<Thema>-nin Lastenheft §11 und HANDOFF §4 parken und weitermachen.
6. Workflow für Änderungen
6.1 Eine Entscheidung treffen
- ID vergeben (oder bestehende referenzieren).
- Lastenheft (passender Abschnitt) updaten.
- HANDOFF.md §3/§4 updaten (Entscheidung notieren oder offenen Punkt schließen).
- Commit-Message:
Resolve <ID>: <kurz>.
6.2 Eine offene Frage aufnehmen
- Eintrag in Lastenheft §11 mit neuer ID
OP-<Thema>-n. - Eintrag in HANDOFF.md §4 (Kurzform).
- Commit-Message:
Park <ID>: <kurz>.
6.3 Doku-Konsistenz prüfen (Session-Start + vor jedem PR)
- Session-Start:
HANDOFF.md→Lastenheft.md→agents.mdlesen; relevante Docs sichten. - Vor dem PR: beide Achsen prüfen (§5.1);
bash scripts/check-doc-consistency.shlaufen lassen;docs-sitebaut durch. - Drift gefunden? Doku (oder Code) angleichen, bei Unklarheit nachfragen; im PR/CHANGELOG vermerken.
6.4 Merge-Strategie & Log-Hygiene (OP-PM-1)
merge=unionfürCHANGELOG.md,HANDOFF.md,docs/betrieb/Timesheet.md(.gitattributes): Git konkateniert beide Seiten statt zu blocken.- Session-ID sprechend & branch-abgeleitet (
<Datum>-<branch-slug>) → git-weit eindeutig, kollisionsfrei. - „Update branch" lokal, nicht server-seitig: GitHubs server-seitiger Merge wendet den
merge=union- Treiber NICHT an → log-berührende PRs lokal aktualisieren (git fetch origin main→git merge origin/main→ push). - Pflicht — Logs regelmäßig glätten: zu Session-Beginn + nach Merges: exakte Duplikate entfernen,
Session-/OP-/PR-Nummern eindeutig + chronologisch, keine Konflikt-Marker-Reste.
bash scripts/check-doc-consistency.shflaggt Kandidaten (warnt, blockt nicht).
6.5 Nicht-automatisierbare Checks (Agenten-Pflicht)
Einige Setup-Kontrollen lassen sich nicht per CI-Skript/MCP prüfen — dann per gh api (falls Token-Scope)
oder den Nutzer fragen/hinweisen. Abweichungen melden, nie still übergehen.
- Merge-Methoden = nur Squash aktiv. —
gh api repos/<o>/<r> --jq '.allow_squash_merge,.allow_merge_commit,.allow_rebase_merge' allow_auto_merge= true (OP-PM-1). —gh api repos/<o>/<r> --jq '.allow_auto_merge'delete_branch_on_merge= true. —gh api repos/<o>/<r> --jq '.delete_branch_on_merge'- Branch-Protection auf
main(erforderlicher CheckCI Gate). —gh api repos/<o>/<r>/branches/main/protection - Semantische Doku-Konsistenz (§5.1) — ohnehin Agenten-Pflicht.
7. Branch- und Push-Konventionen
- Default-Branch:
main. - GitHub-Operationen über die GitHub-API/MCP, nicht über lokales
git/ghfür Remote-Writes (verbindlich, v. a. in der Remote-/Cloud-Session): PR anlegen/mergen, Review-/Issue-Kommentare, Commits/Pushes auf Remote-Branches über die GitHub-MCP-Tools; CI-Status & Mergeability überpull_request_readprüfen, nicht erraten. Lokalesgitbleibt für lokale Arbeit ok (Branch, Merge/Rebase, Reads). - Neuer Code (KI) → immer zuerst einen neuen Branch anlegen und nur dort arbeiten. Merge nach
mainnur via PR (mit grüner CI). Niemals Code direkt aufmain. - Doku-Fast-Track: Auch reine Doku-Änderungen laufen über Branch + PR (nie Direkt-Push auf
main) — der Audit-/PR-Nummern-Trail bleibt lückenlos. Reine-Doku-PRs dürfen per Auto-Merge (Squash) durch; der aggregierteCI Gatebleibt der einzige Required-Check. - „go"-Gate: Commit, Push und Merge erfolgen nur auf explizites „go" des Users. Branch anlegen + Dateien im Arbeitsbaum vorbereiten ist ok; das Schreiben in die Historie / nach außen wartet auf „go".
- Branch laufend auf
mainaktuell halten: zu Beginn, in Abständen, vor PR & vor Merge (git fetch origin main→ rebase/merge). - Branch nach Merge schließen: Sobald ein PR gemergt ist, wird der Feature-Branch gelöscht (remote + lokal); bevorzugt GitHub „Automatically delete head branches".
- Doku-Pflicht je PR & Merge: Jeder PR pflegt
HANDOFF.mdunddocs/betrieb/Timesheet.mdmit (und die fachlich betroffenen Docs).
8. Was nicht in dieses Repo gehört
- Personendaten realer Kunden / Mitarbeiter (auch nicht in Beispielen — Beispiele sind synthetisch).
- Secrets, API-Keys, Tokens (für CI: GitHub Encrypted Secrets nutzen).
- Generierte Build-Artefakte (
build/,.docusaurus/,node_modules/— siehe.gitignore). - Binär-Exporte als „Master" (
.docx,.pdf).
Letztes Update: 27.06.2026 (Repo-Init: Way-of-Working für Medidentas etabliert — übernimmt die bewährten Taktano-Konventionen [ID-System · md+mermaid · union-Merge-Logs · Branch-first · GitHub-MCP für Remote-Writes] und ergänzt G-1 Standardwerkzeuge-bevorzugen als domänenspezifisches Leitprinzip).