Back

Principle Make Operations Idempotent

Other8.2K installs

What it does

Apply when designing commands, lifecycle steps, or processing loops that run amid crashes, restarts, and retries. Converge to the same end state regardless of partial prior runs.

Install

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

Website

www.skills.sh/backnotprop/pstack/principle-make-operations-idempotent

Details

From the skill’s SKILL.md or README, by its authors. View the original

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.

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.

See all
  • Other

    Implement a piece of work based on a spec or set of tickets.

    npx skills add https://github.com/mattpocock/skills --skill implement
    843.9K installs
  • Other

    Turn the current conversation into a spec and publish it to the project issue tracker: no interview, just synthesis of what you've already discussed.

    npx skills add https://github.com/mattpocock/skills --skill to-spec
    785.9K installs
  • Other

    Turn a decision you can't fully answer into a questionnaire for someone else to fill in.

    npx skills add https://github.com/mattpocock/skills --skill to-questionnaire
    559.8K installs
  • Other

    Stop. That last message did not land: re-pitch it.

    npx skills add https://github.com/mattpocock/skills --skill wait-what
    511.1K installs

Skills are shared by members and not reviewed by us. Read a skill’s code before you install it.

Principle Make Operations Idempotent: AI agent skill