From fulcrum
Emit heartbeat_agent_run every ~30s during any run >60s. Applies to long script runs, large-file edits, multi-step analysis.
npx claudepluginhub moabualruz/fulcrum --plugin fulcrumThis skill uses the workspace's default tool permissions.
Run >60s → call `fulcrum action exec heartbeat_agent_run` every ~30s with `current_step` + `progress_pct`. Janitor marks runs `stale` after 10 min silence. Stale run costs:
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Automates semantic versioning and release workflow for Claude Code plugins: bumps versions in package.json, marketplace.json, plugin.json; verifies builds; creates git tags, GitHub releases, changelogs.
Run >60s → call fulcrum action exec heartbeat_agent_run every ~30s with current_step + progress_pct. Janitor marks runs stale after 10 min silence. Stale run costs:
blocked, auto-escalated (possibly wrong audience).Bash you launched still running (build, test suite, long install).start_agent_run, waiting on result.fulcrum action exec heartbeat_agent_run
run_id: (from start_agent_run)
current_step: "refactoring auth module (3/5 files done)"
progress_pct: 60
current_stepPlain-english progress, not machine state:
"running test suite — 142/300 tests, 2 failures"."refactoring auth module (3/5 files)"."waiting on code_reviewer run R-0817"."working", "processing", "ok".Best-effort 0-100 integer. Don't stall at 99. Unsure? Report 50, move on. Heartbeat's real job = "still alive", not perfect tracker.
Bash running 5 min, zero heartbeats → janitor about to mark stale. Heartbeat now with current state.current_step unchanged 3 calls → truly stuck (block_agent_run) or progress tracker broken.start_agent_run upstream.See also: start-every-task, block-when-stuck.