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 (bun/uv/Chrome), and the audit log size. quota prints
remaining messages and warns when below quota_warn_remaining (see pushover_api_limits.json).
Reliability primitives (apply to every send)
- Limits SSoT —
skills/_lib/pushover_api_limits.json is 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.ts validates every send against pushover_api_limits.json and 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 with
grep <uuid> ~/.local/state/pushover/po-audit.jsonl | jq ..
- Quota guard — each send reads
X-Limit-App-Remaining and 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.
1---2name: health-check3description: Diagnose the po Pushover plugin and check remaining monthly quota. Runs a full self-test (credential resolution via 1Password/Keychain, /users/validate.json, quota, expected custom sounds present, deps bun/uv/chrome, audit log) and reports message quota remaining. Use when the user asks if Pushover is working, why a notification failed, how many messages are left, or wants a health/diagnostic check. TRIGGERS - pushover health, po doctor, pushover not working, pushover quota, messages left, diagnose pushover.4---5
6# health-check
7
8> **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.
9
10Self-test + quota for the po plugin, via the TS core.
11
12```bash
13env -u HTTPS_PROXY -u HTTP_PROXY bun "$(cc-plugin-root pushover-commander)/skills/_lib/pushover_core.ts" doctor # full self-test (JSON)
14env -u HTTPS_PROXY -u HTTP_PROXY bun "$(cc-plugin-root pushover-commander)/skills/_lib/pushover_core.ts" quota # {limit, remaining, reset}
15```
16
17`doctor` checks: creds (op→Keychain), `/users/validate.json`, monthly quota, the expected custom sounds
18(`po_fanfare`/`po_uplift`/`po_celebrate`), deps (bun/uv/Chrome), and the audit log size. `quota` prints
19remaining messages and warns when below `quota_warn_remaining` (see `pushover_api_limits.json`).
20
21## Reliability primitives (apply to every send)
22
23- **Limits SSoT** — `skills/_lib/pushover_api_limits.json` is the single source for all Pushover limits/rules
24 (message 1024, title 250, url 512, attachment 5 MB, sound <500 KB/≤30 s, app name 20, desc 500,
25 html⊕monospace, priority-2 needs retry+expire). Edit there, nowhere else.
26- **Preflight** — `pushover_core.ts` validates every send against `pushover_api_limits.json` and turns Pushover's _silent_
27 failures into explicit output: **refuses** (url>512, attachment>5 MB, html+monospace) — override with
28 `--force` — and **warns** (message/title truncation, sound not in account).
29- **Audit trail** — every send appends a UUID-keyed JSONL line to `~/.local/state/pushover/po-audit.jsonl`
30 (`ts, uuid, app, priority, status, request, receipt, remaining, message_len, errors`). Retrieve with
31 `grep <uuid> ~/.local/state/pushover/po-audit.jsonl | jq .`.
32- **Quota guard** — each send reads `X-Limit-App-Remaining` and warns when low.
33- **Retry/backoff** — transient network / 5xx are retried (×3, backoff) before failing.
34
35## Post-Execution Reflection
36
37After this skill completes, check before closing:
38
391. **Did the check surface real failures (credentials, quota, dependencies) with no false green?** If a broken subsystem reported healthy, fix the check.
402. **Was remaining quota reported accurately?** A stale or wrong quota reading needs fixing before it misleads.
41
42Only update if the issue is real and reproducible — not speculative.