principle-make-operations-idempotent について
状態を変更する操作を、再実行やクラッシュ後の再開でも意図した状態に収束させるための開発スキルです。状態調整のパターンと再実行時の確認方法を示します。
主な機能
- 01収束する操作の設計
- 02再試行とクラッシュへの対応
- 03古い状態を整理するパターン
- 04再実行時の動作確認
活用シーン
- 01起動処理の再実行への対応
- 02中断された処理ループの処理
- 03再試行可能なライフサイクルコマンドの設計
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ hachej/ boring-stack --skill principle-make-operations-idempotentインストール後、Claude Code で/principle-make-operations-idempotentを入力して読み込まれたか確認します。
同梱ファイルLICENSE
詳細
オペレーションを冪等にする
実行回数や実行開始時の状態にかかわらず、正しい状態に収束するようにオペレーションを設計します。状態を変更するすべてのオペレーションで、次の点に答えられるようにしてください。「これが2回実行されたらどうなるか? 前回の実行が途中でクラッシュしたらどうなるか?」
理由: コマンド、ライフサイクルオペレーション、処理ループが実行される環境では、クラッシュ、再起動、再試行が日常的に発生します。状態が部分的に変更されたことで次回の実行結果が変わると、再起動のたびにデバッグが必要になります。
パターン:
- 収束する起動処理:既存の状態をスキャンし、古いアーティファクトをクリーンアップして、稼働中のセッションを引き継ぎます
- コンテンツに基づくクリーンアップ:作成順ではなく、コンテンツの同等性を比較します
- 自己修復ロック:PID に基づいて古いロックを検出します
- 冪等なスケジューリング:失敗した処理を適切に再生成し、各サイクル後に新しい入力を再生成します
テスト:
- これが連続して2回実行されたらどうなるか?
- 前回の実行があらゆる可能な時点でクラッシュしたらどうなるか?
- 再実行すると、同じ最終状態に収束するか?
いずれかの答えが「残された状態によります」であれば、そのオペレーションには調整ステップが必要です。
コメント
Markdown 対応