Agent skill
healthchecks-io
Create, manage, and verify healthchecks.io monitors via the REST API. Use when adding monitoring to a new cron job or service, auditing existing checks, wiring ping URLs into configs, or verifying a check fired correctly.
Install this agent skill to your Project
npx add-skill https://github.com/edmundmiller/dotfiles/tree/main/.agents/skills/healthchecks-io
SKILL.md
healthchecks.io API
Credentials available as env vars:
$HC_API_KEY— read-write API key (create/update/delete checks)$HC_API_KEY_READONLY— read-only API key (list/view only)$HC_PING_KEY— ping key (forhttps://hc-ping.com/$HC_PING_KEY/<slug>URLs)
HC_API="https://healthchecks.io/api/v3"
Create a check
curl -s -X POST "$HC_API/checks/" \
-H "X-Api-Key: $HC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "service: job-name",
"tags": "nuc cron",
"desc": "What this monitors",
"grace": 3600,
"schedule": "0 * * * *",
"tz": "America/Chicago"
}' | jq '{name, ping_url, uuid}'
Key fields:
grace— seconds after expected ping before alerting (3600 = 1h buffer)schedule— cron expression for expected cadence (sets the deadline clock)timeout— alternative to schedule for simple heartbeats (seconds between pings)tz— timezone for cron interpretation
Returns ping_url (https://hc-ping.com/<uuid>) — save this to your config.
List / find existing checks
# All checks with status summary
curl -s "$HC_API/checks/" -H "X-Api-Key: $HC_API_KEY" \
| jq '.checks[] | {name, status, last_ping, ping_url}'
# Find by name substring
curl -s "$HC_API/checks/" -H "X-Api-Key: $HC_API_KEY" \
| jq '.checks[] | select(.name | contains("bugster")) | {name, uuid, status, ping_url}'
# Find by tag
curl -s "$HC_API/checks/" -H "X-Api-Key: $HC_API_KEY" \
| jq '.checks[] | select(.tags | contains("nuc")) | {name, status}'
Statuses: new up grace down paused
Delete a check
curl -s -X DELETE "$HC_API/checks/<uuid>" -H "X-Api-Key: $HC_API_KEY" \
| jq '{name, n_pings, last_ping}' # returns the deleted check
Ping from a script
PING_URL="https://hc-ping.com/<uuid>"
# Signal start (measures duration, alerts if no success follows)
curl -sS -m 10 --retry 3 "$PING_URL/start"
# Signal success
curl -sS -m 10 --retry 3 "$PING_URL"
# Signal failure
curl -sS -m 10 --retry 3 "$PING_URL/fail"
# Signal success/failure by exit code (0 = success, non-zero = fail)
curl -sS -m 10 --retry 3 "$PING_URL/$EXIT_CODE"
# Attach logs to a ping (POST body, up to 10KB)
curl -sS -m 10 --retry 3 "$PING_URL" --data-raw "$(journalctl -u myservice -n 50 --no-pager)"
Wrap a script with start+exit-code:
curl -sS -m 10 "$PING_URL/start"
/path/to/my-script.sh
curl -sS -m 10 "$PING_URL/$?"
Verify a check received pings
# Single check detail (includes last_ping, n_pings, status)
curl -s "$HC_API/checks/<uuid>" -H "X-Api-Key: $HC_API_KEY" \
| jq '{name, status, n_pings, last_ping, next_ping}'
# Recent ping log for a check
curl -s "$HC_API/checks/<uuid>/pings/" -H "X-Api-Key: $HC_API_KEY" \
| jq '.pings[:5] | .[] | {type, date, body}'
Ping types in log: start success fail
Update an existing check
curl -s -X POST "$HC_API/checks/<uuid>" \
-H "X-Api-Key: $HC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"grace": 7200, "tags": "nuc cron updated"}'
Pause / resume
curl -s -X POST "$HC_API/checks/<uuid>/pause" -H "X-Api-Key: $HC_API_KEY"
curl -s -X POST "$HC_API/checks/<uuid>/resume" -H "X-Api-Key: $HC_API_KEY"
Useful when intentionally stopping a service (prevents false alarms).
Naming convention
<service>: <job-name> # bugster: github_personal_tasknotes
<host>/<service> # nuc/znapzend
Tags: host + category (e.g. nuc backup, bugster cron).
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
zbench
Benchmark interactive zsh performance with zsh-bench and track regressions. Use when benchmarking shell startup, comparing zsh latency after config changes, investigating slow shell, or running git bisect on performance. Trigger phrases: "benchmark zsh", "shell is slow", "zbench", "zsh-bench", "shell startup time", "profile zsh", "zsh performance".
nix-rebuild
Rebuild nix-darwin/NixOS system after dotfiles changes. Use when config files managed by Nix (lazygit, ghostty, etc.) need to be regenerated, or after editing any .nix file in the dotfiles repo.
hass-config-flow
Interact with Home Assistant via the REST API on a NixOS host. Use when adding integrations, querying entities, managing config flows, creating API tokens, or automating HA setup programmatically. Also covers identifying device protocols (Matter, Zigbee, Thread, HomeKit) from the device registry. Trigger phrases: "add HA integration", "configure home assistant", "query HA entities", "create HA token", "HA REST API", "pair homekit", "set up matter in HA", "add spotify to HA", "is this device zigbee or thread", "what protocol is this device", "move devices to ZHA", "identify matter devices".
hass-declarative
Manage Home Assistant automations, scenes, and scripts declaratively via NixOS modules. Covers adding/editing/removing entities in the domain-based Nix structure, the ensureEnabled wrapper (initial_state enforcement), the sweep service that cleans orphaned entities, entity identity (IDs, slugs, unique_ids), the eval test assertions, and the build-time manifest. Trigger phrases: "add HA automation", "new scene", "new script", "remove automation", "declarative HA", "sweep unmanaged", "entity drift", "ghost entity", "orphaned automation", "HA domain file", "eval-automations test", "hass assertion", "ensureEnabled", "initial_state".
agenix-secrets
Create, edit, and wire up agenix-encrypted secrets in this dotfiles repo. Use when adding API keys, tokens, credentials, passwords, or any sensitive values to NixOS host configs. Trigger phrases: "add a secret", "encrypt with agenix", "new age secret", "hide this value", "agenix secret".
linear
Read-only Linear issue access via the Linear GraphQL API.
Didn't find tool you were looking for?