Quick reference — full SkyRun-tenant fleet
All skill files at ~/.claude/scheduled-tasks/<task-id>/SKILL.md unless noted. Cron times are LOCAL (Joseph's MDT), evaluated by the scheduler.
Daily / multiple-times-daily
| Task ID | Cron (local) | Purpose |
|---|---|---|
live-ea | /20 9-18 * 1-5 | Every 20m, weekdays 9-7. Inbox triage, draft replies in Joseph's voice, populate pending_drafts.jsonl. Never sends. |
transcript-scan | 0 8,12,16 * | 3x/day. Sweeps Gmail + local for new transcripts → Call Transcripts/, updates index.json. |
gmail-deep-scan | 0 9,13,17,22 * | 4x/day. Bulk categorize non-transcript email, file attachments, write insights for morning brief. |
daily-beenverified-enrichment | 0 6 * | 6am. 12 leads/day BV enrichment (HOT 3, WARM 3, NURTURE 2, SWITCH 3, LOW 1). 400/mo budget. SoT + HS + SmartLead sync. |
daily-data-quality-check | 0 7 * | 7am. SoT ↔ HubSpot ↔ SmartLead reconciliation, auto-fix low-risk drift. |
commitment-tracker | 30 8 * | 8:30am. Sweeps yesterday's transcripts + sent email for "I'll do X by Y" commitments → ledger; surfaces overdue with freshness-recheck flag. |
smartlead-bounce-handler | 0 11 * | 11am. Mines mailer-daemon notifications, classifies HARD vs SOFT (RFC 5321 enforced), updates SoT bounce ledger, queues HS proposals. |
close-to-onboarding-handoff | 0 12 * | 12pm. On any deal moving to closed-won, generates Word handoff doc + email to Rachel. |
deal-postmortem-capture | 15 12 * | 12:15pm. Captures won/lost lessons; feeds predictive scoring v2. |
nightly-consolidation | 0 23 * | 11pm. Rolls up day's activity → KG upserts, project memory, morning brief. |
gate-proof-runner | 30 7 * | 7:30am. Runs gate_proof_runner.sh end-to-end (48 checks across 10 proof groups). Catches any regression in the hardwired fortifications: HS-live-query gate, prior-decision-check, heartbeat schema, DNC, validator, freshness envelope, stale locks, bounce handler, KG drift, foundation health. Writes heartbeat + fix_queue + ntfy on any fail. Built 2026-05-02. |
Weekly
| Task ID | Cron (local) | Purpose |
|---|---|---|
grand-county-property-scout | 0 6 1 | Mon 6am. Weekly STR property scout — 6 mandatory public-records sources + BV soft-fail. |
postcard-ledger | 0 10 1 | Mon 10am. Mines email + transcripts for confirmed postcard sends; syncs SoT ↔ HS; produces Next_Postcard_Round_<DATE>.xlsx. |
stalled-deal-watchdog | 0 8 1-5 | Weekdays 8am. Computes last_touch_real per deal; stage-specific stall thresholds; surfaces follow-up drafts. |
referral-watchdog | 0 20 0 | Sun 8pm. 90-day onboarded owners get auto-drafted referral asks. |
High-frequency
| Task ID | Cron (local) | Purpose |
|---|---|---|
qb-quarterback | every 30m, 6am-10pm | Persistent agent loop, branded "SkyRun QB" — always-current nerve center. Drop-in for off-the-cuff work + system-surfaced items. |
One-time (self-disabling or already drained)
| Task ID | Status | Purpose |
|---|---|---|
historical-gmail-backfill | DISABLED — backfill complete | Resumable backfill of entire Gmail archive. Self-disables on complete:true. |
dq-verify-leak-cleanup-2026-04-28 | One-time, drained | Apr 28 SmartLead leak cleanup verifier |
restore-crons-2026-04-30 | One-time, drained | Apr 30 cron-state restore after laptop-closed overnight |
Adam Fleckles (Phase 1 brain) tenant — separate set
These run with adam-bd- prefix, separate state/health/fix-queue. Listed for completeness:
adam-bd-live-eaadam-bd-gmail-deep-scanadam-bd-transcript-scanadam-bd-daily-data-quality-checkadam-bd-nightly-consolidation
OS-level helpers (NOT cron-managed, but part of the fleet)
system_hygiene.sh— hourly via parent. Zombies, MCP drift, log size, stale locks (/tmp/skyrun_.lockAND~/Library/Application Support/SkyRun/locks/.lock), heartbeat pruning, chrome_bridge state, BV silent-fire detection. Pushes ntfy on RED.
Health files
Every task writes a heartbeat to ~/Library/Application Support/SkyRun/health/. Canonical filename: YYYY-MM-DD_<task-id>_HHMM.json (UTC). The hygiene matcher uses a defensive double-glob so bare-name patterns are also caught. See daily-beenverified-enrichment/SKILL.md Step 9b for the canonical heartbeat shape (task_id, status, timestamp, last_run_at — never null).
Data flow snapshot
6am daily-beenverified-enrichment → +12 leads enriched, SoT+HS+SmartLead synced
6am grand-county-property-scout (Mon) → +N new GC leads
7am daily-data-quality-check → SoT/HS/SL drift fixed
8am stalled-deal-watchdog (M-F) → stalled-deal drafts staged
8:30 commitment-tracker → "I'll do X by Y" ledger refreshed
9am gmail-deep-scan → email categorization + attachments filed
9-7 live-ea (every 20m, M-F) → inbox triage + reply drafts
10am postcard-ledger (Mon) → next round Excel built
11am smartlead-bounce-handler → HARD/SOFT bounces processed
12pm close-to-onboarding-handoff → won deals handed to Rachel
12:15 deal-postmortem-capture → won/lost lessons captured
13:00 gmail-deep-scan → mid-day re-scan
16:00 transcript-scan → afternoon transcript sweep
17:00 gmail-deep-scan → afternoon re-scan
20:00 referral-watchdog (Sun) → 90-day owner referral asks
22:00 gmail-deep-scan → final day-end scan
23:00 nightly-consolidation → KG upsert + morning brief built
Background, every 30m, 6am-10pm:
qb-quarterback (the always-on nerve center)
How to add a new task
1. List existing: mcp__scheduled-tasks__list_scheduled_tasks (avoid collision)
2. Create skill at ~/.claude/scheduled-tasks/<task-id>/SKILL.md
3. Use local-time cron (not UTC) — scheduler evaluates in Joseph's local tz
4. If using Chrome, must use chrome_bridge.py per chrome_bridge.md (NOT mcp__Claude_in_Chrome__* — those break in scheduled context due to per-domain ACL)
5. Heartbeat must use canonical filename: YYYY-MM-DD_<task-id>_HHMM.json with required-fields shape
6. Add an entry to this reference doc
Cross-references
- Each skill's
SKILL.md— canonical behavior ~/Library/Application Support/SkyRun/cron_state_pre_fire_<DATE>.json— snapshot of cron expressions before any fire-now manipulation~/Library/Application Support/SkyRun/health/— heartbeats~/Library/Application Support/SkyRun/system_hygiene.sh— health watchdogreference_hs_pipeline_stages.md— HS stage IDs (required reading for any task that writes deal stages)