跳到主要内容
知仓学习社ZHICANG

loop-heartbeat

Scheduled discovery automation that runs scans on a heartbeat interval, classifies findings, and routes them to goals or triage inbox.

不碰外部(只输出文字)无严重或高危命中hashgraph-online/awesome-codex-plugins

它会碰到什么

扫了多少1 个文本文件,4 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Loop Heartbeat

Scheduled discovery automation that runs scans, finds issues, and routes findings

to goals or triage. The heartbeat is what makes a loop a loop — not a one-shot run.

Based on Addy Osmani's Loop Engineering: "Automations are the thing that makes

a loop an actual loop. Run prompts on a schedule. Findings go to a triage inbox;

empty runs archive themselves."

When to Activate

  • User invokes /heartbeat start to begin scheduled scans
  • User invokes /heartbeat run for a one-shot scan
  • A goal converges and follow-up scanning is needed
  • Project onboarding includes quality monitoring setup

Core Concept

The heartbeat is the "discovery layer" of a loop. It answers: "What's broken right

now?" on a recurring basis without human prompting.

Every 30 minutes:
  ┌─ Run test suite ─── PASS → skip
  ├─ Run linter ─────── FAIL → create goal (auto-fix)
  ├─ Audit deps ─────── FAIL → triage inbox (human decision)
  └─ Type check ─────── PASS → skip

Configuration

Create .claude/heartbeat.yaml in the project root:

heartbeat:
  interval: "30m"
  scans:
    - name: "test-health"
      command: "npm test 2>&1 | tail -10"
      onFailure: "auto-goal"
      description: "Test suite health"
    - name: "lint-drift"
      command: "npm run lint -- --quiet 2>&1 | wc -l"
      threshold: 0
      onFailure: "triage"
      description: "Lint error count"
    - name: "type-check"
      command: "npx tsc --noEmit 2>&1; echo EXIT:$?"
      onFailure: "auto-goal"
      description: "TypeScript type errors"
  budget:
    maxDollarsPerHour: 2.0
    pauseOnExhaust: true

Scan Result Classification

| onFailure | Behavior | Use When |

|-----------|----------|----------|

| auto-goal | Creates /goal automatically | Machine can fix it (tests, lint, types) |

| triage | Adds to /triage inbox | Human judgment needed (deps, security) |

| notify | Desktop notification only | Informational, no action required |

| ignore | Log silently | Monitoring only, aggregate later |

Budget Controls

  • maxDollarsPerHour: Pause heartbeat if scanning costs exceed this
  • pauseOnExhaust: If true, pause (resumable); if false, stop entirely
  • Goal creation inherits the default goal budget from /goal settings

Empty Run Handling

When all scans pass:

  • No goals or triage items are created
  • Run is logged to ~/.claude/heartbeat-last-run.json
  • Next run proceeds on schedule
  • This is the "archive themselves silently" behavior

Integration Points

  • /goal: auto-goal failures create goals via completion-oracle.js
  • /triage: triage failures append to ~/.claude/triage/inbox.jsonl
  • CronCreate: Scheduling uses the Claude Code CronCreate primitive
  • ScheduleWakeup: Alternative for dynamic-interval loops
  • Hooks: Runs as a scheduled task, not a synchronous hook

Hard Bans

  • Heartbeat MUST NOT modify code (it's discovery-only)
  • Heartbeat MUST NOT create goals without a stopping condition
  • Budget limits MUST be enforced (no unbounded scan spending)
  • Failed scans MUST be classified (no silent failures)
  • Empty runs MUST NOT create noise (pass = skip)

Example Session

User: /heartbeat start

System:
  Loaded .claude/heartbeat.yaml (3 scans configured)
  Registered CronCreate: every 30m
  Next run: 30m from now
  Budget: $2.00/hour

[30 minutes later, heartbeat fires]

Scan results:
  ✓ test-health: all tests pass
  ✗ lint-drift: 4 lint errors found → created goal-a1b2c3d4
  ✓ type-check: no type errors

Summary: 2/3 scans passed, 1 goal created

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。