"Dispatch-only shim for agent stall detection and recovery. All detection and recovery logic lives in node_worker_stall_recovery (omnimarket). The skill parses args, builds the input envelope, dispatches to the node, and renders the receipt."
Resources
1Install
npx skillscat add omninode-ai/omniclaude/plugins-onex-skills-agent-healthcheck Install via the SkillsCat registry.
/onex:agent_healthcheck — dispatch-only shim
Skill ID: onex:agent_healthcheck · Backing node: omnimarket/src/omnimarket/nodes/node_worker_stall_recovery/
Routing Contract
- Classification: Deterministic
- Dispatch: single invocation of
node_worker_stall_recovery - No inline stall detection: all heuristics (inactivity, context overflow, rate limits, Bash long-timeout) live in the handler, not this skill
- Routing failure handling: on dispatch failure, raise
SkillRoutingError— surface it directly, do not produce prose
Dispatch
This skill is a thin shim — all stall detection and recovery logic lives innode_worker_stall_recovery (omnimarket).
INPUT_JSON='{"ticket_id":"<ticket_id>","agent_id":"<agent_id>","timeout_minutes":2,"context_threshold_pct":80,"max_redispatches":2,"dry_run":true}'
uv run onex run-node node_worker_stall_recovery --input "${INPUT_JSON}"The node returns ModelStallRecoveryResult:
status:healthy | stalled | recovered | failed | escalatedstall_reason: non-empty string if stalledcheckpoint_path: path written on recoveryredispatch_count: number of redispatches performederror: error message ifstatus == failed
Checkpoint and relaunch semantics are governed by the recovery protocol
implemented in the backing node. The backing node writes the recovery checkpoint, captures completed
and remaining work, and relaunches or redispatches a fresh agent when recovery
is required; this shim only forwards the invocation and returns the receipt.
Surface the JSON output directly. Do not implement detection inline.
Backing node: omnimarket/src/omnimarket/nodes/node_worker_stall_recovery/
Contract: node_worker_stall_recovery/contract.yaml