vereinsheim
CLAUDE.md1 starsChanged 10 days agoApache-2.0View on GitHub
Diese Datei richtet sich an einen KI-Coding-Agenten (z.B. Claude Code), der an diesem Repo arbeitet. Sie ist die kürzeste Möglichkeit, einen produktiven Stand zu erreichen. Monorepo (pnpm + Turborepo, Catalog für geteilte Versionen) mit zwei Next.js-Apps und ihrem Produktions-Deployment auf einem einzelnen VPS. Treffsicher, das frühere Trainingstagebuch, läuft nicht mehr und hat keinen Code mehr im Repo (ADR-033, Stufen 4 und 5): Unter seinem Host zeigt Caddy eine Hinweisseite auf Spiegel, seine Datenbank und Anhänge bleiben bis zum 1. Februar…
- Reads credentials
- Deletes or force-pushes
In this repository15 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- checkSkill
- commit-msgSkill
- consolidate-lessonsSkill
- coordinateSkill
- db-resetSkill
- debugSkill
- implementSkill
- ingestSkill
- migrateSkill
- planSkill
- reviewSkill
- sync-graphSkill
- testSkill
- validateSkill
The file
Files
vereinsheim — Agent Handoff
Diese Datei richtet sich an einen KI-Coding-Agenten (z.B. Claude Code), der an diesem Repo arbeitet. Sie ist die kürzeste Möglichkeit, einen produktiven Stand zu erreichen.
Was dieses Repo ist
Monorepo (pnpm + Turborepo, Catalog für geteilte Versionen) mit zwei Next.js-Apps und ihrem Produktions-Deployment
auf einem einzelnen VPS. Treffsicher, das frühere Trainingstagebuch, läuft nicht mehr und hat keinen Code mehr im Repo
(ADR-033, Stufen 4 und 5): Unter seinem Host zeigt Caddy eine Hinweisseite auf Spiegel, seine Datenbank und Anhänge
bleiben bis zum 1. Februar 2027. Den letzten Stand des Codes hält der Tag treffsicher-final.
apps/ringwerk— Liga und Wettkämpfe (:3000)apps/spiegel— Schussrohdaten aus der Meyton-Anlage (:3002), gefüttert von der Brückeapps/spiegel-bridge(Go, läuft im Schützenhaus)
Geteilter Code liegt in packages/*. Produktion: lokal gebaute Images (turbo prune, Root-Dockerfile) → Docker Hub
→ der VPS pullt; compose.yml mit Caddy, einem Postgres (eine DB und ein Owner je App) und je App einem Migrator vor
dem App-Container (Ringwerk und Spiegel). Bedient wird alles über das Ops-CLI scripts/vereinsheim.
Dev auf dem Host: ./scripts/vereinsheim dev-setup (einmalig, idempotent), dann pnpm dev. Dev-Postgres aus
docker-compose.dev.yml. Go ≥ 1.24 ist Pflicht, das Gate prüft auch die Brücke.
Lese-Reihenfolge bei Sessionstart
Primärer Einstieg ist der Memory-Graph (der Vault, ADR-025): mcp__memory__search_nodes mit einer
natürlichsprachlichen Frage (der SessionStart-Hook surface't ihn). Für sequenzielles Onboarding:
README.md— die Apps, Einrichtung, Deploy in Kürzevault/overview.md— Anforderungen, Zielarchitektur, Sizingvault/decisions/— Wichtig: alle ADRs mit Begründung (decisions.mdals MOC). Bevor du etwas vorschlägst, das eine ADR berührt: prüfe, ob die ADR den Vorschlag schon adressiert.vault/operations/operations.md— Betrieb mit dem CLI, Recovery-Pfade.- Für Spiegel:
vault/spiegel/spiegel.md(Lesereihenfolge) undvault/spiegel/spiegel-roadmap.md(FeaturesSP-x.ymit Status).
Nur wenn du Code änderst:
scripts/vereinsheim— das CLI, nach Sections gegliedert; die Apps stehen einmal inscripts/lib/apps.shcompose.yml,Caddyfile,db-init/01-users-and-dbs.sh
Harness, Skills & Knowledge (ADR-016/017/018/023/025/035)
Eine geteilte Agent-Harness am Root — ein Satz für alle Apps:
- Skills (
.claude/skills/, via/<name>oder modellgetriggert):check,test,migrate,db-reset,commit-msg,consolidate-lessons(Lessons-Triage ENFORCE > DOCUMENT > REMEMBER, ADR-017; REMEMBER →vault/incidents/-Note),sync-graph(Vault validieren/aufräumen:vault-lint+ Cross-Refs),ingest(externe Quellen → zitierte Vault-Notes) sowie der PIV-Workflowplan → implement → validate → review+debug(Root-Cause; Handoff überplans/+reports/)./implementläuft autonom-by-default über den freigegebenen Plan (task-by-task, Circuit-Breaker, Ledger; ADR-023) — die Plan-Freigabe ist die einzige Opt-in-Grenze, Merge bleibt user-gated.coordinateist die Ebene darüber (ADR-035): eine koordinierende Session im Haupt-Checkout plant die Teile eines Vorhabens, führt den Koordinationsplan als Ledger und übernimmt die Branches der Kindsessions, die je einen Teilplan in einem eigenen Worktree umsetzen. plans/enthält nur offene Pläne. Ist ein Plan umgesetzt, wird er gelöscht; was davon dauerhaft gilt, steht im Vault.reports/ist lokal (gitignored).- Hooks (
.claude/settings.json+.claude/hooks/, Composite-Dispatcherpretool.mjs/stop.mjs): Stop-Gate blockt das Turn-Ende, bispnpm checkgrün ist; Stop-Graph-Sync (graph-sync.mjs) validiert am Turn-Ende den Vault viavault-lint.mjsund blockt bei invalidem Vault (Schema/Anker/keywords); PostToolUse-Lint (eslint auf die editierte App- oder Paket-Datei); PreToolUse-Security-Guard (verweigert echte.env/.vereinsheim.local- katastrophale
rm -rf; nudged einmalig pro Session Richtung CodeGraph beigrep/find); Autopilot-Guard (ADR-023, nur aktiv bei Marker.claude/.autopilot-active) verweigert im autonomen/implementgeschützte Pfade (Deploy-Vertrag, Schema/Migrationen, ADR-Kanonvault/decisions/, Secrets,.claude/,scripts/) + push/merge/deploy/migrate.
- katastrophale
- Sub-Agent
code-reviewer(.claude/agents/) — von/reviewgegen den Branch-Diff delegiert. - Knowledge-Graph (
.mcp.json): CodeGraph-MCP (Live-Symbol-/Call-Graph/Routen,codegraph_explore— Ground Truth über den Code, on-demand statt grep) + Memory-MCP = der Vault (ADR-025): dervault/aus Markdown-Notes ist der Graph — kein Build-Schritt, kein Store.vault-loader.mjsliest die Notes direkt; jede Note = eine Entity (Dateiname = id), flache typisierte Frontmatter-Kanten (part_of/governed_by/documented_in/…) = die Edges; Ordner = Topic mit MOC-Hub. ABFRAGEN vor breitem Explorieren:mcp__memory__search_nodes(natürlichsprachlich, DE/EN, BM25 — die Notes sind deutsch, eine deutsche Frage rankt am besten) →document_map→section_read;open_nodes/backlinks/traversefür den Graph. Schreiben: die Note direkt editieren/anlegen (live; Frontmatter gemäßvault/SCHEMA.md, kuratiertekeywords:), via/sync-graphbzw./consolidate-lessonsgepflegt. Dervault/ist zugleich ein browsebarer Obsidian-Vault (Format-Eigenschaft, keine Laufzeit-Abhängigkeit). Abgrenzung zum nativen Auto-Memory: projekt-/via-git-geteiltes → Vault; maschinen-/ops-lokales → Auto-Memory. - CLAUDE.md-Hierarchie: diese Datei = universelle Schicht; je App und Paket eine eigene
CLAUDE.md(Claude lädt die nächstgelegene on-demand). Das Doku-Wissen liegt zentral im Vault (vault/apps/<app>/…,vault/spiegel/…) und wird via Memory-MCP gesucht. Karte + Konventionen werden mitgeladen:
@vault/architecture/architecture.md @vault/conventions.md
Hard Rules (übergeordnet)
Diese gelten zusätzlich zu denen aus /Users/christian/.claude/CLAUDE.md:
- Sprache: User-Kommunikation auf Deutsch, Code/Commit-Messages auf Englisch, Doku auf Deutsch.
- Feature-Branches Pflicht: jede Änderung auf
feat/<topic>, ff-only-Merge nachmainnur mit User-OK. - Keine
Co-Authored-By-Trailer in Commit-Messages. - Commit-Message als fenced code block vor dem Commit anzeigen.
Ausnahme: im autonomen
/implement(ADR-023) entfällt das — die Messages stehen im Ledger +git log, vor dem Merge revidierbar. - Niemals Secrets oder Personendaten committen.
.envund.vereinsheim.localsind gitignored; keine echten Namen, Sportpassnummern oder Schussdaten von Personen in Code, Tests oder Doku (ADR-029). - ADRs respektieren: wenn ein Vorschlag einer ADR widerspricht, das im User-Gespräch explizit benennen ("ADR-X sagt, dass wir Y verworfen haben — willst du das wieder aufmachen?"), bevor du es umsetzt.
- PIV ist der Default-Workflow (nicht pro Prompt mitzugeben): jede nicht-triviale Änderung läuft
/plan → /implement → /validate → /review(Handoff überplans/+reports/); den Plan vor der ersten Code-Zeile dem User vorlegen. Nach der Freigabe läuft/implementautonom durch (ADR-023) und holt den User nur an Circuit-Breakern + am Merge zurück. Ein Vorhaben aus mehreren Teilplänen läuft koordiniert: eine koordinierende Session, je Teilplan eine Kindsession im eigenen Worktree (/coordinate, ADR-035). Bugs zuerst über/debug(Root-Cause). Triviale/mechanische Fixes (Typo, One-Liner, reine Doku) dürfen direkt erfolgen. - Kommentare beschreiben den Code, nicht seine Geschichte: was er tut und warum. Keine Verweise auf Pläne, Tasks,
Reviews oder Feedback-Runden, kein „früher …, jetzt …“. ADR-Verweise,
[[vault-links]], Sonderfall-IDs (SF-NN) und Kennzahl-IDs aus dem Statistik-Katalog sind erlaubt.
Bedienkonzept (kurz)
Ein Tool, zwei Modi. Erkennung: ist .vereinsheim.local da?
| Mode | Trigger | Subcommands |
| Lokal | .vereinsheim.local existiert | dev-setup, local-setup, build, release, ssh, remote, upload, download, local-build/-pull/-up/-down, dev-restore, transfer (mit --local oder --vps, auch --mapping und status) |
| VPS | Default | setup, deploy, rollback, backup, restore, restore-probe, db-ensure, migrations, status, cron, psql, logs, shell, env-check, up/down/restart, transfer (ein Konto, mark) |
Aufruf: ./scripts/vereinsheim (Menü) oder ./scripts/vereinsheim <subcmd>. Volle Liste: ./scripts/vereinsheim help.
Woran gearbeitet wird
- Spiegel wird Feature für Feature nach
vault/spiegel/spiegel-roadmap.mdgebaut (ein Feature pro Session, je über/plan); Entscheidungen ADR-026–031, Meyton-Wissen untervault/meyton/. Offene Einzelpunkte stehen am Ende der Roadmap. - Offen, optional: CI (GitHub Actions) + Turbo-Remote-Cache (würde ADR-006 ablösen,
vault/monorepo/monorepo.md), Off-Site-Backup (off-site-backup-gap), ein schnellerer Release-Build (plans/2026-07-15-faster-release-build.md, Teile C und D).
Wenn du etwas änderst
- Skripte: nach jeder Änderung
bash -n <skript>für Syntax-Check; beicompose.ymlzusätzlichdocker compose --env-file <test-env> config --quiet; beiCaddyfilezusätzlichdocker run --rm -v $PWD/Caddyfile:/etc/caddy/Caddyfile:ro caddy:2-alpine caddy validate --adapter caddyfile --config /etc/caddy/Caddyfile. Den ganzen Stack mit den echten Images prüfttools/stack-e2e/run.sh. - Neue App im Stack: in
scripts/lib/apps.sh,compose.yml,Caddyfile,.env.exampleunddb-init/eintragen; auf einem laufenden VPS legtvereinsheim db-ensuredie Datenbank an. - Doku/ADRs: wenn du eine ADR superseded oder neu hinzufügst → eine Note unter
vault/decisions/adr-NNN.mdanlegen/ändern (Status +supersedes/superseded_by/refines-Kanten) undvault/decisions/decisions.md(MOC) +vault/index.mdnachziehen. Sonstiges Wissen: die passende Vault-Note editieren, dann/sync-graph. - CLI: das Tool wrappt die per-Task-Skripte, dupliziert sie nicht. Neue Subcommands folgen dem gleichen Muster (Validate Pre-Bedingungen → Confirm → existing script aufrufen).
- Deploy läuft über Image-Push/-Pull, nicht über Git:
vereinsheim releasevon der lokalen Maschine.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

