# Agent Healthcheck

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

- Skill: `omninode-ai/agent-healthcheck` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add omninode-ai/agent-healthcheck`
- Raw SKILL.md: https://api.skillmd.com/api/skills/omninode-ai/agent-healthcheck/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: OmniNode-ai (https://skillmd.com/u/omninode-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/omninode-ai/agent-healthcheck

---


# /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 in
`node_worker_stall_recovery` (omnimarket).

```bash
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 | escalated`
- `stall_reason`: non-empty string if stalled
- `checkpoint_path`: path written on recovery
- `redispatch_count`: number of redispatches performed
- `error`: error message if `status == 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`

