A rigorous "iterate until verified" working loop for any non-trivial build or fix. Use when the user prefixes a request with /dormammu, or asks you to be exhaustive, to "not stop until it's truly done", to self-critique hard, or to keep going until the solution is flawless. It defines a verifiable end-state and hands the user a ready-to-paste /goal command to lock the session until that state is met (it never runs /goal itself — /goal is user-only), then implements, aggressively self-audits a...
Scanned 8/30/2026
Install to Claude Code
npx -y skills add ShockRock2004/kamar-taj --skill dormammu --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Dormammu?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/shockrock2004-dormammu)More formats (shields.io, HTML) on the badges page.
---
name: dormammu
description: A rigorous "iterate until verified" working loop for any non-trivial build or fix. Use when the user prefixes a request with /dormammu, or asks you to be exhaustive, to "not stop until it's truly done", to self-critique hard, or to keep going until the solution is flawless. It defines a verifiable end-state and hands the user a ready-to-paste /goal command to lock the session until that state is met (it never runs /goal itself — /goal is user-only), then implements, aggressively self-audits against edge cases and complexity, reverts and retries on any flaw, and only finishes when verification actually passes.
---
# Dormammu Protocol — bargain until it is actually correct
## IRON RULE — read this first
When `/dormammu` is invoked, this protocol is an **IRON RULE** for the task and must
be followed at all costs, no matter what. You do not get to skip the loop, cut it
short, or declare the work done to save time or effort. No premature "done". No
unverified claims. No "this probably works." You keep bargaining — implement,
attack your own work, revert, retry — until the result is **proven correct by
actually running the verification**. Quitting early, hand-waving, or calling a first
draft final is forbidden.
This binds *how rigorously and relentlessly you work*. It strengthens correctness,
safety, and honesty — it never licenses overriding them. The only honest way to stop
short is the guardrails below: if you are genuinely blocked by something only the
user can resolve, or the request itself is flawed, you say so plainly. You never
fake completion.
**This is meant to be backed by `/goal`, but you do not run `/goal` yourself.**
`/goal` is a **user-only UI command** — the Skill tool cannot invoke it, and trying
to will just error. So in Phase 1 you *compose* the exact `/goal` command and hand
it to the user to paste. If they paste it, `/goal` arms a session Stop hook: a wall
the harness puts up that refuses to let the turn end until the condition holds, and
clears the moment it does — "do not stop early" stops being willpower and becomes a
wall. If they do not paste it, you still follow this protocol to the letter; the
rule binds you either way. Either way, **never call `/goal` via the Skill tool.**
Dormammu and `/goal` are the same idea from two directions: `/goal` can make the
loop impossible to escape, and this protocol makes the loop productive whether or
not the wall is up.
A disciplined loop for serious work. The point is to **refuse premature "done"**:
keep auditing and reverting until the solution genuinely survives scrutiny and
verification, not just until a first draft compiles or a checklist is ticked.
> **Honest scope.** This does not suspend judgement or run forever. It is a
> structured habit: define the target, build, attack your own work, fix or revert,
> and only stop on *evidence*. If the loop is genuinely converged (or truly blocked
> and needs the user), say so plainly instead of looping for its own sake.
## Forbidden (the whole reason this skill exists)
- **No static checklists.** Finishing a to-do list is not proof the goal is met.
- **No premature closure.** A first draft that "looks right" is not final.
- **No blind assumptions.** Do not assume your logic, queries, or integrations are
correct, optimal, or bug-free until you have checked.
## The loop
### Phase 1 — Define the absolute end-state, then hand the user a `/goal`
First, state what a 100% correct, robust, optimized outcome actually looks like —
the final *functional* state and its hard requirements (correctness, edge cases,
complexity targets, integration contracts). Not the steps; the target.
Then compress that target into a single, concrete, externally checkable success
condition and **give the user a ready-to-paste `/goal` command** for it. Do **not**
run it yourself and do **not** call it via the Skill tool — `/goal` is a user-only
UI command and attempting to invoke it just errors. Present it for the user to copy,
exactly like this:
```
/goal <the verifiable success condition>
```
Tell the user in one line that pasting it locks the session until the work is
genuinely done, and that it is optional — you will proceed either way.
Then **keep going immediately. Do not wait for them to paste it** — start Phase 2
now. If they paste it, the harness holds the turn open until the condition is true
and clears it for them. If they do not, you hold yourself to the same bar. Phase 1
is done once you have stated the end-state and handed over the `/goal` line.
Make the condition *objective and testable*, not vague — phrase it as something a
Stop hook can actually judge as true or false. Good: "pytest tests/ passes with 0
failures AND the new endpoint returns 200 for the empty-list case." Bad: "the code
is good." This arms the Stop hook: from here on the harness will not let the turn
end until that condition holds, and it auto-clears the instant it does. Phase 1 is
not finished until the `/goal` is set.
> If the user already set a `/goal` when invoking dormammu, adopt it as the target
> and sharpen it into a testable condition rather than registering a competing one.
### Phase 2 — Implement (the first bargain)
Write your best real solution. Pay deliberate attention to time/space complexity,
architecture, state management, and the integration points / API contracts.
### Phase 3 — Critical fidelity check (self-audit)
Stop and attack your own output against the Phase 1 end-state. Mentally (and where
possible, actually) execute it:
- What inputs break it? Empty, huge, malformed, concurrent, adversarial?
- Where does it fail under load or at boundaries (off-by-one, nulls, races)?
- Are the API/data contracts solid? Any logical flaw in the data flow?
- Is there a simpler or more efficient form that is still correct?
Prefer **real evidence** over assertion: run the tests, run the code, check the
output. (Pair with the `superpowers:verification-before-completion` and
`systematic-debugging` skills when available.)
### Phase 4 — Temporal revert (the bargain line — fires constantly, not rarely)
**The instant you backtrack in ANY way, the very first thing you output — before any
other text, code, or tool call — MUST be this exact line, verbatim, on its own
line:**
> **Dormammu, I've come to bargain.**
Then, on the next line, one sentence on why the previous attempt failed. Then change
approach and loop back to **Phase 2**.
**"Backtrack" is broad. Read this list — if ANY of these happen, it counts, and the
line fires first:**
- a test, build, lint, type-check, or any verification **fails** and you are about
to try something different;
- you **undo, rewrite, or replace** an edit you just made;
- you **change approach / strategy** for something you already attempted;
- an **assumption turned out wrong** (an API, a type, a path, a value, how
something behaves) and you adjust because of it;
- you hit an **error or unexpected output** and pivot;
- you catch a **flaw, edge case, or inefficiency** in your own work and redo that
part;
- you abandon a half-built path and start that piece over.
Inline "oh, that failed, let me fix it" corrections **count too** — that IS a
backtrack. Do not silently patch over a failure: print the line first, every single
time, no matter how small the course-correction. Fixing without the line is the one
thing this skill forbids. Forward progress (writing new code that has not failed
yet) does **not** need the line — only moments where something you did is being
walked back.
When in doubt about whether something counts, print the line. Over-printing is fine;
silent backtracking is not.
### Phase 5 — Break the loop (only when the work is actually verified)
You do not get to declare "done" on vibes. The exit test is the Phase 1 success
condition, proven true by **actually running the verification** and confirming it
passes. Only then present the final solution and state briefly what you verified and
how.
If the user pasted the `/goal`, the harness makes this literal: the Stop hook holds
your turn open until the condition is objectively true and then auto-clears, so the
goal clearing is your green light — if you think you are done but it has not cleared,
you are not done. If no `/goal` was armed, hold yourself to the exact same bar
anyway; the standard does not drop just because the wall is not up.
## Convergence guardrails (so the loop stays honest)
- If two successive attempts fail the *same* way, step back and question the Phase 1
framing — the requirement or approach may be wrong, not just the code.
- If you are genuinely blocked by something only the user can resolve (a decision,
access, an external dependency), stop the loop and say exactly what you need.
- Don't manufacture flaws to keep looping. "Converged" is a valid, honest end —
back it with the verification you ran.
- **The `/goal` escape hatch is for the user, not for you.** If the work turns out
to be genuinely impossible, the requirement is wrong, or you are truly blocked,
surface that plainly and let the *user* decide to run `/goal clear`. You never
clear the goal yourself to escape the loop, and you never tell the user to clear a
goal you simply succeeded at — a met goal auto-clears on its own.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!