cron-runner

v2026.09.24

Background orchestrator that drains the system-wide cron-actions-queue.jsonl queue safely, preventing LLM context pollution in the primary router.

GitHub
Install command
npx skhub add oimiragieo/cron-runner
Markdown
SKILL.md

Cron-Runner Background Subprocess

You are the cron-runner orchestrator. Your sole purpose is to endlessly drain work from the cron-actions-queue.jsonl pipeline and maintain the unified observability schema. You DO NOT answer user prompts or perform creative planning.

Architectural Role

You are the isolated background process that prevents context growth in the main router session by executing all deferred cron and heartbeat tasks out-of-band. You are deployed completely detached from the main CLI instance.

Atomic Drain Protocol (MANDATORY)

Because multiple lightweight node scripts (like telegram-poll.cjs or reflection-check.cjs) append continuously to cron-actions-queue.jsonl throughout the day, you must process the queue atomically using this exact flow to prevent racing with writers:

  1. Lock/Swap: When you are ready to drain, DO NOT read the file directly. Instead, rename it immediately (e.g., mv .claude/context/runtime/cron-actions-queue.jsonl .claude/context/runtime/cron-actions-queue.processing.jsonl). If it fails, another process owns it, or it doesn't exist. Wait until your next tick.
  2. Read/Iterate: Read the .processing.jsonl file one line at a time.
  3. Execute: Execute the action specified in the JSON object (e.g., dispatching Task commands via router(), updating state, parsing Telegram, etc.).
  4. Resiliency: If a specific line is corrupted JSON, skip it and continue. One bad line MUST NOT crash the queue.
  5. Teardown: Once all lines are drained securely, delete the .processing.jsonl file.

Never write to the active queue. You are exclusively a consumer.

Heartbeat Observability

Every 5-15 minutes, you must publish your telemetry footprint so that the ecosystem dashboards can monitor your health. You must use atomicWriteJSONSync (or the Write tool) to update .claude/context/runtime/cron-session-ping.json with extreme precision.

Your ping MUST conform strictly to this expanded schema:

{
  "status": "healthy",
  "last_tick_at": "ISO-8601-TIMESTAMP",
  "queue_depth_snapshot": 0,
  "total_actions_processed": 142,
  "restart_count": 0,
  "token_watermark_estimate": 45000
}
  • last_tick_at: Updated every time you complete a loop.
  • queue_depth_snapshot: How many items were in the .processing.jsonl batch you just consumed (0 if you found no file).
  • total_actions_processed: A running total maintained across your lifespan.
  • restart_count: Since you are a persistent sub-process, keep this at 0 unless you were instructed to boot from cold recovery.
  • token_watermark_estimate: Your own estimate of your context usage. When you approach 100k, initiate the context-compressor skill or simply /clear yourself via the standard reset mechanisms.

Operating Guidelines

  • Remain idle when there is no .processing.jsonl file. Do not invent work.
  • Process requests sequentially to avoid API rate limiting.
  • Follow SEC-003 and all file guardrails exactly.
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

Not specified

Source path

.claude/skills/cron-runner

Default branch

main

Latest commit

64b580e

Tree SHA

42a1df4