health-check
Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.
Self-test + quota for the po plugin, via the TS core.
env -u HTTPS_PROXY -u HTTP_PROXY bun "$(cc-plugin-root pushover-commander)/skills/_lib/pushover_core.ts" doctor # full self-test (JSON)
env -u HTTPS_PROXY -u HTTP_PROXY bun "$(cc-plugin-root pushover-commander)/skills/_lib/pushover_core.ts" quota # {limit, remaining, reset}
doctor checks: creds (op→Keychain), /users/validate.json, monthly quota, the expected custom sounds (po_fanfare/po_uplift/po_celebrate), deps, and the audit log size. quota prints remaining messages and warns when below quota_warn_remaining (see pushover_api_limits.json).
The deps block is bun, uv, chrome_for_testing and chrome_system_fallback. chrome_for_testing is the browser the headless web-control drives by default: ok (<executable>), or MISSING — install once: <command>. chrome_system_fallback is /Applications/Google Chrome.app, which a web-control run uses only when Chrome for Testing is missing. That fallback carries a macOS LaunchServices collision risk with your running Chrome, so "fallback ok, cft MISSING" means install Chrome for Testing, not "healthy". See the plugin CLAUDE.md, "Browser selection".
Reliability primitives (apply to every send)
- Limits SSoT —
skills/_lib/pushover_api_limits.jsonis the single source for all Pushover limits/rules (message 1024, title 250, url 512, attachment 5 MB, sound <500 KB/≤30 s, app name 20, desc 500, html⊕monospace, priority-2 needs retry+expire). Edit there, nowhere else. - Preflight —
pushover_core.tsvalidates every send againstpushover_api_limits.jsonand turns Pushover's silent failures into explicit output: refuses (url>512, attachment>5 MB, html+monospace) — override with--force— and warns (message/title truncation, sound not in account). - Audit trail — every send appends a UUID-keyed JSONL line to
~/.local/state/pushover/po-audit.jsonl(ts, uuid, app, priority, status, request, receipt, remaining, message_len, errors). Retrieve withgrep <uuid> ~/.local/state/pushover/po-audit.jsonl | jq .. - Quota guard — each send reads
X-Limit-App-Remainingand warns when low. - Retry/backoff — transient network / 5xx are retried (×3, backoff) before failing.
Post-Execution Reflection
After this skill completes, check before closing:
- Did the check surface real failures (credentials, quota, dependencies) with no false green? If a broken subsystem reported healthy, fix the check.
- Was remaining quota reported accurately? A stale or wrong quota reading needs fixing before it misleads.
Only update if the issue is real and reproducible — not speculative.