Skip to content
Automation
Skill

/doctor

System diagnostics and health checks for Diverga plugin. OpenClaw-style Check-Report-Fix pattern with 5-layer diagnostics. Triggers: /diverga:doctor, diverga doctor, system check, diagnose, 진단

From plugin
auto-empirical-research-skills
3.8k200 skills
Install
$ npx -y skills add brycewang-stanford/Auto-Empirical-Research-Skills --skill doctor --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/doctor

Context preview

The summary Claude sees to decide when to auto-load this skill.

System diagnostics and health checks for Diverga plugin. OpenClaw-style Check-Report-Fix pattern with 5-layer diagnostics. Triggers: /diverga:doctor, diverga doctor, system check, diagnose, 진단

SKILL.md

doctor.SKILL.md
name: doctor
description: |
  System diagnostics and health checks for Diverga plugin.
  OpenClaw-style Check-Report-Fix pattern with 5-layer diagnostics.
  Triggers: /diverga:doctor, diverga doctor, system check, diagnose, 진단
version: "12.0.1"

Diverga Doctor

**Version**: 11.1.0 **Trigger**: `/diverga:doctor`

Description

System diagnostics for the Diverga plugin. Checks plugin health, skill sync, hook enforcement, configuration validity, API keys, and project state. Reports issues with actionable fix commands.

Follows OpenClaw Check-Report-Fix pattern: every detected issue includes a fix recommendation.

Instructions

When user invokes `/diverga:doctor`, execute all 7 diagnostic layers sequentially and display results.

Layer 1: Plugin Health

**Check plugin registration:**

  • Read `~/.claude/plugins/installed_plugins.json`
  • Verify `diverga@diverga` entry exists
  • Extract version and install date

**Check config JSON validity:**

  • Read `~/.claude/plugins/diverga/config/diverga-config.json`
  • Verify it parses as valid JSON
  • Check required fields exist: `version`, `human_checkpoints`, `language`

**Report format:**

PLUGIN HEALTH
  Registration:    [PASS - diverga@diverga v11.1.0 | FAIL - not found in installed_plugins.json]
  Config file:     [PASS - valid JSON | FAIL - missing or invalid]
  Config fields:   [PASS - all required fields present | WARN - missing: field1, field2]

**Fix if FAIL:**

  • Registration missing: "Run: /plugin install diverga"
  • Config missing: "Run: /diverga:setup to regenerate configuration"
  • Config invalid JSON: "Config file is corrupted. Run: /diverga:setup to regenerate"

Layer 2: Skill Sync

**Check skill counts match between plugin and local cache:**

  • Use Glob to count directories in `~/.claude/plugins/diverga/skills/*/SKILL.md`
  • Use Glob to count directories in `~/.claude/skills/diverga-*/SKILL.md` (exclude `diverga-diverga` prefix duplication — count unique skill names)
  • Compare counts

**Check for missing skills in local cache:**

  • For each skill in plugin directory, check if corresponding `diverga-{name}` exists in local skills
  • List any missing skills

**Report format:**

SKILL SYNC
  Plugin skills:   [count] skills in plugin directory
  Local skills:    [count] skills in local cache
  Sync status:     [PASS - all synced | WARN - X skills missing locally]
  Missing:         [list of missing skill names, if any]

**Fix if WARN:**

  • "Missing local skills. To resync, reinstall the plugin or manually copy:"
  • For each missing skill: " cp -r ~/.claude/plugins/diverga/skills/{name} ~/.claude/skills/diverga-{name}"

Layer 3: Plugin Cache Sync

**Check that the plugin cache matches the installed version:**

  • Read `~/.claude/plugins/diverga/plugin.json` → extract `version`
  • Glob `~/.claude/plugins/cache/diverga/diverga/*/plugin.json` → list cached versions
  • Compare: cached version should match installed version
  • Check if cached version has `hooks/hooks.json`

**Report format:**

