delay
Delay
Schedule the given instructions to fire exactly once at a future time in this session. Scheduling is the entire task of this turn — do NOT start executing the instructions now, even partially. That is the failure mode this skill exists to prevent: the task running immediately AND again at fire time.
Arguments: $ARGUMENTS
Steps
-
Parse arguments. Split at the first comma: everything before it is the time spec ("1 hour later", "in 30 min", "at 16:30", "tomorrow 9am"), everything after is the instructions to run later (pass through verbatim — including slash commands like
/x-wt-teams foo bar). If either part is missing or the time spec is ambiguous, ask instead of guessing. -
Compute the fire time. Run
date '+%Y-%m-%d %H:%M'for the current local time, then compute the target:
- Relative spec → add the delta to now.
- Absolute spec already past today → assume the next occurrence (tomorrow).
- Handle rollover: adding hours may cross midnight or month boundaries — the pinned day/month must match the actual target date.
- Create exactly one job with the CronCreate tool:
cron: fully pinned"M H DOM MON *"for the target time. Use the exact computed minute — don't round to :00/:30 (the harness fires those up to 90s early, and round marks cause fleet-wide load spikes).recurring: false. This makes the job auto-delete after firing. A recurring job (the default) stays alive and can fire again — the double-invoke bug.prompt: prefix the instructions so the future turn knows it is a scheduled firing, not a fresh request to schedule: