Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add wotai-dev/woterclip/plugin install woterclipWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/wotai-dev/woterclip/heartbeat)<a href="https://agentmods.dev/skills/wotai-dev/woterclip/heartbeat"><img src="https://agentmods.dev/badge/skills/wotai-dev/woterclip/heartbeat/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/wotai-dev/woterclip/heartbeat"><img src="https://agentmods.dev/badge/skills/wotai-dev/woterclip/heartbeat.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00064 | $0.03384 |
| Opus 5 | $0.00032 | $0.01692 |
| Sonnet 5 | $0.00013 | $0.00677 |
| Haiku 4.5 | $0.00006 | $0.00338 |
Grade A, and why
heartbeat scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 179 lines — stays where its author put it; the contents beside it link to each section on GitHub.
WoterClip Heartbeat
Execute the WoterClip heartbeat cycle: pick up assigned GitHub issues, resolve the right persona, do the work, and report back with structured comments. All GitHub operations go through the gh CLI — no MCP server required.
Arguments:
--dry-run— Show what would be picked up without doing work--persona <name>— Only pick issues matching a specific persona
Reference files (consult as needed during execution):
${CLAUDE_PLUGIN_ROOT}/references/comment-format.md— Comment templates and rules${CLAUDE_PLUGIN_ROOT}/references/label-conventions.md— Label lifecycle and atomic label operations${CLAUDE_PLUGIN_ROOT}/references/status-mapping.md— GitHub state model, sort order, inbox filtering${CLAUDE_PLUGIN_ROOT}/references/sub-issues.md— Canonical create/attach/verify procedure for sub-issues${CLAUDE_PLUGIN_ROOT}/references/persona-dispatch.md— Subagent dispatch, outcome contract, and fallback rules${CLAUDE_PLUGIN_ROOT}/references/beat-economics.md— Clock capture, time ceiling, stop reasons, log fields
All gh issue / gh api calls below target the repo from config github.repo (pass --repo <owner/name> explicitly — never rely on the working directory's default remote).
Step 1: Load Config & Lock
- Read
.woterclip/config.yaml. If missing, stop and instruct the user to run/woterclip-init. Nothing is created yet, so this exit records nothing. - Check for lockfile at
.woterclip/.heartbeat-lock.- Exists and less than
stale_lock_hoursold → stop: "Previous heartbeat still active. Skipping." This beat never took the lock — do not delete it and do not record a beat line. - Exists and older than
stale_lock_hours→ delete it, log: "Cleaned stale lockfile." - No lockfile → proceed.
- Exists and less than
- Take the lock. This one command creates it and prints it, so the beat observes its own id and start epoch:
Carry the printedprintf '{"beat_id":"%s","started_at":"%s","started_epoch":%s}\n' \ "$(date -u +%s)-$$" "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$(date -u +%s)" \ | tee .woterclip/.heartbeat-lockbeat_idandstarted_epochforward — they are the beat's identity and its clock. - Ownership rule, applied at every exit from here on. Re-read
.woterclip/.heartbeat-lock. Delete it only if it still carries this beat'sbeat_id; if it is missing or carries another id, a later beat cleaned and re-took it — leave it alone. Deleting a lock this beat does not own hands two beats the same repo. - Every exit from here on records one beat line (step 9 format) naming that exit's stop reason, then applies the ownership rule.
--dry-runand a superseded beat record none. The exit-to-reason map is in${CLAUDE_PLUGIN_ROOT}/references/beat-economics.md. Beat elapsed is$(date -u +%s)minusstarted_epoch.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago First seen · 179 lines · 64 tokens per session scan A 85ef99dd9476
heartbeat is a skill published in the GitHub repository wotai-dev/woterclip (57 stars, last pushed 1mo ago), licensed MIT. It adds 64 tokens to every session and 3,384 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
decision-map
Turn a loose idea into a git-tracked, session-resumable map of typed investigation tickets, then drive them to resolution one at a time. The planning-loop engine for work that is still being figured out — too fuzzy for a campaign, too big for a single intake item. Resolved tickets graduate into .planning/intake/ for…
work
Execute Elixir/Phoenix plan tasks with progress tracking. Use after /phx:plan to implement features with mix compile and mix test verification after each step, or --continue to resume interrupted work.
catchup
Summarize and review what changed while you were away. Use after a weekend, vacation, or flight to check missed PRs, git commits, Linear tickets, and meetings — one prioritized brief, not a firehose.
phx-deps-update
Bump outdated Hex deps — inventory, snapshot changelogs, update, fix breaks, split reviewable PRs (patches bundled, majors solo). Use to upgrade/bump Elixir dependencies or when versions fall behind. NOT for deps.get failures (phx-investigate).
pilot
One autonomous Pilot cycle - fetch the agenda, execute the top item, journal, exit. Injected by the terminal host - not for manual invocation loops.
project-update
Update project configuration to match the latest HCF plugin defaults. Use when the HCF plugin has been updated and you want to sync your project's config.