Health check
Diagnose OpenDeshi plugin runtime health — verify CONDUCTOR.md injection, odeshi-helper availability, jq dependency, plugin manifest, SubagentStart hook wiring.From its SKILL.md
npx -y skills add wiicode/odeshi --skill health-checkAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.0 KB, as published. Nobody here has run it
/odeshi:health-check
Empirical runtime probe of the OpenDeshi plugin install. This skill is not a structural file-reading audit (that lives in scripts/validate-plugin.sh). Instead, it invokes real odeshi-helper subprocesses, captures their stdout/stderr/exit codes, and reports what the runtime actually does — proof of liveness, not proof of layout.
Run this when an adopter reports "the manager protocol does not seem to be loaded" or "expert profiles are not being injected". It distinguishes broken wiring from misconfigured environment.
Protocol
Execute the following commands in order using the Bash tool. Capture stdout, stderr, and exit code for each, and report them under a header per probe. Do not paraphrase the outputs — quote them verbatim. After all five probes complete, emit a single-line summary: HEALTH: OK if every probe met its assertion, otherwise HEALTH: DEGRADED — <comma-separated probe IDs that failed>.
Probe 1 — CONDUCTOR.md injection (the load-bearing one)
Invoke the SessionStart hook surface directly and capture both streams:
odeshi-helper conductor-inject 2>&1
Assertions:
- Exit code is
0. - Either stdout contains valid JSON with
.hookSpecificOutput.hookEventName == "SessionStart"AND a non-empty.hookSpecificOutput.additionalContext(CONDUCTOR.md found and emitted), OR stderr contains the literal substringOpenDeshi: CONDUCTOR.md missing(CONDUCTOR.md absent — degraded but expected when uninstalled). - If
additionalContextis non-empty, report its byte length (e.g., "additionalContext: 20146 bytes"). - If stderr has the missing-CONDUCTOR advisory, recommend the user verify
${CLAUDE_PLUGIN_ROOT}/CONDUCTOR.mdexists.
Probe 2 — odeshi-helper on PATH + executable
command -v odeshi-helper && [ -x "$(command -v odeshi-helper)" ] && echo "odeshi-helper: $(command -v odeshi-helper)"
Assertions:
- Exit code is
0. - Output names a path that resolves and is executable.
- If exit code is non-zero, report "odeshi-helper not on PATH — plugin not installed or PATH is missing the plugin shim".
Probe 3 — jq dependency
command -v jq && jq --version
Assertions:
- Exit code is
0. - jq version is reported. (
odeshi-helper conductor-injectdegrades gracefully without jq, but injection is silently skipped — adopter should know.) - If exit code is non-zero, report "jq missing — CONDUCTOR injection will be skipped; install via
brew install jqor equivalent".
Probe 4 — plugin.json sanity
cat "${CLAUDE_PLUGIN_ROOT:-.}/.claude-plugin/plugin.json" | jq -r '.name'
Assertions:
- Output is exactly
odeshi. - If output is anything else (including empty /
null), report.claude-plugin/plugin.jsonis corrupt or has a non-canonicalname.
Probe 5 — SubagentStart hook wires inject-profile
jq -r '.hooks.SubagentStart[]?.hooks[]?.command' "${CLAUDE_PLUGIN_ROOT:-.}/hooks/hooks.json" | grep -F 'odeshi-helper inject-profile'
Assertions:
- Exit code is
0(grep found at least one matching line). - The matched line is the SubagentStart entry that drives expert-profile injection. If absent, no expert profiles will reach spawned sub-agents.
Reporting
After running every probe, write a brief report covering:
-
The literal command for each probe and its captured exit code + first line of stdout/stderr.
-
Per-probe verdict: PASS / FAIL / DEGRADED.
-
The single-line summary:
HEALTH: OKorHEALTH: DEGRADED — <ids>. -
If any probe FAILed, name one remediation step (most-likely-cause first). Examples:
- Probe 1 emits
CONDUCTOR.md missing→ "Verify the plugin is installed at the expected root and CONDUCTOR.md is present. Try:ls ${CLAUDE_PLUGIN_ROOT}/CONDUCTOR.md." - Probe 2 fails → "Plugin not on PATH. Reinstall via
claude plugin install odeshi@opendeshior load viaclaude --plugin-dir /path/to/odeshiand reopen the session." - Probe 3 fails → "Install jq:
brew install jq(macOS) orapt install jq(Ubuntu)." - Probe 4 returns null → "
.claude-plugin/plugin.jsonis corrupt. Re-extract or reinstall the plugin." - Probe 5 finds no match → "SubagentStart hook missing. Inspect
hooks/hooks.jsonand verify theodeshi-helper inject-profileentry underSubagentStart."
- Probe 1 emits
Notes for the LLM running this skill
This skill is empirical: do not substitute structural reasoning ("the file exists, therefore the hook works") for actual command execution. The whole point is to detect runtime breakage that a layout audit misses — for example, odeshi-helper present on disk but blocked by a missing bin/lib/contracts.sh (the helper dies at startup; structural-only checks would say "everything looks fine"). The literal subprocess invocations above are the contract; do not skip any of them.