principle-make-operations-idempotent について
Make Operations Idempotentは、状態を変更する操作の設計指針をまとめたスキルです。再試行やクラッシュ後に、実際の状態を目標と照合し、コマンドや処理ループを安全に再開できるよう支援します。
主な機能
- 01現在の状態を目標と照合
- 02必要な変更だけを適用
- 03中断後に残る古い成果物を識別
- 04元データから派生出力を再構築
- 05再実行とクラッシュ地点を検証
活用シーン
- 01再試行可能なコマンドの安全な再実行
- 02複数段階の状態変更中のクラッシュ対応
- 03古い値を引き継がずレポートや索引を再生成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mdsmithaustin/ pstack --skill principle-make-operations-idempotentインストール後、Claude Code で/principle-make-operations-idempotentを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yaml
詳細
操作を冪等にする
何度実行しても、前回の実行がどこで停止していても、正しい状態に収束するように操作を設計します。状態を変更するすべての操作で、「これを2回実行したらどうなるか? 前回の実行が途中でクラッシュしたらどうなるか?」に答えられるようにします。
理由: コマンド、ライフサイクル操作、処理ループが実行される環境では、クラッシュ、再起動、再試行は日常的に発生します。部分的な状態変更が次の実行結果に影響するなら、再起動のたびにデバッグが必要になります。
考え方: 前回の実行で何をしようとしていたかではなく、現在の状態から各ステップを導きます。現在の状態を読み取り、目標と比較し、差分だけを適用します。この方法で記述したステップは、繰り返し実行しても安全です。再実行時には、すでに行うべきことがなくなっているからです。
ロック、一時ファイル、書き込み途中のレコード、取得済みジョブなど、実行後に残るものは、次の実行で古いものだと判定できなければなりません。よくあるケースだけでなく、前回の実行が停止し得るあらゆる時点で変わらない証拠に基づいて、古さを判定します。次の実行で判定できないマーカーがあると、クラッシュのたびに手動でのクリーンアップが必要になります。たとえば、一時パスに書き込んでから所定の場所に名前を変更するか、作成順ではなく内容で成果物を比較します。
生成されるレポート、インデックス、キャリブレーションファイルは、出所が明らかなソースレコードから再構築し、生成された出力を置き換えます。ソースの事実、追記専用の履歴、人による注釈は保持します。入力が不足している場合は、サンプルを捏造したり、古い派生値を引き継いだりせず、不足している入力を報告します。
確認項目:
- これを続けて2回実行したらどうなりますか?
- 前回の実行が、停止し得るあらゆる時点でクラッシュしたらどうなりますか?
- 再実行すると、同じ最終状態に収束しますか?
いずれかの答えが「残された状態によります」なら、その操作には調整ステップが必要です。