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