Communitygithub.com

omc-doctor

Diagnostiziere und behebe Installationsprobleme von oh-my-claude-code.

Was ist omc-doctor?

Die Skill 'omc-doctor' ist ein Diagnose- und Reparaturwerkzeug für die oh-my-claude-code (OMC) Plugin-Installation in Claude Code. Sie führt eine Reihe automatisierter Prüfungen durch, um häufige Probleme zu identifizieren, wie z.B. fehlende oder veraltete Plugin-Versionen, veraltete Hooks in settings.json, alte Bash-Skripte, fehlerhafte oder fehlende CLAUDE.md-Dateien, fehlende Node.js-Laufzeit, nicht beschreibbare Konfigurationsverzeichnisse und überflüssige veraltete Cache-Einträge. Die Ergebnisse werden in einem übersichtlichen Report mit Status (OK/WARN/CRITICAL) dargestellt. Nach Benutzerbestätigung können die gefundenen Probleme automatisch behoben werden, z.B. durch Entfernen veralteter Hooks, Bereinigen des Caches oder Aktualisieren der CLAUDE.md. Die Skill unterstützt Claude Code auf verschiedenen Plattformen und respektiert die Umgebungsvariable 'CLAUDE_CONFIG_DIR'.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/omc-doctor

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

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.sh
  • bash ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/hooks/persistent-mode.sh
  • bash ${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.sh oder stop-continuation.sh existieren: 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ühre omc update oder omc setup aus)

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 node fehlt 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.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

agent-doc-discipline

Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and carrying a why, steps before reference, one meaning in one home, no restating what the environment already says. Mandatory at drydock seed generation and the launch C5 sediment pass; opt-in for any other agent-facing doc edit. The companion of minimal-code-discipline: that one disciplines code, this one disciplines papers.

ai-slop-cleaner

Clean AI-generated code slop with a regression-safe, deletion-first workflow and optional reviewer-only mode

ask

Process-first advisor routing for Claude, Codex, Gemini, Antigravity, Grok, or Cursor via `omc ask`, with artifact capture and no raw CLI assembly

ask-navigator

Shipyard

autopilot

Full autonomous execution from idea to working code

autoresearch

Stateful single-mission improvement loop with strict evaluator contract, markdown decision logs, and max-runtime stop behavior

cancel

Cancel any active OMC mode (autopilot, ralph, ultragoal, swarm, ultrapilot, pipeline, team) and clean up retired legacy state

configure-notifications

Configure notification integrations (Telegram, Discord, Slack) via natural language

debug

Diagnose the current OMC session or repo state using logs, traces, state, and focused reproduction

deepinit

Deep codebase initialization with hierarchical AGENTS.md documentation

deep-interview

Socratic deep interview with mathematical ambiguity gating before explicit execution approval

drydock

Lay the keel of the shipyard harness in any repo — the 4-pillar shared environment (Context, Rules, Tools, Standards) across 5 surfaces (CLAUDE.md, skills, design-system, mcp/cli, shared context) so that every human and agent inherits the same design language and anyone can ship. Run once per repo; re-run with --check to audit drift.

execute

Carry an approved task through to working, verified code

external-context

Invoke parallel document-specialist agents for external web searches and documentation lookup

graph

Deterministic orchestration graph runtime - declarative DAG pipelines with journal-based crash recovery

harbor

Harbor intake for external work — the captain only handles unresolved decisions. Sweeps incoming issues and PRs, verifies every claim before disposition, reuses every decision already made, and hands the maintainer a docket whose pending items each carry one question with options, recommendation, impact and evidence. Agent-autonomous for facts and for actions covered by standing authorization; signed for every new judgment. Never merges.

hud

Configure HUD display options (layout, presets, display elements)

launch

Shipyard

loft

Loft the shape before cutting steel — answer a design question that prose cannot settle by building a throwaway artifact: a pure logic module in a clickable shell, or structurally different UI variants behind one route. The captain reacts to the artifact; the answer folds into the decision; the artifact never docks. Use when a design question stalls in words, when a navigator map carries a loft ticket, or when a spec discussion reaches

minimal-code-discipline

YAGNI-ladder coding discipline for writing changes — existence-first, reuse before writing, dependency ladder, shortest correct diff, with non-negotiables that must never be minimized away

Verwandte Skills