一键导入
heartbeat
Proactive ambient check — surface anything worth attention
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Proactive ambient check — surface anything worth attention
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Audit every enabled skill's upstream file dependencies for staleness — flags chained skills about to consume yesterday's article or a long-dead topic file
Audit .github/workflows and composite actions with zizmor + actionlint, classify findings against the prior audit, auto-fix Critical/High regressions, and open a PR only when something actually changed.
Weekly API cost report — computes dollar costs from token usage, flags anomalies, forecasts burn, and prescribes concrete optimizations
Weekly partial-correlation of compute economics against a Hyperliquid macro basket — DePIN-token proxy track runs every week (n>180d), sweep-P&L track defers until n≥30 joined days
Score frontier LLMs (Claude, GPT, Gemini, DeepSeek, Grok) on a private compute-markets task corpus, track score deltas across releases, flag public-vs-private divergence
Save a note as one or more atomic notes under memory/notes/ (and optionally Supernotes). Splits bundled inputs into separate atomic files.
| name | Heartbeat |
| description | Proactive ambient check — surface anything worth attention |
| var | |
| tags | ["meta"] |
${var} — Area to focus on. If empty, runs all checks.
If ${var} is set, focus checks on that specific area.
Read memory/MEMORY.md and the last 2 days of memory/logs/ for context.
Read memory/cron-state.json. This file tracks every scheduled skill's state and quality metrics:
{
"skill-name": {
"last_dispatch": "2026-04-06T12:00:00Z",
"last_status": "dispatched|success|failed",
"last_success": "2026-04-06T12:05:00Z",
"last_failed": "2026-04-05T12:03:00Z",
"total_runs": 10,
"total_successes": 8,
"total_failures": 2,
"consecutive_failures": 0,
"success_rate": 0.80,
"last_quality_score": 4,
"last_error": "error signature text"
}
}
Flag these conditions:
last_status: "failed". Report the skill name and when it failed.last_status: "dispatched" where last_dispatch is >45 minutes ago. The skill was dispatched but never reported back — likely hung or crashed before the state update step ran.consecutive_failures >= 3. This likely indicates an external API is down or rate-limiting. Report the skill, failure count, and last_error. If multiple skills share similar error signatures, flag the shared dependency.success_rate < 0.5 (and total_runs >= 5). The skill is failing more than it succeeds.last_success is >36 hours ago (or missing), note that heartbeat itself may be unreliable.gh pr list)gh issue list)Read aeon.yml for enabled skills with schedules. Cross-reference with memory/cron-state.json:
schedule, and flag only if that occurrence is more than 2 hours ago (the margin absorbs normal dispatcher lag). A freshly-enabled skill whose first window is still upcoming, or passed under 2h ago, is expected to have no entry — do not flag it and do not let it push the status page to 🟡 WATCH.last_success is >2x its schedule interval old (e.g., a daily skill hasn't succeeded in >48h), flag it.schedule: reactive) or on-demand (workflow_dispatch) skills for a missing entry — they have no cron window.Do NOT use gh run list for this — the state file is authoritative.
Before sending any notification, grep memory/logs/ for the same item. If it appears in the last 48h of logs, skip it. Never notify about the same item twice.
Batch all findings into a single notification, grouped by priority tier:
🔴 FAILED: skill-a (failed 2h ago), skill-b (stuck 1h ago)
🟡 STALLED: PR #42 open 3 days
🔵 MEMORY: follow-up on X flagged 2 days ago
After the priority checks (even when everything is green — this step always runs), regenerate docs/status.md so the public GitHub Pages site reflects current fleet health.
memory/cron-state.json — per-skill run state (authoritative)memory/issues/INDEX.md — open issue tableaeon.yml — enabled skill list with schedulesarticles/token-report-*.md (most recent by filename date) — optional; powers the Token Pulse section. Skipped silently when no file exists.Compute one of three overall states from the same signals used above:
🔴 DEGRADED — any P0 flag fired (failed skill, stuck skill, consecutive_failures ≥ 3, chronic failures with success_rate < 0.5, heartbeat self-check >36h stale)🟡 WATCH — any P1/P2/P3 flag fired (stalled PRs, urgent issues, flagged memory items, skills >2x their schedule interval old) or any open issue with severity critical or high🟢 OK — no flags at allWrite docs/status.md with Jekyll frontmatter so it renders as a gallery page:
---
layout: default
title: "Status"
permalink: /status/
---
# Agent Status
**Overall:** 🟢 OK
**Updated:** 2026-04-24 19:06 UTC
**Open issues:** 0
**Next scheduled run:** heartbeat at 20:00 UTC
Auto-generated by the `heartbeat` skill on every run (daily at 08:00 UTC). If the Updated timestamp is more than ~26h stale, the agent is not running.
## Token pulse
| Token | Price | 24h | Liquidity | Volume (24h) | FDV |
|-------|-------|-----|-----------|--------------|-----|
| AEON | $0.0000032626 | -11.16% | $223.4K | $41.3K | $326.3K |
_Source: `articles/token-report-2026-04-28.md` · verdict: SLIDING_
## Skill health (last 7 days)
| Skill | Last run | Status | Success rate | Consecutive failures |
|-------|----------|--------|-------------:|---------------------:|
| token-report | 2026-04-24 12:30 UTC | ✅ success | 100% | 0 |
| fetch-tweets | 2026-04-24 06:53 UTC | ✅ success | 95% | 0 |
| … | … | … | … | … |
## Open issues
_(if INDEX.md has any open rows, render them here; otherwise: "No open issues.")_
| ID | Title | Severity | Category | Detected |
|----|-------|----------|----------|----------|
| ISS-001 | … | medium | rate-limit | 2026-04-22 |
---
*Fork this repo and your copy inherits this page automatically — [how it works](/memory/).*
aeon.yml (not only those with recent runs). For skills with no entry in cron-state.json, show — for timestamp and not yet run in status.YYYY-MM-DD HH:MM UTC (strip seconds and the Z).total_successes / total_runs × 100 rounded to whole percent; display — when total_runs == 0.✅ success, ❌ failed, ⏳ dispatched (if last_dispatch within 45min), 🕸 stuck (if last_dispatch > 45min and last_status still dispatched), — (never run).Next scheduled run: line, pick the enabled skill with the soonest upcoming cron time relative to now.docs/status.md wholesale each time — do not append..env, secrets, or anything outside cron-state.json + issues/INDEX.md + aeon.yml + articles/token-report-*.md. This file is public.articles/token-report-*.md by filename date (sort descending, take the first match)._No recent token data (latest report YYYY-MM-DD)._ in place of the table — do not lift stale figures into the table.## Token pulse section entirely. The status page must still render cleanly with no token row.memory/MEMORY.md "Tracked Token" table (first row, Token column). If the table is missing, render the heading as ## Token pulse with the symbol column blank.Value | 24h Change and new Now | 24h Δ table layouts):
| Price | row → first $ value in the row → strip whitespace.±?\d+(\.\d+)?% token in the row (typically the second cell). Render as written, preserving sign. If absent, render —.| Liquidity | row → first $ value.Volume\b.*24h or 24h Volume → first $ value.| FDV | row → first $ value.$ value cannot be located, render — for that cell only — do not skip the section.**Verdict:** LABEL line, append · verdict: LABEL to the source line. If no Verdict line is present (older format), omit the suffix._Source: ..._ line names the exact article file used so a reader can verify the numbers.The file lands on main through the workflow's auto-commit step — no explicit git commands needed in this skill.
If nothing needs attention, log "HEARTBEAT_OK" (plus the overall status page verdict, e.g. HEARTBEAT_OK · STATUS_PAGE=OK) and end your response.
If something needs attention:
./notify (grouped by priority as above)STATUS_PAGE=DEGRADED — wrote docs/status.md