← ClaudeAtlas

autonomous-watch-looplisted

Run a long-lived watch/janitor task that polls a system on an interval and acts on what it finds. Use for "monitor X all day and do Y", task sweepers, queue drains that wait on external state, deploy and CI watchers, and any loop that would otherwise ping the operator every cycle with a status line.
kookr-ai/kookr · ★ 3 · DevOps & Infrastructure · score 72
Install: claude install-skill kookr-ai/kookr
# Autonomous Watch Loop Use this when a task is phrased as *"monitor X all day"*, *"check Y every hour"*, or *"keep watching Z and handle it"*. The runtime is cheap; the operator's attention is not. A watch loop that reports every cycle converts a 12-hour autonomous run into 12 interruptions. The discipline is three rules: 1. **The watcher emits events, not heartbeats.** Silence means healthy. 2. **Investigate before escalating.** Never hand back a bare "you may want to look at this". 3. **Every report answers done / outstanding / blocked-on-you.** Never raw counts alone. ## Use When - The work is *waiting* punctuated by short bursts of action. - Each cycle's finding is usually "nothing to do". - You can express "something needs attention" as a mechanical predicate. Do not use this for a queue you can drain immediately — that is `self-continuation-task`. A watch loop exists because the interesting events have not happened yet. ## Rule 1 — The Watcher Emits Events, Not Heartbeats Put the filtering in the **watcher script**, not in your own prose. If the script prints an hourly line, you will wake for it, end a turn on it, and the operator gets a "waiting for your input" ping that carries no decision. Emit only when one of these is true: - an **actionable candidate** matched the predicate - an **error** occurred (poll failed, endpoint moved, auth expired) — never fail silently - a **threshold tripped** (see Rule 2) - the **rollup interval** elapsed (once per d