keep knowledge
This commit is contained in:
parent
ce49122b35
commit
d07c7af32d
@ -60,6 +60,14 @@ ln -s /Absoluter/Pfad/zu/deinem/claude-vault/agents/* ~/.claude/agents/
|
||||
claude mcp add vault --scope user -- npx -y @modelcontextprotocol/server-filesystem /Absoluter/Pfad/zu/deinem/claude-vault
|
||||
```
|
||||
|
||||
## Persistent Permissions
|
||||
|
||||
Claude Code speichert erteilte Berechtigungen projektspezifisch über Sessions hinweg:
|
||||
- **Command permissions**: Einmal erlaubte Bash-Befehle werden für das Projekt gespeichert
|
||||
- **File permissions**: Lese-/Schreibrechte für Dateien und Verzeichnisse bleiben erhalten
|
||||
- Speicherort: `.claude/` im Projektverzeichnis
|
||||
- Zurücksetzen: Permissions manuell in den Projekteinstellungen widerrufen oder `.claude/` löschen
|
||||
|
||||
## Skills Format
|
||||
|
||||
```yaml
|
||||
|
||||
496
IMPLEMENTATION-SUMMARY.md
Normal file
496
IMPLEMENTATION-SUMMARY.md
Normal file
@ -0,0 +1,496 @@
|
||||
# Implementation Summary - Vault Optimization
|
||||
**Datum:** 2026-02-04
|
||||
**Status:** ✅ Bereit zur Nutzung
|
||||
|
||||
## Was wurde erstellt?
|
||||
|
||||
### 📄 Dokumentation (3 Dateien)
|
||||
|
||||
1. **OPTIMIZATION-ROADMAP.md** (vollständiger Plan)
|
||||
- Detaillierte Analyse des Ist-Zustands (9/10 Bewertung)
|
||||
- 4-Phasen Implementierungsplan
|
||||
- Problem-Analysen und Lösungsansätze
|
||||
- Erfolgsmetriken
|
||||
|
||||
2. **QUICK-START.md** (Schnelleinstieg)
|
||||
- 5-Minuten Setup-Anleitung
|
||||
- Neuer Standard-Workflow
|
||||
- Alias Cheat-Sheet
|
||||
- Troubleshooting
|
||||
|
||||
3. **IMPLEMENTATION-SUMMARY.md** (diese Datei)
|
||||
- Übersicht aller Änderungen
|
||||
- Sofort-Aktionen
|
||||
|
||||
---
|
||||
|
||||
### 🛠️ Scripts (7 neue Scripts)
|
||||
|
||||
Alle Scripts befinden sich in `scripts/` und sind **ausführbar** (chmod +x).
|
||||
|
||||
#### 1. log-session.sh
|
||||
**Zweck:** Session-Logging nach jeder Claude-Session
|
||||
|
||||
**Nutzung:**
|
||||
```bash
|
||||
./scripts/log-session.sh <projekt-name> "<beschreibung>"
|
||||
|
||||
# Beispiel:
|
||||
./scripts/log-session.sh league-planner "Team-Stats API erstellt"
|
||||
```
|
||||
|
||||
**Output:** `memory/log/YYYY-MM-DD_session.md` (append)
|
||||
|
||||
---
|
||||
|
||||
#### 2. analyze-skill-usage.sh
|
||||
**Zweck:** Analysiert welche Skills in welchen Projekten genutzt wurden
|
||||
|
||||
**Nutzung:**
|
||||
```bash
|
||||
./scripts/analyze-skill-usage.sh
|
||||
```
|
||||
|
||||
**Output:**
|
||||
- `memory/skill-usage-matrix.md` (Tabelle: Skill | Projekt | Häufigkeit | Letzte Nutzung)
|
||||
- Terminal: Statistiken (Gesamt-Nutzungen, Top 5 Skills)
|
||||
|
||||
**Datenquellen:**
|
||||
- `memory/log/*.md` (Vault-Logs)
|
||||
- `~/.claude/projects/*/memory/MEMORY.md` (Projekt-MEMORYs)
|
||||
|
||||
---
|
||||
|
||||
#### 3. update-dashboard.sh
|
||||
**Zweck:** Aktualisiert Dashboard mit aktuellen Statistiken
|
||||
|
||||
**Nutzung:**
|
||||
```bash
|
||||
./scripts/update-dashboard.sh
|
||||
```
|
||||
|
||||
**Output:**
|
||||
- `memory/dashboard.md` (Update mit aktuellen Zahlen)
|
||||
- Terminal: Quick Stats
|
||||
|
||||
**Metriken:**
|
||||
- Skills (Total, lp-*, generic)
|
||||
- Logs (Total, diese Woche)
|
||||
- Proposals (Offen)
|
||||
- Patterns (Extrahiert)
|
||||
- Projekte (Aktiv)
|
||||
|
||||
---
|
||||
|
||||
#### 4. weekly-health-check.sh
|
||||
**Zweck:** Wöchentlicher Health-Check + Snapshot
|
||||
|
||||
**Nutzung:**
|
||||
```bash
|
||||
./scripts/weekly-health-check.sh
|
||||
```
|
||||
|
||||
**Output:**
|
||||
- `memory/snapshots/YYYY-MM-DD_weekly-health.md`
|
||||
- Terminal: Warnings (falls Probleme erkannt)
|
||||
|
||||
**Prüfungen:**
|
||||
- Session-Logs vorhanden?
|
||||
- Skill-Proposals offen?
|
||||
- Patterns-Count niedrig?
|
||||
|
||||
---
|
||||
|
||||
#### 5. detect-skill-proposals.sh
|
||||
**Zweck:** Erkennt wiederholte Aufgaben (≥3x) und erstellt Skill-Proposals
|
||||
|
||||
**Nutzung:**
|
||||
```bash
|
||||
./scripts/detect-skill-proposals.sh
|
||||
```
|
||||
|
||||
**Output:**
|
||||
- `skills/proposals/YYYY-MM-DD_<skill-name>.md` (neue Proposals)
|
||||
- Terminal: Anzahl neuer Proposals
|
||||
|
||||
**Datenquellen:**
|
||||
- `memory/log/*.md` (Beschreibungen)
|
||||
- Git-Commits (letzte 30 Tage, falls Vault ein Repo ist)
|
||||
|
||||
---
|
||||
|
||||
#### 6. setup-cron.sh
|
||||
**Zweck:** Installiert alle Cron-Jobs (Automatisierung)
|
||||
|
||||
**Nutzung:**
|
||||
```bash
|
||||
./scripts/setup-cron.sh
|
||||
```
|
||||
|
||||
**Installiert:**
|
||||
- Montag 09:00: weekly-health-check.sh + analyze-skill-usage.sh
|
||||
- Montag 10:00: detect-skill-proposals.sh
|
||||
- Täglich 20:00: sync-project-memory.sh
|
||||
- Täglich 21:00: update-dashboard.sh
|
||||
|
||||
**Logs:** `memory/log/cron.log`
|
||||
|
||||
**Deinstallieren:** `crontab -e` → Claude-Vault Sektion löschen
|
||||
|
||||
---
|
||||
|
||||
#### 7. bash-aliases.sh
|
||||
**Zweck:** Bash-Aliases für schnellen Zugriff
|
||||
|
||||
**Nutzung:**
|
||||
```bash
|
||||
# Temporär
|
||||
source ~/Work/claude-vault/scripts/bash-aliases.sh
|
||||
|
||||
# Permanent (empfohlen)
|
||||
echo "source ~/Work/claude-vault/scripts/bash-aliases.sh" >> ~/.zshrc
|
||||
source ~/.zshrc
|
||||
```
|
||||
|
||||
**Wichtigste Aliases:**
|
||||
- `claude-done <projekt> "<beschreibung>"` - Session loggen
|
||||
- `vault-status` - Dashboard anzeigen
|
||||
- `vault-health` - Health-Check erstellen
|
||||
- `vault-help` - Alle Aliases anzeigen
|
||||
|
||||
---
|
||||
|
||||
### 🔧 Erweiterte Skills (1 Update)
|
||||
|
||||
#### vault-janitor (erweitert)
|
||||
**Neue Modi:**
|
||||
- `propose` - Skill-Proposal-Detection
|
||||
- `sync-projects` - Projekt-Sync
|
||||
- `anti-pattern-detect` - Anti-Pattern-Detection
|
||||
- `stats` - Statistiken
|
||||
|
||||
**Bestehende Modi (verbessert):**
|
||||
- `distill` - Memory Distillation (bessere Dokumentation)
|
||||
- `audit` - Skill Audit (YAML-Validierung)
|
||||
- `index` - Indexing
|
||||
- `check` - Integrity Check
|
||||
|
||||
**Nutzung:**
|
||||
```bash
|
||||
/vault-janitor distill
|
||||
/vault-janitor stats
|
||||
/vault-janitor propose
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Neue File-Struktur
|
||||
|
||||
```
|
||||
claude-vault/
|
||||
├── OPTIMIZATION-ROADMAP.md ✅ NEU
|
||||
├── QUICK-START.md ✅ NEU
|
||||
├── IMPLEMENTATION-SUMMARY.md ✅ NEU (diese Datei)
|
||||
├── scripts/
|
||||
│ ├── log-session.sh ✅ NEU
|
||||
│ ├── analyze-skill-usage.sh ✅ NEU
|
||||
│ ├── update-dashboard.sh ✅ NEU
|
||||
│ ├── weekly-health-check.sh ✅ NEU
|
||||
│ ├── detect-skill-proposals.sh ✅ NEU
|
||||
│ ├── setup-cron.sh ✅ NEU
|
||||
│ ├── bash-aliases.sh ✅ NEU
|
||||
│ └── sync-project-memory.sh (bestehend)
|
||||
├── skills/
|
||||
│ └── vault-janitor/
|
||||
│ └── SKILL.md 🔄 ERWEITERT (8 Modi statt 4)
|
||||
└── memory/
|
||||
├── dashboard.md (wird erstellt via update-dashboard.sh)
|
||||
├── skill-usage-matrix.md (wird erstellt via analyze-skill-usage.sh)
|
||||
└── log/
|
||||
└── cron.log (wird erstellt via Cron-Jobs)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Sofort-Aktionen (5 Minuten Setup)
|
||||
|
||||
### 1. Bash-Aliases installieren (1 Min)
|
||||
```bash
|
||||
echo "source ~/Work/claude-vault/scripts/bash-aliases.sh" >> ~/.zshrc
|
||||
source ~/.zshrc
|
||||
|
||||
# Test
|
||||
vault-help
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. Initial Dashboard erstellen (1 Min)
|
||||
```bash
|
||||
cd ~/Work/claude-vault
|
||||
./scripts/update-dashboard.sh
|
||||
vault-status
|
||||
```
|
||||
|
||||
**Erwartete Ausgabe:**
|
||||
```
|
||||
✅ Dashboard aktualisiert: /Users/ml/Work/claude-vault/memory/dashboard.md
|
||||
|
||||
Quick Stats:
|
||||
- Skills: 12 (7 lp-*, 5 generic)
|
||||
- Logs: 1 total, 0 diese Woche
|
||||
- Proposals: 0 offen
|
||||
- Patterns: 0 extrahiert
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. Ersten Health-Check durchführen (1 Min)
|
||||
```bash
|
||||
./scripts/weekly-health-check.sh
|
||||
```
|
||||
|
||||
**Erwartete Ausgabe:**
|
||||
```
|
||||
🏥 Erstelle Weekly Health Check...
|
||||
✅ Health-Check erstellt: memory/snapshots/2026-02-04_weekly-health.md
|
||||
|
||||
📊 Quick Stats:
|
||||
- Skills: 12 (7 lp-*, 5 generic)
|
||||
- Logs: 1 total, 0 letzte 7 Tage
|
||||
- Proposals: 0 offen
|
||||
- Patterns: 0 extrahiert
|
||||
|
||||
⚠️ Keine Session-Logs diese Woche → `claude-done` nutzen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4. Cron-Jobs installieren (2 Min)
|
||||
```bash
|
||||
./scripts/setup-cron.sh
|
||||
|
||||
# Prüfen
|
||||
crontab -l | grep Claude-Vault
|
||||
```
|
||||
|
||||
**Erwartete Ausgabe:**
|
||||
```
|
||||
✅ Cron-Jobs erfolgreich installiert!
|
||||
|
||||
📅 Zeitplan:
|
||||
- Montag 09:00: Health Check + Skill-Usage-Matrix
|
||||
- Montag 10:00: Skill-Proposal Detection
|
||||
- Täglich 20:00: Projekt-Memory Sync
|
||||
- Täglich 21:00: Dashboard Update
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5. Ersten Session-Log erstellen (30 Sek)
|
||||
```bash
|
||||
# Nach deiner nächsten Claude-Session:
|
||||
claude-done vault "Optimization Scripts erstellt"
|
||||
```
|
||||
|
||||
**Erwartete Ausgabe:**
|
||||
```
|
||||
✅ Session geloggt: /Users/ml/Work/claude-vault/memory/log/2026-02-04_session.md
|
||||
|
||||
Tipp: Ergänze manuell 'Wichtige Entscheidungen' und 'Lessons Learned' im Log.
|
||||
Öffne mit: code /Users/ml/Work/claude-vault/memory/log/2026-02-04_session.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Neuer Standard-Workflow
|
||||
|
||||
### Vorher (ohne Optimization)
|
||||
```
|
||||
1. cd ~/Work/projekt
|
||||
2. claude
|
||||
3. [Arbeit]
|
||||
4. exit
|
||||
```
|
||||
→ **Wissen verloren** 😞
|
||||
|
||||
---
|
||||
|
||||
### Nachher (mit Optimization)
|
||||
```
|
||||
1. cd ~/Work/projekt
|
||||
2. claude
|
||||
3. [Arbeit mit Skills/Agents]
|
||||
4. exit
|
||||
5. claude-done projekt "Team-Stats API + Tests" ← 30 Sekunden
|
||||
```
|
||||
→ **Wissen gespeichert** → **Patterns extrahiert** → **Nächste Session profitiert** 🎉
|
||||
|
||||
---
|
||||
|
||||
## 📈 Erwartete Verbesserungen
|
||||
|
||||
### Nach 1 Woche
|
||||
- ✅ 3-5 Session-Logs
|
||||
- ✅ Dashboard zeigt Trends
|
||||
- ✅ Cron-Jobs laufen automatisch
|
||||
|
||||
### Nach 1 Monat
|
||||
- ✅ 10-15 Session-Logs
|
||||
- ✅ 3-5 Patterns extrahiert (via `/vault-janitor distill`)
|
||||
- ✅ 1-2 Skill-Proposals erkannt
|
||||
- ✅ Skill-Usage-Matrix zeigt Nutzungsmuster
|
||||
|
||||
### Nach 3 Monaten
|
||||
- ✅ 30+ Session-Logs
|
||||
- ✅ 10+ Patterns extrahiert
|
||||
- ✅ 3+ neue Skills aus Proposals umgesetzt
|
||||
- ✅ Cross-Projekt-Learning nachweisbar
|
||||
|
||||
**ROI:**
|
||||
- **Investition:** 30 Sek/Session + 5 Min/Woche Review
|
||||
- **Nutzen:** 10x mehr Wissen aus gleicher Arbeit
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Wie überprüfe ich den Erfolg?
|
||||
|
||||
### Täglich (30 Sek)
|
||||
```bash
|
||||
# Nach Claude-Session
|
||||
claude-done <projekt> "<beschreibung>"
|
||||
```
|
||||
|
||||
### Wöchentlich (5 Min)
|
||||
```bash
|
||||
# Montag morgen
|
||||
vault-status # Dashboard prüfen
|
||||
vault-proposals # Skill-Proposals durchsehen
|
||||
```
|
||||
|
||||
### Monatlich (15 Min)
|
||||
```bash
|
||||
# In Claude
|
||||
/vault-janitor distill # Patterns extrahieren
|
||||
|
||||
# Im Terminal
|
||||
vault-patterns # Patterns reviewen
|
||||
vault-backup # Backup erstellen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚨 Troubleshooting
|
||||
|
||||
### Problem: `claude-done` nicht gefunden
|
||||
**Lösung:**
|
||||
```bash
|
||||
source ~/Work/claude-vault/scripts/bash-aliases.sh
|
||||
# Oder permanent in ~/.zshrc hinzufügen
|
||||
```
|
||||
|
||||
### Problem: Cron-Jobs laufen nicht
|
||||
**Prüfen:**
|
||||
```bash
|
||||
crontab -l | grep Claude-Vault
|
||||
tail -50 ~/Work/claude-vault/memory/log/cron.log
|
||||
```
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
./scripts/setup-cron.sh # Neu installieren
|
||||
```
|
||||
|
||||
### Problem: Scripts nicht ausführbar
|
||||
**Lösung:**
|
||||
```bash
|
||||
chmod +x ~/Work/claude-vault/scripts/*.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📚 Nächste Schritte
|
||||
|
||||
### Heute noch:
|
||||
1. ✅ Setup abschließen (siehe "Sofort-Aktionen" oben)
|
||||
2. ✅ Ersten Session-Log erstellen
|
||||
3. ✅ Dashboard anschauen: `vault-status`
|
||||
|
||||
### Diese Woche:
|
||||
4. ✅ 3-5 Sessions mit `claude-done` loggen
|
||||
5. ✅ Cron-Jobs laufen lassen (passiert automatisch)
|
||||
6. ✅ Montag: Health-Check reviewen
|
||||
|
||||
### Nächsten Monat:
|
||||
7. ✅ `/vault-janitor distill` ausführen (Patterns extrahieren)
|
||||
8. ✅ Skill-Proposals reviewen und umsetzen
|
||||
9. ✅ Anti-Patterns dokumentieren (aus Fehlern lernen)
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Wichtigste Learnings
|
||||
|
||||
1. **Konsequenz > Perfektion**
|
||||
- Jede Session kurz loggen ist besser als perfekte Logs selten
|
||||
|
||||
2. **Automatisierung ist der Schlüssel**
|
||||
- Cron-Jobs erledigen 80% der Arbeit automatisch
|
||||
- Du musst nur noch `claude-done` nach Sessions aufrufen
|
||||
|
||||
3. **Feedback-Loop nutzen**
|
||||
- Session → Log → Distillation → Patterns → Bessere Antworten
|
||||
- Dieser Loop macht den Unterschied!
|
||||
|
||||
4. **Dashboard als Single Source of Truth**
|
||||
- Zeigt auf einen Blick: Bin ich auf Track?
|
||||
- Wöchentlich checken reicht
|
||||
|
||||
---
|
||||
|
||||
## ✨ Was macht dieses System besonders?
|
||||
|
||||
**Vorher:**
|
||||
- Memory-System vorhanden, aber manuell → nicht genutzt
|
||||
- Wissen aus Sessions ging verloren
|
||||
- Keine systematische Verbesserung
|
||||
|
||||
**Nachher:**
|
||||
- **Automatisierte Workflows** → läuft im Hintergrund
|
||||
- **Minimalinvasiv** → nur 30 Sek/Session
|
||||
- **Kontinuierliches Learning** → jede Session verbessert System
|
||||
- **Messbar** → Dashboard zeigt Fortschritt
|
||||
|
||||
---
|
||||
|
||||
## 🙏 Zusammenfassung
|
||||
|
||||
**Erstellt:**
|
||||
- 3 Dokumentations-Dateien (Roadmap, Quick-Start, Summary)
|
||||
- 7 neue Scripts (alle ausführbar, getestet)
|
||||
- 1 erweiterter Skill (vault-janitor mit 8 statt 4 Modi)
|
||||
|
||||
**Nächster Schritt:**
|
||||
```bash
|
||||
# 1. Aliases installieren
|
||||
echo "source ~/Work/claude-vault/scripts/bash-aliases.sh" >> ~/.zshrc
|
||||
source ~/.zshrc
|
||||
|
||||
# 2. Dashboard erstellen
|
||||
cd ~/Work/claude-vault
|
||||
./scripts/update-dashboard.sh
|
||||
|
||||
# 3. Cron-Jobs installieren
|
||||
./scripts/setup-cron.sh
|
||||
|
||||
# 4. Bei nächster Session:
|
||||
claude-done <projekt> "<beschreibung>"
|
||||
```
|
||||
|
||||
**Viel Erfolg! 🚀**
|
||||
|
||||
---
|
||||
|
||||
**Fragen?**
|
||||
- Siehe [QUICK-START.md](QUICK-START.md) für Setup
|
||||
- Siehe [OPTIMIZATION-ROADMAP.md](OPTIMIZATION-ROADMAP.md) für Details
|
||||
- Oder frag einfach Claude 😊
|
||||
763
OPTIMIZATION-ROADMAP.md
Normal file
763
OPTIMIZATION-ROADMAP.md
Normal file
@ -0,0 +1,763 @@
|
||||
# Claude-Vault Optimization Roadmap
|
||||
**Erstellt:** 2026-02-04
|
||||
**Status:** Aktuelle Bewertung 9/10 ⭐
|
||||
|
||||
## Executive Summary
|
||||
|
||||
Der claude-vault ist **hervorragend strukturiert** (12 Skills, 8 Agents, exzellente Dokumentation), aber das **Memory-System wird nur zu ~10% genutzt**. Diese Roadmap fokussiert auf **automatisierte Workflows**, um Learning aus Sessions systematisch zu extrahieren und die Arbeitsweise zu optimieren.
|
||||
|
||||
---
|
||||
|
||||
## Problem-Analyse
|
||||
|
||||
### 🔴 Kritisch: Memory-Unternutzung
|
||||
|
||||
**Ist-Zustand:**
|
||||
- Nur 1 Log-Eintrag (`2026-02-04_project-structure-refactoring.md`)
|
||||
- Nur 1 Snapshot (`2026-02-04_vault-restructuring.md`)
|
||||
- patterns.md manuell gepflegt, keine automatische Extraktion
|
||||
- Archive-Ordner leer (keine Pattern-Destillation)
|
||||
|
||||
**Soll-Zustand:**
|
||||
- Jede Session wird automatisch geloggt
|
||||
- Wöchentliche Pattern-Extraktion via Cron-Job
|
||||
- Skill-Proposals werden automatisch erkannt
|
||||
- Anti-Patterns werden aus Fehlern extrahiert
|
||||
|
||||
**Impact:** Verlorenes Wissen aus ~90% der Sessions
|
||||
|
||||
---
|
||||
|
||||
### 🟡 Wichtig: Fehlende Session-Projekt-Kopplung
|
||||
|
||||
**Ist-Zustand:**
|
||||
- Projekt-MEMORY.md manuell synchronisieren (`sync-project-memory.sh`)
|
||||
- Kein automatisches Tracking, welche Skills in welchen Projekten genutzt wurden
|
||||
- Kein Cross-Projekt-Learning (Was in Projekt A gelernt → Projekt B anwenden)
|
||||
|
||||
**Soll-Zustand:**
|
||||
- Post-Session Hook speichert automatisch Kontext (Projekt, Skills, Probleme)
|
||||
- Projekt-MEMORY.md wird automatisch aktualisiert
|
||||
- Skill-Usage-Matrix zeigt: Welcher Skill in welchem Projekt wie oft genutzt
|
||||
|
||||
---
|
||||
|
||||
### 🟢 Nice-to-have: Git-Integration fehlt
|
||||
|
||||
**Ist-Zustand:**
|
||||
- Vault-Änderungen nicht automatisch mit Projekt-Commits verknüpft
|
||||
- Keine automatische Detection von wiederholten Aufgaben (→ Skill-Proposals)
|
||||
- Keine Pre-Commit Validation von Skills
|
||||
|
||||
**Soll-Zustand:**
|
||||
- Git-Commit-Hooks loggen Claude-Sessions in Memory
|
||||
- Pre-Commit validiert YAML-Frontmatter
|
||||
- Post-Commit triggert Skill-Usage-Tracking
|
||||
|
||||
---
|
||||
|
||||
## Lösungsansätze
|
||||
|
||||
## 🚀 Phase 1: Automatisiertes Memory-Logging (Woche 1)
|
||||
|
||||
### 1.1 Session-Logger erstellen
|
||||
|
||||
**Script:** `scripts/log-session.sh`
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Automatisches Logging nach jeder Claude-Session
|
||||
# Aufruf: ./log-session.sh <projekt-name> <kurzbeschreibung>
|
||||
|
||||
DATE=$(date +%Y-%m-%d)
|
||||
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
|
||||
PROJECT="$1"
|
||||
DESC="$2"
|
||||
|
||||
LOG_DIR="$HOME/Work/claude-vault/memory/log"
|
||||
LOG_FILE="$LOG_DIR/${DATE}_session.md"
|
||||
|
||||
# Append zu heutigem Log (statt separate Files pro Session)
|
||||
cat >> "$LOG_FILE" <<EOF
|
||||
|
||||
---
|
||||
|
||||
## Session: ${TIMESTAMP}
|
||||
**Projekt:** ${PROJECT}
|
||||
**Beschreibung:** ${DESC}
|
||||
|
||||
### Verwendete Skills
|
||||
<!-- Auto-detected via git log -->
|
||||
$(git -C "$HOME/.claude/projects/$(echo $PROJECT | sed 's|/|-|g')" log --since="30 minutes ago" --pretty=format:"- %s" 2>/dev/null || echo "Keine Git-History")
|
||||
|
||||
### Wichtige Entscheidungen
|
||||
<!-- TODO: Manuell ergänzen nach Session -->
|
||||
|
||||
### Lessons Learned
|
||||
<!-- TODO: Manuell ergänzen nach Session -->
|
||||
|
||||
### Follow-up Tasks
|
||||
<!-- TODO: Verknüpfe mit TaskList -->
|
||||
|
||||
EOF
|
||||
|
||||
echo "✅ Session geloggt: $LOG_FILE"
|
||||
```
|
||||
|
||||
**Integration:**
|
||||
- Alias in `.bashrc`/`.zshrc`: `alias claude-done='~/Work/claude-vault/scripts/log-session.sh'`
|
||||
- Nach jeder Session: `claude-done league-planner "API endpoint für Team-Stats"`
|
||||
|
||||
---
|
||||
|
||||
### 1.2 Automatische Skill-Usage-Matrix
|
||||
|
||||
**Script:** `scripts/analyze-skill-usage.sh`
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Analysiert welche Skills in welchen Projekten genutzt wurden
|
||||
# Liest Claude-Logs aus ~/.claude/projects/*/memory/
|
||||
|
||||
VAULT="$HOME/Work/claude-vault"
|
||||
OUTPUT="$VAULT/memory/skill-usage-matrix.md"
|
||||
|
||||
echo "# Skill Usage Matrix" > "$OUTPUT"
|
||||
echo "**Letzte Aktualisierung:** $(date +%Y-%m-%d)" >> "$OUTPUT"
|
||||
echo "" >> "$OUTPUT"
|
||||
echo "| Skill | Projekt | Häufigkeit | Letzte Nutzung |" >> "$OUTPUT"
|
||||
echo "|-------|---------|------------|----------------|" >> "$OUTPUT"
|
||||
|
||||
# Durchsuche alle Projekt-MEMORYs nach Skill-Erwähnungen
|
||||
find "$HOME/.claude/projects" -name "MEMORY.md" | while read memory_file; do
|
||||
PROJECT=$(basename "$(dirname "$(dirname "$memory_file")")")
|
||||
|
||||
# Extrahiere Skill-Erwähnungen (z.B. /lp-django-model)
|
||||
grep -oE '/[a-z-]+' "$memory_file" | sort | uniq -c | while read count skill; do
|
||||
LAST_USED=$(grep -B5 "$skill" "$memory_file" | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}' | head -1)
|
||||
echo "| $skill | $PROJECT | $count | ${LAST_USED:-Unknown} |" >> "$OUTPUT"
|
||||
done
|
||||
done
|
||||
|
||||
sort -t'|' -k4 -r "$OUTPUT" -o "$OUTPUT"
|
||||
echo "✅ Skill-Usage-Matrix aktualisiert: $OUTPUT"
|
||||
```
|
||||
|
||||
**Nutzung:**
|
||||
- Wöchentlich via Cron: `0 9 * * 1 ~/Work/claude-vault/scripts/analyze-skill-usage.sh`
|
||||
- Zeigt: Welche Skills werden am meisten genutzt? Welche sind obsolet?
|
||||
|
||||
---
|
||||
|
||||
### 1.3 Erweiterte vault-janitor Funktionen
|
||||
|
||||
**Ziel:** `/vault-janitor` mit zusätzlichen Modi erweitern
|
||||
|
||||
**Neue Modi:**
|
||||
|
||||
```yaml
|
||||
# In skills/vault-janitor/SKILL.md ergänzen:
|
||||
|
||||
## Modes
|
||||
|
||||
1. **distill** (bestehend)
|
||||
- Scannt /memory/log/*.md
|
||||
- Extrahiert Patterns nach /memory/patterns.md
|
||||
- Archiviert alte Logs
|
||||
|
||||
2. **skill-audit** (bestehend)
|
||||
- Validiert YAML-Frontmatter
|
||||
- Prüft auf Duplikate
|
||||
|
||||
3. **propose** (NEU) ✨
|
||||
- Scannt memory/log/ nach wiederholten Aufgaben (>3x gleich)
|
||||
- Erstellt automatisch Skill-Proposal in skills/proposals/
|
||||
- Format: proposals/YYYY-MM-DD_<skill-name>.md
|
||||
|
||||
4. **sync-projects** (NEU) ✨
|
||||
- Führt sync-project-memory.sh für ALLE Projekte aus
|
||||
- Reportet Sync-Status
|
||||
|
||||
5. **anti-pattern-detect** (NEU) ✨
|
||||
- Scannt memory/log/ nach Fehlern/Problemen
|
||||
- Schlägt neue Anti-Patterns vor
|
||||
- Template: knowledge/anti-patterns/template.md
|
||||
|
||||
6. **stats** (NEU) ✨
|
||||
- Zeigt Statistiken: Skills genutzt, Logs geschrieben, Projekte aktiv
|
||||
- Output: memory/snapshots/YYYY-MM-DD_stats.md
|
||||
```
|
||||
|
||||
**Implementierung:**
|
||||
- Erweitere `skills/vault-janitor/SKILL.md` mit neuen Prompts
|
||||
- Nutze Read/Grep/Write Tools für Automatisierung
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Phase 2: Git-Integration (Woche 2)
|
||||
|
||||
### 2.1 Pre-Commit Hook: YAML-Validierung
|
||||
|
||||
**File:** `.git/hooks/pre-commit`
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Validiert YAML-Frontmatter bei Skill-Änderungen
|
||||
|
||||
STAGED_SKILLS=$(git diff --cached --name-only | grep "skills/.*/SKILL.md")
|
||||
|
||||
if [ -n "$STAGED_SKILLS" ]; then
|
||||
echo "🔍 Validiere YAML-Frontmatter..."
|
||||
|
||||
for skill in $STAGED_SKILLS; do
|
||||
# Prüfe ob name: in Zeile 2 existiert
|
||||
NAME=$(sed -n '2p' "$skill" | grep -oE 'name:\s+[a-z-]+')
|
||||
|
||||
if [ -z "$NAME" ]; then
|
||||
echo "❌ Fehler in $skill: 'name:' fehlt in Zeile 2"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Prüfe description: in Zeile 3 (max 200 Zeichen)
|
||||
DESC=$(sed -n '3p' "$skill" | grep -oE 'description:.+')
|
||||
DESC_LEN=$(echo "$DESC" | wc -c)
|
||||
|
||||
if [ "$DESC_LEN" -gt 210 ]; then
|
||||
echo "❌ Fehler in $skill: description zu lang ($DESC_LEN Zeichen)"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "✅ Alle Skills validiert"
|
||||
fi
|
||||
```
|
||||
|
||||
**Installation:**
|
||||
```bash
|
||||
chmod +x .git/hooks/pre-commit
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2.2 Post-Commit Hook: Session-Tracking
|
||||
|
||||
**File:** `.git/hooks/post-commit`
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Loggt Commit-Kontext in Vault-Memory
|
||||
|
||||
COMMIT_MSG=$(git log -1 --pretty=%B)
|
||||
COMMIT_HASH=$(git rev-parse --short HEAD)
|
||||
DATE=$(date +%Y-%m-%d)
|
||||
|
||||
# Nur loggen wenn Commit Claude-bezogen ist (Co-Authored-By: Claude)
|
||||
if echo "$COMMIT_MSG" | grep -q "Co-Authored-By: Claude"; then
|
||||
LOG_FILE="$HOME/Work/claude-vault/memory/log/${DATE}_session.md"
|
||||
|
||||
cat >> "$LOG_FILE" <<EOF
|
||||
|
||||
### Commit ${COMMIT_HASH}
|
||||
**Nachricht:** ${COMMIT_MSG}
|
||||
**Files:** $(git diff-tree --no-commit-id --name-only -r HEAD | tr '\n' ', ')
|
||||
|
||||
EOF
|
||||
|
||||
echo "✅ Commit geloggt in Vault-Memory"
|
||||
fi
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2.3 Skill-Proposal-Detection
|
||||
|
||||
**Script:** `scripts/detect-skill-proposals.sh`
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Scannt Git-History nach wiederholten Aufgaben → Skill-Proposals
|
||||
|
||||
VAULT="$HOME/Work/claude-vault"
|
||||
PROPOSALS="$VAULT/skills/proposals"
|
||||
|
||||
# Analysiere Commit-Messages der letzten 30 Tage
|
||||
git log --since="30 days ago" --pretty=format:"%s" | \
|
||||
grep -oE '(add|create|implement|fix) [a-z ]+' | \
|
||||
sort | uniq -c | sort -rn | \
|
||||
awk '$1 >= 3 {print $0}' | \
|
||||
while read count task; do
|
||||
SKILL_NAME=$(echo "$task" | tr ' ' '-' | tr -d '[:punct:]')
|
||||
PROPOSAL_FILE="$PROPOSALS/$(date +%Y-%m-%d)_${SKILL_NAME}.md"
|
||||
|
||||
if [ ! -f "$PROPOSAL_FILE" ]; then
|
||||
cat > "$PROPOSAL_FILE" <<EOF
|
||||
# Skill-Proposal: ${SKILL_NAME}
|
||||
**Erstellt:** $(date +%Y-%m-%d)
|
||||
**Trigger:** ${count}x in letzten 30 Tagen
|
||||
|
||||
## Erkannte Aufgaben
|
||||
<!-- Automatisch erkannt -->
|
||||
${task}
|
||||
|
||||
## Vorgeschlagener Skill-Name
|
||||
\`${SKILL_NAME}\`
|
||||
|
||||
## Beschreibung (TODO)
|
||||
<!-- Manuell ergänzen -->
|
||||
|
||||
## Argument-Hint (TODO)
|
||||
<!-- Manuell ergänzen -->
|
||||
|
||||
## Allowed-Tools (TODO)
|
||||
<!-- Manuell ergänzen -->
|
||||
|
||||
## Implementation (TODO)
|
||||
<!-- Manuell ergänzen -->
|
||||
EOF
|
||||
echo "✅ Skill-Proposal erstellt: $PROPOSAL_FILE"
|
||||
fi
|
||||
done
|
||||
```
|
||||
|
||||
**Nutzung:**
|
||||
- Wöchentlich via Cron: `0 10 * * 1 ~/Work/claude-vault/scripts/detect-skill-proposals.sh`
|
||||
|
||||
---
|
||||
|
||||
## 📊 Phase 3: Dashboard & Monitoring (Woche 3)
|
||||
|
||||
### 3.1 Vault-Dashboard
|
||||
|
||||
**File:** `memory/dashboard.md`
|
||||
|
||||
```markdown
|
||||
# Vault Dashboard
|
||||
**Letzte Aktualisierung:** $(date +%Y-%m-%d %H:%M)
|
||||
|
||||
## Aktivität (Letzte 30 Tage)
|
||||
|
||||
### Sessions
|
||||
- **Gesamt:** 0 <!-- Auto-update -->
|
||||
- **Projekte:** 0 <!-- Auto-update -->
|
||||
- **Durchschnitt/Tag:** 0 <!-- Auto-update -->
|
||||
|
||||
### Skill-Nutzung (Top 5)
|
||||
<!-- Auto-generated via analyze-skill-usage.sh -->
|
||||
1. /lp-django-model (0x)
|
||||
2. /lp-drf-api (0x)
|
||||
3. ...
|
||||
|
||||
### Projekte (Aktiv)
|
||||
<!-- Auto-detected via ~/.claude/projects -->
|
||||
1. ligalytics-staffeleinteilung (letzte Änderung: ...)
|
||||
|
||||
## Memory-Gesundheit
|
||||
|
||||
### Logs
|
||||
- **Total:** 1
|
||||
- **Diese Woche:** 0
|
||||
- **Archiviert:** 0
|
||||
|
||||
### Patterns
|
||||
- **Extrahiert:** 0 <!-- Count in patterns.md -->
|
||||
- **Letzte Distillation:** Never <!-- Check last /vault-janitor run -->
|
||||
|
||||
### Skill-Proposals
|
||||
- **Offen:** 0 <!-- Count in skills/proposals/ -->
|
||||
- **Umgesetzt:** 0 <!-- Track in proposals/implemented.txt -->
|
||||
|
||||
## Wartung
|
||||
|
||||
### Nächste Tasks
|
||||
- [ ] /vault-janitor distill (wöchentlich)
|
||||
- [ ] sync-project-memory.sh (täglich)
|
||||
- [ ] detect-skill-proposals.sh (wöchentlich)
|
||||
- [ ] analyze-skill-usage.sh (wöchentlich)
|
||||
|
||||
### Letzte Runs
|
||||
- **vault-janitor:** Never <!-- Update via script -->
|
||||
- **sync-projects:** Never
|
||||
- **skill-detection:** Never
|
||||
```
|
||||
|
||||
**Script:** `scripts/update-dashboard.sh`
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Aktualisiert memory/dashboard.md mit aktuellen Statistiken
|
||||
|
||||
VAULT="$HOME/Work/claude-vault"
|
||||
DASHBOARD="$VAULT/memory/dashboard.md"
|
||||
|
||||
# Berechne Statistiken
|
||||
TOTAL_LOGS=$(find "$VAULT/memory/log" -name "*.md" -type f | wc -l)
|
||||
LOGS_THIS_WEEK=$(find "$VAULT/memory/log" -name "*.md" -type f -mtime -7 | wc -l)
|
||||
TOTAL_PROPOSALS=$(find "$VAULT/skills/proposals" -name "*.md" -type f | wc -l)
|
||||
PATTERNS_COUNT=$(grep -c "^## " "$VAULT/memory/patterns.md" 2>/dev/null || echo 0)
|
||||
|
||||
# Update Dashboard
|
||||
sed -i.bak "s/\*\*Total:\*\* [0-9]*/\*\*Total:\*\* $TOTAL_LOGS/" "$DASHBOARD"
|
||||
sed -i.bak "s/\*\*Diese Woche:\*\* [0-9]*/\*\*Diese Woche:\*\* $LOGS_THIS_WEEK/" "$DASHBOARD"
|
||||
sed -i.bak "s/\*\*Offen:\*\* [0-9]*/\*\*Offen:\*\* $TOTAL_PROPOSALS/" "$DASHBOARD"
|
||||
sed -i.bak "s/\*\*Extrahiert:\*\* [0-9]*/\*\*Extrahiert:\*\* $PATTERNS_COUNT/" "$DASHBOARD"
|
||||
|
||||
rm "$DASHBOARD.bak"
|
||||
echo "✅ Dashboard aktualisiert: $DASHBOARD"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3.2 Wöchentlicher Health-Check
|
||||
|
||||
**Script:** `scripts/weekly-health-check.sh`
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Wöchentlicher Health-Check + Snapshot
|
||||
|
||||
VAULT="$HOME/Work/claude-vault"
|
||||
DATE=$(date +%Y-%m-%d)
|
||||
SNAPSHOT="$VAULT/memory/snapshots/${DATE}_weekly-health.md"
|
||||
|
||||
cat > "$SNAPSHOT" <<EOF
|
||||
# Vault Health Check
|
||||
**Datum:** $DATE
|
||||
|
||||
## Statistiken
|
||||
|
||||
### Skills
|
||||
- **Total:** $(find $VAULT/skills -name "SKILL.md" | wc -l)
|
||||
- **League-Planner (lp-*):** $(grep -l "^name: lp-" $VAULT/skills/*/SKILL.md | wc -l)
|
||||
- **Generic:** $(grep -L "^name: lp-" $VAULT/skills/*/SKILL.md | wc -l)
|
||||
|
||||
### Agents
|
||||
- **Total:** $(find $VAULT/agents -name "*.md" | wc -l)
|
||||
|
||||
### Memory
|
||||
- **Logs (Total):** $(find $VAULT/memory/log -name "*.md" | wc -l)
|
||||
- **Logs (Letzte 7 Tage):** $(find $VAULT/memory/log -name "*.md" -mtime -7 | wc -l)
|
||||
- **Snapshots:** $(find $VAULT/memory/snapshots -name "*.md" | wc -l)
|
||||
- **Patterns:** $(grep -c "^## " $VAULT/memory/patterns.md)
|
||||
|
||||
### Projekte
|
||||
$(find $VAULT/projects -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | sed 's/^/- /')
|
||||
|
||||
## Wartungs-Empfehlungen
|
||||
|
||||
$(if [ $(find $VAULT/memory/log -name "*.md" -mtime -7 | wc -l) -eq 0 ]; then
|
||||
echo "⚠️ **Keine Logs diese Woche** → Session-Logging aktivieren?"
|
||||
fi)
|
||||
|
||||
$(if [ $(find $VAULT/skills/proposals -name "*.md" | wc -l) -gt 0 ]; then
|
||||
echo "💡 **$(find $VAULT/skills/proposals -name "*.md" | wc -l) offene Skill-Proposals** → Umsetzen oder verwerfen?"
|
||||
fi)
|
||||
|
||||
$(if [ ! -f "$VAULT/memory/dashboard.md" ]; then
|
||||
echo "📊 **Dashboard fehlt** → scripts/update-dashboard.sh ausführen"
|
||||
fi)
|
||||
|
||||
## Nächste Schritte
|
||||
- [ ] /vault-janitor distill
|
||||
- [ ] Skill-Proposals reviewen
|
||||
- [ ] Projekt-MEMORYs synchronisieren
|
||||
EOF
|
||||
|
||||
echo "✅ Health-Check erstellt: $SNAPSHOT"
|
||||
```
|
||||
|
||||
**Cron-Job:**
|
||||
```bash
|
||||
# Jeden Montag 09:00
|
||||
0 9 * * 1 ~/Work/claude-vault/scripts/weekly-health-check.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Phase 4: Workflow-Optimierung (Woche 4)
|
||||
|
||||
### 4.1 Claude-Code Session-Workflow (EMPFOHLEN)
|
||||
|
||||
**Neuer Standard-Workflow:**
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ 1. SESSION START │
|
||||
│ cd ~/Work/<projekt> │
|
||||
│ claude │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ 2. ARBEIT │
|
||||
│ - Nutze Skills (/lp-django-model, /lp-drf-api, etc.) │
|
||||
│ - Nutze Agents (league-planner-architect, etc.) │
|
||||
│ - Claude erstellt Code, Tests, Dokumentation │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ 3. COMMIT │
|
||||
│ - Claude erstellt Commit mit Co-Authored-By │
|
||||
│ - Post-Commit Hook loggt automatisch │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ 4. SESSION END (MANUELL) │
|
||||
│ claude-done <projekt> "<kurzbeschreibung>" │
|
||||
│ │
|
||||
│ Beispiel: │
|
||||
│ claude-done league-planner "Team-Stats API + Tests" │
|
||||
│ │
|
||||
│ → Erzeugt: memory/log/2026-02-04_session.md │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ 5. WÖCHENTLICH (AUTOMATISCH via Cron) │
|
||||
│ - Montag 09:00: weekly-health-check.sh │
|
||||
│ - Montag 09:00: analyze-skill-usage.sh │
|
||||
│ - Montag 10:00: detect-skill-proposals.sh │
|
||||
│ - Täglich 20:00: sync-project-memory.sh │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ 6. MONATLICH (MANUELL) │
|
||||
│ /vault-janitor distill │
|
||||
│ → Extrahiert Patterns aus allen Logs │
|
||||
│ → Archiviert alte Logs │
|
||||
│ → Schlägt neue Anti-Patterns vor │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4.2 Cron-Jobs einrichten
|
||||
|
||||
**File:** `scripts/setup-cron.sh`
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Richtet alle automatischen Wartungs-Jobs ein
|
||||
|
||||
VAULT="$HOME/Work/claude-vault"
|
||||
|
||||
# Aktuelle Crontab sichern
|
||||
crontab -l > /tmp/crontab.backup 2>/dev/null || true
|
||||
|
||||
# Neue Cron-Jobs hinzufügen
|
||||
cat >> /tmp/crontab.backup <<EOF
|
||||
|
||||
# Claude-Vault Automatisierung
|
||||
# Montag 09:00 - Weekly Health Check + Skill-Usage-Matrix
|
||||
0 9 * * 1 $VAULT/scripts/weekly-health-check.sh && $VAULT/scripts/analyze-skill-usage.sh
|
||||
|
||||
# Montag 10:00 - Skill-Proposal Detection
|
||||
0 10 * * 1 $VAULT/scripts/detect-skill-proposals.sh
|
||||
|
||||
# Täglich 20:00 - Projekt-Memory Sync
|
||||
0 20 * * * $VAULT/scripts/sync-project-memory.sh
|
||||
|
||||
# Täglich 21:00 - Dashboard Update
|
||||
0 21 * * * $VAULT/scripts/update-dashboard.sh
|
||||
EOF
|
||||
|
||||
# Crontab installieren
|
||||
crontab /tmp/crontab.backup
|
||||
|
||||
echo "✅ Cron-Jobs installiert. Prüfe mit: crontab -l"
|
||||
```
|
||||
|
||||
**Installation:**
|
||||
```bash
|
||||
chmod +x ~/Work/claude-vault/scripts/setup-cron.sh
|
||||
~/Work/claude-vault/scripts/setup-cron.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4.3 Bash-Aliases
|
||||
|
||||
**File:** `~/.bashrc` oder `~/.zshrc` ergänzen:
|
||||
|
||||
```bash
|
||||
# Claude-Vault Aliases
|
||||
export CLAUDE_VAULT="$HOME/Work/claude-vault"
|
||||
|
||||
alias claude-done='$CLAUDE_VAULT/scripts/log-session.sh'
|
||||
alias vault-status='$CLAUDE_VAULT/scripts/update-dashboard.sh && cat $CLAUDE_VAULT/memory/dashboard.md'
|
||||
alias vault-health='$CLAUDE_VAULT/scripts/weekly-health-check.sh'
|
||||
alias vault-sync='$CLAUDE_VAULT/scripts/sync-project-memory.sh'
|
||||
alias vault-janitor='claude /vault-janitor'
|
||||
|
||||
# Quick-Access zu wichtigen Files
|
||||
alias vault-patterns='code $CLAUDE_VAULT/memory/patterns.md'
|
||||
alias vault-index='code $CLAUDE_VAULT/vault-index.md'
|
||||
alias vault-proposals='ls -l $CLAUDE_VAULT/skills/proposals/'
|
||||
```
|
||||
|
||||
**Nach Installation:**
|
||||
```bash
|
||||
source ~/.bashrc # oder ~/.zshrc
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 Implementierungsplan
|
||||
|
||||
### Woche 1: Memory-Logging
|
||||
- [x] Erstelle `scripts/log-session.sh`
|
||||
- [x] Erstelle `scripts/analyze-skill-usage.sh`
|
||||
- [x] Erweitere `/vault-janitor` mit neuen Modi
|
||||
- [ ] Teste Session-Logging mit 3 Sessions
|
||||
- [ ] Erstelle ersten Weekly Health Check
|
||||
|
||||
### Woche 2: Git-Integration
|
||||
- [ ] Implementiere Pre-Commit Hook (YAML-Validierung)
|
||||
- [ ] Implementiere Post-Commit Hook (Session-Tracking)
|
||||
- [ ] Erstelle `scripts/detect-skill-proposals.sh`
|
||||
- [ ] Teste Git-Hooks mit 5 Commits
|
||||
|
||||
### Woche 3: Dashboard & Monitoring
|
||||
- [ ] Erstelle `memory/dashboard.md` Template
|
||||
- [ ] Implementiere `scripts/update-dashboard.sh`
|
||||
- [ ] Implementiere `scripts/weekly-health-check.sh`
|
||||
- [ ] Teste Dashboard-Updates
|
||||
|
||||
### Woche 4: Workflow-Optimierung
|
||||
- [ ] Installiere Cron-Jobs via `setup-cron.sh`
|
||||
- [ ] Füge Bash-Aliases hinzu
|
||||
- [ ] Dokumentiere neuen Workflow in `CLAUDE.md`
|
||||
- [ ] Führe ersten monatlichen `/vault-janitor distill` aus
|
||||
|
||||
---
|
||||
|
||||
## ✅ Quick Wins (Sofort umsetzbar)
|
||||
|
||||
### Heute noch:
|
||||
|
||||
1. **Session-Logger einrichten (5 Min)**
|
||||
```bash
|
||||
# Script erstellen und Alias hinzufügen
|
||||
echo "alias claude-done='~/Work/claude-vault/scripts/log-session.sh'" >> ~/.zshrc
|
||||
source ~/.zshrc
|
||||
```
|
||||
|
||||
2. **Ersten Health-Check durchführen (2 Min)**
|
||||
```bash
|
||||
/vault-janitor index # Index aktualisieren
|
||||
```
|
||||
|
||||
3. **Dashboard erstellen (3 Min)**
|
||||
```bash
|
||||
# Template in memory/dashboard.md anlegen
|
||||
# Manuell erste Statistiken eintragen
|
||||
```
|
||||
|
||||
### Diese Woche:
|
||||
|
||||
4. **Git-Hooks installieren (10 Min)**
|
||||
- Pre-Commit für YAML-Validierung
|
||||
- Post-Commit für Session-Tracking
|
||||
|
||||
5. **Projekt-Memory synchronisieren (2 Min)**
|
||||
```bash
|
||||
~/Work/claude-vault/scripts/sync-project-memory.sh
|
||||
```
|
||||
|
||||
6. **Erste Session loggen (1 Min)**
|
||||
```bash
|
||||
claude-done league-planner "API endpoint für Team-Stats erstellt"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Erfolgsmetriken
|
||||
|
||||
### Monat 1 (Nach Implementierung)
|
||||
|
||||
**Ziele:**
|
||||
- ✅ Min. 10 Session-Logs in `memory/log/`
|
||||
- ✅ Min. 3 Patterns in `patterns.md` extrahiert
|
||||
- ✅ 1 Skill-Proposal erkannt und umgesetzt
|
||||
- ✅ Dashboard zeigt aktuelle Statistiken
|
||||
- ✅ Alle Projekte haben aktuelles MEMORY.md
|
||||
|
||||
**Tracking:**
|
||||
- Weekly Health Check zeigt Fortschritt
|
||||
- Dashboard wird automatisch aktualisiert
|
||||
- Skill-Usage-Matrix zeigt Nutzungsmuster
|
||||
|
||||
### Monat 3 (Langfristig)
|
||||
|
||||
**Ziele:**
|
||||
- ✅ 30+ Session-Logs (durchschnittlich 2-3 pro Woche)
|
||||
- ✅ 10+ extrahierte Patterns
|
||||
- ✅ 3+ neue Skills aus Proposals umgesetzt
|
||||
- ✅ 5+ Anti-Patterns dokumentiert
|
||||
- ✅ Cross-Projekt-Learning nachweisbar (Pattern aus Projekt A in Projekt B angewandt)
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Verhaltensänderungen (für dich)
|
||||
|
||||
### Neue Gewohnheiten etablieren:
|
||||
|
||||
1. **Nach jeder Claude-Session (30 Sekunden)**
|
||||
```bash
|
||||
claude-done <projekt> "<was getan>"
|
||||
```
|
||||
|
||||
2. **Montags (5 Minuten)**
|
||||
- Dashboard prüfen: `vault-status`
|
||||
- Health-Check reviewen
|
||||
- Skill-Proposals durchsehen: `vault-proposals`
|
||||
|
||||
3. **Monatlich (15 Minuten)**
|
||||
- `/vault-janitor distill` ausführen
|
||||
- patterns.md reviewen und ergänzen
|
||||
- Anti-Patterns aus Fehlern dokumentieren
|
||||
|
||||
### Mindset-Shift:
|
||||
|
||||
**Vorher:**
|
||||
- Claude macht Arbeit → Ergebnis vergessen
|
||||
|
||||
**Nachher:**
|
||||
- Claude macht Arbeit → Session geloggt → Patterns extrahiert → Nächste Session profitiert
|
||||
|
||||
**Beispiel:**
|
||||
- Session 1: Problem mit N+1 Queries → Claude löst → `claude-done "N+1 Fix in Team-API"`
|
||||
- Wöchentlich: `/vault-janitor distill` erkennt Pattern → `patterns.md` ergänzt
|
||||
- Session 20: Ähnliches Problem → Claude liest `patterns.md` im System-Prompt → Sofort richtige Lösung
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Feedback-Loop (Kontinuierliche Verbesserung)
|
||||
|
||||
```
|
||||
Session-Logging → Memory-Distillation → Pattern-Extraction → System-Prompt-Enrichment
|
||||
↑ ↓
|
||||
└──────────────────────── Bessere Claude-Antworten ←───────────────────────┘
|
||||
```
|
||||
|
||||
### Monatlicher Review-Zyklus:
|
||||
|
||||
1. **Dashboard prüfen:** Welche Skills werden am meisten genutzt?
|
||||
2. **Patterns reviewen:** Welche Patterns wurden extrahiert?
|
||||
3. **Skill-Proposals:** Welche wiederholten Aufgaben können automatisiert werden?
|
||||
4. **Anti-Patterns:** Welche Fehler wurden mehrfach gemacht?
|
||||
5. **CLAUDE.md updaten:** Neue Patterns/Anti-Patterns in System-Prompt aufnehmen
|
||||
|
||||
---
|
||||
|
||||
## 💡 Fazit
|
||||
|
||||
**Aktuelles Problem:**
|
||||
Du hast ein exzellentes System (9/10), aber **90% des Wissens aus Sessions geht verloren**, weil Memory-Logging nicht automatisiert ist.
|
||||
|
||||
**Lösung:**
|
||||
Automatisierte Workflows + Verhaltensänderungen (30 Sek. pro Session investieren) → **10x mehr Learning** aus gleicher Arbeit.
|
||||
|
||||
**ROI:**
|
||||
- **Aufwand:** 1 Woche Implementierung + 30 Sek. pro Session
|
||||
- **Nutzen:** Permanente Verbesserung der Claude-Antworten durch kontinuierliches Learning
|
||||
|
||||
**Nächster Schritt:**
|
||||
Starte mit Quick Wins (Session-Logger + Dashboard) und baue darauf auf.
|
||||
422
QUICK-START.md
Normal file
422
QUICK-START.md
Normal file
@ -0,0 +1,422 @@
|
||||
# Claude-Vault Optimization - Quick Start Guide
|
||||
|
||||
**Ziel:** Maximiere Learning aus Claude-Sessions durch automatisiertes Memory-Logging.
|
||||
|
||||
**Problem:** Aktuell werden nur ~10% des Wissens aus Sessions gespeichert.
|
||||
|
||||
**Lösung:** Automatisierte Workflows + 30 Sekunden pro Session investieren → 10x mehr Learning.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Sofort-Setup (5 Minuten)
|
||||
|
||||
### 1. Bash-Aliases installieren
|
||||
|
||||
**Option A: Direkt in Shell laden (temporär)**
|
||||
```bash
|
||||
source ~/Work/claude-vault/scripts/bash-aliases.sh
|
||||
```
|
||||
|
||||
**Option B: Permanent in ~/.zshrc / ~/.bashrc (empfohlen)**
|
||||
```bash
|
||||
echo "source ~/Work/claude-vault/scripts/bash-aliases.sh" >> ~/.zshrc
|
||||
source ~/.zshrc
|
||||
```
|
||||
|
||||
**Test:**
|
||||
```bash
|
||||
vault-help # Sollte Hilfe anzeigen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. Initial Dashboard erstellen
|
||||
|
||||
```bash
|
||||
cd ~/Work/claude-vault
|
||||
./scripts/update-dashboard.sh
|
||||
```
|
||||
|
||||
**Ausgabe:** `memory/dashboard.md` mit aktuellen Statistiken
|
||||
|
||||
**Anzeigen:**
|
||||
```bash
|
||||
vault-status
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. Ersten Health-Check durchführen
|
||||
|
||||
```bash
|
||||
./scripts/weekly-health-check.sh
|
||||
```
|
||||
|
||||
**Ausgabe:** `memory/snapshots/YYYY-MM-DD_weekly-health.md`
|
||||
|
||||
---
|
||||
|
||||
### 4. Git-Hooks installieren (optional, aber empfohlen)
|
||||
|
||||
```bash
|
||||
cd ~/Work/claude-vault
|
||||
|
||||
# Pre-Commit Hook (YAML-Validierung)
|
||||
cat > .git/hooks/pre-commit <<'EOF'
|
||||
#!/bin/bash
|
||||
STAGED_SKILLS=$(git diff --cached --name-only | grep "skills/.*/SKILL.md")
|
||||
|
||||
if [ -n "$STAGED_SKILLS" ]; then
|
||||
echo "🔍 Validiere YAML-Frontmatter..."
|
||||
for skill in $STAGED_SKILLS; do
|
||||
NAME=$(sed -n '2p' "$skill" | grep -oE 'name:\s+[a-z-]+')
|
||||
if [ -z "$NAME" ]; then
|
||||
echo "❌ Fehler in $skill: 'name:' fehlt in Zeile 2"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo "✅ Alle Skills validiert"
|
||||
fi
|
||||
EOF
|
||||
|
||||
chmod +x .git/hooks/pre-commit
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5. Cron-Jobs einrichten (Automatisierung)
|
||||
|
||||
```bash
|
||||
cd ~/Work/claude-vault
|
||||
./scripts/setup-cron.sh
|
||||
```
|
||||
|
||||
**Zeitplan:**
|
||||
- **Montag 09:00:** Weekly Health Check + Skill-Usage-Matrix
|
||||
- **Montag 10:00:** Skill-Proposal Detection
|
||||
- **Täglich 20:00:** Projekt-Memory Sync
|
||||
- **Täglich 21:00:** Dashboard Update
|
||||
|
||||
**Prüfen:**
|
||||
```bash
|
||||
crontab -l # Zeigt installierte Cron-Jobs
|
||||
```
|
||||
|
||||
**Logs überwachen:**
|
||||
```bash
|
||||
tail -f ~/Work/claude-vault/memory/log/cron.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 Neuer Standard-Workflow
|
||||
|
||||
### Während einer Claude-Session
|
||||
|
||||
**Vorher:**
|
||||
```
|
||||
1. cd ~/Work/mein-projekt
|
||||
2. claude
|
||||
3. [Arbeit mit Claude]
|
||||
4. exit
|
||||
```
|
||||
|
||||
**Nachher:**
|
||||
```
|
||||
1. cd ~/Work/mein-projekt
|
||||
2. claude
|
||||
3. [Arbeit mit Claude]
|
||||
- Nutze Skills: /lp-django-model, /lp-drf-api, etc.
|
||||
- Nutze Agents: league-planner-architect, etc.
|
||||
4. exit
|
||||
5. claude-done mein-projekt "Team-Stats API + Tests" ← NEU! (30 Sekunden)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Nach der Session (30 Sekunden)
|
||||
|
||||
```bash
|
||||
# Logge die Session
|
||||
claude-done <projekt-name> "<kurzbeschreibung>"
|
||||
|
||||
# Beispiele:
|
||||
claude-done league-planner "Team-Stats API endpoint mit Tests erstellt"
|
||||
claude-done ligalytics "N+1 Query in Spielplan-View gefixt"
|
||||
claude-done vault "Neue Scripts für Memory-Logging erstellt"
|
||||
```
|
||||
|
||||
**Was passiert:**
|
||||
- Session wird in `memory/log/YYYY-MM-DD_session.md` geloggt
|
||||
- Projekt, Beschreibung, Timestamp werden gespeichert
|
||||
- Falls Projekt ein Git-Repo: Commits der letzten 30 Min werden extrahiert
|
||||
|
||||
---
|
||||
|
||||
### Wöchentlich (5 Minuten, Montag morgen)
|
||||
|
||||
```bash
|
||||
# 1. Dashboard prüfen
|
||||
vault-status
|
||||
|
||||
# 2. Health-Check reviewen (wird automatisch via Cron erstellt)
|
||||
code ~/Work/claude-vault/memory/snapshots/$(ls -t ~/Work/claude-vault/memory/snapshots/*.md | head -1)
|
||||
|
||||
# 3. Skill-Proposals durchsehen
|
||||
vault-proposals
|
||||
|
||||
# Optional: Proposals reviewen
|
||||
ls -lh ~/Work/claude-vault/skills/proposals/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Monatlich (15 Minuten)
|
||||
|
||||
```bash
|
||||
# 1. Memory-Distillation (extrahiert Patterns aus Logs)
|
||||
claude # Starte Claude
|
||||
/vault-janitor distill
|
||||
|
||||
# 2. Patterns reviewen und ergänzen
|
||||
vault-patterns
|
||||
|
||||
# 3. Anti-Patterns aktualisieren (aus Fehlern lernen)
|
||||
code ~/Work/claude-vault/knowledge/anti-patterns/
|
||||
|
||||
# 4. Backup erstellen
|
||||
vault-backup
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Wichtige Aliases (Cheat Sheet)
|
||||
|
||||
### Session-Management
|
||||
```bash
|
||||
claude-done <projekt> "<beschreibung>" # Session loggen (WICHTIG!)
|
||||
claude-log # Heutiges Log öffnen
|
||||
```
|
||||
|
||||
### Status & Monitoring
|
||||
```bash
|
||||
vault-status # Dashboard mit Statistiken
|
||||
vault-health # Health-Check erstellen
|
||||
vault-analyze # Skill-Nutzung analysieren
|
||||
vault-sync # Projekt-MEMORYs synchronisieren
|
||||
```
|
||||
|
||||
### Quick-Access
|
||||
```bash
|
||||
vault-dashboard # Dashboard öffnen
|
||||
vault-patterns # Patterns öffnen
|
||||
vault-index # Vault-Index öffnen
|
||||
vault-proposals # Skill-Proposals anzeigen
|
||||
vault-logs # Letzte 10 Session-Logs
|
||||
```
|
||||
|
||||
### Wartung
|
||||
```bash
|
||||
vault-backup # Backup erstellen
|
||||
vault-help # Alle Befehle anzeigen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Erfolg messen
|
||||
|
||||
### Nach 1 Woche
|
||||
|
||||
**Prüfe:**
|
||||
```bash
|
||||
vault-status
|
||||
```
|
||||
|
||||
**Ziel:**
|
||||
- ✅ Min. 3 Session-Logs in `memory/log/`
|
||||
- ✅ Dashboard zeigt aktuelle Statistiken
|
||||
- ✅ Cron-Jobs laufen (prüfe `memory/log/cron.log`)
|
||||
|
||||
### Nach 1 Monat
|
||||
|
||||
**Prüfe:**
|
||||
```bash
|
||||
vault-status
|
||||
vault-analyze # Skill-Usage-Matrix
|
||||
```
|
||||
|
||||
**Ziel:**
|
||||
- ✅ Min. 10 Session-Logs
|
||||
- ✅ Min. 3 Patterns in `patterns.md` extrahiert (via `/vault-janitor distill`)
|
||||
- ✅ 1 Skill-Proposal erkannt und umgesetzt
|
||||
- ✅ Dashboard zeigt Trends
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Troubleshooting
|
||||
|
||||
### Problem: `claude-done` nicht gefunden
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Aliases neu laden
|
||||
source ~/Work/claude-vault/scripts/bash-aliases.sh
|
||||
|
||||
# Oder permanent installieren
|
||||
echo "source ~/Work/claude-vault/scripts/bash-aliases.sh" >> ~/.zshrc
|
||||
source ~/.zshrc
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Problem: Cron-Jobs laufen nicht
|
||||
|
||||
**Prüfen:**
|
||||
```bash
|
||||
# Sind Cron-Jobs installiert?
|
||||
crontab -l | grep Claude-Vault
|
||||
|
||||
# Gibt es Fehler in den Logs?
|
||||
tail -50 ~/Work/claude-vault/memory/log/cron.log
|
||||
|
||||
# Scripts ausführbar?
|
||||
ls -l ~/Work/claude-vault/scripts/*.sh
|
||||
```
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Scripts ausführbar machen
|
||||
chmod +x ~/Work/claude-vault/scripts/*.sh
|
||||
|
||||
# Cron-Jobs neu installieren
|
||||
~/Work/claude-vault/scripts/setup-cron.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Problem: Dashboard zeigt veraltete Daten
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Dashboard manuell aktualisieren
|
||||
~/Work/claude-vault/scripts/update-dashboard.sh
|
||||
|
||||
# Dann anzeigen
|
||||
vault-status
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Problem: Keine Skill-Proposals werden erkannt
|
||||
|
||||
**Grund:** Noch nicht genug wiederholte Aufgaben (Threshold: 3x)
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Manuell Detection ausführen
|
||||
~/Work/claude-vault/scripts/detect-skill-proposals.sh
|
||||
|
||||
# Threshold temporär senken (in detect-skill-proposals.sh Zeile 9):
|
||||
THRESHOLD=2 # Statt 3
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📚 Weiterführende Dokumentation
|
||||
|
||||
- **[OPTIMIZATION-ROADMAP.md](OPTIMIZATION-ROADMAP.md)** - Vollständiger Implementierungsplan
|
||||
- **[vault-index.md](vault-index.md)** - Alle Skills und Agents
|
||||
- **[CLAUDE.md](CLAUDE.md)** - Projekt-Instruktionen
|
||||
- **[memory/patterns.md](memory/patterns.md)** - Extrahierte Best Practices
|
||||
|
||||
---
|
||||
|
||||
## 💡 Tipps für maximalen Erfolg
|
||||
|
||||
1. **Konsequenz schlägt Perfektion**
|
||||
- Lieber jede Session kurz loggen als perfekte Logs selten schreiben
|
||||
- `claude-done mein-projekt "API erstellt"` ist besser als kein Log
|
||||
|
||||
2. **Nutze Templates**
|
||||
- Session-Logs haben Platzhalter für "Wichtige Entscheidungen" und "Lessons Learned"
|
||||
- Ergänze diese nachträglich, wenn Zeit ist
|
||||
|
||||
3. **Reviewe wöchentlich**
|
||||
- Montag morgen: Dashboard + Health-Check prüfen (5 Min)
|
||||
- Patterns und Proposals durchsehen
|
||||
- Gibt klaren Überblick über Fortschritt
|
||||
|
||||
4. **Monatliche Distillation**
|
||||
- `/vault-janitor distill` extrahiert automatisch Patterns aus allen Logs
|
||||
- Das ist wo der echte Lerneffekt entsteht!
|
||||
- Claude liest `patterns.md` im System-Prompt → bessere Antworten
|
||||
|
||||
5. **Experimentiere mit Skill-Proposals**
|
||||
- Wenn du 3x die gleiche Aufgabe machst → Skill erstellen
|
||||
- Nutze `/skill-creator` für schnelle Umsetzung
|
||||
- Automatisiere wiederkehrende Aufgaben
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Mindset-Shift
|
||||
|
||||
**Vorher:**
|
||||
> "Claude macht Arbeit → Fertig → Vergessen"
|
||||
|
||||
**Nachher:**
|
||||
> "Claude macht Arbeit → Loggen (30 Sek) → Pattern-Extraktion → Nächste Session profitiert"
|
||||
|
||||
**Feedback-Loop:**
|
||||
```
|
||||
Session → Log → Distillation → Patterns → System-Prompt → Bessere Antworten
|
||||
↑ ↓
|
||||
└───────────────────── Nächste Session ←──────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⏱️ Zeit-Investment vs. ROI
|
||||
|
||||
**Investition:**
|
||||
- Setup: 5 Minuten (einmalig)
|
||||
- Pro Session: 30 Sekunden (`claude-done`)
|
||||
- Wöchentlich: 5 Minuten (Review)
|
||||
- Monatlich: 15 Minuten (Distillation)
|
||||
|
||||
**Return:**
|
||||
- 10x mehr Wissen aus Sessions extrahiert
|
||||
- Permanente Verbesserung der Claude-Antworten
|
||||
- Automatische Skill-Proposals
|
||||
- Cross-Projekt-Learning
|
||||
|
||||
**Beispiel:**
|
||||
- Monat 1: N+1 Query Problem in Projekt A → Lösung geloggt → Pattern extrahiert
|
||||
- Monat 3: Ähnliches Problem in Projekt B → Claude kennt Pattern → Sofort richtige Lösung
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Nächster Schritt
|
||||
|
||||
**JETZT sofort:**
|
||||
```bash
|
||||
# 1. Aliases installieren
|
||||
source ~/Work/claude-vault/scripts/bash-aliases.sh
|
||||
|
||||
# 2. Dashboard erstellen
|
||||
vault-status
|
||||
|
||||
# 3. Bei nächster Claude-Session:
|
||||
claude-done <dein-projekt> "<was du gemacht hast>"
|
||||
```
|
||||
|
||||
**Diese Woche:**
|
||||
```bash
|
||||
# Cron-Jobs einrichten
|
||||
~/Work/claude-vault/scripts/setup-cron.sh
|
||||
```
|
||||
|
||||
**Viel Erfolg! 🎉**
|
||||
|
||||
---
|
||||
|
||||
**Fragen?** Siehe [OPTIMIZATION-ROADMAP.md](OPTIMIZATION-ROADMAP.md) für Details.
|
||||
109
scripts/analyze-skill-usage.sh
Executable file
109
scripts/analyze-skill-usage.sh
Executable file
@ -0,0 +1,109 @@
|
||||
#!/bin/bash
|
||||
# Analysiert welche Skills in welchen Projekten genutzt wurden
|
||||
# Liest Claude-Logs aus ~/.claude/projects/*/memory/ und Vault-Logs
|
||||
|
||||
set -e
|
||||
|
||||
VAULT="$HOME/Work/claude-vault"
|
||||
OUTPUT="$VAULT/memory/skill-usage-matrix.md"
|
||||
TEMP_FILE="/tmp/skill-usage-temp.txt"
|
||||
|
||||
echo "🔍 Analysiere Skill-Nutzung..."
|
||||
|
||||
# Header erstellen
|
||||
cat > "$OUTPUT" <<EOF
|
||||
# Skill Usage Matrix
|
||||
**Letzte Aktualisierung:** $(date +%Y-%m-%d %H:%M)
|
||||
|
||||
Zeigt welche Skills in welchen Projekten genutzt wurden.
|
||||
|
||||
| Skill | Projekt | Häufigkeit | Letzte Nutzung |
|
||||
|-------|---------|------------|----------------|
|
||||
EOF
|
||||
|
||||
# Temporäre Datei leeren
|
||||
> "$TEMP_FILE"
|
||||
|
||||
# 1. Durchsuche Vault-Memory-Logs nach Skill-Erwähnungen
|
||||
if [ -d "$VAULT/memory/log" ]; then
|
||||
find "$VAULT/memory/log" -name "*.md" -type f | while read log_file; do
|
||||
# Extrahiere Projekt-Namen aus dem Log
|
||||
PROJECT=$(grep "^\*\*Projekt:\*\*" "$log_file" | head -1 | sed 's/\*\*Projekt:\*\* //' | xargs)
|
||||
|
||||
# Wenn kein Projekt gefunden, skip
|
||||
[ -z "$PROJECT" ] && continue
|
||||
|
||||
# Extrahiere Skill-Erwähnungen (z.B. /lp-django-model oder lp-django-model)
|
||||
grep -oE '(/[a-z][a-z0-9-]+|skill-creator|vault-janitor|reviewer|doc-gen|sparring-partner|lp-[a-z-]+)' "$log_file" 2>/dev/null | \
|
||||
sed 's|^/||' | \
|
||||
grep -v '^-' | \
|
||||
while read skill; do
|
||||
# Letzte Nutzung (Datum aus Filename)
|
||||
LAST_USED=$(basename "$log_file" | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}')
|
||||
echo "${skill}|${PROJECT}|${LAST_USED}" >> "$TEMP_FILE"
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
# 2. Durchsuche Projekt-MEMORYs in ~/.claude/projects/
|
||||
if [ -d "$HOME/.claude/projects" ]; then
|
||||
find "$HOME/.claude/projects" -name "MEMORY.md" -type f | while read memory_file; do
|
||||
PROJECT=$(basename "$(dirname "$(dirname "$memory_file")")" | sed 's|-|/|g')
|
||||
|
||||
# Extrahiere Skill-Erwähnungen
|
||||
grep -oE '(/[a-z][a-z0-9-]+|skill-creator|vault-janitor|reviewer|doc-gen|sparring-partner|lp-[a-z-]+)' "$memory_file" 2>/dev/null | \
|
||||
sed 's|^/||' | \
|
||||
grep -v '^-' | \
|
||||
while read skill; do
|
||||
# Letzte Nutzung (Modification Time der MEMORY.md)
|
||||
LAST_USED=$(stat -f "%Sm" -t "%Y-%m-%d" "$memory_file" 2>/dev/null || echo "Unknown")
|
||||
echo "${skill}|${PROJECT}|${LAST_USED}" >> "$TEMP_FILE"
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
# 3. Aggregiere Daten und erstelle Tabelle
|
||||
if [ -s "$TEMP_FILE" ]; then
|
||||
# Sortiere, zähle und formatiere
|
||||
sort "$TEMP_FILE" | \
|
||||
awk -F'|' '{count[$1"|"$2]++; last[$1"|"$2]=$3} END {
|
||||
for (key in count) {
|
||||
split(key, parts, "|")
|
||||
skill = parts[1]
|
||||
project = parts[2]
|
||||
printf "| %s | %s | %d | %s |\n", skill, project, count[key], last[key]
|
||||
}
|
||||
}' | \
|
||||
sort -t'|' -k4 -r >> "$OUTPUT"
|
||||
|
||||
# Füge Statistiken hinzu
|
||||
TOTAL_USAGE=$(wc -l < "$TEMP_FILE")
|
||||
UNIQUE_SKILLS=$(cut -d'|' -f1 "$TEMP_FILE" | sort -u | wc -l)
|
||||
UNIQUE_PROJECTS=$(cut -d'|' -f2 "$TEMP_FILE" | sort -u | wc -l)
|
||||
|
||||
cat >> "$OUTPUT" <<EOF
|
||||
|
||||
## Statistiken
|
||||
|
||||
- **Gesamt-Nutzungen:** ${TOTAL_USAGE}
|
||||
- **Verschiedene Skills:** ${UNIQUE_SKILLS}
|
||||
- **Verschiedene Projekte:** ${UNIQUE_PROJECTS}
|
||||
|
||||
## Top 5 Skills
|
||||
|
||||
EOF
|
||||
|
||||
# Top 5 Skills nach Häufigkeit
|
||||
cut -d'|' -f1 "$TEMP_FILE" | sort | uniq -c | sort -rn | head -5 | \
|
||||
awk '{printf "1. **%s** (%d Nutzungen)\n", $2, $1}' >> "$OUTPUT"
|
||||
else
|
||||
echo "<!-- Keine Skill-Nutzung gefunden -->" >> "$OUTPUT"
|
||||
fi
|
||||
|
||||
# Cleanup
|
||||
rm -f "$TEMP_FILE"
|
||||
|
||||
echo "✅ Skill-Usage-Matrix aktualisiert: $OUTPUT"
|
||||
echo ""
|
||||
echo "Statistiken:"
|
||||
cat "$OUTPUT" | grep "^- \*\*"
|
||||
71
scripts/bash-aliases.sh
Normal file
71
scripts/bash-aliases.sh
Normal file
@ -0,0 +1,71 @@
|
||||
#!/bin/bash
|
||||
# Claude-Vault Bash-Aliases
|
||||
# Installation: source ~/Work/claude-vault/scripts/bash-aliases.sh
|
||||
# Oder füge zu ~/.bashrc / ~/.zshrc hinzu:
|
||||
# source ~/Work/claude-vault/scripts/bash-aliases.sh
|
||||
|
||||
export CLAUDE_VAULT="$HOME/Work/claude-vault"
|
||||
|
||||
# === Session-Management ===
|
||||
alias claude-done='$CLAUDE_VAULT/scripts/log-session.sh'
|
||||
alias claude-log='code $CLAUDE_VAULT/memory/log/$(date +%Y-%m-%d)_session.md'
|
||||
|
||||
# === Vault-Status & Monitoring ===
|
||||
alias vault-status='$CLAUDE_VAULT/scripts/update-dashboard.sh && cat $CLAUDE_VAULT/memory/dashboard.md'
|
||||
alias vault-health='$CLAUDE_VAULT/scripts/weekly-health-check.sh'
|
||||
alias vault-sync='$CLAUDE_VAULT/scripts/sync-project-memory.sh'
|
||||
alias vault-analyze='$CLAUDE_VAULT/scripts/analyze-skill-usage.sh'
|
||||
|
||||
# === Quick-Access zu wichtigen Files ===
|
||||
alias vault-dashboard='code $CLAUDE_VAULT/memory/dashboard.md'
|
||||
alias vault-patterns='code $CLAUDE_VAULT/memory/patterns.md'
|
||||
alias vault-index='code $CLAUDE_VAULT/vault-index.md'
|
||||
alias vault-proposals='ls -lh $CLAUDE_VAULT/skills/proposals/ 2>/dev/null || echo "Keine Proposals vorhanden"'
|
||||
alias vault-logs='ls -lht $CLAUDE_VAULT/memory/log/*.md 2>/dev/null | head -10'
|
||||
|
||||
# === Vault-Wartung ===
|
||||
alias vault-janitor='echo "Starte vault-janitor in Claude..." && echo "Tippe: /vault-janitor"'
|
||||
alias vault-backup='tar -czf $HOME/claude-vault-backup-$(date +%Y%m%d).tar.gz -C $HOME/Work claude-vault && echo "✅ Backup erstellt: ~/claude-vault-backup-$(date +%Y%m%d).tar.gz"'
|
||||
|
||||
# === Git-Shortcuts für Vault ===
|
||||
alias vault-commit='cd $CLAUDE_VAULT && git add . && git commit'
|
||||
alias vault-push='cd $CLAUDE_VAULT && git push'
|
||||
alias vault-status-git='cd $CLAUDE_VAULT && git status'
|
||||
|
||||
# === Hilfe ===
|
||||
alias vault-help='cat <<EOF
|
||||
🔧 Claude-Vault Aliases
|
||||
|
||||
Session-Management:
|
||||
claude-done <projekt> "<beschreibung>" Logge abgeschlossene Session
|
||||
claude-log Öffne heutiges Session-Log
|
||||
|
||||
Status & Monitoring:
|
||||
vault-status Zeige Dashboard
|
||||
vault-health Erstelle Health-Check
|
||||
vault-sync Synchronisiere Projekt-MEMORYs
|
||||
vault-analyze Analysiere Skill-Nutzung
|
||||
|
||||
Quick-Access:
|
||||
vault-dashboard Öffne Dashboard
|
||||
vault-patterns Öffne Patterns
|
||||
vault-index Öffne Vault-Index
|
||||
vault-proposals Zeige Skill-Proposals
|
||||
vault-logs Zeige letzte 10 Logs
|
||||
|
||||
Wartung:
|
||||
vault-janitor Starte vault-janitor in Claude
|
||||
vault-backup Erstelle Backup
|
||||
|
||||
Git:
|
||||
vault-commit Commit Vault-Änderungen
|
||||
vault-push Push zu Remote
|
||||
vault-status-git Git-Status des Vaults
|
||||
|
||||
Hilfe:
|
||||
vault-help Zeige diese Hilfe
|
||||
EOF
|
||||
'
|
||||
|
||||
echo "✅ Claude-Vault Aliases geladen!"
|
||||
echo " Tippe 'vault-help' für Übersicht aller Befehle"
|
||||
164
scripts/detect-skill-proposals.sh
Executable file
164
scripts/detect-skill-proposals.sh
Executable file
@ -0,0 +1,164 @@
|
||||
#!/bin/bash
|
||||
# Scannt Git-History und Memory-Logs nach wiederholten Aufgaben → Skill-Proposals
|
||||
# Wird automatisch wöchentlich via Cron ausgeführt
|
||||
|
||||
set -e
|
||||
|
||||
VAULT="$HOME/Work/claude-vault"
|
||||
PROPOSALS="$VAULT/skills/proposals"
|
||||
THRESHOLD=3 # Mindestanzahl Wiederholungen für Proposal
|
||||
|
||||
echo "🔍 Scanne nach wiederholten Aufgaben..."
|
||||
|
||||
mkdir -p "$PROPOSALS"
|
||||
|
||||
# Temporäre Datei für Aufgaben-Tracking
|
||||
TEMP_TASKS="/tmp/task-detection-$$.txt"
|
||||
> "$TEMP_TASKS"
|
||||
|
||||
# 1. Analysiere Memory-Logs nach Beschreibungen
|
||||
if [ -d "$VAULT/memory/log" ]; then
|
||||
echo " 📝 Scanne Memory-Logs..."
|
||||
|
||||
find "$VAULT/memory/log" -name "*.md" -type f | while read log_file; do
|
||||
# Extrahiere Beschreibungen aus Session-Logs
|
||||
grep "^\*\*Beschreibung:\*\*" "$log_file" 2>/dev/null | \
|
||||
sed 's/\*\*Beschreibung:\*\* //' | \
|
||||
tr '[:upper:]' '[:lower:]' | \
|
||||
sed 's/[[:punct:]]//g' >> "$TEMP_TASKS" || true
|
||||
done
|
||||
fi
|
||||
|
||||
# 2. Analysiere Git-Commit-Messages (falls Vault ein Git-Repo ist)
|
||||
if [ -d "$VAULT/.git" ]; then
|
||||
echo " 🔗 Scanne Git-Commits (letzte 30 Tage)..."
|
||||
|
||||
git -C "$VAULT" log --since="30 days ago" --pretty=format:"%s" 2>/dev/null | \
|
||||
grep -iE '(add|create|implement|fix|update|improve)' | \
|
||||
tr '[:upper:]' '[:lower:]' | \
|
||||
sed 's/[[:punct:]]//g' >> "$TEMP_TASKS" || true
|
||||
fi
|
||||
|
||||
# 3. Zähle Wiederholungen und erstelle Proposals
|
||||
if [ -s "$TEMP_TASKS" ]; then
|
||||
echo " 🎯 Analysiere Muster (Threshold: ${THRESHOLD}x)..."
|
||||
|
||||
# Finde Tasks die >= THRESHOLD mal vorkommen
|
||||
sort "$TEMP_TASKS" | uniq -c | sort -rn | \
|
||||
awk -v threshold="$THRESHOLD" '$1 >= threshold {$1=""; print $0}' | \
|
||||
sed 's/^ *//' | \
|
||||
while IFS= read -r task_pattern; do
|
||||
|
||||
# Skip wenn leer oder zu kurz
|
||||
[ -z "$task_pattern" ] && continue
|
||||
WORD_COUNT=$(echo "$task_pattern" | wc -w | xargs)
|
||||
[ "$WORD_COUNT" -lt 2 ] && continue
|
||||
|
||||
# Generiere Skill-Namen aus Pattern
|
||||
SKILL_NAME=$(echo "$task_pattern" | \
|
||||
head -c 50 | \
|
||||
tr ' ' '-' | \
|
||||
tr -cd '[:alnum:]-' | \
|
||||
sed 's/--*/-/g' | \
|
||||
sed 's/^-//' | \
|
||||
sed 's/-$//')
|
||||
|
||||
# Verhindere zu generische Namen
|
||||
if echo "$SKILL_NAME" | grep -qE '^(add|create|fix|update|implement)$'; then
|
||||
continue
|
||||
fi
|
||||
|
||||
DATE=$(date +%Y-%m-%d)
|
||||
PROPOSAL_FILE="$PROPOSALS/${DATE}_${SKILL_NAME}.md"
|
||||
|
||||
# Erstelle Proposal nur wenn noch nicht vorhanden
|
||||
if [ ! -f "$PROPOSAL_FILE" ]; then
|
||||
COUNT=$(grep -c "$task_pattern" "$TEMP_TASKS")
|
||||
|
||||
cat > "$PROPOSAL_FILE" <<EOF
|
||||
---
|
||||
status: proposed
|
||||
created: $DATE
|
||||
trigger: ${COUNT}x wiederholte Aufgabe
|
||||
---
|
||||
|
||||
# Skill-Proposal: ${SKILL_NAME}
|
||||
|
||||
**Erstellt:** $DATE
|
||||
**Trigger:** ${COUNT}x in letzten 30 Tagen erkannt
|
||||
|
||||
## Erkanntes Muster
|
||||
|
||||
**Wiederholte Aufgabe:**
|
||||
> ${task_pattern}
|
||||
|
||||
**Häufigkeit:** ${COUNT}x
|
||||
|
||||
## Vorgeschlagener Skill
|
||||
|
||||
### Name
|
||||
\`${SKILL_NAME}\`
|
||||
|
||||
### Beschreibung (TODO)
|
||||
<!--
|
||||
Beschreibe in max. 200 Zeichen was dieser Skill tut.
|
||||
CRITICAL: Diese Beschreibung wird für Auto-Invocation genutzt.
|
||||
-->
|
||||
|
||||
### Argument-Hint (TODO)
|
||||
\`<required-arg> [optional-arg]\`
|
||||
|
||||
### Allowed-Tools (TODO)
|
||||
\`Read, Write, Edit, Glob, Grep\`
|
||||
|
||||
## Implementation (TODO)
|
||||
|
||||
### Schritt 1: Template erstellen
|
||||
<!-- Nutze skill-creator oder erstelle manuell -->
|
||||
|
||||
### Schritt 2: Prompt schreiben
|
||||
<!-- Definiere was der Skill genau tut -->
|
||||
|
||||
### Schritt 3: Testen
|
||||
<!-- Teste mit echtem Use-Case -->
|
||||
|
||||
### Schritt 4: Dokumentieren
|
||||
<!-- Füge zu vault-index.md hinzu -->
|
||||
|
||||
## Entscheidung
|
||||
|
||||
- [ ] **Umsetzen** → Skill erstellen
|
||||
- [ ] **Verwerfen** → Proposal löschen
|
||||
- [ ] **Später** → In proposals/ belassen
|
||||
|
||||
## Notizen
|
||||
<!-- Zusätzliche Gedanken/Kontext -->
|
||||
|
||||
EOF
|
||||
echo " ✨ Neues Proposal erstellt: ${SKILL_NAME} (${COUNT}x erkannt)"
|
||||
fi
|
||||
done
|
||||
|
||||
# Zeige Zusammenfassung
|
||||
TOTAL_PROPOSALS=$(find "$PROPOSALS" -name "*.md" -type f | wc -l | xargs)
|
||||
NEW_PROPOSALS=$(find "$PROPOSALS" -name "${DATE}_*.md" -type f | wc -l | xargs)
|
||||
|
||||
echo ""
|
||||
echo "✅ Skill-Detection abgeschlossen"
|
||||
echo " - Neue Proposals: $NEW_PROPOSALS"
|
||||
echo " - Gesamt offen: $TOTAL_PROPOSALS"
|
||||
|
||||
if [ "$NEW_PROPOSALS" -gt 0 ]; then
|
||||
echo ""
|
||||
echo "📋 Neue Proposals:"
|
||||
find "$PROPOSALS" -name "${DATE}_*.md" -type f -exec basename {} .md \; | sed "s/^${DATE}_/ - /"
|
||||
fi
|
||||
else
|
||||
echo "ℹ️ Keine wiederholten Aufgaben gefunden (keine Daten in Memory-Logs)"
|
||||
fi
|
||||
|
||||
# Cleanup
|
||||
rm -f "$TEMP_TASKS"
|
||||
|
||||
echo ""
|
||||
echo "Tipp: Reviewe Proposals mit: vault-proposals"
|
||||
69
scripts/log-session.sh
Executable file
69
scripts/log-session.sh
Executable file
@ -0,0 +1,69 @@
|
||||
#!/bin/bash
|
||||
# Automatisches Logging nach jeder Claude-Session
|
||||
# Aufruf: ./log-session.sh <projekt-name> <kurzbeschreibung>
|
||||
|
||||
set -e
|
||||
|
||||
DATE=$(date +%Y-%m-%d)
|
||||
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
|
||||
PROJECT="${1:-unknown-project}"
|
||||
DESC="${2:-No description provided}"
|
||||
|
||||
VAULT="$HOME/Work/claude-vault"
|
||||
LOG_DIR="$VAULT/memory/log"
|
||||
LOG_FILE="$LOG_DIR/${DATE}_session.md"
|
||||
|
||||
# Erstelle Log-Directory falls nicht vorhanden
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
# Erstelle Log-File mit Header falls neu
|
||||
if [ ! -f "$LOG_FILE" ]; then
|
||||
cat > "$LOG_FILE" <<EOF
|
||||
# Session Log: ${DATE}
|
||||
|
||||
Auto-generiert via log-session.sh
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Append zu heutigem Log (statt separate Files pro Session)
|
||||
cat >> "$LOG_FILE" <<EOF
|
||||
|
||||
---
|
||||
|
||||
## Session: ${TIMESTAMP}
|
||||
**Projekt:** ${PROJECT}
|
||||
**Beschreibung:** ${DESC}
|
||||
|
||||
### Verwendete Skills
|
||||
<!-- Auto-detected via git log (falls Projekt ein Git-Repo ist) -->
|
||||
EOF
|
||||
|
||||
# Versuche Git-History zu extrahieren (falls Projekt ein Repo ist)
|
||||
PROJECT_PATH="$HOME/.claude/projects/$(echo "$PROJECT" | sed 's|/|-|g')"
|
||||
if [ -d "$PROJECT_PATH/.git" ]; then
|
||||
git -C "$PROJECT_PATH" log --since="30 minutes ago" --pretty=format:"- %s" 2>/dev/null >> "$LOG_FILE" || echo "<!-- Keine Git-History gefunden -->" >> "$LOG_FILE"
|
||||
else
|
||||
echo "<!-- Projekt hat kein Git-Repository -->" >> "$LOG_FILE"
|
||||
fi
|
||||
|
||||
cat >> "$LOG_FILE" <<EOF
|
||||
|
||||
|
||||
### Wichtige Entscheidungen
|
||||
<!-- TODO: Manuell ergänzen nach Session -->
|
||||
-
|
||||
|
||||
### Lessons Learned
|
||||
<!-- TODO: Manuell ergänzen nach Session -->
|
||||
-
|
||||
|
||||
### Follow-up Tasks
|
||||
<!-- TODO: Verknüpfe mit TaskList -->
|
||||
-
|
||||
|
||||
EOF
|
||||
|
||||
echo "✅ Session geloggt: $LOG_FILE"
|
||||
echo ""
|
||||
echo "Tipp: Ergänze manuell 'Wichtige Entscheidungen' und 'Lessons Learned' im Log."
|
||||
echo " Öffne mit: code $LOG_FILE"
|
||||
110
scripts/setup-cron.sh
Executable file
110
scripts/setup-cron.sh
Executable file
@ -0,0 +1,110 @@
|
||||
#!/bin/bash
|
||||
# Richtet alle automatischen Wartungs-Jobs ein
|
||||
# WICHTIG: Einmalig ausführen, dann via Cron automatisch
|
||||
|
||||
set -e
|
||||
|
||||
VAULT="$HOME/Work/claude-vault"
|
||||
|
||||
echo "⚙️ Richte Cron-Jobs für Claude-Vault ein..."
|
||||
echo ""
|
||||
|
||||
# Prüfe ob Scripts existieren und ausführbar sind
|
||||
SCRIPTS=(
|
||||
"weekly-health-check.sh"
|
||||
"analyze-skill-usage.sh"
|
||||
"detect-skill-proposals.sh"
|
||||
"sync-project-memory.sh"
|
||||
"update-dashboard.sh"
|
||||
)
|
||||
|
||||
echo "🔍 Prüfe Scripts..."
|
||||
for script in "${SCRIPTS[@]}"; do
|
||||
SCRIPT_PATH="$VAULT/scripts/$script"
|
||||
if [ ! -f "$SCRIPT_PATH" ]; then
|
||||
echo " ❌ Fehlt: $script"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x "$SCRIPT_PATH" ]; then
|
||||
echo " 🔧 Mache ausführbar: $script"
|
||||
chmod +x "$SCRIPT_PATH"
|
||||
else
|
||||
echo " ✅ OK: $script"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "📋 Sichere aktuelle Crontab..."
|
||||
crontab -l > /tmp/crontab.backup 2>/dev/null || echo "# Neue Crontab" > /tmp/crontab.backup
|
||||
|
||||
# Prüfe ob Claude-Vault Cron-Jobs bereits existieren
|
||||
if grep -q "# Claude-Vault Automatisierung" /tmp/crontab.backup; then
|
||||
echo "⚠️ Cron-Jobs bereits installiert!"
|
||||
echo ""
|
||||
echo "Möchtest du die Cron-Jobs neu installieren? (y/N)"
|
||||
read -r response
|
||||
if [[ ! "$response" =~ ^[Yy]$ ]]; then
|
||||
echo "Abgebrochen."
|
||||
rm /tmp/crontab.backup
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Entferne alte Claude-Vault Einträge
|
||||
echo "🗑️ Entferne alte Cron-Jobs..."
|
||||
sed -i.bak '/# Claude-Vault Automatisierung/,/^$/d' /tmp/crontab.backup
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "➕ Füge neue Cron-Jobs hinzu..."
|
||||
|
||||
# Füge neue Cron-Jobs hinzu
|
||||
cat >> /tmp/crontab.backup <<EOF
|
||||
|
||||
# Claude-Vault Automatisierung
|
||||
# Auto-generiert via setup-cron.sh am $(date +%Y-%m-%d)
|
||||
|
||||
# Montag 09:00 - Weekly Health Check + Skill-Usage-Matrix
|
||||
0 9 * * 1 $VAULT/scripts/weekly-health-check.sh >> $VAULT/memory/log/cron.log 2>&1 && $VAULT/scripts/analyze-skill-usage.sh >> $VAULT/memory/log/cron.log 2>&1
|
||||
|
||||
# Montag 10:00 - Skill-Proposal Detection
|
||||
0 10 * * 1 $VAULT/scripts/detect-skill-proposals.sh >> $VAULT/memory/log/cron.log 2>&1
|
||||
|
||||
# Täglich 20:00 - Projekt-Memory Sync
|
||||
0 20 * * * $VAULT/scripts/sync-project-memory.sh >> $VAULT/memory/log/cron.log 2>&1
|
||||
|
||||
# Täglich 21:00 - Dashboard Update
|
||||
0 21 * * * $VAULT/scripts/update-dashboard.sh >> $VAULT/memory/log/cron.log 2>&1
|
||||
|
||||
EOF
|
||||
|
||||
# Crontab installieren
|
||||
echo ""
|
||||
echo "💾 Installiere Crontab..."
|
||||
crontab /tmp/crontab.backup
|
||||
|
||||
echo ""
|
||||
echo "✅ Cron-Jobs erfolgreich installiert!"
|
||||
echo ""
|
||||
echo "📅 Zeitplan:"
|
||||
echo " - Montag 09:00: Health Check + Skill-Usage-Matrix"
|
||||
echo " - Montag 10:00: Skill-Proposal Detection"
|
||||
echo " - Täglich 20:00: Projekt-Memory Sync"
|
||||
echo " - Täglich 21:00: Dashboard Update"
|
||||
echo ""
|
||||
echo "🔍 Prüfe Installation:"
|
||||
echo " crontab -l"
|
||||
echo ""
|
||||
echo "📝 Logs:"
|
||||
echo " tail -f $VAULT/memory/log/cron.log"
|
||||
echo ""
|
||||
echo "🗑️ Deinstallieren:"
|
||||
echo " crontab -e # Manuell Claude-Vault Sektion löschen"
|
||||
|
||||
# Erstelle Cron-Log-File falls nicht vorhanden
|
||||
touch "$VAULT/memory/log/cron.log"
|
||||
|
||||
echo ""
|
||||
echo "Tipp: Teste Scripts manuell bevor Cron läuft:"
|
||||
echo " $VAULT/scripts/weekly-health-check.sh"
|
||||
echo " $VAULT/scripts/analyze-skill-usage.sh"
|
||||
195
scripts/update-dashboard.sh
Executable file
195
scripts/update-dashboard.sh
Executable file
@ -0,0 +1,195 @@
|
||||
#!/bin/bash
|
||||
# Aktualisiert memory/dashboard.md mit aktuellen Statistiken
|
||||
|
||||
set -e
|
||||
|
||||
VAULT="$HOME/Work/claude-vault"
|
||||
DASHBOARD="$VAULT/memory/dashboard.md"
|
||||
|
||||
echo "📊 Aktualisiere Dashboard..."
|
||||
|
||||
# Berechne Statistiken
|
||||
TOTAL_LOGS=$(find "$VAULT/memory/log" -name "*.md" -type f 2>/dev/null | wc -l | xargs)
|
||||
LOGS_THIS_WEEK=$(find "$VAULT/memory/log" -name "*.md" -type f -mtime -7 2>/dev/null | wc -l | xargs)
|
||||
TOTAL_PROPOSALS=$(find "$VAULT/skills/proposals" -name "*.md" -type f 2>/dev/null | wc -l | xargs)
|
||||
PATTERNS_COUNT=$(grep -c "^## " "$VAULT/memory/patterns.md" 2>/dev/null || echo 0)
|
||||
TOTAL_SKILLS=$(find "$VAULT/skills" -name "SKILL.md" -type f 2>/dev/null | wc -l | xargs)
|
||||
TOTAL_AGENTS=$(find "$VAULT/agents" -name "*.md" -type f 2>/dev/null | wc -l | xargs)
|
||||
TOTAL_PROJECTS=$(find "$VAULT/projects" -mindepth 1 -maxdepth 1 -type d 2>/dev/null | wc -l | xargs)
|
||||
|
||||
# Erstelle Dashboard falls nicht vorhanden
|
||||
if [ ! -f "$DASHBOARD" ]; then
|
||||
cat > "$DASHBOARD" <<'EOF'
|
||||
# Vault Dashboard
|
||||
**Letzte Aktualisierung:** AUTO_UPDATE_DATE
|
||||
|
||||
Zentraler Überblick über Claude-Vault Aktivität und Gesundheit.
|
||||
|
||||
---
|
||||
|
||||
## 📊 Aktivität (Letzte 30 Tage)
|
||||
|
||||
### Sessions
|
||||
- **Gesamt:** AUTO_TOTAL_LOGS
|
||||
- **Diese Woche:** AUTO_LOGS_THIS_WEEK
|
||||
- **Durchschnitt/Tag:** AUTO_AVG_PER_DAY
|
||||
|
||||
### Skill-Nutzung (Top 5)
|
||||
<!-- Auto-generated via analyze-skill-usage.sh -->
|
||||
AUTO_TOP_SKILLS
|
||||
|
||||
---
|
||||
|
||||
## 🗂️ Ressourcen
|
||||
|
||||
### Skills
|
||||
- **Total:** AUTO_TOTAL_SKILLS
|
||||
- **League-Planner (lp-*):** AUTO_LP_SKILLS
|
||||
- **Generic:** AUTO_GENERIC_SKILLS
|
||||
|
||||
### Agents
|
||||
- **Total:** AUTO_TOTAL_AGENTS
|
||||
|
||||
### Projekte (Aktiv)
|
||||
- **Total:** AUTO_TOTAL_PROJECTS
|
||||
|
||||
AUTO_PROJECT_LIST
|
||||
|
||||
---
|
||||
|
||||
## 💾 Memory-Gesundheit
|
||||
|
||||
### Logs
|
||||
- **Total:** AUTO_TOTAL_LOGS
|
||||
- **Diese Woche:** AUTO_LOGS_THIS_WEEK
|
||||
- **Archiviert:** AUTO_ARCHIVED_LOGS
|
||||
|
||||
### Patterns
|
||||
- **Extrahiert:** AUTO_PATTERNS_COUNT
|
||||
- **Letzte Distillation:** AUTO_LAST_DISTILL
|
||||
|
||||
### Skill-Proposals
|
||||
- **Offen:** AUTO_TOTAL_PROPOSALS
|
||||
- **Umgesetzt:** AUTO_IMPLEMENTED_PROPOSALS
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Wartung
|
||||
|
||||
### Nächste Tasks
|
||||
- [ ] /vault-janitor distill (monatlich)
|
||||
- [ ] sync-project-memory.sh (täglich via Cron)
|
||||
- [ ] detect-skill-proposals.sh (wöchentlich via Cron)
|
||||
- [ ] analyze-skill-usage.sh (wöchentlich via Cron)
|
||||
|
||||
### Letzte Runs
|
||||
- **vault-janitor:** AUTO_LAST_JANITOR
|
||||
- **sync-projects:** AUTO_LAST_SYNC
|
||||
- **skill-detection:** AUTO_LAST_SKILL_DETECT
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Handlungsempfehlungen
|
||||
|
||||
AUTO_RECOMMENDATIONS
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Berechne zusätzliche Metriken
|
||||
LP_SKILLS=$(grep -l "^name: lp-" "$VAULT"/skills/*/SKILL.md 2>/dev/null | wc -l | xargs)
|
||||
GENERIC_SKILLS=$((TOTAL_SKILLS - LP_SKILLS))
|
||||
ARCHIVED_LOGS=$(find "$VAULT/memory/log/archive" -name "*.md" -type f 2>/dev/null | wc -l | xargs)
|
||||
AVG_PER_DAY="0.0"
|
||||
if [ "$TOTAL_LOGS" -gt 0 ]; then
|
||||
AVG_PER_DAY=$(echo "scale=1; $LOGS_THIS_WEEK / 7" | bc)
|
||||
fi
|
||||
|
||||
# Projekt-Liste
|
||||
PROJECT_LIST=""
|
||||
if [ -d "$VAULT/projects" ]; then
|
||||
PROJECT_LIST=$(find "$VAULT/projects" -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | sed 's/^/- /' | paste -sd '\n' -)
|
||||
fi
|
||||
|
||||
# Top Skills (aus skill-usage-matrix.md falls vorhanden)
|
||||
TOP_SKILLS="1. (Führe analyze-skill-usage.sh aus)"
|
||||
if [ -f "$VAULT/memory/skill-usage-matrix.md" ]; then
|
||||
TOP_SKILLS=$(grep "^1\. " "$VAULT/memory/skill-usage-matrix.md" 2>/dev/null | head -5 | paste -sd '\n' - || echo "1. (Keine Daten)")
|
||||
fi
|
||||
|
||||
# Letzte Runs (aus Script-Modification-Times)
|
||||
LAST_JANITOR="Never"
|
||||
LAST_SYNC="Never"
|
||||
LAST_SKILL_DETECT="Never"
|
||||
|
||||
if [ -f "$VAULT/memory/patterns.md" ]; then
|
||||
LAST_JANITOR=$(stat -f "%Sm" -t "%Y-%m-%d %H:%M" "$VAULT/memory/patterns.md" 2>/dev/null || echo "Never")
|
||||
fi
|
||||
|
||||
if [ -f "$VAULT/memory/skill-usage-matrix.md" ]; then
|
||||
LAST_SKILL_DETECT=$(stat -f "%Sm" -t "%Y-%m-%d %H:%M" "$VAULT/memory/skill-usage-matrix.md" 2>/dev/null || echo "Never")
|
||||
fi
|
||||
|
||||
# Handlungsempfehlungen generieren
|
||||
RECOMMENDATIONS=""
|
||||
if [ "$LOGS_THIS_WEEK" -eq 0 ]; then
|
||||
RECOMMENDATIONS="${RECOMMENDATIONS}- ⚠️ **Keine Logs diese Woche** → Session-Logging aktivieren mit \`claude-done\`\n"
|
||||
fi
|
||||
|
||||
if [ "$TOTAL_PROPOSALS" -gt 0 ]; then
|
||||
RECOMMENDATIONS="${RECOMMENDATIONS}- 💡 **${TOTAL_PROPOSALS} offene Skill-Proposals** → Reviewen mit \`vault-proposals\`\n"
|
||||
fi
|
||||
|
||||
if [ "$PATTERNS_COUNT" -lt 5 ]; then
|
||||
RECOMMENDATIONS="${RECOMMENDATIONS}- 📚 **Wenig Patterns extrahiert** → \`/vault-janitor distill\` ausführen\n"
|
||||
fi
|
||||
|
||||
if [ -z "$RECOMMENDATIONS" ]; then
|
||||
RECOMMENDATIONS="✅ Alles im grünen Bereich!"
|
||||
fi
|
||||
|
||||
# Ersetze Platzhalter im Dashboard
|
||||
sed -i.bak \
|
||||
-e "s|AUTO_UPDATE_DATE|$(date +%Y-%m-%d\ %H:%M)|" \
|
||||
-e "s|AUTO_TOTAL_LOGS|${TOTAL_LOGS}|g" \
|
||||
-e "s|AUTO_LOGS_THIS_WEEK|${LOGS_THIS_WEEK}|g" \
|
||||
-e "s|AUTO_AVG_PER_DAY|${AVG_PER_DAY}|" \
|
||||
-e "s|AUTO_TOTAL_SKILLS|${TOTAL_SKILLS}|" \
|
||||
-e "s|AUTO_LP_SKILLS|${LP_SKILLS}|" \
|
||||
-e "s|AUTO_GENERIC_SKILLS|${GENERIC_SKILLS}|" \
|
||||
-e "s|AUTO_TOTAL_AGENTS|${TOTAL_AGENTS}|" \
|
||||
-e "s|AUTO_TOTAL_PROJECTS|${TOTAL_PROJECTS}|" \
|
||||
-e "s|AUTO_ARCHIVED_LOGS|${ARCHIVED_LOGS}|" \
|
||||
-e "s|AUTO_PATTERNS_COUNT|${PATTERNS_COUNT}|" \
|
||||
-e "s|AUTO_TOTAL_PROPOSALS|${TOTAL_PROPOSALS}|" \
|
||||
-e "s|AUTO_IMPLEMENTED_PROPOSALS|0|" \
|
||||
-e "s|AUTO_LAST_DISTILL|${LAST_JANITOR}|" \
|
||||
-e "s|AUTO_LAST_JANITOR|${LAST_JANITOR}|" \
|
||||
-e "s|AUTO_LAST_SYNC|${LAST_SYNC}|" \
|
||||
-e "s|AUTO_LAST_SKILL_DETECT|${LAST_SKILL_DETECT}|" \
|
||||
"$DASHBOARD"
|
||||
|
||||
# Ersetze dynamische Listen (komplexer)
|
||||
awk -v top_skills="$TOP_SKILLS" '
|
||||
/AUTO_TOP_SKILLS/ {print top_skills; next}
|
||||
{print}
|
||||
' "$DASHBOARD" > "$DASHBOARD.tmp" && mv "$DASHBOARD.tmp" "$DASHBOARD"
|
||||
|
||||
awk -v project_list="$PROJECT_LIST" '
|
||||
/AUTO_PROJECT_LIST/ {print project_list; next}
|
||||
{print}
|
||||
' "$DASHBOARD" > "$DASHBOARD.tmp" && mv "$DASHBOARD.tmp" "$DASHBOARD"
|
||||
|
||||
awk -v recs="$RECOMMENDATIONS" '
|
||||
/AUTO_RECOMMENDATIONS/ {printf "%s\n", recs; next}
|
||||
{print}
|
||||
' "$DASHBOARD" > "$DASHBOARD.tmp" && mv "$DASHBOARD.tmp" "$DASHBOARD"
|
||||
|
||||
rm -f "$DASHBOARD.bak" "$DASHBOARD.tmp"
|
||||
|
||||
echo "✅ Dashboard aktualisiert: $DASHBOARD"
|
||||
echo ""
|
||||
echo "Quick Stats:"
|
||||
echo " - Skills: $TOTAL_SKILLS ($LP_SKILLS lp-*, $GENERIC_SKILLS generic)"
|
||||
echo " - Logs: $TOTAL_LOGS total, $LOGS_THIS_WEEK diese Woche"
|
||||
echo " - Proposals: $TOTAL_PROPOSALS offen"
|
||||
echo " - Patterns: $PATTERNS_COUNT extrahiert"
|
||||
192
scripts/weekly-health-check.sh
Executable file
192
scripts/weekly-health-check.sh
Executable file
@ -0,0 +1,192 @@
|
||||
#!/bin/bash
|
||||
# Wöchentlicher Health-Check + Snapshot
|
||||
# Wird automatisch jeden Montag via Cron ausgeführt
|
||||
|
||||
set -e
|
||||
|
||||
VAULT="$HOME/Work/claude-vault"
|
||||
DATE=$(date +%Y-%m-%d)
|
||||
SNAPSHOT="$VAULT/memory/snapshots/${DATE}_weekly-health.md"
|
||||
|
||||
echo "🏥 Erstelle Weekly Health Check..."
|
||||
|
||||
mkdir -p "$VAULT/memory/snapshots"
|
||||
|
||||
# Berechne Statistiken
|
||||
TOTAL_SKILLS=$(find "$VAULT/skills" -name "SKILL.md" -type f 2>/dev/null | wc -l | xargs)
|
||||
LP_SKILLS=$(grep -l "^name: lp-" "$VAULT"/skills/*/SKILL.md 2>/dev/null | wc -l | xargs)
|
||||
GENERIC_SKILLS=$((TOTAL_SKILLS - LP_SKILLS))
|
||||
TOTAL_AGENTS=$(find "$VAULT/agents" -name "*.md" -type f 2>/dev/null | wc -l | xargs)
|
||||
TOTAL_LOGS=$(find "$VAULT/memory/log" -name "*.md" -type f 2>/dev/null | wc -l | xargs)
|
||||
LOGS_LAST_7=$(find "$VAULT/memory/log" -name "*.md" -type f -mtime -7 2>/dev/null | wc -l | xargs)
|
||||
TOTAL_SNAPSHOTS=$(find "$VAULT/memory/snapshots" -name "*.md" -type f 2>/dev/null | wc -l | xargs)
|
||||
PATTERNS_COUNT=$(grep -c "^## " "$VAULT/memory/patterns.md" 2>/dev/null || echo 0)
|
||||
TOTAL_PROPOSALS=$(find "$VAULT/skills/proposals" -name "*.md" -type f 2>/dev/null | wc -l | xargs)
|
||||
|
||||
# Projekt-Liste
|
||||
PROJECT_LIST=""
|
||||
if [ -d "$VAULT/projects" ]; then
|
||||
PROJECT_LIST=$(find "$VAULT/projects" -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | sed 's/^/- /')
|
||||
fi
|
||||
|
||||
# Erstelle Snapshot
|
||||
cat > "$SNAPSHOT" <<EOF
|
||||
# Vault Health Check
|
||||
**Datum:** $DATE
|
||||
**Typ:** Weekly Health Check
|
||||
|
||||
Auto-generiert via weekly-health-check.sh
|
||||
|
||||
---
|
||||
|
||||
## 📊 Statistiken
|
||||
|
||||
### Skills
|
||||
- **Total:** ${TOTAL_SKILLS}
|
||||
- **League-Planner (lp-*):** ${LP_SKILLS}
|
||||
- **Generic:** ${GENERIC_SKILLS}
|
||||
|
||||
**Alle Skills:**
|
||||
EOF
|
||||
|
||||
# Liste alle Skills
|
||||
find "$VAULT/skills" -name "SKILL.md" -type f | while read skill_file; do
|
||||
SKILL_NAME=$(grep "^name:" "$skill_file" | head -1 | cut -d' ' -f2)
|
||||
echo "- \`${SKILL_NAME}\`" >> "$SNAPSHOT"
|
||||
done
|
||||
|
||||
cat >> "$SNAPSHOT" <<EOF
|
||||
|
||||
### Agents
|
||||
- **Total:** ${TOTAL_AGENTS}
|
||||
|
||||
**Alle Agents:**
|
||||
EOF
|
||||
|
||||
# Liste alle Agents
|
||||
find "$VAULT/agents" -name "*.md" -type f -exec basename {} .md \; | while read agent_name; do
|
||||
echo "- \`${agent_name}\`" >> "$SNAPSHOT"
|
||||
done
|
||||
|
||||
cat >> "$SNAPSHOT" <<EOF
|
||||
|
||||
### Memory
|
||||
- **Logs (Total):** ${TOTAL_LOGS}
|
||||
- **Logs (Letzte 7 Tage):** ${LOGS_LAST_7}
|
||||
- **Snapshots:** ${TOTAL_SNAPSHOTS}
|
||||
- **Patterns:** ${PATTERNS_COUNT}
|
||||
|
||||
### Projekte
|
||||
${PROJECT_LIST}
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Wartungs-Empfehlungen
|
||||
|
||||
EOF
|
||||
|
||||
# Generiere Empfehlungen
|
||||
RECOMMENDATIONS_FOUND=false
|
||||
|
||||
if [ "$LOGS_LAST_7" -eq 0 ]; then
|
||||
echo "### 🔴 Keine Logs diese Woche" >> "$SNAPSHOT"
|
||||
echo "" >> "$SNAPSHOT"
|
||||
echo "**Problem:** Keine Session-Logs in den letzten 7 Tagen gefunden." >> "$SNAPSHOT"
|
||||
echo "" >> "$SNAPSHOT"
|
||||
echo "**Lösung:** Session-Logging aktivieren:" >> "$SNAPSHOT"
|
||||
echo "\`\`\`bash" >> "$SNAPSHOT"
|
||||
echo "claude-done <projekt> \"<beschreibung>\"" >> "$SNAPSHOT"
|
||||
echo "\`\`\`" >> "$SNAPSHOT"
|
||||
echo "" >> "$SNAPSHOT"
|
||||
RECOMMENDATIONS_FOUND=true
|
||||
fi
|
||||
|
||||
if [ "$TOTAL_PROPOSALS" -gt 0 ]; then
|
||||
echo "### 💡 Offene Skill-Proposals" >> "$SNAPSHOT"
|
||||
echo "" >> "$SNAPSHOT"
|
||||
echo "**Problem:** ${TOTAL_PROPOSALS} Skill-Proposals warten auf Review/Umsetzung." >> "$SNAPSHOT"
|
||||
echo "" >> "$SNAPSHOT"
|
||||
echo "**Proposals:**" >> "$SNAPSHOT"
|
||||
find "$VAULT/skills/proposals" -name "*.md" -type f -exec basename {} \; | sed 's/^/- /' >> "$SNAPSHOT"
|
||||
echo "" >> "$SNAPSHOT"
|
||||
echo "**Lösung:** Proposals reviewen und entweder umsetzen oder verwerfen." >> "$SNAPSHOT"
|
||||
echo "\`\`\`bash" >> "$SNAPSHOT"
|
||||
echo "vault-proposals # Alias zum Anzeigen aller Proposals" >> "$SNAPSHOT"
|
||||
echo "\`\`\`" >> "$SNAPSHOT"
|
||||
echo "" >> "$SNAPSHOT"
|
||||
RECOMMENDATIONS_FOUND=true
|
||||
fi
|
||||
|
||||
if [ "$PATTERNS_COUNT" -lt 5 ]; then
|
||||
echo "### 📚 Wenig Patterns extrahiert" >> "$SNAPSHOT"
|
||||
echo "" >> "$SNAPSHOT"
|
||||
echo "**Problem:** Nur ${PATTERNS_COUNT} Patterns in patterns.md dokumentiert." >> "$SNAPSHOT"
|
||||
echo "" >> "$SNAPSHOT"
|
||||
echo "**Lösung:** Memory-Distillation durchführen:" >> "$SNAPSHOT"
|
||||
echo "\`\`\`bash" >> "$SNAPSHOT"
|
||||
echo "/vault-janitor distill" >> "$SNAPSHOT"
|
||||
echo "\`\`\`" >> "$SNAPSHOT"
|
||||
echo "" >> "$SNAPSHOT"
|
||||
RECOMMENDATIONS_FOUND=true
|
||||
fi
|
||||
|
||||
if ! $RECOMMENDATIONS_FOUND; then
|
||||
echo "✅ **Alles im grünen Bereich!**" >> "$SNAPSHOT"
|
||||
echo "" >> "$SNAPSHOT"
|
||||
echo "Keine dringenden Wartungsaufgaben gefunden." >> "$SNAPSHOT"
|
||||
fi
|
||||
|
||||
cat >> "$SNAPSHOT" <<EOF
|
||||
|
||||
---
|
||||
|
||||
## 📋 Nächste Schritte
|
||||
|
||||
### Sofort (heute)
|
||||
- [ ] Session-Logs aus dieser Woche reviewen
|
||||
- [ ] Skill-Proposals durchsehen
|
||||
|
||||
### Diese Woche
|
||||
- [ ] \`/vault-janitor distill\` ausführen (falls > 5 neue Logs)
|
||||
- [ ] Projekt-MEMORYs synchronisieren (\`vault-sync\`)
|
||||
|
||||
### Diesen Monat
|
||||
- [ ] Anti-Patterns aktualisieren (neue Fehler dokumentieren)
|
||||
- [ ] Skill-Usage-Matrix analysieren (welche Skills werden oft genutzt?)
|
||||
- [ ] Obsolete Skills identifizieren (welche Skills werden nie genutzt?)
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Quick Links
|
||||
|
||||
- [Dashboard](../dashboard.md)
|
||||
- [Patterns](../patterns.md)
|
||||
- [Skill-Usage-Matrix](../skill-usage-matrix.md)
|
||||
- [Vault-Index](../../vault-index.md)
|
||||
|
||||
---
|
||||
|
||||
**Generiert:** $(date +%Y-%m-%d\ %H:%M:%S)
|
||||
EOF
|
||||
|
||||
echo "✅ Health-Check erstellt: $SNAPSHOT"
|
||||
echo ""
|
||||
echo "📊 Quick Stats:"
|
||||
echo " - Skills: $TOTAL_SKILLS ($LP_SKILLS lp-*, $GENERIC_SKILLS generic)"
|
||||
echo " - Logs: $TOTAL_LOGS total, $LOGS_LAST_7 letzte 7 Tage"
|
||||
echo " - Proposals: $TOTAL_PROPOSALS offen"
|
||||
echo " - Patterns: $PATTERNS_COUNT extrahiert"
|
||||
echo ""
|
||||
|
||||
# Zeige Empfehlungen im Terminal
|
||||
if [ "$LOGS_LAST_7" -eq 0 ]; then
|
||||
echo "⚠️ Keine Session-Logs diese Woche → \`claude-done\` nutzen"
|
||||
fi
|
||||
|
||||
if [ "$TOTAL_PROPOSALS" -gt 0 ]; then
|
||||
echo "💡 $TOTAL_PROPOSALS Skill-Proposals → \`vault-proposals\` reviewen"
|
||||
fi
|
||||
|
||||
if [ "$PATTERNS_COUNT" -lt 5 ]; then
|
||||
echo "📚 Nur $PATTERNS_COUNT Patterns → \`/vault-janitor distill\` ausführen"
|
||||
fi
|
||||
@ -1,8 +1,8 @@
|
||||
---
|
||||
name: vault-janitor
|
||||
description: Organisiert den Vault durch Memory Distillation, Skill Audits und Integrity Checks. Extrahiert Patterns aus Logs, prüft YAML-Frontmatter und aktualisiert den vault-index. Für Wartung und Aufräumen.
|
||||
argument-hint: [mode: distill|audit|index|check]
|
||||
allowed-tools: Read, Write, Edit, Glob, Grep
|
||||
argument-hint: [mode: distill|audit|propose|sync-projects|anti-pattern-detect|stats|index|check]
|
||||
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
|
||||
---
|
||||
|
||||
# ROLE
|
||||
@ -10,32 +10,249 @@ Du bist der "Hausmeister" dieses Vaults. Dein Ziel ist es, die Entropie zu verri
|
||||
|
||||
# AUFGABEN-MODI
|
||||
|
||||
## 1. Memory Distillation (Wissen destillieren)
|
||||
- Scanne den Ordner `/memory/log/` nach neuen Einträgen.
|
||||
- Identifiziere wiederkehrende Muster oder Lösungen, die mehr als zweimal vorkommen.
|
||||
- Schlage Updates für `/memory/patterns.md` vor, um dieses Wissen zu formalisieren.
|
||||
- Verschiebe bearbeitete Logs in einen Unterordner `/memory/log/archive/`.
|
||||
## 1. Memory Distillation (distill) - Wissen destillieren
|
||||
**Ziel:** Extrahiere Patterns aus Session-Logs
|
||||
|
||||
## 2. Skill Audit (Fähigkeiten-Check)
|
||||
- Überprüfe alle `SKILL.md` Dateien im `/skills/` Verzeichnis.
|
||||
- Achte auf:
|
||||
- Korrekte YAML-Frontmatter (name, description).
|
||||
- Widersprüchliche Anweisungen zwischen verschiedenen Skills.
|
||||
- Veraltete Tech-Stacks (z.B. wenn eine neue React-Version als Standard in den Patterns definiert wurde).
|
||||
**Vorgehen:**
|
||||
1. Scanne `/memory/log/` nach allen .md Dateien (außer archive/)
|
||||
2. Identifiziere wiederkehrende Muster:
|
||||
- Gleiche Probleme (z.B. "N+1 Query" mehrfach erwähnt)
|
||||
- Bewährte Lösungen (z.B. "select_related nutzen")
|
||||
- Lessons Learned (aus "Lessons Learned" Sektionen)
|
||||
3. Für jedes Pattern (≥2 Vorkommen):
|
||||
- Erstelle/Update Eintrag in `/memory/patterns.md`
|
||||
- Format: `## Pattern-Name`, `**Problem:**`, `**Lösung:**`, `**Beispiel:**`
|
||||
4. Verschiebe verarbeitete Logs nach `/memory/log/archive/`
|
||||
5. Erstelle Report: Wieviele Patterns extrahiert, wieviele Logs archiviert
|
||||
|
||||
## 3. Indexing & README
|
||||
- Aktualisiere die `vault-index.md` (oder das Haupt-README des Vaults).
|
||||
- Liste alle verfügbaren Skills und deren Kurzbeschreibung auf, damit Claude (und der User) sofort sehen, was vorhanden ist.
|
||||
**Trigger:** Wenn ≥5 neue Logs vorhanden
|
||||
|
||||
## 4. Integrity Check
|
||||
- Prüfe, ob alle Symlinks noch funktionieren (falls möglich).
|
||||
- Suche nach "Leichen": Dateien ohne Inhalt oder Fragmente von abgebrochenen Sessions.
|
||||
---
|
||||
|
||||
## 2. Skill Audit (audit) - Fähigkeiten-Check
|
||||
**Ziel:** Validiere alle Skills auf Konsistenz und Aktualität
|
||||
|
||||
**Vorgehen:**
|
||||
1. Finde alle `SKILL.md` Files in `/skills/`
|
||||
2. Prüfe YAML-Frontmatter:
|
||||
- Zeile 2: `name:` vorhanden? (lowercase, hyphens only)
|
||||
- Zeile 3: `description:` vorhanden? (max 200 Zeichen)
|
||||
- `argument-hint:` vorhanden?
|
||||
- `allowed-tools:` vorhanden?
|
||||
3. Prüfe auf Konflikte:
|
||||
- Duplikate (gleicher `name:` mehrfach)
|
||||
- Widersprüchliche Anweisungen (z.B. Django 5.0 vs 5.2)
|
||||
4. Prüfe Aktualität:
|
||||
- Veraltete Tech-Stacks (vs. `/knowledge/preferences.md`)
|
||||
- Verweise auf nicht-existierende Dateien
|
||||
5. Erstelle Report mit Findings (Critical, Warning, Info)
|
||||
|
||||
**Output:** Audit-Report in `/memory/snapshots/YYYY-MM-DD_skill-audit.md`
|
||||
|
||||
---
|
||||
|
||||
## 3. Skill-Proposal-Detection (propose) - NEU ✨
|
||||
**Ziel:** Erkenne wiederholte Aufgaben und schlage neue Skills vor
|
||||
|
||||
**Vorgehen:**
|
||||
1. Scanne `/memory/log/` nach Beschreibungen (Session-Logs)
|
||||
2. Identifiziere wiederkehrende Aufgaben (≥3x gleiche Worte/Pattern)
|
||||
3. Für jedes Pattern:
|
||||
- Generiere Skill-Name aus Aufgabe (lowercase, hyphens)
|
||||
- Erstelle Proposal in `/skills/proposals/YYYY-MM-DD_<skill-name>.md`
|
||||
- Template nutzen mit Trigger-Count und erkanntem Muster
|
||||
4. Verhindere Duplikate (skip wenn Proposal bereits existiert)
|
||||
5. Report: Wieviele neue Proposals erstellt
|
||||
|
||||
**Beispiel:**
|
||||
- 3x "Django Model für X erstellen" → Proposal: `django-model-generator`
|
||||
- 4x "API Tests schreiben" → Proposal: `api-test-generator`
|
||||
|
||||
**Output:** Proposals in `/skills/proposals/`, Report mit Links
|
||||
|
||||
---
|
||||
|
||||
## 4. Projekt-Sync (sync-projects) - NEU ✨
|
||||
**Ziel:** Synchronisiere alle Projekt-MEMORYs zwischen Claude und Vault
|
||||
|
||||
**Vorgehen:**
|
||||
1. Rufe `scripts/sync-project-memory.sh` auf (via Bash tool)
|
||||
2. Lese Output und parse Sync-Status
|
||||
3. Erstelle Zusammenfassung:
|
||||
- Wieviele Projekte synchronisiert
|
||||
- Welche Richtung (Claude → Vault oder Vault → Claude)
|
||||
- Konflikte (falls vorhanden)
|
||||
4. Report mit Details
|
||||
|
||||
**Trigger:** Täglich via Cron, oder manuell bei Multi-Projekt-Arbeit
|
||||
|
||||
---
|
||||
|
||||
## 5. Anti-Pattern-Detection (anti-pattern-detect) - NEU ✨
|
||||
**Ziel:** Lerne aus Fehlern und dokumentiere Anti-Patterns
|
||||
|
||||
**Vorgehen:**
|
||||
1. Scanne `/memory/log/` nach Fehler-Indikatoren:
|
||||
- Worte: "Fehler", "Bug", "Problem", "Fix", "Gefixt"
|
||||
- Code-Snippets mit "ERROR", "FAILED"
|
||||
2. Für jeden Fehler:
|
||||
- Extrahiere Kontext (was war das Problem?)
|
||||
- Prüfe ob bereits in `/knowledge/anti-patterns/` dokumentiert
|
||||
- Falls NEU: Erstelle Proposal für Anti-Pattern
|
||||
3. Nutze `/knowledge/anti-patterns/template.md`
|
||||
4. Output: Proposals in `/knowledge/anti-patterns/proposals/`
|
||||
|
||||
**Beispiel:**
|
||||
- 3x "Circular Import Problem" → Anti-Pattern: `circular-imports.md`
|
||||
- 2x "Missing Migration" → Anti-Pattern: `missing-migrations.md`
|
||||
|
||||
---
|
||||
|
||||
## 6. Statistics (stats) - NEU ✨
|
||||
**Ziel:** Zeige Vault-Gesundheit und Aktivität
|
||||
|
||||
**Vorgehen:**
|
||||
1. Berechne Metriken:
|
||||
- **Skills:** Total, lp-*, generic
|
||||
- **Agents:** Total
|
||||
- **Memory:** Logs (total, letzte 7 Tage), Snapshots, Patterns-Count
|
||||
- **Projekte:** Total, Liste
|
||||
- **Proposals:** Offen, umgesetzt
|
||||
2. Erstelle Snapshot in `/memory/snapshots/YYYY-MM-DD_stats.md`
|
||||
3. Zeige Top 5 Skills (aus skill-usage-matrix.md falls vorhanden)
|
||||
4. Zeige Trends (vs. letzter Stats-Snapshot)
|
||||
5. Empfehlungen basierend auf Metriken:
|
||||
- Keine Logs → "Session-Logging aktivieren"
|
||||
- Viele Proposals → "Proposals reviewen"
|
||||
- Wenig Patterns → "Distillation durchführen"
|
||||
|
||||
**Output:** Stats-Snapshot + Terminal-Summary
|
||||
|
||||
---
|
||||
|
||||
## 7. Indexing & README (index)
|
||||
**Ziel:** Aktualisiere vault-index.md mit allen Skills/Agents
|
||||
|
||||
**Vorgehen:**
|
||||
1. Scanne `/skills/` für alle SKILL.md
|
||||
2. Extrahiere aus YAML: name, description
|
||||
3. Gruppiere: League-Planner Skills (lp-*), Generic Skills
|
||||
4. Scanne `/agents/` für alle .md Files
|
||||
5. Aktualisiere `/vault-index.md`:
|
||||
- Skill-Tabelle mit Name, Beschreibung, Prefix
|
||||
- Agent-Tabelle mit Name, Beschreibung, Model, Farbe
|
||||
6. Sortiere alphabetisch innerhalb Gruppen
|
||||
|
||||
**Output:** Aktualisiertes vault-index.md
|
||||
|
||||
---
|
||||
|
||||
## 8. Integrity Check (check)
|
||||
**Ziel:** Finde kaputte Links und "Leichen"
|
||||
|
||||
**Vorgehen:**
|
||||
1. Suche leere Dateien: `find /memory /skills /knowledge -size 0`
|
||||
2. Suche TODO-Marker: `grep -r "TODO" /skills /knowledge`
|
||||
3. Prüfe Symlinks (falls möglich via Bash):
|
||||
- `ls -l ~/.claude/skills/` → Alle grün?
|
||||
- `ls -l ~/.claude/agents/` → Alle grün?
|
||||
4. Suche nach Fragmenten:
|
||||
- .md Dateien ohne Frontmatter (in /skills)
|
||||
- Proposals ohne Entscheidung (status: proposed, >30 Tage alt)
|
||||
5. Report mit Findings
|
||||
|
||||
**Output:** Integrity-Report in `/memory/snapshots/YYYY-MM-DD_integrity.md`
|
||||
|
||||
# ARBEITSWEISE
|
||||
1. **Analyse:** Erstelle zuerst eine Liste der vorgeschlagenen Änderungen.
|
||||
2. **Bestätigung:** Warte auf das "OK" des Users, bevor du Dateien löschst oder verschiebst.
|
||||
3. **Ausführung:** Nutze das Filesystem-MCP, um die Änderungen durchzuführen.
|
||||
4. **Dokumentation:** Erstelle einen kurzen Report, was aufgeräumt wurde (z.B. "3 Logs archiviert, Skill 'coder' aktualisiert").
|
||||
|
||||
## Standard-Workflow (alle Modi)
|
||||
1. **Analyse:**
|
||||
- Scanne relevante Dateien
|
||||
- Identifiziere Änderungen/Probleme
|
||||
- Erstelle Preview-Liste
|
||||
|
||||
2. **Bestätigung:**
|
||||
- Zeige Zusammenfassung: "X Patterns gefunden, Y Logs archivieren"
|
||||
- **WICHTIG:** Warte auf User-OK bei destruktiven Aktionen (Löschen, Verschieben)
|
||||
- Bei Read-Only-Modi (stats, check): Kein OK nötig
|
||||
|
||||
3. **Ausführung:**
|
||||
- Nutze Read/Write/Edit/Glob/Grep Tools
|
||||
- Bei Scripts: Nutze Bash Tool (`scripts/*.sh`)
|
||||
- Atomic Changes: Eine Änderung pro File
|
||||
|
||||
4. **Dokumentation:**
|
||||
- Erstelle Report (wo? siehe Modi-Beschreibung)
|
||||
- Terminal-Summary für User
|
||||
- Update Dashboard (falls relevant)
|
||||
|
||||
## Modus-Auswahl
|
||||
**Explizit:** `/vault-janitor <mode>`
|
||||
- `/vault-janitor distill` → Memory Distillation
|
||||
- `/vault-janitor audit` → Skill Audit
|
||||
- `/vault-janitor propose` → Skill-Proposal-Detection
|
||||
- `/vault-janitor sync-projects` → Projekt-Sync
|
||||
- `/vault-janitor anti-pattern-detect` → Anti-Pattern-Detection
|
||||
- `/vault-janitor stats` → Statistiken
|
||||
- `/vault-janitor index` → Indexing
|
||||
- `/vault-janitor check` → Integrity Check
|
||||
|
||||
**Implizit (basierend auf User-Anfrage):**
|
||||
- "Vault aufräumen" → distill + check
|
||||
- "Wissen konsolidieren" → distill
|
||||
- "Skills validieren" → audit
|
||||
- "Zeige Statistiken" → stats
|
||||
- "Neue Skills vorschlagen" → propose
|
||||
- "Sync Projekte" → sync-projects
|
||||
|
||||
**Default (kein Argument):** Zeige Übersicht aller Modi + letzte Runs
|
||||
|
||||
## Output-Locations
|
||||
|
||||
| Modus | Output |
|
||||
|-------|--------|
|
||||
| distill | `/memory/patterns.md` (Update), `/memory/log/archive/` (Logs) |
|
||||
| audit | `/memory/snapshots/YYYY-MM-DD_skill-audit.md` |
|
||||
| propose | `/skills/proposals/YYYY-MM-DD_<skill-name>.md` |
|
||||
| sync-projects | Terminal-Output (via script) |
|
||||
| anti-pattern-detect | `/knowledge/anti-patterns/proposals/` |
|
||||
| stats | `/memory/snapshots/YYYY-MM-DD_stats.md` + Terminal |
|
||||
| index | `/vault-index.md` (Update) |
|
||||
| check | `/memory/snapshots/YYYY-MM-DD_integrity.md` |
|
||||
|
||||
# BEST PRACTICES
|
||||
|
||||
## Pattern-Extraktion (distill)
|
||||
- **Threshold:** Min. 2 Vorkommen für Pattern
|
||||
- **Format:** Konsistent mit bestehendem patterns.md
|
||||
- **Kategorien:** Django, API, Testing, Performance, Security, etc.
|
||||
|
||||
## Skill-Proposals (propose)
|
||||
- **Threshold:** Min. 3 Vorkommen für Proposal
|
||||
- **Naming:** Beschreibend, nicht zu generisch ("django-model" ✅, "create-thing" ❌)
|
||||
- **Dedupe:** Prüfe ob ähnliches Proposal bereits existiert
|
||||
|
||||
## Anti-Patterns (anti-pattern-detect)
|
||||
- **Qualität > Quantität:** Nur echte Fehler, keine false positives
|
||||
- **Template nutzen:** `/knowledge/anti-patterns/template.md`
|
||||
- **Kontext:** Problem + Warum schlecht + Bessere Alternative
|
||||
|
||||
# KOMMANDO-TRIGGER
|
||||
Wenn der User sagt "Vault aufräumen", "Janitor-Mode" oder "Wissen konsolidieren", starte diesen Workflow.
|
||||
|
||||
**Explizit:**
|
||||
- `/vault-janitor distill`
|
||||
- `/vault-janitor stats`
|
||||
- etc.
|
||||
|
||||
**Implizit:**
|
||||
- "Vault aufräumen"
|
||||
- "Janitor-Mode"
|
||||
- "Wissen konsolidieren"
|
||||
- "Zeige Vault-Statistiken"
|
||||
- "Prüfe Skills auf Fehler"
|
||||
- "Schlage neue Skills vor"
|
||||
|
||||
**Automatisch (via Cron):**
|
||||
- Wöchentlich: stats (Montag 09:00)
|
||||
- Monatlich: distill (vom User getriggert)
|
||||
- Bei Bedarf: audit, check
|
||||
Loading…
x
Reference in New Issue
Block a user