PLUGIN CACHE
  Installed version: [11.1.0 | FAIL - plugin.json missing]
  Cached version:    [11.1.0 | WARN - stale cache: 8.0.1 | FAIL - no cache found]
  Cache has hooks:   [PASS - hooks.json present | FAIL - hooks missing from cache]
  Cache has agents:  [PASS - agents/ present | WARN - agents/ missing]

**Fix if WARN/FAIL:**

  • Stale cache: "Plugin cache is outdated. Run in terminal:"
  REPO="/Volumes/External SSD/Projects/Diverga/Diverga-core"
  CACHE="$HOME/.claude/plugins/cache/diverga/diverga/11.1.0"
  rm -rf "$HOME/.claude/plugins/cache/diverga/diverga/8.0.1"
  mkdir -p "$CACHE"
  cp -R "$REPO"/{skills,agents,config,hooks,mcp,CLAUDE.md,AGENTS.md,README.md} "$CACHE/"
  cp "$REPO/.claude-plugin/plugin.json" "$CACHE/"
  • No hooks in cache: "Copy hooks manually: cp -R ~/.claude/plugins/diverga/hooks/ $CACHE/hooks/"
  • Restart Claude Code after cache update for changes to take effect

Layer 4: Hook Enforcement

**Check hook configuration:**

  • Read `~/.claude/plugins/diverga/hooks/hooks.json` → verify it exists and has `PreToolUse` entries
  • Check matchers include "Agent" and "Skill" (not "Task" — known bug in pre-11.1.0)
  • Read `~/.claude/settings.json` → check if hooks are also configured at global level
  • Test hook execution: Run `echo '{"tool_name":"Skill","tool_input":{"skill":"diverga:c1"}}' | node ~/.claude/plugins/diverga/hooks/prereq-enforcer.mjs` → verify it returns valid JSON with `continue` field

**Report format:**

HOOK ENFORCEMENT
  Plugin hooks.json: [PASS - exists with Agent+Skill matchers | FAIL - missing or wrong matchers]
  Global hooks:      [PASS - configured in settings.json | WARN - not in settings.json (relies on plugin)]
  Hook executable:   [PASS - returns valid JSON | FAIL - execution error]
  Matcher check:     [PASS - uses "Agent" | FAIL - uses stale "Task" matcher]

**Fix if issues found:**

  • Wrong matcher: 'Change "Task" to "Agent" in hooks.json — Claude Code uses "Agent" as tool name'
  • Not in settings.json: "Add hooks to ~/.claude/settings.json for reliable enforcement across sessions"
  • Execution error: "Check that better-sqlite3 is installed: cd ~/.claude/plugins/diverga/mcp && npm install"

Layer 5: Config Validity

**Deep validation of diverga-config.json:**

  • Read `~/.claude/plugins/diverga/config/diverga-config.json`
  • Check `version` field matches "11.1.0"
  • Check `human_checkpoints` object exists and has `enabled` (boolean) and `required` (array)
  • Check `language` is one of: "en", "ko", "auto"
  • Check `model_routing` has `high`, `medium`, `low` keys if present

**Report format:**

CONFIG VALIDITY
  Version field:   [PASS - 11.1.0 | WARN - version mismatch: found X.Y.Z]
  Checkpoints:     [PASS - configured | FAIL - missing or malformed]
  Language:        [PASS - "en" | WARN - unexpected value: "XX"]
  Model routing:   [PASS - configured | SKIP - not set (using defaults)]

**Fix if issues found:**

  • Version mismatch: "Config version X.Y.Z doesn't matc
Read more
Ships withauto-empirical-research-skills

📌 文档结构(2026-07-22 起): 本文件是中文默认入口 —— banner + badges + 信任面 + 9 阶段流水线速览 + 76 行合集总表。 每个合集的完整描述、按用途分组、精确数字、验证方法在 docs/CONTENT_ZH.md(扩展正文,总表行内的 → 直接跳转到对应锚点)。 English version: README-en.md · 中文扩展正文:docs/CONTENT_ZH.md · README-zh-CN.md 已弃用(重定向占位) 🌐 语言: English |

Get the whole plugin