Heartbeat
- Repo stars 13
- Author updated Live
- Author repo miroshark-aeon
- Domain
- Other · meta
- Compatible agents
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- Trust score
- 94 / 100 · audit passed
- Author / version / license
- @aaronjmars · no license declared
- Token usage
- Lean
- Setup complexity
- Guided setup
- External API key
- Not required
- Operating systems
- Unspecified (assume cross-platform)
- Runtime requirements
- No special requirements
- Permissions
-
- Read-only
- Write / modify
- Shell exec
- Network behavior
- External requests
- Install commands
- 26 variants
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
---
name: Heartbeat
description: Proactive ambient check — surface anything worth attention If ${var} is set, focus checks on tha…
category: other
runtime: no special runtime
---
# Heartbeat output preview
## PART A: Task fit
- Use case: Proactive ambient check — surface anything worth attention If ${var} is set, focus checks on that specific area. Read memory/MEMORY.md and the last 2 days of memory/logs/ for context. makes outbound network calls. Works with Claude Code, Cursor, Cline and 23 more..
- Inputs: target material, constraints, expected output, and acceptance criteria.
- Evidence boundary: follow “Step 0: Compute today's day-of-week from the shell — do not infer it / Checks” and do not present inference as author intent.
## PART B: Execution result
- **01** The card summarizes the use case; runtime output centers on “Proactive ambient check — surface anything worth attention If ${var} is set, focus checks on that specific area. Read memory/MEMORY.md and the last 2 days of memory/logs/ for context. makes outbound network calls. Works with Claude Code, Cursor, Cline and 23 more.”.
- **02** When the source has headings, the agent prioritizes “Step 0: Compute today's day-of-week from the shell — do not infer it / Checks” so the result follows the author’s structure.
- **03** Typical output includes task judgment, concrete steps, required commands or file edits, validation, and follow-up options.
- **04** Risk context follows the fingerprint: read files, write/modify files, run shell commands; may access external network resources; usually needs no extra API key.
## Running Rules
- read files, write/modify files, run shell commands; may access external network resources; usually needs no extra API key.
- Validate with a small sample before expanding scope.
- Return the result, validation criteria, and next iteration options. The source does not require a stable slash command. After installation, invoke the skill by name and describe the task.
Name target files or source material, expected output, forbidden changes, and whether network or shell access is allowed. Permission fingerprint: read files, write/modify files, run shell commands.
Start with a small task and check whether the result follows “Step 0: Compute today's day-of-week from the shell — do not infer it / Checks”. Inspect diffs, logs, previews, or tests before expanding scope.
Confirm the final output includes a concrete result, evidence, and next action. If it stays generic, tighten inputs, boundaries, and acceptance criteria.
---
name: Heartbeat
description: Proactive ambient check — surface anything worth attention If ${var} is set, focus checks on tha…
category: other
source: aaronjmars/miroshark-aeon
---
# Heartbeat
## When to use
- Proactive ambient check — surface anything worth attention If ${var} is set, focus checks on that specific area. Read…
- Use it when the task has clear inputs, repeatable steps, and validation criteria.
## What to provide
- Target material, scope, expected result, and forbidden changes.
- Whether network, commands, file writes, or external services are allowed.
## Execution rules
- Organize steps around “Step 0: Compute today's day-of-week from the shell — do not infer it / Checks” and keep inference separate from source facts.
- read files, write/modify files, run shell commands; may access external network resources; usually needs no extra API key.
- Validate with a small sample before expanding the task.
## Output requirements
- Return the deliverable, key evidence, validation method, and next action.
- Mark missing information as unknown; do not invent commands, platforms, or dependencies. The author source anchors workflow facts; repository files anchor sources and commands; Fluxly only adds fit, limitations, and quality judgment.
skill "Heartbeat" {
input -> user goal + target files + boundaries + acceptance criteria
context -> Step 0: Compute today's day-of-week from the shell — do not infer it / Checks
rules -> SKILL.md triggers / order / output contract
runtime -> no special runtime | read files, write/modify files, run shell commands | may access external network resources
guardrails -> usually needs no extra API key + small-sample validation + diff/log review
output -> copyable result + checklist + next iteration
} ${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.
Step 0: Compute today's day-of-week from the shell — do not infer it
Before checking any schedules, run:
date -u +%A # full name, e.g. "Wednesday"
date -u +%u # numeric, 1=Mon … 7=Sun
date -u +%d # day-of-month, e.g. "30"
Use the shell-computed day-of-week as the source of truth in every "is this skill scheduled today?" comparison below. Do not infer the day-of-week from ${today} or the YYYY-MM-DD date — past heartbeat runs have hallucinated the wrong weekday from the date (Apr 29 2026 was logged as "Tuesday" when it was actually Wednesday, which then mis-classified memory-flush's on-schedule Wed run as "off-schedule" because the skill thought Wed wasn't a memory-flush day). The shell value is deterministic; the inferred value is not.
Anchor the heartbeat report header on the shell output: Date: <%A> <Mon DD>, <YYYY> — <HH:MM> UTC.
Translate cron expressions before checking schedules:
- Weekday (
0 N * * D) —Dis0=Sun, 1=Mon, …, 6=Sat. Compare againstdate -u +%u(which is1=Mon … 7=Sun— Sunday differs). - Every-other-day (
0 N */2 * *) — when in doubt, ground-truth against the last 7 days ofcron-state.jsonlast_dispatchtimestamps for that skill. Do not assume which parity (odd / even days-of-month) the cron resolves to without checking.
Checks
Check the following:
Any open PRs stalled > 24h? (use
gh pr listto check)Anything flagged in memory that needs follow-up?
Check recent GitHub issues for anything labeled urgent (use
gh issue list)Scan aeon.yml for enabled scheduled skills — cross-reference with today's log (
memory/logs/${today}.md) to find any that haven't run when expected.Matching skill names to log entries: Skills log under human-readable
## Headers, not their aeon.yml kebab-case names. To check if a skill ran, do a case-insensitive match against##header lines only —grep -iE '^## …', not a free-text substring search of the full file. Header-only matching matters for short skill names: substring-searching the whole file forfeaturematches body text like "added a feature" in push-recap, falsely concluding thefeatureskill ran on a day it actually failed and masking the outage. Build the regex by replacing hyphens in the kebab-case name with[ -]?so both## Feature Builtand## Self-Improveare accepted. Examples:token-report→^## token[ -]?report(matches## Token Report,## Token Report (Update))push-recap→^## push[ -]?recap(matches## Push Recap,## Push Recap (MiroShark))fetch-tweets→^## fetch[ -]?tweets(matches## Fetch Tweets — MIROSHARK)feature→^## feature\b(matches## Feature Built — ...,## feature skill run— and does not match the bare word "feature" inside other sections' body text)hyperstitions-ideas→^## hyperstitions(matches## Hyperstitions Ideas)memory-flush→^## memory[ -]?flushself-improve→^## (self[ -]?improve|agent self-improvement)(matches## Self-Improve — 2026-05-04,## Agent Self-Improvement)repo-pulse→^## repo[ -]?pulserepo-article→^## repo[ -]?articlerepo-actions→^## repo[ -]?actionsproject-lens→^## project[ -]?lenstweet-allocator→^## tweet[ -]?allocatorweekly-shiplog→^## weekly[ -]?shiplogskill-leaderboard→^## skill[ -]?leaderboard
Timing rules (avoid false positives):
- GitHub Actions cron has ±10 min jitter and skills take 5-15 min to complete.
- Only flag a skill as missing if its scheduled time was more than 2 hours ago.
- Also check
gh run list --workflow=aeon.yml --created=$(date -u +%Y-%m-%d) --json displayTitle,status,createdAt— if the skill is currentlyin_progressorqueuedand was created less than 2 hours ago, don't flag it. - Stuck-run detection: If a run has been
in_progressfor more than 2 hours (comparecreatedAtagainst current time), treat it as stuck. Flag it in the report as "stuck (in_progress > 2h)" and allow auto-trigger of a fresh run. Do NOT cancel the stuck run — just dispatch a new one alongside it. - For day-of-week schedules (e.g.
0 20 * * 0for Sundays), only check on the matching day.
Before sending any notification, grep the last 48h of logs for the same issue. If the same missing-skill or stalled-PR was already reported, skip it. Batch all findings into a single notification.
If nothing needs attention, log "HEARTBEAT_OK" and end your response.
If something needs attention:
Auto-trigger missing skills — for each skill confirmed missing (not just stalled PRs or issues), dispatch it if not already running:
Dedup guard — check before dispatching: Before firing
gh workflow runfor a skill, check whether a run for that skill is alreadyqueuedorin_progressand was started less than 2 hours ago:gh run list --workflow=aeon.yml --json displayTitle,status,createdAt --jq \ '.[] | select((.status == "queued" or .status == "in_progress") and ((now - (.createdAt | fromdateiso8601)) < 7200)) | .displayTitle'If the output contains the skill name (case-insensitive), skip the dispatch — the skill is already pending. Runs older than 2 hours are considered stuck and ignored by this guard (a fresh dispatch is allowed). Only dispatch skills that have no active-and-recent or queued run:
gh workflow run aeon.yml -f skill="SKILL_NAME"Skip auto-trigger for:
heartbeatitself,memory-flush,self-improve,reflect,self-review(meta/housekeeping skills). For all other confirmed-missing daily or weekly skills that pass the dedup check, dispatch them.Send a concise notification via
./notifylisting what was flagged, what was auto-triggered, and what was skipped (already queued/in-progress).Log the finding and action taken to memory/logs/${today}.md.
Decide Fit First
Design Intent
How To Use It
Boundaries And Review