About Deferring Task Execution
Deferring Task Execution is a skill for Claude agents that postpones work until a requested duration or clock time. It guides the agent through confirming the task, running a background timer, waiting for completion, and then proceeding.
Key features
- 01Relative-duration and clock-time inputs
- 02Natural-language time parsing
- 03Background timer workflow
- 04Waits for timer completion before acting
- 05Cancellation and session-lifetime guidance
Use cases
- 01Starting a task after a specified delay
- 02Scheduling work for a time of day
- 03Keeping an agent session active during a long wait
- 04Canceling a pending timed task
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ sammcj/ agentic-coding --skill deferring-task-executionAfter installing, type/deferring-task-executionin Claude Code to confirm it loaded.
Bundled filesscripts/wait-until.sh
Details
From the project READMEDeferring Task Execution
Delays agent work until a user-specified time using a background timer script, then proceeds with the deferred task.
Script Location
~/.claude/skills/deferred-task-execution/scripts/wait-until.sh
Supported Input Formats
The script accepts one argument in either format:
Duration - relative delay from now:
30s,5m,1h,90m,2h30m,1h15m30s
Clock time - specific time of day:
14:30,9:00,3pm,3:30pm- If the time has already passed today, it waits until that time tomorrow
Workflow
Step 1: Confirm the user's intent
Confirm what task to perform and when. Parse their natural language into a wait-until argument:
| User says | Argument |
|---|---|
| "in 30 minutes" | 30m |
| "in an hour" | 1h |
| "in 2 and a half hours" | 2h30m |
| "at 3pm" | 3pm |
| "at 14:30" | 14:30 |
| "at half past 9" | 9:30am |
Tell the user exactly what will happen and when the timer will fire. Ask them to confirm before starting.
Step 2: Launch the timer in background
Run the wait script using Bash with run_in_background: true:
~/.claude/skills/deferred-task-execution/scripts/wait-until.sh <argument>
Note the task ID from the response -- you need it for the next step.
Step 3: Wait for the timer
Use the TaskOutput tool to block until the timer completes:
- Set
block: true - Set
timeout: 600000(maximum: 10 minutes / 600000ms) - Use the task ID from Step 2
If the wait exceeds 10 minutes: TaskOutput will return before the timer completes because the maximum timeout is 600000ms. Check the output -- if it does not contain "Timer complete", call TaskOutput again with the same task ID and block: true. Repeat until the timer finishes.
Step 4: Execute the deferred task
Once TaskOutput returns output containing "Timer complete. Proceed with deferred task.", carry out whatever work the user requested.
Important Notes
- The agent session must remain open for the timer to work. If the user closes the session, the deferred task will not execute. Warn the user about this.
- For very long waits (multiple hours), remind the user that the session needs to stay active.
- If the user asks to cancel, use
TaskStopwith the background task ID. - Always tell the user the calculated wake time so they know when to expect the action.