scripts について
Durable Scriptsは、ランチャーを通じて単発または定期的なシェルコマンドを管理するスキルです。永続タスクを扱うエージェント向けに、実行、結果処理、ライフサイクル管理を定め、定義の操作にはスクリプトIDを使います。
主な機能
- 01単発または定期コマンドの実行
- 02定義・実行履歴・ログの確認
- 03スクリプトIDによる再実行・取消・削除
- 04静かな終了コードによるスケジュール継続
- 05結果公開後のスケジュール状態の処理
活用シーン
- 01コマンドを一度実行し後続の結果を処理
- 02定期チェックの結果後に再開または削除
- 03外部依存の失敗で停止したスケジュールの管理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alekzonder/ tariboy-store --skill scriptsインストール後、Claude Code で/scriptsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonresults.mdscripts/scripts.pyscripts.sh詳細
Durable Scripts
このスキルの scripts/scripts.sh ランチャーは、スキルディレクトリ内にあり、
TARIBOY_TOOLS_SOCKET を通じて ID にバインドされたデーモンを呼び出します。
コマンドを実行できる場合は、ランチャーを実行してください。実行できない場合は、
正確なコマンドをそのまま返してください。コマンドが成功していない限り、スクリプトが
キューに登録、スケジュール、再実行、キャンセル、または削除されたと主張してはいけません。
scripts/scripts.sh run <name> -- <command>で一度だけ実行します。キューに登録するのは一度だけにして、
イテレーションを終え、現在のイテレーションで待つのではなく、後から届く
script.result メッセージを処理してください。
scripts/scripts.sh schedule <name> --every <seconds> -- <command>で繰り返し実行します。
実行が重複することはありません。$TARIBOY_QUIET_EXIT(111)で終了した実行は
何も通知せず、スケジュールを維持します。この結果になるのはこの場合だけです。
デーモンはすべての実行にこのコードをエクスポートするため、シェルコマンドは
exit "${TARIBOY_QUIET_EXIT:-111}"、Python コマンドは
sys.exit(int(os.environ.get("TARIBOY_QUIET_EXIT", "111"))) で通知を抑制できます。
scripts/scripts.sh ls、scripts/scripts.sh runs、scripts/scripts.sh logsで確認できます。
ライフサイクルを制御するには、scripts/scripts.sh rerun、
scripts/scripts.sh cancel、または scripts/scripts.sh rm を使用してください。
すべての定義にはスクリプト ID でアクセスする
必須: rerun、cancel、rm が受け付けるのは、scr-... スクリプト ID
または srun-... 実行 ID のみです。名前は一意ではなく、名前で解決されません。名前を渡すと
not found で失敗し、run <name> -- <command> を実行すると、停止した定義を再開するのではなく、
2 つ目の定義が作成されます。
ID は、応答のきっかけとなった script.result メッセージの script_id フィールド、
作成時の出力、または scripts/scripts.sh ls から取得してください。永続的なモニターを記録する場合は、
名前だけでなくスクリプト ID を記録してください。
結果が通知されるとスケジュールは停止する
繰り返し定義のスケジュールが維持されるのは、すべての実行が通知を抑制している間だけです。
実行によって script.result メッセージが通知された時点で、デーモンは定義を completed にし、
次回の実行を取り消します。エージェントには繰り返しではなく一度だけ通知され、
再開するまでそれ以降の実行はありません。
これは、通知されるすべての結果に当てはまります。
| イベント | 繰り返し定義への影響 |
|---|---|
実行が $TARIBOY_QUIET_EXIT(111)で終了する | メッセージなし。スケジュールは継続 |
| 実行が成功または失敗を問わず、その他のコードで終了する | 結果が通知され、定義が停止 |
$TARIBOY_QUIET_EXIT で終了しないコマンド | 実行のたびに通知されるため、最初の実行後にスケジュールが停止 |
1 つのアクティブな実行に対する cancel <run-id> | その実行は引き続き結果を通知するため、定義も停止 |
| デーモンの再起動によって中断された実行 | 復旧処理が中断された結果を通知するため、定義が停止 |
cancel <script-id> | 定義がキャンセルされ、二度と実行できなくなる |
繰り返し定義の script.result を処理する
必須: 結果を処理したら、イテレーションが終わる前に、次のいずれか 1 つの判断で 必ず処理を完了してください。どちらも行わないと、監視が通知なく終了します。
-
引き続き必要 — 同じ定義を再開します。
scripts/scripts.sh rerun <script-id>rerunは今すぐ実行し、定義をactiveに戻すため、その後は固定された 間隔で実行が続きます。停止した定義ですでに記述されている作業に対して、 置き換えのスケジュールを作成してはいけません。 -
もう必要ない — 定義を削除します。
scripts/scripts.sh rm <script-id>通知された結果によってすでに停止しているため、
cancelは必要ありません。lsにまだstate: activeと表示されている場合に限り、先にscripts/scripts.sh cancel <script-id>を実行してください。
停止した定義は待機オブジェクトではありません。結果が通知された定義をアクティブなモニターとして
説明してイテレーションを終えてはいけません。このイテレーションで rerun によって再開したか、
イテレーションの待機オブジェクトが別のものになっている必要があります。
外部要件による失敗
必須: 認証情報、バイナリ、依存関係の不足など、外部要件が変わるまでコマンドを実行できない定期スケジュールは、もはや有効な待機対象ではありません。失敗した結果によってすでに停止しているため、上記の分岐 2 に進み、決して rerun しないでください。
scripts/scripts.sh rm <script-id>
ls で state: active と表示される場合に限り、先に scripts/scripts.sh cancel <script-id> を実行してください。その後、Native Task の場合は、次の手順に従います。
- 顧客に言及し、作業を妨げている質問を 1 つ尋ねます。一致する未回答の質問がある場合は、新たに作成したり、繰り返したりせず、それを再利用します。
- まだ
wait_customerでない場合はタスクをwait_customerに設定し、その質問だけを再開イベントとして記録します。 - 最後のアクションとして、
loopスキルを通じてscripts/loop.sh doneを実行し、イテレーションを終了します。
定義を削除し、顧客の回答待ちを 1 件だけ設定して、イテレーションを終了した後にのみ、失敗への対処が完了します。これらのいずれかが抜けたアクショントレースは不完全です。
一時停止または無効化しても、不要な定義が残るため、この手順を完了したことにはなりません。質問に回答がない間は、コマンドを再実行したり、代わりのスケジュールを作成したり、失敗についてのコメントを繰り返したりしないでください。
注意すべき兆候
| 考え | 実際 |
|---|---|
| 「スケジュールは動き続けているから、このまま完了してよい」 | 公開された結果が 1 件でもあれば停止しています。rerun <script-id> で再開するか、削除してください。 |
| 「1 回分の実行をキャンセルしても、スケジュールはそのまま残る」 | その実行も結果を公開するため、定義は停止します。 |
| 「監視を再開するため、もう一度スケジュールを登録しよう」 | 2 つ目の定義を作ると、作業が重複します。記録済みの定義は rerun <script-id> で再開できます。 |
「rerun <name> のほうが ID より分かりやすい」 | 名前は解決されません。使用できるのは scr-... ID のみです。 |
| 「成功したのだから、何も停止していない」 | 成功は静かな終了ではありません。静かな終了は $TARIBOY_QUIET_EXIT(111)だけです。 |