157 lines
6.6 KiB
Markdown
157 lines
6.6 KiB
Markdown
# claude-meta Framework
|
|
|
|
Zentrales Git-Repo für Claude Code Konfiguration. Portabel via `git pull`.
|
|
|
|
## Architektur
|
|
|
|
```
|
|
claude-meta/
|
|
├── home-claude/ → verlinkt nach ~/.claude/ (Symlinks/Junctions)
|
|
├── templates/ → Projekt-Bootstrap via init-project Script
|
|
├── memory/ → portables Wissen (manuell kuratiert)
|
|
├── scripts/ → Installation, Backup, Projekt-Init
|
|
└── docs/ → diese Dokumentation
|
|
```
|
|
|
|
## Was Claude wann weiß (Context-Budget)
|
|
|
|
| Quelle | Wann geladen | ca. Tokens | Beschreibung |
|
|
|---|---|---|---|
|
|
| `~/.claude/CLAUDE.md` | **Immer**, jede Session | ~200 | Prägnanz, Sprache, @import-Liste |
|
|
| `rules/*.md` | **On-demand** via @import | ~50-80/Datei | Nur wenn thematisch relevant |
|
|
| `projekt/CLAUDE.md` | **Immer** im Projekt | 500-2000 | Build-Commands, Architektur |
|
|
| `skills/*.md` | **Nur bei /skill** Aufruf | 200-500 | Skill-Anweisungen |
|
|
| `commands/*.md` | **Nur bei /command** Aufruf | 200-500 | Command-Anweisungen |
|
|
| `settings.json` | **Nie** im Context | 0 | Intern verarbeitet (Permissions) |
|
|
| `memory/*.md` | **Nur wenn** referenziert | variabel | Via @import aus CLAUDE.md |
|
|
| `docs/FRAMEWORK.md` | **Nie** automatisch | 0 | Nur wenn manuell gelesen |
|
|
|
|
**Vergleich**: Vorher ~1500-3500 Tokens pro Session (alles in CLAUDE.md inline).
|
|
Jetzt: ~200 Tokens base + on-demand.
|
|
|
|
## Wissenszuordnung
|
|
|
|
### Global (home-claude/ → ~/.claude/)
|
|
Gilt für **alle Projekte** auf diesem Rechner:
|
|
- Sprachregeln: Deutsch für Interaktion, Englisch für Code
|
|
- Code-Style: `rules/code-style.md`
|
|
- .NET Konventionen: `rules/dotnet.md`
|
|
- Git Workflow: `rules/git.md`
|
|
- Permissions: `settings.json` (46 konsolidierte Regeln)
|
|
- Skills: `/gemini-image`, `/review`, `/plan-project`
|
|
- Commands: `/branch` (globale Slash-Commands)
|
|
|
|
### Projekt-spezifisch (bleibt im Projekt-Repo)
|
|
- `CLAUDE.md` — Build-Commands, Architektur, Patterns
|
|
- `.claude/settings.json` — nur projekt-spezifische Permissions (z.B. WebFetch-Domains)
|
|
- `.claude/skills/` — projekt-spezifische Skills
|
|
|
|
### Memory (claude-meta/memory/)
|
|
- Manuell kuratiertes Wissen
|
|
- **Nicht** automatisch geladen
|
|
- Via @import referenzierbar wenn nötig
|
|
- Portabel über git
|
|
|
|
## Dateien anpassen
|
|
|
|
| Änderung | Wo | Danach |
|
|
|---|---|---|
|
|
| Neue globale Regel | `home-claude/rules/neue-regel.md` + @import in CLAUDE.md | git commit + push |
|
|
| Neuer Skill | `home-claude/skills/name/SKILL.md` | git commit + push |
|
|
| Neuer Command | `home-claude/commands/name.md` | git commit + push |
|
|
| Neue Permission | `home-claude/settings.json` allow-Array | git commit + push |
|
|
| Neues Projekt | `scripts/init-project.ps1 <pfad> <name>` | Editiere CLAUDE.md |
|
|
| Neuer Rechner | `git clone` + `scripts/install.ps1` | Fertig |
|
|
|
|
## Installation
|
|
|
|
### Erstmalig
|
|
```powershell
|
|
git clone <repo-url> C:\work\claude-meta
|
|
cd C:\work\claude-meta
|
|
.\scripts\backup.ps1 # sichert bestehende ~/.claude/ Dateien
|
|
.\scripts\install.ps1 # erstellt Symlinks/Junctions
|
|
```
|
|
|
|
### Neuer Rechner
|
|
```powershell
|
|
git clone <repo-url> C:\work\claude-meta
|
|
.\scripts\install.ps1
|
|
```
|
|
|
|
### Linux
|
|
```bash
|
|
git clone <repo-url> ~/work/claude-meta
|
|
cd ~/work/claude-meta
|
|
./scripts/install.sh
|
|
```
|
|
|
|
## Symlinks & Junctions
|
|
|
|
| ~/.claude/ Pfad | Verlinkt auf | Typ (Windows) | Typ (Linux) |
|
|
|---|---|---|---|
|
|
| `CLAUDE.md` | `home-claude/CLAUDE.md` | File-Symlink | Symlink |
|
|
| `settings.json` | `home-claude/settings.json` | File-Symlink | Symlink |
|
|
| `skills/` | `home-claude/skills/` | Junction | Symlink |
|
|
| `rules/` | `home-claude/rules/` | Junction | Symlink |
|
|
| `commands/` | `home-claude/commands/` | Junction | Symlink |
|
|
|
|
**Wichtig**: `~/.claude/` selbst ist IMMER ein echtes Verzeichnis (nie symlinken — Claude Code Bug #764).
|
|
|
|
Junctions brauchen kein Admin/Developer Mode, funktionieren aber nur auf gleichem Volume.
|
|
|
|
## Gemini CLI & Antigravity Integration
|
|
|
|
Beide Tools nutzen `~/.gemini/GEMINI.md` als globale Anweisungsdatei (analog zu CLAUDE.md). `home-claude/rules/` ist die gemeinsame Source of Truth.
|
|
|
|
### Struktur nach install.ps1 / install.sh
|
|
|
|
```
|
|
~/.gemini/
|
|
GEMINI.md ← COPY von home-gemini/GEMINI.md (kein Symlink, s.u.)
|
|
settings.json ← COPY von home-gemini/settings.json (kein Symlink, s.u.)
|
|
rules/ → Junction/Symlink → home-claude/rules/ (geteilt mit Claude)
|
|
skills/
|
|
review/ → Junction/Symlink → home-claude/skills/review/
|
|
plan-project/ → Junction/Symlink → home-claude/skills/plan-project/
|
|
```
|
|
|
|
### Was bei welchem Tool ankommt
|
|
|
|
| | Gemini CLI | Antigravity IDE |
|
|
|---|---|---|
|
|
| Verhaltensregeln (GEMINI.md) | ✓ | ✓ |
|
|
| @rules/* (code-style, dotnet, git) | ✓ | ✓ |
|
|
| memory/ (includeDirectories) | ✓ | ✗ (nicht unterstützt) |
|
|
| Skills (review, plan-project) | ✓ | ✗ (s. Hinweis unten) |
|
|
|
|
### Warum kein Symlink für GEMINI.md und settings.json
|
|
|
|
**GEMINI.md:** Gemini CLI verweigert Symlinks aus Sicherheitsgründen (Issue #11547, closed "not planned").
|
|
|
|
**settings.json:** Gemini CLI überschreibt den Symlink bei jedem automatischen Settings-Update mit einer echten Datei — der Link wird still zerstört (Issue #10960, closed "not planned"). Daher wird auch settings.json immer kopiert. Nach Änderungen an `home-gemini/settings.json` muss `install.ps1` erneut ausgeführt werden.
|
|
|
|
### Antigravity Skills (TODO)
|
|
|
|
Antigravity nutzt `~/.gemini/antigravity/skills/` statt `~/.gemini/skills/`. Die Skills aus `home-claude/skills/` sind für Antigravity daher aktuell **nicht** sichtbar. `install.ps1` und `install.sh` könnten um einen Block erweitert werden, der Junctions/Symlinks nach `~/.gemini/antigravity/skills/review/` und `~/.gemini/antigravity/skills/plan-project/` anlegt.
|
|
|
|
### Regeln nach Änderungen aktualisieren
|
|
|
|
Regeländerungen in `home-claude/rules/` wirken sofort (Junction/Symlink). Für GEMINI.md und settings.json gilt:
|
|
|
|
```powershell
|
|
.\scripts\install.ps1 # kopiert GEMINI.md und settings.json neu
|
|
```
|
|
|
|
Achtung: Antigravity überschreibt `~/.gemini/GEMINI.md` wenn der User über "+ Global" Regeln hinzufügt. In dem Fall `install.ps1` erneut ausführen.
|
|
|
|
## Bekannte Einschränkungen
|
|
|
|
- Claude Code Issue #764: Symlink auf ~/.claude/ Verzeichnis → Dateien unsichtbar
|
|
- Junctions nur auf gleichem Volume (C: → C:)
|
|
- @imports haben max 5 Rekursionstiefe
|
|
- Erste @import-Nutzung braucht einmalige Bestätigung pro Projekt
|
|
- Gemini CLI Issue #11547: GEMINI.md darf kein Symlink sein
|
|
- Gemini CLI Issue #10960: settings.json-Symlink wird bei CLI-Updates zerstört
|
|
- Antigravity und Gemini CLI teilen ~/.gemini/GEMINI.md — Antigravity kann die Datei überschreiben
|