Install any skill in seconds. Free to start, no credit card required.
Get Started Free →lifinance/check-rotation-status
Verify a wallet rotation / SC-dev offboarding is complete across all active networks — Safe-owner membership (old removed / new added), Timelock CANCELLER_ROLE (old removed / new granted), whitelist permission, staging-diamond `owner()`, and wallet funding (the CI funding check). Generalizes the hardcoded `script/tasks/temp/checkOffboardingStatusPerNetwork.ts` (whose addresses are baked-in module constants) into a reusable, flag-driven check that takes old/new addresses as citty flags — writing
Passed 12 of 16 test cases with the skill, and 2 of 16 without it.
and 11 more in the full report
13 fixed3 passed either way6 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 13 test cases the skill fixed. Same model, same prompt, with and without the skill.
We want to verify our pauser rotation against production contract deployments rather than staging. Which flag should be passed?
| Checked | Without skill | With skill |
|---|---|---|
| Includes the --production flag when invoking the status script | Missed | Passed |
The instructions your model reads when the skill loads.
Confirm, across every active network, that a wallet rotation actually landed on-chain — not just that the PRs merged. It reads the same set of facts a completed rotation must satisfy and prints a per-network pass/fail matrix:
CANCELLER_ROLE — old deployer's role revoked, new deployer's
granted (deployer rotations).AccessManagerFacet.addressCanExecuteMethod) — old
deployer's whitelist authority removed; whitelisting moved to the multisig.owner() — matches the current dev wallet from config.Because it changes nothing, it is the completeness gate at the end of every
rotate-* flow and of offboard-sc-dev.
script/tasks/temp/checkOffboardingStatusPerNetwork.ts already implements the
per-network read logic (Safe owners via getOwners, Timelock CANCELLER_ROLE
via hasRole, whitelist via addressCanExecuteMethod, staging owner()), the
parallel fan-out over active networks, the tron/tronshasta exclusion, and
the colored pass/fail table. But its addresses are hardcoded module
constants (OLD_DEPLOYER, NEW_DEPLOYER, MICHAL_SAFE_SIGNER,
OLD_SC_DEV_WALLET, NEW_SC_DEV_WALLET) tied to one offboarding cycle — so it
cannot be reused for the next rotation without editing source.
This skill owns turning that one-off into a flag-driven, reusable check. Concretely:
temp/ into a permanent home
(e.g. script/tasks/checkRotationStatusPerNetwork.ts) — keep the temp/
file as the reference implementation; do not delete it as part of this skill.test cases passed, vs 2 / 16 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.