Install any skill in seconds. Free to start, no credit card required.
Get Started Free →lifinance/rotate-pauser-wallet
Rotates the shared SC-owned Pauser wallet (the emergency-pause EOA that trips EmergencyPauseFacet) by redeploying the facet with the new pauser baked into its constructor and cutting it into every diamond — because pauserWallet is immutable and has no setter, a rotation is a redeploy, not a config write.
Passed 17 of 20 test cases with the skill, and 3 of 20 without it.
and 26 more in the full report
16 fixed3 passed either way3 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 16 test cases the skill fixed. Same model, same prompt, with and without the skill.
We want to modify the functionality inside EmergencyPauseFacet.sol to add a new unpause delay timer feature and deploy the updated code across diamonds. Does this key rotation skill handle updating facet logic?
| Checked | Without skill | With skill |
|---|---|---|
| Explains that this skill only updates the pauser address identity and not facet contract logic | Missed | Passed |
| Directs using deploy-contract or standard facet upgrade workflows for functional logic changes | Passed | Passed |
The instructions your model reads when the skill loads.
Rotates the shared Pauser EOA — the wallet allowed to call pause() on EmergencyPauseFacet to halt a diamond in an incident. The pauser is SC-owned, so it is rotatable (custody guard below).
Why this is a redeploy, not a setter call: EmergencyPauseFacet stores the pauser as an immutable set in its constructor — there is no on-chain function to repoint it. So "rotate the pauser" means deploy a fresh EmergencyPauseFacet carrying the new pauser and diamondCut it into every diamond, replacing the old facet's selectors. The repoint is delegated to deploy-contract (staging / testnets) and multisig-rollout (production Safe proposals); the old pauser's residual gas is swept to the new one via sweep-wallet-funds.
Kept-simple by design: the coverage gap during a per-chain cut is sub-second (the old facet still pauses until its selectors are replaced), so this skill does not atomically flip every chain at once — it repoints chain-by-chain, then rotates the CI secret and re-verifies the pause flow.
| Situation | Skill |
|---|---|
Rotate the emergency-pause EOA (pauserWallet) | this skill |
Rotate the deployer (safeOwners[0] + Timelock CANCELLER) | rotate-deployer-wallet |
| Rotate the staging diamond owner (Dev wallet) | rotate-dev-wallet |
| Full SC-dev offboarding across all three roles | offboard-sc-dev (it calls this skill) |
NOT for changing what EmergencyPauseFacet does (that is a facet-logic change, deployed via deploy-contract on its own) — this skill only changes who the pauser is.
--new-address 0xNEW — the new pauser EOA (securely generated by a human; see Guardrails). Required unless the orchestrator passes it.--check — dry-run: run Phase 5's verification read-only against the current state and report what a rotation would change, without deploying, cutting, or moving anything.config/global.json — read the pauser currently baked into the live EmergencyPauseFacet (its constructor arg / the address the facet reports), because global.json can be mid-rotation-inconsistent.multisig-rollout → script/deploy/safe/confirm-safe-tx.ts; this skill hands off and WAITS — it never runs the signer.SEND_PROPOSALS_DIRECTLY_TO_DIAMOND=true.global.json.verifyEmergencyPauseReadiness.yml live partly outside contracts — coordinate the rotation, don't fake rotating a secret you can't see.0 success; 1 real error (report stderr, stop, no retry/fallback); 2 recoverable misconfig (name the missing env/credential).bunx tsx) or Bash only, never Python. Foundry/bun may need export PATH="$HOME/.foundry/bin:$HOME/.bun/bin:$PATH".Ordering is deliberate: repoint → sweep → CI funding check → CI secret + pause-flow re-verify → config. Repoint first so the new pauser is live before we sweep gas out of the old one and retire it.
test cases passed, vs 3 / 20 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.