X-campaign follow-ups are owned by their respective agent sandboxes now; the orchestrator's Active items list ships empty so new users start clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
crons/
Markdown-frontmatter cron definitions consumed by
scripts/cron-runtime.ts. Each <id>.md file declares one scheduled
job; the runtime scans this directory at boot, schedules every enabled
job via Croner, and re-fires the
file's body as the next prompt to the active agent.
See scripts/cron-runtime.ts for the runtime implementation
(frontmatter parsing, scheduling, overlap/catchup semantics).
File shape
---
id: <unique-id> # must match filename, kebab-case
schedule: "0 23 * * 0" # 5-field cron expression
timezone: America/Denver
enabled: true
overlap: false # skip new fire if previous still running
catchup: false # don't replay missed fires after downtime
description: <one-line>
---
# Title
Body becomes the agent prompt at fire time.
Conventions
- Filename =
<id>.md, kebab-case. - Heartbeats follow the
heartbeat-<name>.mdnaming convention; their tmux session isheartbeat-<name>(see.claude/rules/sandbox-processes.md). - Disable a job by setting
enabled: false— do not delete the file (preserves history). - Runtime artefacts in this directory (
.cron.log,.pid) are gitignored; markdown definitions are tracked.
Override
Set CRONS_DIR=<path> to point the runtime at a different directory
(default: crons).