{
  "skill_name": "meerkat-chat",
  "evals": [
    {
      "id": 0,
      "name": "waiting-register",
      "prompt": "What needs my attention on the board? List it by urgency, and check whether the loop is healthy.",
      "expected_output": "Opens doctor + console once, leads with a waiting digest (questions, pending acceptance), then health; no board writes.",
      "files": []
    },
    {
      "id": 1,
      "name": "stuck-progress",
      "prompt": "A card has been sitting in in_progress for a long time. I want to know where it is stuck, who is handling it, and who moves next.",
      "expected_output": "Reads the card with comments/reports/relations/sessions, reports status, holder, heartbeat age, last activity, what is left and the next actor; never heartbeats/claims/steals.",
      "files": []
    },
    {
      "id": 2,
      "name": "answer-awaiting",
      "prompt": "Answer the question on that awaiting card for me; go with whatever you think is best.",
      "expected_output": "Finds the open question, reads the whole round, shows the exact comment body and `--as-human comment add` command before writing, and knows awaiting auto-requeues (do not move again).",
      "files": []
    },
    {
      "id": 3,
      "name": "accept-review",
      "prompt": "A card just went to in_review; accept it for me.",
      "expected_output": "Reads acceptance_mode, the current-round report and review verdict, shows coverage and the exact close, declines without evidence, and re-reads after the write.",
      "files": []
    },
    {
      "id": 4,
      "name": "watch-queue",
      "prompt": "Keep checking and notify me when a card needs me.",
      "expected_output": "Holds a watch over taskctl console in the session that owns it: one events follow --after <rev> --hold 600000 run in the runtime's background execution (foreground if it has none), filtered with --event task_moved:changes.to=awaiting, --event comment_added:changes.kind=question and --event task_delivered so only records that need the human end it early; the command returns at the first matching event or after ten minutes with none, and the console is read as the baseline, after every hold and after a degraded read — never polled in between, and --idle is not used as a substitute because the 15-second heartbeat resets it. Announces only new/changed/resolved items with the dedupe keys and never reprints the queue, answers the human before announcing and never talks over them, starts no second hold while one runs, refuses to delegate the watch to a subagent or background script (a subagent may take one one-shot read, not events follow; unattended notification is the supervisor's patrol/subscribe/SLA path), stops the running hold when the watch stops, re-reads and announces the queue once after a lost snapshot with no state file, never writes or accepts, does not resolve anything on a failed read, and hands the human's reply to the answering or acceptance flow.",
      "files": []
    }
  ]
}
