heartbeat-log
This skill should be used when the user asks to "show heartbeat log", "heartbeat history", "what has woterclip done", "show agent activity", "summarize…
This skill should be used when the user asks to "check woterclip status", "show agent status", "what is woterclip doing", "show heartbeat status", "what's in the queue", or runs the /woterclip-status command. Shows current WoterClip state, issue queue, and blocked items.
$ npx -y skills add wotai-dev/woterclip --skill status --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/statusContext preview
The summary Claude sees to decide when to auto-load this skill.
This skill should be used when the user asks to "check woterclip status", "show agent status", "what is woterclip doing", "show heartbeat status", "what's in the queue", or runs the /woterclip-status command. Shows current WoterClip state, issue queue, and blocked items.
name: woterclip-status description: This skill should be used when the user asks to "check woterclip status", "show agent status", "what is woterclip doing", "show heartbeat status", "what's in the queue", or runs the /woterclip-status command. Shows current WoterClip state, issue queue, and blocked items. version: 0.1.0
Display the current state of WoterClip in this repository: schedule info, last heartbeat, issue activity, queue, and blocked items.
**Arguments:**
Read `.woterclip/config.yaml`. If missing, report that WoterClip is not initialized and suggest `/woterclip-init`.
Determine schedule state at read time by asking the harness what recurring work it has registered for this repo (its schedule/cron listing, or the equivalent surface for the loop primitive in use).
Report one of three states, and never infer one from another:
Report `Unknown` rather than `Not scheduled` whenever the listing is unavailable. A false "not scheduled" tells the Board their automation is off when it may be running.
Read the **tail** of `.woterclip/heartbeat-log.jsonl` (e.g. `tail -n 50`) and scan backwards for the most recent beat line and the most recent issue line — the log is append-only and never rotated, so do not read the whole file for this view. Line kinds, grouping, and fields are defined in `${CLAUDE_PLUGIN_ROOT}/references/beat-economics.md`.
From the last **beat line**, report:
From the last **issue line**, report:
The `Stopped` determination needs the queue, so it is made at the end of step 4 — see there.
**Absent fields render as `—`, never as `0`.** A line with no `type` key is an issue line — old and new alike, since only beat lines carry `type`. A beat with no beat line has an unavailable cost, not a zero one. Do not sum issue-line durations to synthesize a missing beat cost — issue durations exclude the loop's own overhead.
If the tail holds no beat line at all — an upgraded repo whose history predates them — widen the read once, then compute age from the most recent issue line's `timestamp` and render cost and stop reason as `—`. If no log file exists, report "No heartbeat history found."
Run two queries against the repo from config `github.repo`:
Filter and categorize:
**Since last heartbeat** (issues that changed since the last logged heartbeat timestamp):
**Queue** (next heartbeat would pick these up):
**Blocked** (needs Board attention):
**Stopped check.** If the last beat is older than ~2 hours and the queue above is non-empty, report the loop as `Stopped`, not idle — a scheduled loop gone quiet with work waiting has stopped, and nothing else surfaces that. If the queue query failed, render the elapsed time with `queue unknown` rather than guessing. Before starting a second schedule, check step 2's listing.
`Schedule:` renders one of `Scheduled (<cadence>)`, `Not scheduled`, or `Unknown`. `Last beat:` renders `Stopped` in place of the elapsed figure when the ~2h threshold is met.
WoterClip Status
────────────────
Schedule: Scheduled (every 30m)
Last beat: X min ago — 14m 5s, 2 issues, stopped: time_ceiling
Since last heartbeat:
✓ #12 [persona] Completed "Title"
→ #13 [persona] In Progress "Title"
✗ #14 [persona] Blocked "Title"
↪ #16 [ceo] Triaged "Title"
+ #17 [persona] Sub-issue "Title" (parent #12)
Queue (next heartbeat):
#15 [persona] Status Priority "Title"
Blocked (needs Board):
#14 @board-login — blocker summary
Clears when: observable condition that unblocks itWhen `--history` is passed, read `.woterclip/heartbeat-log.jsonl` and display the last 10 beats, each with its issue lines. Render an absent field as `—`:
Heartbeat History (last 10 beats) ───────────────────────────────── 14m 5s 2 issues stopped: time_ceiling #N HH:MM persona #12 Status (12m 1s) #N HH:MM persona #15 Status (2m 4s) 8m
GitHub Issues-backed agent orchestration for Claude Code. A single Claude instance wears different "hats" (personas) based on GitHub issue labels – an Orchestrator routes work, a CEO makes strategic calls, and worker personas execute.
This skill should be used when the user asks to "show heartbeat log", "heartbeat history", "what has woterclip done", "show agent activity", "summarize…
This skill should be used when the user asks to "run a heartbeat", "run the agent loop", "process GitHub issues", "check for work", or runs the /heartbeat…
This skill should be used when the user asks to "initialize woterclip", "set up woterclip", "woterclip init", "configure woterclip for this repo", or runs the…
This skill should be used when the user asks to "create a persona", "add a new persona", "set up a new agent role", "add a woterclip persona", or runs the…
This skill should be used when the user asks to "import a paperclip agent", "convert paperclip to woterclip", "migrate from paperclip", "import persona from…
This skill should be used when the user asks to "list personas", "show personas", "what personas are configured", "show woterclip agents", or runs the…