ENVIRONMENT.md: festhalten, womit dieser Checkout arbeitet (Harness, Skills, MCP-Server, Connectoren, Remotes) #24
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ausgangslage
USER.mdbeantwortet, wer die Instanz bedient,SOUL.md, wie sie klingt. Womit siearbeitet, beantwortet niemand: welches Harness läuft, welche Skills publiziert sind, welche
MCP-Server erreichbar sind, welche Connectoren dranhängen, wohin
publishveröffentlicht, woCI läuft.
Das sind über Wochen konstante Werte — und trotzdem erfragt oder errät sie jede Session neu,
weil nichts sie festhält.
Vorschlag
Ein drittes Root-Dokument der Session-Ebene,
ENVIRONMENT.md, mitENVIRONMENT.md.templateals Abschnittsvorgabe. Von
CLAUDE.mdimportiert (Claude Code), vonAGENTS.mdüber dieNamenstabelle und einen eigenen Abschnitt erreicht (übrige Harnesses).
Drei Abgrenzungen gegen die bestehende Personalization Plane:
doctormeldetenvironment: absent (optional), niemalsFAIL— einFAILwürde sie durch die Hintertürverpflichtend machen. Genau ein Fall wird gemeldet, als
WARN: ein umbenanntes, nieausgefülltes Template.
Clone Antworten, die falsch sind statt zu fehlen.
Remote autorisiert kein
git push(Invariante 5), ein gelisteter MCP-Server öffnet keinGate, nichts darin ist eine Quelle nach Invariante 3. Keine Geheimnisse.
Akzeptanzkriterien
ENVIRONMENT.md.templateliegt im Root und wird vondist exportausgeliefert; dieausgefüllte Fassung nie.
.gitignoreignoriertENVIRONMENT.md, aber nichtENVIRONMENT.md.template;docs verifyprüft beide Hälften.doctorhat einenenvironment-Check: absent →OK, ausgefüllt →OK, Sentinel →WARN. NieFAIL.CLAUDE.mdimportiert die Datei;AGENTS.mdträgt Namenstabellen-Zeile und Abschnitt.bootstrap.mdundsetup-instance.mdbieten das Anlegen an, als optionalen Schritt.doctor-Ausgänge, dendist export-Split und die Ignore-Kanarien.Umgesetzt in
a243a4a, Stack 1.8.0.Alle Akzeptanzkriterien erfüllt:
ENVIRONMENT.md.templateim Root, vondist exportausgeliefert (ROOT_FILES); dieausgefüllte Fassung nie — sie ist zusätzlich gitignored, also doppelt ausgeschlossen.
.gitignoreignoriert/ENVIRONMENT.md, nicht das.template. Beide Hälften prüftdocs verify:ENVIRONMENT.mdinREQUIRED_IGNORE_CANARIES,ENVIRONMENT.md.templateinREQUIRED_TRACKED_PATHS. Das nachlässigeENVIRONMENT.md*würde beide schlucken — genaudas fängt der Kanarienvogel ab.
doctor.check_environment(): absent →OK, ausgefüllt →OK, Sentinel →WARN. NieFAIL.CLAUDE.mdimportiert@ENVIRONMENT.md;AGENTS.mdhat Namenstabellen-Zeile und eineneigenen Abschnitt „Environment" (nötig, weil die übrigen Harnesses
CLAUDE.mdnicht lesen).bootstrap.mdSchritt 5,setup-instance.mdSchritt 9 — beide optional, beide mit derRegel „eintragen was ablesbar ist, einmal fragen,
weiß ich nichtakzeptieren, leerenAbschnitt löschen statt raten".
doctor-Ausgänge, derdist export-Split, die Ignore-Kanarien.Entscheidung, die im Issue noch offen war: Import statt Link in
CLAUDE.md. Was hier steht,wird nebenbei gebraucht — beim Griff zum richtigen MCP-Server, mitten in einer Aufgabe. Eine
Session, die erst nachschlagen müsste, fragt stattdessen wieder den Nutzer, und genau das sind
die Kosten, die die Datei beseitigt. Dass ein unaufgelöster Import folgenlos bleibt, war schon
vorher so (
USER.md/SOUL.mdvor dem Setup); hier wird es zum Dauerzustand statt zum Übergang.Nicht gebaut, bewusst: kein
wikitool environment-Kommando zum Anlegen oder Abfragen. DieDatei wird von Menschen und Agenten gelesen und selten geschrieben; ein Kommando dafür wäre
Maschinerie ohne Abnehmer. Das Template und zwei Instruktionsschritte reichen.
Verifiziert: 730 Tests grün,
docs verify,instructions verify,lint --fail-on-error,und der CI-Smoke-Test (Export → frische Instanz →
doctor/verify/lint/migrate status)läuft durch;
doctormeldet dortenvironment: absent (optional).