
Monitors your deployed URLs after pushes to catch regressions you'd otherwise miss until a user complains. Checks HTTP status, console errors, network failures, performance metrics like LCP and CLS, SSE stream health, and static asset integrity. Run it once for a quick smoke test or set it to loop every few minutes during a launch window. The baseline comparison is smart: it only alerts on new console errors and performance deltas, not every warning your app already had. Honestly most useful when you've just deployed something risky and want to walk away confident, or when you need sustained monitoring during a critical release window. Beats refreshing the browser and checking DevTools manually.
$ npx -y skills add affaan-m/everything-claude-code --skill canary-watch --agent claude-codeInstalls into .claude/skills of the current project.
Monitors a deployed URL for regressions. Runs in a loop until stopped or until the watch window expires.
1. HTTP Status — is the page returning 200?
2. Console Errors — new errors that weren't there before?
3. Network Failures — failed API calls, 5xx responses?
4. Performance — LCP/CLS/INP regression vs baseline?
5. Content — did key elements disappear? (h1, nav, footer, CTA)
6. API Health — are critical endpoints responding within SLA?
7. Static Assets — are JS, CSS, image, and font requests returning 2xx/3xx with expected content types?
8. SSE Streams — do event-stream endpoints connect and receive an initial event or heartbeat?
Quick check (default): single pass, report results
/canary-watch https://myapp.com
Sustained watch: check every N minutes for M hours
/canary-watch https://myapp.com --interval 5m --duration 2h
Diff mode: compare staging vs production
/canary-watch --compare https://staging.myapp.com https://myapp.com
critical: # immediate alert
- HTTP status != 200
- Console error count > 5 (new errors only)
- LCP > 4s
- API endpoint returns 5xx
- Static asset returns 4xx/5xx
- SSE endpoint cannot connect or drops before first heartbeat
warning: # flag in report
- LCP increased > 500ms from baseline
- CLS > 0.1
- New console warnings
- Response time > 2x baseline
- Static asset content type changed unexpectedly
- SSE heartbeat latency > 2x baseline
info: # log only
- Minor performance variance
- New network requests (third-party scripts added?)
When a critical threshold is crossed:
~/.claude/canary-watch.log## Canary Report — myapp.com — 2026-03-23 03:15 PST
### Status: HEALTHY ✓
| Check | Result | Baseline | Delta |
|-------|--------|----------|-------|
| HTTP | 200 ✓ | 200 | — |
| Console errors | 0 ✓ | 0 | — |
| LCP | 1.8s ✓ | 1.6s | +200ms |
| CLS | 0.01 ✓ | 0.01 | — |
| API /health | 145ms ✓ | 120ms | +25ms |
| Static assets | 42/42 ✓ | 42/42 | — |
| SSE /events | connected ✓ | connected | +80ms heartbeat |
### No regressions detected. Deploy is clean.
Pair with:
/browser-qa for pre-deploy verificationgit push to auto-check after deploysSponsors