From oj
Diagnoses OpenJunto plugin runtime health by probing CONDUCTOR.md injection, oj-helper availability, jq dependency, plugin manifest, and SubagentStart hook wiring.
How this skill is triggered — by the user, by Claude, or both
Slash command
/oj:health-checkThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Empirical runtime probe of the OpenJunto plugin install. This skill is **not** a structural file-reading audit (that lives in `scripts/validate-plugin.sh`). Instead, it invokes real `oj-helper` subprocesses, captures their stdout/stderr/exit codes, and reports what the runtime actually does — proof of liveness, not proof of layout.
Empirical runtime probe of the OpenJunto plugin install. This skill is not a structural file-reading audit (that lives in scripts/validate-plugin.sh). Instead, it invokes real oj-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.
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>.
Invoke the SessionStart hook surface directly and capture both streams:
oj-helper conductor-inject 2>&1
Assertions:
0..hookSpecificOutput.hookEventName == "SessionStart" AND a non-empty .hookSpecificOutput.additionalContext (CONDUCTOR.md found and emitted), OR stderr contains the literal substring OpenJunto: CONDUCTOR.md missing (CONDUCTOR.md absent — degraded but expected when uninstalled).additionalContext is non-empty, report its byte length (e.g., "additionalContext: 20146 bytes").${CLAUDE_PLUGIN_ROOT}/CONDUCTOR.md exists.command -v oj-helper && [ -x "$(command -v oj-helper)" ] && echo "oj-helper: $(command -v oj-helper)"
Assertions:
0.command -v jq && jq --version
Assertions:
0.oj-helper conductor-inject degrades gracefully without jq, but injection is silently skipped — adopter should know.)brew install jq or equivalent".cat "${CLAUDE_PLUGIN_ROOT:-.}/.claude-plugin/plugin.json" | jq -r '.name'
Assertions:
oj.null), report .claude-plugin/plugin.json is corrupt or has a non-canonical name.jq -r '.hooks.SubagentStart[]?.hooks[]?.command' "${CLAUDE_PLUGIN_ROOT:-.}/hooks/hooks.json" | grep -F 'oj-helper inject-profile'
Assertions:
0 (grep found at least one matching line).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: OK or HEALTH: DEGRADED — <ids>.
If any probe FAILed, name one remediation step (most-likely-cause first). Examples:
CONDUCTOR.md missing → "Verify the plugin is installed at the expected root and CONDUCTOR.md is present. Try: ls ${CLAUDE_PLUGIN_ROOT}/CONDUCTOR.md."claude plugin install openjunto/oj-claude and reopen the session."brew install jq (macOS) or apt install jq (Ubuntu).".claude-plugin/plugin.json is corrupt. Re-extract or reinstall the plugin."hooks/hooks.json and verify the oj-helper inject-profile entry under SubagentStart."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, oj-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.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub openjunto/oj-claude --plugin oj