This file is byte-identical to the first copy the registry indexed, one of 5 indexed copies. Same content hash, so the same checks give both the same grade.
principle-make-operations-idempotent from barbieri/local-openfinance is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.
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.
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
# Make Operations Idempotent
Design operations so they converge to the correct state regardless of how many times they run or where they start from. 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 pattern:**
- Convergent startup: scan for existing state, clean stale artifacts, adopt live sessions
- Content-based cleanup: compare by content equivalence, not creation order
- Self-healing locks: use PID-based stale lock detection
- Idempotent scheduling: failed work respawns cleanly, fresh input regenerated after each cycle
**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.
The line at the top of this page pins the label git:20260909.1e5ab42, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
GET https://markdownregistry.com/api/v1/artifacts/art_vij2myhuccfltgi7
GET https://markdownregistry.com/api/v1/resolve?ref=barbieri/local-openfinance/principle-make-operations-idempotent
GET https://markdownregistry.com/api/v1/blob/540738217c3da7bf513b9886924ad6a2bc77e58be867f5bd2e1831c74bf2ce70
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
barbieri/local-openfinance · .agents/skills/agent-browser/SKILL.md · Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages…
barbieri/local-openfinance · .agents/skills/ai-sdk/SKILL.md · Answer questions about the AI SDK and help build AI-powered features. Use when developers: (1) Ask about AI SDK…
barbieri/local-openfinance · .agents/skills/architect/SKILL.md · Sketch types, signatures, and module structure before code, then stay in the loop while implementation fills in. Use…
barbieri/local-openfinance · .agents/skills/arena/SKILL.md · Spawn N parallel candidates at the same task, pick a base, graft the strongest parts of the losers into it. Use for…
barbieri/local-openfinance · .agents/skills/automate-me/SKILL.md · Use for "automate me", "create/update/refresh my -mode skill", "turn/capture my preferences or working style into a…
barbieri/local-openfinance · .agents/skills/blast-radius/SKILL.md · Find what a change could break somewhere else before it ships, beyond the diff, and prove the one fact it's safe…
barbieri/local-openfinance · .agents/skills/cancel-ralph/SKILL.md · Cancel an active Ralph Loop. Use when the user wants to stop, cancel, or abort a running ralph loop.
barbieri/local-openfinance · .agents/skills/cli-for-agents/SKILL.md · Designs or reviews CLIs so coding agents can run them reliably: non-interactive flags, layered --help with examples…
barbieri/local-openfinance · .agents/skills/code-review/SKILL.md · Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code…
cursor/plugins · pstack/skills/principle-make-operations-idempotent/SKILL.md · Apply when designing commands, lifecycle steps, or processing loops that run amid crashes, restarts, and retries…
cursor/plugins · harness/pstack/claude-code/skills/principle-make-operations-idempotent/SKILL.md · Apply when designing commands, lifecycle steps, or processing loops that run amid crashes, restarts, and retries…
nightly-labs/openbot · marketplace/production-catalog/bundles/pstack/skills/principle-make-operations-idempotent/SKILL.md · Apply when designing commands, lifecycle steps, or processing loops that run amid crashes, restarts, and retries…
michael-denyer/pstack-claude · plugins/pstack/skills/principle-make-operations-idempotent/SKILL.md · Apply when designing commands, lifecycle steps, or processing loops that run amid crashes, restarts, and retries…
backnotprop/pstack · skills/principle-make-operations-idempotent/SKILL.md · Apply when designing commands, lifecycle steps, or processing loops that run amid crashes, restarts, and retries…
iap/pstack-hermes · skills/principle-make-operations-idempotent/SKILL.md · Apply when designing commands, lifecycle steps, or processing loops that run amid crashes, restarts, and retries…
j-star-films-studios/vibecode-protocol-suite · assets/.agent/skills/engineering-principles/make-operations-idempotent/SKILL.md · Apply when designing commands, lifecycle steps, or processing loops that run amid crashes, restarts, and retries…
theonlyfusioncube/potetos-for-everyone · skills/principle-make-operations-idempotent/SKILL.md · Design repeated execution to converge on the same correct end state rather than multiplying side effects. Use when for…