proactive-watchers/SKILL.md
Monitor URLs and APIs, trigger AI actions on changes. Polls external resources at configurable intervals and fires agent prompts when conditions are met — perfect for monitoring, alerting, and reactive automation.
npx skillsauth add leprachuan/pot-o-skills proactive-watchersInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Poll external URLs or APIs at configurable intervals. When a watched resource changes or meets criteria, automatically trigger an agent to run a prompt. Supports multiple concurrent watchers with state persistence, exponential backoff, and event logging.
| Feature | Description |
|---------|-------------|
| Watcher Types | url_change, url_field_change, url_status_code, url_text_match, url_comparison, api_response |
| Conditions | value_changed, new_item, status_code_change, text_contains, value_exceeds, regex_match, content_hash_changed |
| Triggers | background_task (AI agent), shell command, webhook POST, log_only |
| Storage | ~/.proactive-watchers/ (watchers.json, history/, templates/) |
| Runtimes | Claude (Python), Copilot (Python), Gemini (Node.js) |
| Dependencies | Python stdlib + curl (no pip packages required) |
python3 /opt/skills/proactive-watchers/claude/proactive_watchers.py create --config /opt/skills/proactive-watchers/templates/github_releases.json
python3 /opt/skills/proactive-watchers/claude/proactive_watchers.py list
python3 /opt/skills/proactive-watchers/claude/proactive_watchers.py test --watcher github-releases
python3 /opt/skills/proactive-watchers/claude/proactive_watchers.py start --watcher github-releases
python3 /opt/skills/proactive-watchers/claude/proactive_watchers.py start --watcher all --detach
python3 /opt/skills/proactive-watchers/claude/proactive_watchers.py stop --watcher github-releases
python3 /opt/skills/proactive-watchers/claude/proactive_watchers.py history --watcher github-releases
python3 /opt/skills/proactive-watchers/claude/proactive_watchers.py delete --watcher github-releases
Watchers are defined as JSON objects:
{
"name": "my-watcher",
"type": "url_field_change",
"url": "https://api.example.com/data",
"check_interval": 300,
"method": "GET",
"headers": {"Accept": "application/json"},
"condition": "value_changed",
"trigger_field": "version",
"on_trigger": {
"method": "background_task",
"agent": "fosterbot",
"timeout": 600,
"prompt_template": "Value changed: {{extracted_value}}"
}
}
| Condition | What It Does | Key Fields |
|-----------|-------------|------------|
| value_changed | Fires when monitored value differs from last poll | trigger_field |
| new_item | Fires when new items appear in an array | trigger_field, id_field |
| status_code_change | Fires when HTTP status changes | expected_from, expected_to |
| text_contains | Fires when text pattern found/lost | search_text, trigger_on |
| value_exceeds | Fires when numeric value crosses threshold | threshold, comparator |
| regex_match | Fires when regex pattern matches | pattern, trigger_on |
| content_hash_changed | Fires when full content hash changes | (none) |
| Method | Description |
|--------|-------------|
| background_task | Submit prompt to orchestrator API as background task |
| shell | Execute a shell command |
| webhook | POST trigger data to a webhook URL |
| log_only | Log the trigger without action (for testing) |
Use {{variable}} in prompt templates:
| Variable | Value |
|----------|-------|
| {{watcher_name}} | Name of the watcher |
| {{watcher_url}} | Monitored URL |
| {{reason}} | Human-readable trigger reason |
| {{extracted_value}} | The value that triggered |
| {{triggered_at}} | ISO timestamp |
| {{response_data.field}} | Any top-level response field |
python3 /opt/skills/proactive-watchers/claude/proactive_watchers.py create --config /opt/skills/proactive-watchers/templates/github_releases.json
python3 /opt/skills/proactive-watchers/claude/proactive_watchers.py start --watcher github-releases
python3 /opt/skills/proactive-watchers/claude/proactive_watchers.py create --config /opt/skills/proactive-watchers/templates/website_status.json
python3 /opt/skills/proactive-watchers/claude/proactive_watchers.py start --watcher website-status
proactive-watchers/
├── core/ # Shared engine (Python)
│ ├── watcher_engine.py # Poll loop, orchestration
│ ├── condition_evaluator.py # Condition logic
│ ├── state_manager.py # State persistence
│ └── trigger_executor.py # AI prompt execution
├── claude/ # Claude CLI
├── copilot/ # Copilot CLI
├── gemini/ # Gemini/Node.js CLI
└── templates/ # Example watcher configs
~/.proactive-watchers/
├── watchers.json # Active watcher definitions
├── history/
│ ├── {name}.log # Event history (JSONL)
│ └── {name}_state.json # Last known state
└── templates/ # User templates
data-ai
Interactive TODO board for Wee Canvas. Displays TODOs from both GitHub Issues (leprachuan/fosterbot-home) and flat files in two views: list and kanban. Features filtering, drag-and-drop status changes, quick-add, and auto-refresh every 30 seconds. Use when Foster asks to "show TODOs", "open TODO board", "view my tasks", or "TODO kanban".
tools
Web-based terminal tools for Wee Canvas: remote SSH terminal (WebSSH) and local bash terminal (ttyd). Embeds interactive terminal panels in Wee Canvas iframes. Use when the user asks for a 'web terminal', 'local terminal', 'browser SSH', 'webssh', or wants to interact with a host through the WebUI canvas. For browser windows, see the browser-window skill.
development
Use when you need to send WebEx notifications to flipkey-home-bot - supports markdown formatting, auto-retry with backoff, rate limiting, and message history tracking
tools
Production-ready TODO management with dual-source support (GitHub Issues + flat files), due dates, labels, and automatic reminders. Fully portable with environment variable configuration.