193 lines
5.7 KiB
Bash
Executable File
193 lines
5.7 KiB
Bash
Executable File
#!/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
|