---
name: watch
description: Set up a recurring research watch on a topic, company, paper area, or product surface. Use when the user asks to monitor a field, track new papers, watch for updates, or set up alerts on a research area.
---

# Watch

Establish a recurring or deferred research watch. The watch has two parts: a **baseline sweep** so future checks have something to diff against, and a **scheduled follow-up** that runs the same sweep later.

## Workflow

Derive a short slug from the watch topic (lowercase, hyphens, ≤5 words).

### 1. Plan

Write `outputs/.plans/<slug>.md` with:

- **What to monitor** — sources, keywords, specific repos/sites
- **Signals that matter** — e.g. new arXiv papers, new GitHub releases, new benchmark entries
- **What counts as a meaningful change** — filter out noise (typo edits, reformatting)
- **Check frequency** — daily, weekly, monthly
- **How results will be compared** — diff against previous baseline, or append to a log

Briefly summarize the plan to the user. Continue immediately unless the user asks for plan review.

### 2. Baseline sweep

Run the initial research pass now so the watch has a starting point. Use the `deep-research` or `literature-review` skill procedures as appropriate for the topic.

Save the baseline to `outputs/<slug>-baseline.md`.

End the baseline with a `Sources` section listing direct URLs — these are the surfaces the watch will re-check.

### 3. Schedule the follow-up

Don't merely promise to check later — register an actual schedule. Use the **scheduling** facility available in the host runtime:

| Runtime | Scheduling primitive |
|---|---|
| Claude Code | `CronCreate` via the `schedule` skill, or system `cron` invoking `claude -p "<prompt>"` |
| OpenCode | system `cron` invoking `opencode run "<prompt>"` |
| In-session self-wake (Claude only) | `ScheduleWakeup` with delay in seconds |

Example cron entry (weekly watch):

```cron
0 9 * * 1 cd /path/to/workspace && opencode run "Re-run the <slug> watch; compare against outputs/<slug>-baseline.md; write diff to outputs/<slug>-watch-$(date +\%Y\%m\%d).md"
```

### 4. Compare on each follow-up run

When the scheduled run fires:

1. Re-run the baseline sweep.
2. Diff against the most recent previous output (`outputs/<slug>-baseline.md` or the most recent `outputs/<slug>-watch-*.md`).
3. Write `outputs/<slug>-watch-<YYYYMMDD>.md` with:
   - New items found
   - Items that changed materially
   - Items that disappeared (rare but meaningful — e.g. paper retracted, repo deleted)
4. If nothing meaningfully changed, write a one-line entry noting that.

### 5. Stop conditions

Tell the user explicitly how to stop the watch — e.g. `crontab -e` and remove the line, or `CronDelete <id>`. Watches that run forever are noise generators.

## Output artifacts

- `outputs/.plans/<slug>.md` — watch plan
- `outputs/<slug>-baseline.md` — initial sweep
- `outputs/<slug>-watch-<date>.md` — each follow-up run
