Skip to content
Back to skills

Heartbeat

ASecurity

Heartbeat monitoring configuration in istota/config/

  • 13 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 3, 2026
ai-agentsgoshellexpressapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 5, 2026

npx -y skills add istota-project/istota --skill heartbeat --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Heartbeat?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Heartbeat
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/istota-project-heartbeat/badge)](https://www.skillsdirectory.com/skills/istota-project-heartbeat)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: heartbeat
triggers: [heartbeat, monitoring, health check, alert, file watch, url health, disk space, backup check]
description: Heartbeat monitoring configuration in istota/config/
---
HEARTBEAT.md is for monitoring — checking conditions and alerting on failures. For running tasks on a schedule (including AI-powered checks), use CRON.md instead.

The user can configure heartbeat monitoring checks in their `{BOT_DIR}/config/HEARTBEAT.md` file. The system evaluates these checks periodically and sends alerts when conditions fail.

## File Format

The `HEARTBEAT.md` file contains a TOML block with settings and check definitions:

```toml
[settings]
conversation_token = "ROOM_TOKEN"      # Talk room for alerts
quiet_hours = ["22:00-07:00"]          # Suppress alerts during these hours
default_cooldown_minutes = 60          # Default time between repeat alerts

[[checks]]
name = "backup-fresh"
type = "file-watch"
path = "/Users/alice/backups/latest.log"
max_age_hours = 25
cooldown_minutes = 120                 # Override default cooldown
interval_minutes = 15                  # Run this check every 15 min (default: every cycle)

[[checks]]
name = "disk-space"
type = "shell-command"
command = "df -h / | tail -1 | awk '{print $5}' | tr -d '%'"
condition = "< 90"
message = "Disk usage at {value}%"

[[checks]]
name = "api-health"
type = "url-health"
url = "https://api.example.com/health"
expected_status = 200
timeout = 10
```

## Check Types

### file-watch
Check file age or existence.
- `path`: path to the file inside your own folder, `/Users/<your id>/...`. A path anywhere else, one with `..` in it, or one that goes through a symlink reads as not found
- `max_age_hours`: Maximum file age in hours (optional)

### shell-command
Run a command and evaluate the output.
- `command`: Shell command to execute
- `condition`: Comparison expression:
  - `< N` / `> N` — numeric comparison
  - `== value` — exact string match
  - `contains:text` — substring match
  - `not-contains:text` — negative substring match
- `message`: Alert message (use `{value}` placeholder)
- `timeout`: Command timeout in seconds (default: 30)

### url-health
HTTP health check. Admin-only: for anyone else the check reports unhealthy without making a request.
- `url`: URL to check
- `expected_status`: Expected HTTP status code (default: 200)
- `timeout`: Request timeout in seconds (default: 10, between 1 and 60)

### calendar-conflicts
Find overlapping calendar events.
- `lookahead_hours`: Hours to look ahead (default: 24)

### task-deadline
Check for overdue tasks from TASKS.md.
- `source`: Currently only `"file"` is supported
- `warn_hours_before`: Hours before deadline to warn (default: 24)

Tasks should use deadline markers: `@due(2024-01-15)` or `(due: 2024-01-15)`

### self-check
System health diagnostics (same checks as `!check` command). Checks: Claude binary in PATH, bwrap presence (if sandbox enabled), DB connectivity, recent task failure rate, and optional Claude CLI execution test.
- `execution_test`: Whether to run a live Claude invocation test (default: true)

```toml
[[checks]]
name = "system-health"
type = "self-check"
interval_minutes = 30
cooldown_minutes = 60

[checks.config]
execution_test = true
```

## Quiet Hours

Quiet hours suppress alert delivery but checks still run. When quiet hours end, the next failure triggers an immediate alert. Supports both same-day ranges (`09:00-17:00`) and cross-midnight ranges (`22:00-07:00`).

## Cooldown

After an alert is sent, no repeat alerts are sent for that check until the cooldown period expires. This prevents alert fatigue. Use `cooldown_minutes` per-check to override the global `default_cooldown_minutes`.

## Check Interval

By default, all checks run every scheduler cycle (`heartbeat_check_interval`, default 60s). Use `interval_minutes` per-check to run expensive checks less frequently. Checks without `interval_minutes` run every cycle.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.