mcpField
P
principle-make-operations-idempotent

principle-make-operations-idempotent

github.com/cursor開発14.6k4.4k 回インストール1 日前に更新
リポジトリ

principle-make-operations-idempotent について

状態を変更する操作を、繰り返し実行したりクラッシュ後に再開したりしても目標状態に収束するよう設計する開発向けスキルです。コマンドやライフサイクル処理、処理ループの開発に適しています。

主な機能

  1. 01現在の状態と目標の照合
  2. 02必要な変更のみ適用
  3. 03古い生成物の識別
  4. 04再試行とクラッシュ復旧のテスト

活用シーン

  1. 01コマンドの再実行安全性の確保
  2. 02クラッシュ後の処理再開
  3. 03古い状態の手動クリーンアップ防止

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cursor/plugins --skill principle-make-operations-idempotent

インストール後、Claude Code で/principle-make-operations-idempotentを入力して読み込まれたか確認します。

詳細

操作を冪等にする

何回実行しても、また前回の実行がどこで停止していても、正しい状態に収束するように操作を設計します。状態を変更するすべての操作について、「これを2回実行するとどうなりますか?」「前回の実行が途中でクラッシュした場合、どうなりますか?」に答えられるようにします。

理由: コマンド、ライフサイクル操作、処理ループは、クラッシュ、再起動、再試行が日常的に起きる環境で実行されます。部分的な状態変更によって次回の実行結果が変わるなら、再起動のたびにデバッグが必要になります。

考え方: 前回の実行で何をしようとしていたかではなく、現在の状態から各ステップを導きます。現在の状態を読み取り、目標と比較して、差分だけを適用します。この方法で書かれたステップは、安全に繰り返せます。再実行しても、行うべきことが残っていないためです。

ロック、一時ファイル、書き込み途中のレコード、処理対象として確保されたジョブなど、実行後に残るものは、次回の実行で古いものだと判別できなければなりません。よくあるケースだけでなく、前回の実行が停止した可能性のあるすべての時点で変わらない証拠を基準に、古さを判断します。次回の実行で判断できないマーカーがあると、クラッシュのたびに手動でのクリーンアップが必要になります。たとえば、一時パスに書き込んでから所定の場所に名前を変更するか、作成順ではなく内容で成果物を比較します。

確認項目:

  1. これを続けて2回実行すると、どうなりますか?
  2. 前回の実行が考えられるあらゆる時点でクラッシュした場合、どうなりますか?
  3. 再実行すると、同じ最終状態に収束しますか?

どれかの答えが「どんな状態が残されたかによります」であれば、その操作には状態を調整するステップが必要です。

コメント