mcpField
P
principle-make-operations-idempotent

principle-make-operations-idempotent

github.com/mdsmithaustinDevelopment8183 installsUpdated today
Repository

About principle-make-operations-idempotent

Make Operations Idempotent is a software design skill for state-mutating operations. It helps developers make commands, lifecycle steps, and processing loops recoverable by reconciling actual state with the intended result after retries or crashes.

Key features

  1. 01Reconcile current state with the goal
  2. 02Apply only changes that are still needed
  3. 03Identify stale artifacts after interruption
  4. 04Rebuild derived outputs from source records
  5. 05Check repeated runs and crash points

Use cases

  1. 01Making retryable commands safe to rerun
  2. 02Handling crashes during multi-step state changes
  3. 03Regenerating reports or indexes without stale values

Install

Copy the command and run it in a terminal.

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

After installing, type/principle-make-operations-idempotentin Claude Code to confirm it loaded.

Bundled filesagents/openai.yaml

Details

From the project README

Make Operations Idempotent

Design operations so they converge to the correct state regardless of how many times they run or where the previous run stopped. Every state-mutating operation should answer: "What happens if this runs twice? What happens if the previous run crashed halfway?"

Why: Commands, lifecycle operations, and processing loops run where crashes, restarts, and retries are normal. If partial state changes the next run's outcome, every restart becomes a debugging session.

The idea: derive each step from the state that exists, not from what the previous run meant to do. Read the current state, compare it to the goal, and apply only the difference. A step written this way is safe to repeat, because a repeat finds nothing left to do.

Anything a run leaves behind, such as a lock, a temporary file, a half-written record, or a claimed job, must be recognizable as stale by the next run. Judge staleness by evidence that stays true wherever the previous run could have stopped, not only in the common case. A marker that the next run cannot judge turns every crash into manual cleanup. For example, write to a temporary path and rename it into place, or compare artifacts by content instead of by creation order.

For generated reports, indexes, and calibration files, rebuild from attributed source records and replace the generated output. Preserve source facts, append-only history, and human annotations. Report missing inputs rather than inventing samples or carrying stale derived values forward.

The test:

  1. What happens if this runs twice in a row?
  2. What happens if the previous run crashed at every possible point?
  3. Does re-execution converge to the same end state?

If any answer is "it depends on what state was left behind," the operation needs a reconciliation step.

Comments

Markdown supported