mcpField
D
Deferring Task Execution

Deferring Task Execution

github.com/sammcjエージェントワークフロー16754 回インストール1 日前に更新
リポジトリ

Deferring Task Execution について

Deferring Task Executionは、Claudeエージェントの作業を指定した経過時間または時刻まで延期するスキルです。タスクの確認、バックグラウンドタイマーの起動、完了待ちを経て作業を進める手順を示します。

主な機能

  1. 01経過時間と時刻の入力に対応
  2. 02自然言語の時刻を解釈
  3. 03バックグラウンドタイマーの手順
  4. 04タイマー完了後にタスクを実行
  5. 05キャンセルとセッション維持の案内

活用シーン

  1. 01指定時間後にタスクを開始
  2. 02時刻を指定して作業を実行
  3. 03長時間待機中にエージェントのセッションを維持
  4. 04実行待ちのタスクをキャンセル

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sammcj/agentic-coding --skill deferring-task-execution

インストール後、Claude Code で/deferring-task-executionを入力して読み込まれたか確認します。

同梱ファイルscripts/wait-until.sh

詳細

タスク実行の延期

バックグラウンドのタイマースクリプトを使って、ユーザーが指定した時刻までエージェントの作業を延期し、その後、延期したタスクを実行します。

スクリプトの場所

~/.claude/skills/deferred-task-execution/scripts/wait-until.sh

対応する入力形式

スクリプトは、次のいずれかの形式で引数を1つ受け取ります。

期間 — 現在時刻からの相対的な待ち時間:

  • 30s、5m、1h、90m、2h30m、1h15m30s

時刻 — 1日の特定の時刻:

  • 14:30、9:00、3pm、3:30pm
  • 指定した時刻が今日すでに過ぎている場合は、翌日のその時刻まで待機します。

ワークフロー

ステップ 1:ユーザーの意図を確認する

実行するタスクと実行時刻を確認します。ユーザーの自然言語の依頼を、待機時間の引数に変換します。

ユーザーの発言引数
「30分後に」30m
「1時間後に」1h
「2時間半後に」2h30m
「午後3時に」3pm
「14:30に」14:30
「9時半に」9:30am

何をいつ実行するのかをユーザーに正確に伝えます。開始する前に確認を求めてください。

ステップ 2:バックグラウンドでタイマーを起動する

run_in_background: true を指定し、Bash を使って待機スクリプトを実行します。

~/.claude/skills/deferred-task-execution/scripts/wait-until.sh <argument>

応答に含まれるタスク ID を控えてください。次のステップで使用します。

ステップ 3:タイマーを待つ

タイマーが完了するまでブロックするには、TaskOutput ツールを使用します。

  • block: true に設定します。
  • timeout: 600000 に設定します(最大値:10分/600000ms)。
  • ステップ 2 で取得したタスク ID を使用します。

待機時間が10分を超える場合:最大タイムアウトが600000msのため、タイマー完了前に TaskOutput が応答を返すことがあります。出力を確認し、「Timer complete」が含まれていない場合は、同じタスク ID を指定して block: true で再度 TaskOutput を呼び出します。タイマーが完了するまで繰り返してください。

ステップ 4:延期したタスクを実行する

TaskOutput の出力に「Timer complete. Proceed with deferred task.」が含まれていることを確認したら、ユーザーが依頼した作業を実行します。

重要な注意事項

  • タイマーを機能させるには、エージェントのセッションを開いたままにする必要があります。ユーザーがセッションを閉じると、延期したタスクは実行されません。この点をユーザーに警告してください。
  • 待ち時間が非常に長い場合(数時間にわたる場合)は、セッションをアクティブな状態に保つ必要があることをユーザーに伝えてください。
  • ユーザーからキャンセルを依頼された場合は、バックグラウンドタスクの ID を指定して TaskStop を使用します。
  • ユーザーがいつ実行されるのか把握できるよう、計算した実行予定時刻を必ず伝えてください。

コメント