Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add petergaultney/lemonaid --skill watch-docgit clone --depth 1 https://github.com/petergaultney/lemonaidWrote 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/petergaultney/lemonaid/watch-doc)<a href="https://agentmods.dev/skills/petergaultney/lemonaid/watch-doc"><img src="https://agentmods.dev/badge/skills/petergaultney/lemonaid/watch-doc/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/petergaultney/lemonaid/watch-doc"><img src="https://agentmods.dev/badge/skills/petergaultney/lemonaid/watch-doc.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.00066 | $0.01984 |
| Opus 5.5 | $0.00026 | $0.00794 |
| Sonnet 5.5 | $0.00013 | $0.00397 |
| Haiku 4.5 | $0.00007 | $0.00198 |
Grade A, and why
watch-doc 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 4d 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 — 98 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Watch a document for Relay Comments
You wrote a document; the human reads it in Obsidian and responds with Relay Comments (inline CriticMarkup), or just edits it. This skill is how you wait for that without spending tokens, and how you reply so the conversation stays in the document.
Arguments
<doc-path> (absolute). Body edits are reported once the doc has been quiet for 20 seconds (--quiet changes it). Pass --no-edits only when you want comments alone.
Reply identity
Sign your replies with one name and pass the same name to the waiter as --me: $LEMON_NAME if set, else your harness's name (Claude, Codex). Any name you signed with before in this doc is a legacy name: pass it as --legacy <name>, repeated for each, and replies signed with it count as yours.
Reply blocks look like {{authorId="<id>" author="<name>">>...<<}}. Relay shows only author; use an authorId that lets a reader find the session that wrote the reply, such as your tmux session name.
If --me and the author of your reply blocks differ, the waiter sees your own replies as unanswered and wakes you on them.
Waiting
Tell the human the doc is ready, with its absolute path.
Before starting a waiter, check for one: lemonaid watch doc --status <doc> --me <name>, and again with each legacy name in case an older waiter is still up. If one is running, you are already watching; don't start another. A second waiter for the same doc and name refuses to start. Then read the doc and handle any unanswered threads; the waiter reports only threads that are new or have changed since a waiter last reported them.
The waiter reads the document every 15 seconds. It reports when a thread becomes unanswered or an unanswered thread gains a block, and when the body outside comment threads has changed and then been quiet for 20 seconds.
In Claude Code, start the waiter with --once as a background Bash task and end the turn:
Bash(
command: lemonaid watch doc --wait <absolute-doc-path> --me <name> [--legacy <old name>] --once,
description: "Wait for Relay Comments on <doc basename>",
run_in_background: true,
timeout: 2147483647,
)
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.
- 4d ago Changed 7ee4444a1494
- 6d ago Changed · +17 lines 16019a34edca
- 7d ago First seen · 81 lines · 66 tokens per session scan A bb268b0e733c
watch-doc is a skill published in the GitHub repository petergaultney/lemonaid (11 stars, last pushed today), licensed MIT. It adds 66 tokens to every session and 1,984 once invoked, about $0.0003 per session on Opus 5.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-10-01.
Other skills, from other repositories
first-reader
Beta readers for any draft, run by simulating how a real reader experiences it, moment by moment. A skim gate, a no-lookahead timed read producing an attention transcript with quit points, a recall test of what a reader remembers the next day, and a trust ledger of the implied author. Use when the user asks for a beta…
mcp-apps-builder
MANDATORY for ALL MCP server work - mcp-use framework best practices and patterns. READ THIS FIRST before any MCP server work, including: Creating new MCP servers Modifying existing MCP servers (adding/updating tools, resources, prompts, widgets) Debugging MCP server issues or errors Reviewing MCP server code for…
project-graveyard
Scans the developer's machine for dead side projects, autopsies each one from its git history (died at the payments wall, killed by a newer project, finished but never shipped), surfaces their personal death patterns, and picks the corpse most worth resurrecting — then helps ship it. Use when the user mentions…
commit-archaeologist
Reconstructs why code exists from local git history, including the introducing commit, later changes, current authors, repeated companion files, and likely intent. Use when the user asks "why does this code exist", "who wrote this function and why", or to "explain the history of this function" before a rewrite…
dependency-doctor
Checks requirements.txt, pyproject.toml, and package.json dependency manifests for surface-level direct-dependency footguns: standard-library shadowing pins, abandoned backports, unpinned dependencies, and obvious intra-manifest conflicts, plus opt-in PyPI yanked releases. Use when the user asks to check a manifest…
scope-creep-detector
Analyzes git diffs against a stated intent to detect scope creep, unrelated files, broad pull requests, changes that grew beyond a fix, dependency additions, public API renames, config or CI edits, oversized hunks, and formatting-only files. Use when the user asks whether a change grew beyond the fix, a PR is too…