From lazycortex-observe
Read-only health check for the lazycortex-observe shipper on this host. Verifies service status, agent process, local /metrics endpoint, agent's own remote_write success counter, observer URL reachability, and WAL bounds. Reports each as PASS / WARN / FAIL with a one-line fix suggestion. Never mutates filesystem or service state.
How this skill is triggered — by the user, by Claude, or both
Slash command
/lazycortex-observe:lazy-observe.doctorThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Confirm the metrics shipping pipeline is healthy end-to-end. The skill is intentionally read-only — it returns findings and suggested fixes, but never restarts services, never edits configs, never wipes WAL directories. Mutating fixes are the operator's call.
Confirm the metrics shipping pipeline is healthy end-to-end. The skill is intentionally read-only — it returns findings and suggested fixes, but never restarts services, never edits configs, never wipes WAL directories. Mutating fixes are the operator's call.
This skill has 8 ordered steps. The executing agent MUST NOT skip, merge, reorder, or silently omit any step. To make dropped steps structurally impossible:
TaskCreate with exactly one task per step below — no merging, no abbreviation, no renaming. The canonical list (use these titles verbatim):
Step 1 — Read answer fileStep 2 — Service unit loadedStep 3 — Agent process upStep 4 — Local /metrics reachableStep 5 — Agent self-metrics show successful remote_writeStep 6 — Observer URL reachableStep 7 — WAL directory boundsStep 8 — Reportin_progress on enter and completed on exit. Each step ends with one of PASS / WARN / FAIL.TaskList shows every prior task completed.Call claude/lazycortex-observe/bin/install.read_answer_file(). If the file is absent, report FAIL not-installed and skip the rest of the steps with outcome n/a.
Outcome: PASS (with the relevant fields echoed) / FAIL not-installed.
launchctl print gui/$UID/com.lazycortex.observe. Check state = running (or equivalent) in the output.systemctl --user is-active lazycortex-observe.service. Expect active.Outcome: PASS active / FAIL inactive / WARN unknown.
ps -o pid,comm -p <PID> after extracting PID from the unit's status. Verify the binary path matches what the answer file declared.
Outcome: PASS <pid> / FAIL no-pid.
curl -fsS http://<scrape_target>/metrics. Body must contain at least one lazycortex_runtime_* series. Sample one tick metric (lazycortex_runtime_routine_ticks_total) and report its current value.
Outcome: PASS <sample value> / FAIL endpoint-down / FAIL no-lazycortex-series.
http://127.0.0.1:12345/metrics (or whatever the operator configured). Check prometheus_remote_storage_succeeded_samples_total rate over the last minute > 0.http://127.0.0.1:8888/metrics. Check otelcol_exporter_sent_metric_points rate > 0.Outcome: PASS rate=<n>/min / WARN zero-rate / FAIL self-metrics-down.
curl -I --max-time 30 <remote_write_url>. Any 2xx / 3xx / 401 / 405 → reachable (auth handshake reaches the right host). Network error → unreachable.
A 401 here is fine — it means the URL resolves but our request has no auth header (HEAD has no body to sign), which is a healthy signal that the host is up.
Outcome: PASS reachable / FAIL unreachable.
du -sh <wal_dir>. If the directory is over 10× wal_max_age worth of normal traffic (operator's call — print the size and let them judge), warn. If absent, the agent hasn't written any WAL yet — report INFO empty.
Outcome: PASS <size> / WARN oversized / INFO empty.
Render a markdown report. One line per Step 1–7 with [SEVERITY] <step name> | <details> and the suggested fix. The fix lines come from the per-step failure modes below — never invent new fixes.
Outcome: reported.
Per the project's lazy-log.logging rule, log this run to ./.logs/claude/lazy-observe.doctor/<UTC timestamp>.md.
/lazy-observe.install.launchctl kickstart -k gui/$UID com.lazycortex.observe (darwin) or systemctl --user restart lazycortex-observe.service (linux). Check journal/Console for crash reason first.~/Library/Logs/lazycortex-observe/ (darwin) or via journalctl --user -u lazycortex-observe.service (linux).metrics.enabled: false. Check references/lazy-core.runtime-schema.md § 12./lazy-observe.install Step 5), observer unreachable (Step 6 will catch), agent's WAL still recovering from outage./lazy-observe.install (writes are idempotent).npx claudepluginhub mebius-san/lazy-cortex --plugin lazycortex-observeCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.