MCPcopy Create free account
hub / github.com/codeaashu/claude-code / buildCronCreatePrompt

Function buildCronCreatePrompt

src/tools/ScheduleCronTool/prompt.ts:74–121  ·  view source on GitHub ↗
(durableEnabled: boolean)

Source from the content-addressed store, hash-verified

72}
73
74export function buildCronCreatePrompt(durableEnabled: boolean): string {
75 const durabilitySection = durableEnabled
76 ? `## Durability
77
78By default (durable: false) the job lives only in this Claude session — nothing is written to disk, and the job is gone when Claude exits. Pass durable: true to write to .claude/scheduled_tasks.json so the job survives restarts. Only use durable: true when the user explicitly asks for the task to persist ("keep doing this every day", "set this up permanently"). Most "remind me in 5 minutes" / "check back in an hour" requests should stay session-only.`
79 : `## Session-only
80
81Jobs live only in this Claude session — nothing is written to disk, and the job is gone when Claude exits.`
82
83 const durableRuntimeNote = durableEnabled
84 ? 'Durable jobs persist to .claude/scheduled_tasks.json and survive session restarts — on next launch they resume automatically. One-shot durable tasks that were missed while the REPL was closed are surfaced for catch-up. Session-only jobs die with the process. '
85 : ''
86
87 return `Schedule a prompt to be enqueued at a future time. Use for both recurring schedules and one-shot reminders.
88
89Uses standard 5-field cron in the user's local timezone: minute hour day-of-month month day-of-week. "0 9 * * *" means 9am local — no timezone conversion needed.
90
91## One-shot tasks (recurring: false)
92
93For "remind me at X" or "at <time>, do Y" requests — fire once then auto-delete.
94Pin minute/hour/day-of-month/month to specific values:
95 "remind me at 2:30pm today to check the deploy" → cron: "30 14 <today_dom> <today_month> *", recurring: false
96 "tomorrow morning, run the smoke test" → cron: "57 8 <tomorrow_dom> <tomorrow_month> *", recurring: false
97
98## Recurring jobs (recurring: true, the default)
99
100For "every N minutes" / "every hour" / "weekdays at 9am" requests:
101 "*/5 * * * *" (every 5 min), "0 * * * *" (hourly), "0 9 * * 1-5" (weekdays at 9am local)
102
103## Avoid the :00 and :30 minute marks when the task allows it
104
105Every user who asks for "9am" gets \`0 9\`, and every user who asks for "hourly" gets \`0 *\` — which means requests from across the planet land on the API at the same instant. When the user's request is approximate, pick a minute that is NOT 0 or 30:
106 "every morning around 9""57 8 * * *" or "3 9 * * *" (not "0 9 * * *")
107 "hourly""7 * * * *" (not "0 * * * *")
108 "in an hour or so, remind me to..." → pick whatever minute you land on, don't round
109
110Only use minute 0 or 30 when the user names that exact time and clearly means it ("at 9:00 sharp", "at half past", coordinating with a meeting). When in doubt, nudge a few minutes early or late — the user will not notice, and the fleet will.
111
112${durabilitySection}
113
114## Runtime behavior
115
116Jobs only fire while the REPL is idle (not mid-query). ${durableRuntimeNote}The scheduler adds a small deterministic jitter on top of whatever you pick: recurring tasks fire up to 10% of their period late (max 15 min); one-shot tasks landing on :00 or :30 fire up to 90 s early. Picking an off-minute is still the bigger lever.
117
118Recurring tasks auto-expire after ${DEFAULT_MAX_AGE_DAYS} days — they fire one final time, then are deleted. This bounds session lifetime. Tell the user about the ${DEFAULT_MAX_AGE_DAYS}-day limit when scheduling recurring jobs.
119
120Returns a job ID you can pass to ${CRON_DELETE_TOOL_NAME}.`
121}
122
123export const CRON_DELETE_DESCRIPTION = 'Cancel a scheduled cron job by ID'
124export function buildCronDeletePrompt(durableEnabled: boolean): string {

Callers 1

promptFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected