#!/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" < "$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" <> "$OUTPUT" else echo "" >> "$OUTPUT" fi # Cleanup rm -f "$TEMP_FILE" echo "✅ Skill-Usage-Matrix aktualisiert: $OUTPUT" echo "" echo "Statistiken:" cat "$OUTPUT" | grep "^- \*\*"