heartbeat-log
This skill should be used when the user asks to "show heartbeat log", "heartbeat history", "what has woterclip done", "show agent activity", "summarize heartbeats", or wants to analyze past heartbeat activity. Parses heartbeat-log.jsonl for summaries and analytics.
Heartbeat Log
Parse and summarize the WoterClip heartbeat log file (.woterclip/heartbeat-log.jsonl).
Log Format
Each line is a JSON object:
{"heartbeat": 7, "timestamp": "2026-03-25T10:15:00Z", "issue": "WOT-79", "persona": "backend", "duration_sec": 720, "status": "in_progress", "actions": ["committed a1b2c3d", "created sub-issue WOT-83"]}
Procedure
Step 1: Read Log
Read .woterclip/heartbeat-log.jsonl. If missing or empty, report "No heartbeat history found."
Parse each line as JSON. Handle malformed lines gracefully (skip with warning).
Step 2: Summarize
Recent activity (default: last 10 heartbeats):
Heartbeat History
─────────────────
#7 10:15 backend WOT-79 In Progress (12 min)
#6 09:45 backend WOT-81 Completed (8 min)
#5 09:15 ceo WOT-80 Triaged (4 min)
Aggregate stats (when asked for analytics or summary):
- Total heartbeats
- Heartbeats per persona (breakdown)
- Average duration per persona
- Completion rate (completed / total)
- Most active issues (by heartbeat count)
- Blocked issues and duration blocked
Step 3: Filter Options
Support filtering when the user asks:
- By persona: "show backend heartbeats" → filter by
personafield - By issue: "show activity for WOT-79" → filter by
issuefield - By date range: "show today's heartbeats" → filter by
timestamp - By status: "show blocked heartbeats" → filter by
status
Notes
- The log file is append-only and informational — safe to truncate if it grows too large
- Heartbeat numbers are per-issue (derived from comments), not global sequence numbers
- Duration is wall-clock time from heartbeat start to report posting