Doctor Skill
Hinweis: Alle ~/.claude/... Pfade in dieser Anleitung respektieren CLAUDE_CONFIG_DIR, wenn diese Umgebungsvariable gesetzt ist.
Aufgabe: Installationsdiagnose durchführen
Du bist der OMC-Doktor – diagnostiziere und behebe Installationsprobleme.
Schritt 1: Plugin-Version prüfen
# Installierte und neueste Version ermitteln (plattformübergreifend)
node -e "const p=require('path'),f=require('fs'),h=require('os').homedir(),d=process.env.CLAUDE_CONFIG_DIR||p.join(h,'.claude'),b=p.join(d,'plugins','cache','omc','oh-my-claudecode');try{const v=f.readdirSync(b).filter(x=>/^\d/.test(x)).sort((a,c)=>a.localeCompare(c,void 0,{numeric:true}));console.log('Installiert:',v.length?v[v.length-1]:'(keine)')}catch{console.log('Installiert: (keine)')}"
npm view oh-my-claude-sisyphus version 2>/dev/null || echo "Neueste: (nicht verfügbar)"
Diagnose:
- Wenn keine Version installiert ist: KRITISCH – Plugin nicht installiert
- Wenn INSTALLIERT != NEUESTE: WARNUNG – veraltetes Plugin
- Wenn mehrere Versionen existieren: WARNUNG – veralteter Cache
Schritt 2: Prüfung auf veraltete Hooks in settings.json
Lese sowohl ${CLAUDE_CONFIG_DIR:-~/.claude}/settings.json (Profilebene) als auch ./.claude/settings.json (Projektebene) und prüfe, ob dort ein "hooks"-Schlüssel mit Einträgen wie den folgenden existiert:
bash ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/hooks/keyword-detector.shbash ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/hooks/persistent-mode.shbash ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/hooks/session-start.sh
Diagnose:
- Wenn gefunden: KRITISCH – veraltete Hooks verursachen Duplikate
Schritt 3: Prüfung auf veraltete Bash-Hook-Skripte
ls -la "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/hooks/*.sh 2>/dev/null
Diagnose:
- Wenn
keyword-detector.sh,persistent-mode.sh,session-start.shoderstop-continuation.shexistieren: WARNUNG – veraltete Skripte (können Verwirrung stiften)
Schritt 4: CLAUDE.md prüfen
# Prüfen, ob CLAUDE.md existiert
ls -la "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/CLAUDE.md 2>/dev/null
# Prüfen auf OMC-Markierungen (<!-- OMC:START --> ist die kanonische Markierung)
grep -q "<!-- OMC:START -->" "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/CLAUDE.md" 2>/dev/null && echo "Hat OMC-Konfiguration" || echo "Fehlende OMC-Konfiguration in CLAUDE.md"
# Prüfe Versionmarkierung in CLAUDE.md (oder deterministischer Begleiter) und vergleiche mit der neuesten installierten Plugin-Cache-Version
node -e "const p=require('path'),f=require('fs'),h=require('os').homedir(),d=process.env.CLAUDE_CONFIG_DIR||p.join(h,'.claude');const base=p.join(d,'CLAUDE.md');let baseContent='';try{baseContent=f.readFileSync(base,'utf8')}catch{};let candidates=[base];let referenced='';const importMatch=baseContent.match(/CLAUDE-[^ )]*\.md/);if(importMatch){referenced=p.join(d,importMatch[0]);candidates.push(referenced)}else{const defaultCompanion=p.join(d,'CLAUDE-omc.md');if(f.existsSync(defaultCompanion))candidates.push(defaultCompanion);try{const others=f.readdirSync(d).filter(n=>/^CLAUDE-.*\.md$/i.test(n)).sort().map(n=>p.join(d,n));for(const o of others){if(candidates.includes(o)===false)candidates.push(o)}}catch{}};let claudeV='(fehlt)';let claudeSource='(keine)';for(const file of candidates){try{const c=f.readFileSync(file,'utf8');const m=c.match(/<!--\s*OMC:VERSION:([^\s]+)\s*-->/i);if(m){claudeV=m[1];claudeSource=file;break}}catch{}};if(claudeV==='(fehlt)'&&candidates.length>0){claudeV='(fehlende Markierung)';claudeSource='durchsuchte deterministische CLAUDE-Quellen';};let pluginV='(keine)';try{const b=p.join(d,'plugins','cache','omc','oh-my-claudecode');const v=f.readdirSync(b).filter(x=>/^\d/.test(x)).sort((a,c)=>a.localeCompare(c,void 0,{numeric:true}));pluginV=v.length?v[v.length-1]:'(keine)';}catch{};console.log('CLAUDE.md OMC-Version:',claudeV);console.log('OMC-Versionsquelle:',claudeSource);console.log('Neueste gecachte Plugin-Version:',pluginV);if(claudeV==='(fehlt)'||claudeV==='(fehlende Markierung)'||pluginV==='(keine)'){console.log('VERSIONSPRÜFUNG ÜBERSPRUNGEN: fehlende CLAUDE-Markierung oder Plugin-Cache')}else if(claudeV===pluginV){console.log('VERSIONSPASSUNG: CLAUDE und Plugin-Cache sind synchron')}else{console.log('VERSIONSABWEICHUNG: CLAUDE.md und Plugin-Versionen unterscheiden sich')}"
# Prüfe Begleitdateien auf Datei-Split-Muster (z.B. CLAUDE-omc.md)
find "${CLAUDE_CONFIG_DIR:-$HOME/.claude}" -maxdepth 1 -type f -name 'CLAUDE-*.md' -print 2>/dev/null
while IFS= read -r f; do
grep -q "<!-- OMC:START -->" "$f" 2>/dev/null && echo "Hat OMC-Konfiguration in Begleiter: $f"
done < <(find "${CLAUDE_CONFIG_DIR:-$HOME/.claude}" -maxdepth 1 -type f -name 'CLAUDE-*.md' -print 2>/dev/null)
# Prüfe, ob CLAUDE.md auf eine Begleitdatei verweist
grep -o "CLAUDE-[^ )]*\.md" "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/CLAUDE.md" 2>/dev/null
Diagnose:
- Wenn CLAUDE.md fehlt: KRITISCH – CLAUDE.md nicht konfiguriert
- Wenn
<!-- OMC:START -->in CLAUDE.md gefunden: OK - Wenn
<!-- OMC:START -->in einer Begleitdatei (z.B.CLAUDE-omc.md) gefunden: OK – Datei-Split-Muster erkannt - Wenn keine OMC-Markierungen in CLAUDE.md oder einer Begleitdatei: WARNUNG – veraltete CLAUDE.md
- Wenn die
OMC:VERSION-Markierung bei der deterministischen CLAUDE-Quellenprüfung (Basis + referenzierte Begleiter) fehlt: WARNUNG – Aktualität der CLAUDE.md kann nicht überprüft werden - Wenn
CLAUDE.md OMC-Version!=Neueste gecachte Plugin-Version: WARNUNG – Versionsabweichung erkannt (führeomc updateoderomc setupaus)
Schritt 5: Ralph-Laufzeitvoraussetzungen prüfen
Ralph ist eine agentengesteuerte Persistenzschleife, kein kompiliertes Programm: Seine einzigen harten Laufzeitvoraussetzungen sind die Node-Laufzeit, die die Hook-Skripte von OMC ausführt (persistent-mode.mjs, keyword-detector.mjs), und ein beschreibbares Konfigurationsverzeichnis für Zustandsdateien wie ralph-state.json unter .omc/state/.
node --version || echo "Node für Ralph: FEHLT"
mkdir -p "${CLAUDE_CONFIG_DIR:-$HOME/.claude}" 2>/dev/null
touch "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.omc-write-probe" 2>/dev/null && rm -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.omc-write-probe" && echo "Konfigurationsverzeichnis beschreibbar" || echo "Konfigurationsverzeichnis NICHT beschreibbar"
Diagnose:
- Wenn Node läuft und eine Version ausgibt: OK – Ralph-Laufzeitvoraussetzung vorhanden
- Wenn
nodefehlt oder fehlschlägt: KRITISCH – OMC-Hooks und Ralph können ohne Node nicht ausgeführt werden (siehe https://nodejs.org für Installationsprogramme; nvm/fnm-Benutzer benötigen Node im PATH von nicht-interaktiven Shells) - Wenn das Konfigurationsverzeichnis nicht beschreibbar ist: WARNUNG – Ralph-Zustandspersistenz wird fehlschlagen, bis es beschreibbar ist
Schritt 6: Prüfung auf veralteten Plugin-Cache
# Versionen im Cache zählen (plattformübergreifend)
node -e "const p=require('path'),f=require('fs'),h=require('os').homedir(),d=process.env.CLAUDE_CONFIG_DIR||p.join(h,'.claude'),b=p.join(d,'plugins','cache','omc','oh-my-claudecode');try{const v=f.readdirSync(b).filter(x=>/^\d/.test(x));console.log(v.length+' Version(en):',v.join(', '))}catch{console.log('0 Versionen')}"
Diagnose:
- Wenn > 1 Version: WARNUNG – mehrere gecachte Versionen (Bereinigung empfohlen)
Schritt 7: Prüfung auf veraltete, per curl installierte Inhalte
Prüfe auf veraltete Agents, Befehle und Skills, die vor dem Plugin-System per curl installiert wurden. Wichtig: Markiere nur Dateien, deren Namen tatsächlich von Plugins bereitgestellten Namen entsprechen. Markiere NICHT benutzerdefinierte Agents/Befehle/Skills, die nichts mit OMC zu tun haben.
# Prüfe auf veraltetes Agents-Verzeichnis
ls -la "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/agents/ 2>/dev/null
# Prüfe auf veraltetes Commands-Verzeichnis
ls -la "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/commands/ 2>/dev/null
# Prüfe auf veraltetes Skills-Verzeichnis
ls -la "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/skills/ 2>/dev/null
Diagnose:
- Wenn
~/.claude/agents/existiert mit Dateien, die Plugin-Agent-Namen entsprechen: WARNUNG – veraltete Agents (jetzt vom Plugin bereitgestellt) - Wenn
~/.claude/commands/existiert mit Dateien, die Plugin-Befehl-Namen entsprechen: WARNUNG – veraltete Befehle (jetzt vom Plugin bereitgestellt) - Wenn
~/.claude/skills/existiert mit Dateien, die Plugin-Skill-Namen entsprechen: WARNUNG – veraltete Skills (jetzt vom Plugin bereitgestellt) - Wenn benutzerdefinierte Dateien existieren, die NICHT Plugin-Namen entsprechen: OK – dies sind benutzerdefinierte Inhalte, nicht markieren
Bekannte Plugin-Agent-Namen (in agents/ prüfen):
architect.md, document-specialist.md, explore.md, executor.md, debugger.md, planner.md, analyst.md, critic.md, verifier.md, test-engineer.md, designer.md, writer.md, qa-tester.md, scientist.md, security-reviewer.md, code-reviewer.md, git-master.md, code-simplifier.md
Bekannte Plugin-Skill-Namen (in skills/ prüfen):
ai-slop-cleaner, ask, autopilot, cancel, configure-notifications, deep-interview, deepinit, external-context, hud, omc-doctor, omc-setup, plan, project-session-manager, ralph, ralplan, release, skill, team, visual-verdict, wiki
Bekannte Plugin-Befehl-Namen (in commands/ prüfen):
deepsearch.md
Berichtsformat
Nachdem alle Prüfungen durchgeführt wurden, gib einen Bericht aus:
## OMC-Doktor-Bericht
### Zusammenfassung
[GESUND / PROBLEME GEFUNDEN]
### Prüfungen
| Prüfung | Status | Details |
|---------|--------|---------|
| Plugin-Version | OK/WARNUNG/KRITISCH | ... |
| Veraltete Hooks (settings.json) | OK/KRITISCH | ... |
| Veraltete Skripte (~/.claude/hooks/) | OK/WARNUNG | ... |
| CLAUDE.md | OK/WARNUNG/KRITISCH | ... |
| Ralph-Laufzeitvoraussetzungen (Node, Konfig.-Verz.) | OK/KRITISCH | ... |
| Plugin-Cache | OK/WARNUNG | ... |
| Veraltete Agents (~/.claude/agents/) | OK/WARNUNG | ... |
| Veraltete Befehle (~/.claude/commands/) | OK/WARNUNG | ... |
| Veraltete Skills (~/.claude/skills/) | OK/WARNUNG | ... |
### Gefundene Probleme
1. [Problembeschreibung]
2. [Problembeschreibung]
### Empfohlene Korrekturen
[Korrekturen basierend auf Problemen auflisten]
Auto-Korrektur (wenn Benutzer bestätigt)
Wenn Probleme gefunden wurden, frage den Benutzer: „Möchtest du, dass ich diese Probleme automatisch behebe?“
Wenn ja, wende die Korrekturen an:
Korrektur: Veraltete Hooks in settings.json
Entferne den Abschnitt "hooks" aus ${CLAUDE_CONFIG_DIR:-~/.claude}/settings.json (andere Einstellungen intakt lassen)
Korrektur: Veraltete Bash-Skripte
rm -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/hooks/keyword-detector.sh
rm -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/hooks/persistent-mode.sh
rm -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/hooks/session-start.sh
rm -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/hooks/stop-continuation.sh
Korrektur: Veraltetes Plugin
# Plugin-Cache leeren (plattformübergreifend)
node -e "const p=require('path'),f=require('fs'),d=process.env.CLAUDE_CONFIG_DIR||p.join(require('os').homedir(),'.claude'),b=p.join(d,'plugins','cache','omc','oh-my-claudecode');try{f.rmSync(b,{recursive:true,force:true});console.log('Plugin-Cache geleert. Starte Claude Code neu, um die neueste Version zu laden.')}catch{console.log('Kein Plugin-Cache gefunden')}"
Korrektur: Veralteter Cache (mehrere Versionen)
# Nur die neueste Version behalten (plattformübergreifend)
node -e "const p=require('path'),f=require('fs'),h=require('os').homedir(),d=process.env.CLAUDE_CONFIG_DIR||p.join(h,'.claude'),b=p.join(d,'plugins','cache','omc','oh-my-claudecode');try{const v=f.readdirSync(b).filter(x=>/^\d/.test(x)).sort((a,c)=>a.localeCompare(c,void 0,{numeric:true}));v.slice(0,-1).forEach(x=>f.rmSync(p.join(b,x),{recursive:true,force:true}));console.log('Entfernte',v.length-1,'alte Version(en)')}catch(e){console.log('Kein Cache zum Bereinigen')}"
Korrektur: Fehlende / Veraltete CLAUDE.md
Lade die neueste Version von GitHub herunter und schreibe sie nach ${CLAUDE_CONFIG_DIR:-~/.claude}/CLAUDE.md:
WebFetch(url: "https://raw.githubusercontent.com/Yeachan-Heo/oh-my-claudecode/main/docs/CLAUDE.md", prompt: "Gebe den vollständigen rohen Markdown-Inhalt genau so zurück, wie er ist")
Korrektur: Veraltete, per curl installierte Inhalte
Entferne die Verzeichnisse für veraltete Agents, Befehle und Skills (jetzt vom Plugin bereitgestellt):
# Zuerst ein Backup (optional – Benutzer fragen)
# mv "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/agents "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/agents.bak
# mv "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/commands "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/commands.bak
# mv "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/skills "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/skills.bak
# Oder direkt entfernen
rm -rf "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/agents
rm -rf "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/commands
rm -rf "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/skills
Hinweis: Nur entfernen, wenn diese Verzeichnisse oh-my-claudecode-bezogene Dateien enthalten. Wenn der Benutzer benutzerdefinierte Agents/Befehle/Skills hat, warne ihn und frage vor dem Entfernen.
Nach der Korrektur
Nachdem die Korrekturen angewendet wurden, informiere den Benutzer:
Korrekturen angewendet. Starte Claude Code neu, damit die Änderungen wirksam werden.