Agent skill · operations · sammcj

differed-task-execution

Delays execution of a task until a specified time or after a duration. Use when the user asks to run something later, in X minutes/hours, at a specific time, schedule a command, or defer work to a future point.

Why this skill is useful

Adds an executable script for scheduling tasks that the AI cannot generate on its own, enabling deferred execution capabilities.

What it needs

Requires bash installed locally. About 2k tokens when loaded. Last updated 2026-08-07. 154 stars on the source repository.

What this skill does

Differed 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 The script self-handles timezone via the USERTZ variable defined at the top of wait-until.sh (defaults to Australia/Melbourne). Clock-time arguments are interpreted in that zone regardless of host TZ. Don't ask the user about timezones unless they mention travelling. 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 runinbackground: true: 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. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills sammcj/deferred-task-execution

View the source on GitHub

Browse the @skills marketplace