delayed-command について
delayed-commandは、指定時間待機してからBashコマンドを実行するスキルです。時・分・秒を組み合わせた時間指定に対応し、短い待機は同期実行、長い待機はバックグラウンドで実行します。
主な機能
- 01時・分・秒による待機時間の解析
- 02指定時間後のコマンド実行
- 0310分以内の待機で同期実行
- 04長い待機でのバックグラウンド実行
- 05出力、終了ステータス、経過時間の報告
活用シーン
- 01短時間待機してからのコマンド実行
- 02シェルタスクの遅延とバックグラウンド実行
- 03デプロイやコミットコマンドの遅延実行
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ paulrberg/ agent-skills --skill delayed-commandインストール後、Claude Code で/delayed-commandを入力して読み込まれたか確認します。
詳細
コマンドの遅延実行
指定した時間だけ待機してから、Bash コマンドを実行します。
引数
- duration:実行前に待機する時間(例:
30s、5m、1h、1h30m) - command:待機後に実行する Bash コマンド
時間の形式
| 形式 | 例 | 意味 |
|---|---|---|
Xs | 30s | 30 秒 |
Xm | 5m | 5 分 |
Xh | 1h | 1 時間 |
XhYm | 1h30m | 1 時間 30 分 |
XhYmZs | 1h5m30s | 1 時間 5 分 30 秒 |
ワークフロー
1. 時間の解析
時間の引数を秒に変換します。
- 時間(
h)、分(m)、秒(s)の各要素を抽出します - 合計秒数を計算します:
hours * 3600 + minutes * 60 + seconds
解析ロジック:
duration="$1"
seconds=0
# Extract hours
if [[ $duration =~ ([0-9]+)h ]]; then
seconds=$((seconds + ${BASH_REMATCH[1]} * 3600))
fi
# Extract minutes
if [[ $duration =~ ([0-9]+)m ]]; then
seconds=$((seconds + ${BASH_REMATCH[1]} * 60))
fi
# Extract seconds
if [[ $duration =~ ([0-9]+)s ]]; then
seconds=$((seconds + ${BASH_REMATCH[1]}))
fi
2. 遅延実行
10 分以下(600 秒)の場合:
適切なタイムアウトを設定して、Bash ツールを同期的に実行します。
sleep <seconds> && <command>
Bash ツールの timeout パラメーターを、少なくとも (seconds + 60) * 1000 ミリ秒に設定します。
10 分を超える場合:
run_in_background: true を指定して、バックグラウンドで実行します。
sleep <seconds> && <command>
コマンドがバックグラウンドで実行中であることをユーザーに伝え、ステータス確認用のタスク ID を提示します。
3. 結果の報告
実行完了後:
- コマンドの出力を表示します
- 終了ステータスを報告します
- 合計経過時間を記載します
例
短い遅延(同期実行)
ユーザー:/delayed-command 5m npm test
- 解析:5 分 = 300 秒
- 実行:
sleep 300 && npm test(タイムアウト:360000ms) - テスト結果を報告します
長い遅延(バックグラウンド実行)
ユーザー:/delayed-command 1h git commit -m "auto-commit"
- 解析:1 時間 = 3600 秒
- バックグラウンドで実行:
sleep 3600 && git commit -m "auto-commit" - ステータス確認用のタスク ID を返します
複合時間
ユーザー:/delayed-command 1h30m ./deploy.sh
- 解析:1h30m = 5400 秒
- バックグラウンドで実行(600 秒超):
sleep 5400 && ./deploy.sh - バックグラウンドタスクについてユーザーに伝えます
エラー処理
| エラー | 応答 |
|---|---|
| 無効な時間形式 | 対応している形式と例を表示します |
| コマンド引数がない | 実行するコマンドを尋ねます |
| コマンドが見つからない | 遅延完了後にエラーを報告します |
| 時間が 24 時間を超える | ユーザーに警告し、別の方法(cron、at)を提案します |
コメント
Markdown 対応