Rotates the shared SC-owned **Deployer** wallet — `safeOwners[0]` + the Timelock `CANCELLER_ROLE` (and prod timelock executor) — end-to-end: bootstraps the new deployer's gas, swaps the Safe owner and moves the canceller role via Safe proposals, handles Tron, updates config, decommissions the old key, and gates on a completeness check. Thin orchestrator: it CALLS the L1 skills (`sweep-wallet-funds`, `move-tron-delegation`, `update-wallet-config`, `check-rotation-status`) and existing skills (`/m
SkillScore84Maintained
Automatic
◆DevOps & SRE pack
Last verified 8/22/2026
What it changes
Passed 18 of 22 test cases with the skill, and 4 of 22 without it.
Without skill20%
With skill84%
Checks it passed that the model alone missed
Delegates Pull Request creation to /create-pr.
Passes --dryRun flag to preview Tron ownership changes.
Model gemini-3.6-flashMeasured 8/22/2026v121 of 25 cases passed with skill · 22 comparable
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 14 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 14
Prompt
If a user runs the deployer rotation workflow with the --check option, what action is performed?
What was checked, without and with the skill
Checked
Without skill
With skill
Delegates to check-rotation-status without modifying state or executing updates.
Missed
Passed
case-21 · gemini-3.6-flash · 8/22/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md144 linessingle file
Rotate Deployer Wallet (LI.FI Contracts)
Purpose
Rotate the shared Deployer wallet, which carries the protocol's heaviest privileges:
safeOwners[0] — a signer on every production Safe.
The Timelock CANCELLER_ROLE (and the production timelock executor).
The CREATE3 deployer key used to broadcast deploys.
Because it is SC-owned it is rotatable, but every privilege it holds is governed by Safe + Timelock — so the on-chain swaps run as Safe proposals through multisig-rollout, never as owner shortcuts. This skill is a thin orchestrator: it sequences the L1 and existing skills, enforces the guardrails, and gates on the final check. It reimplements none of their logic.
When to use / when NOT
Use when the user says:
"rotate the deployer wallet" / "replace safeOwners[0]" / "swap the deployer / canceller EOA"
"/rotate-deployer-wallet [0xNEW]"
Do NOT use for:
The staging Dev wallet (staging diamond owner) → rotate-dev-wallet.
The Pauser emergency EOA → rotate-pauser-wallet.
A full SC-dev offboarding (signer swap + all three rotations + secret rotation) → offboard-sc-dev (the orchestrator that calls this skill).
Any CTO-owned wallet (refund / feeCollector / withdraw) — see Guardrails.
Inputs
Required:
--new-address — the securely generated new deployer EOA (0x…). If not supplied, ask once; never generate it inside the skill (see Guardrails).
Optional:
--check — run the completeness check only (delegates to check-rotation-status, changes nothing) and stop. Use to preview state before rotating or to re-verify after.
The old deployer address is derived from PRIVATE_KEY_PRODUCTION in .env (the sweep in Phase 1 does this), never from config/global.json.deployerWallet — the key and the config can diverge, and the wrong address makes a funded wallet look empty (or a rotation look incomplete).