- Home
- Skills
- Agents & Orchestration
- Watchdog Digest Pairs
Works with the AI tools you already use
Watchdog Digest Pairs
Architect silent, stateful watchdogs for high-frequency alerts and low-frequency LLM digests.
$5
Watchdog Digest Pairs
Example session with this skill installed
Set up a watchdog for the GitHub API releases endpoint for 'tailwindlabs/tailwindcss'. I need alerts for new versions every hour and a brief summary of the week's changes every Friday.
- Read your context and instructions
- Compiled the watchdog digest pairs
I have configured the watchdog-digest pair for the Tailwind CSS repository. The watchdog script is initialized with state tracking to ensure you only receive notifications when a new tag is published.
Monitoring Configuration
| Component | Target URL | Schedule | Logic |
|---|---|---|---|
| Watchdog | api.github.com/repos/tailwindlabs/tailwindcss/releases | 0 * * * * | Silent unless a new id appears in JSON. |
| Digest | api.github.com/repos/tailwindlabs/tailwindcss/releases | 0 9 * * 5 | LLM summary of the last 5 releases. |
Watchdog Implementation (watchdog.py)
import json, urllib.request, pathlib, sys
# Config
URL = "https://api.github.com/repos/tailwindlabs/tailwindcss/releases"
STATE_FILE = pathlib.Path("./state/tailwind_seen.json")
HEADERS = {"User-Agent": "agent-watchdog-release-monitor"}
def monitor():
req = urllib.request.Request(URL, headers=HEADERS)
with urllib.request.urlopen(req) as r:
data = json.loads(r.read())
current_ids = {str(rel['id']) for rel in data[:5]}
seen_ids = set(json.loads(STATE_FILE.read_text())) if STATE_FILE.exists() else set()
new_items = [rel for rel in data[:5] if str(rel['id']) not in seen_ids]
if new_items:
for item in new_items:
print(f"NEW RELEASE: {item['tag_name']}\n{item['html_url']}\n")
STATE_FILE.parent.mkdir(exist_ok=True)
STATE_FILE.write_text(json.dumps(list(current_ids)))
if __name__ == "__main__":
try:
monitor()
except Exception as e:
print(f"Error monitoring Tailwind: {e}")
Next steps
- Run
python3 watchdog.pymanually to initialize the state file. - Verify the cron or scheduler job is set to "notify on non-empty output" only.
- Add your GitHub personal access token to headers if you hit rate limits.
Connects securely to your tools. The creator never sees your data.
What you get
About this skill
The problem
Monitoring APIs, RSS feeds, or prices usually ends in one of two failures: you get spammed with "no change" notifications every 15 minutes, or you miss critical updates because you only check once a week.
What it does
- Splits monitoring into a high-frequency "watchdog" and a low-frequency "digest".
- Enforces silent execution where empty stdout equals zero notifications.
- Manages stateful ID tracking to prevent duplicate alerts across runs.
- Provides a Python stdlib-only template for maximum portability across environments.
- Handles persistent error reporting so you know when a scraper is actually broken.
Frameworks & tools
Python 3.10+, POSIX cron, systemd timers, GitHub Actions, or any agent-based scheduler. Uses urllib and pathlib to avoid dependency hell.
Why this beats prompting it yourself
Standard LLM prompts struggle with state persistence and often hallucinate "no changes" messages that trigger alerts. This skill provides a structured architecture for stateful deduplication and ensures your monitoring is actually silent unless action is required.
Use cases
- Ping a Slack channel only when a competitor changes their pricing.
- Get an immediate alert on site downtime while receiving a daily uptime summary.
- Monitor GitHub releases or changelogs without manual polling.
- Track flight prices and receive an LLM-generated weekly trend report.
Known limitations
Requires a persistent state_dir to store seen IDs. Not suitable for high-volume event streams where webhooks are available.
How to install
Works the same in every agent - Claude, Cursor, Codex, Copilot and 20+ more.
- 1
Download the ZIP
Free skills download straight away. Paid skills unlock right after purchase.
- 2
Unzip into your skills folder
Every agent reads skills from one folder on your machine. Drop the unzipped folder in there.
- 3
Ask your agent to use it
Restart the agent if it was already running. It picks the skill up automatically - no config needed.
Skills folder by agent
Click the path to copy it. Create the folder if it does not exist yet.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill passes our trust checks below.
Security scanned
Passed our 8-point scan before listing
Fresh listing
Recently published to Agensi
30-day refund
Not a fit? Get your money back
Trust & safety
Security scanned
Verified clean 1 day ago
- Passed all security checks, Safe to install