Install any skill in seconds. Free to start, no credit card required.
Get Started Free →lifinance/multisig-rollout
Orchestrates a PRODUCTION multisig rollout end-to-end — drives a facet/periphery deployment (by delegating to the `deploy-contract` skill) or a whitelist sync across many chains, then captures the Safe proposals, drafts a PR with the deployed addresses, hands hardware-wallet signing to the user, verifies signatures in MongoDB, and posts the
Passed 13 of 18 test cases with the skill, and 3 of 18 without it.
and 9 more in the full report
12 fixed4 passed either way6 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 11 test cases the skill fixed. Same model, same prompt, with and without the skill.
We are deploying an update for a periphery contract that is listed in config/global.json under whitelistPeripheryFunctions. How many timelock-wrapped Safe proposals should we inform the user will be created per production network?
| Checked | Without skill | With skill |
|---|---|---|
| Informs the user that two Safe proposals will be created per network. | Missed | Passed |
The instructions your model reads when the skill loads.
Drives the production rollout lifecycle in two modes:
deploy-contract skill; this skill owns the proposal lifecycle around it.config/whitelist.json onto the affected chains' diamonds, proposing the changes to each chain's Safe.Both modes converge on the same tail: capture proposals → (deploy mode only) draft PR with addresses → hand off hardware-wallet signing → verify signatures in MongoDB → post the #dev-sc-multisig-proposals Slack thread.
PolymerCCTP add-on: a PolymerCCTPFacet rollout that adds a chain or CCTP corridor also has to propagate its chainId→CCTP-domain mapping to every already-live chain — extra Safe proposals that ride through the same tail. See Phase 3b.
Signing model (Safe threshold is 3): a freshly created proposal already carries one signature. The user running this skill adds a second via confirm-safe-tx.ts. The Slack thread then recruits the remaining signer(s) to reach the threshold, the last of whom executes. So the verification gate before posting is "the runner has signed" — signatureCount >= 2 — deliberately short of the threshold; recruiting the rest is the whole point of the Slack ask.
See also: the wallet-rotation orchestrators rotate-deployer-wallet and offboard-sc-dev drive this skill to propose Safe owner / CANCELLER-role swaps.
confirm-safe-tx.ts yourself. Signing uses the user's hardware wallet; only the human can do it. Your job ends at giving the exact command.deployContractToNetworks.sh via deploy-contract, and syncWhitelistToNetworks.sh) require --production on the CLI and PRODUCTION=true in .env. Do not edit .env to satisfy this — if it mismatches, stop and tell the user.SEND_PROPOSALS_DIRECTLY_TO_DIAMOND must NOT be true (it would bypass the Safe). Abort if set.Proceed optimistically — do not pre-gate on tunnel or signing. Assume the human has the lifi-connect tunnel up (per docs/Setup-agents.md). Do not ask "how should we run this given I can't open the tunnel / sign" — just execute. The MongoDB scripts fail fast (list-pending-proposals.ts exits 2) if the tunnel is actually down, and signing is handed off in Phase 6 when it's actually needed. The only up-front gate is confirming the resolved plan (contract/version/networks) in Phase 2, since it costs gas across many chains.
Run from the repo root. Check and report (don't fix silently) the lifecycle prerequisites:
.env exists, PRODUCTION=true, SEND_PROPOSALS_DIRECTLY_TO_DIAMOND not true, MAX_CONCURRENT_JOBS set.gh auth status OK; Slack MCP connected (needed in Phase 8 — warn early if missing, posting falls to the user).list-pending-proposals.ts exits 2 with a clear message when the tunnel is down; relay that to the user when it happens.In deploy mode, deploy-contract re-checks the deploy-side prerequisites (Foundry, deployer balances, the .env/--production agreement) before touching any network — don't duplicate that here.
Do not invoke deploy-contract yet. Phase 1 is target-resolution only; the deploy runs in Phase 2 after the user confirms the plan.
test cases passed, vs 3 / 18 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.