Deploy to testnet
Deploy a Sui Move package to testnet and capture package id and UpgradeCap. Use when the user wants to deploy to testnet or publish to Sui testnet.From its SKILL.md
npx -y skills add pivyme/suiperpower --skill deploy-to-testnetAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.3 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
Preamble (run first)
# Suiperpower telemetry. Routes through the CLI so projects.json + Convex stay in sync.
# Silent on failure so the skill never blocks. Opt out: SUIPERPOWER_TELEMETRY=off.
#
# AGENT NOTE: when this skill finishes, run the matching completion command:
# suiperpower track deploy-to-testnet ship completed
# Or use "failed" / "aborted" if it ended that way.
command -v suiperpower >/dev/null 2>&1 && suiperpower track deploy-to-testnet ship started >/dev/null 2>&1 &
true
If TEL_PROMPTED is no, before doing real work, ask the user:
Help suiperpower get better. We track which skills get used and how long they take. No code, no file paths, no PII. Change anytime in
~/.suiperpower/config.json.A) Sure, anonymous B) No thanks
Write the answer to ~/.suiperpower/config.json telemetryTier field and create ~/.suiperpower/.telemetry-prompted. Then continue.
What this skill does
Runs the testnet deploy flow end to end: validates prerequisites, runs sui client publish, captures the package id and UpgradeCap from the publish output, writes deploy-context.md with the real artifacts, and points the user at the next step.
The flow follows skills/data/guides/deploy-runbook.md for the publish steps and skills/data/guides/package-id-capture.md for the capture rules. Capability handling is non-trivial; the skill never prints capability ids in shared logs and never hardcodes them into client code.
When to use it
- After the Move package compiles and tests pass on localnet.
- Before any frontend work that needs a real on-chain package id.
- Any time the user wants a fresh testnet deployment after a breaking change.
When NOT to use it
- Mainnet deploys. Route to
deploy-to-mainnet. - Localnet runs. Use
sui move testand the local validator directly; no deploy-context is written for localnet. - Pre-test, when the package has not been compiled or unit tested.
If you activated this and the user actually wants something else, consult skills/SKILL_ROUTER.md and hand off.
Inputs
.suiperpower/build-context.mdfor the Move package path and module names.- The user's funded testnet address. If not funded, the skill points at the testnet faucet.
- Sui CLI installed and on
testnetenv. If not, the skill walks the env switch perskills/data/guides/rpc-wallet-guide.md.
Outputs
A .suiperpower/deploy-context.md entry following the canonical headers from skills/data/specs/phase-handoff.md:
## Deploy, <timestamp>
### Network
- env: testnet
- rpc: <rpc url>
- gas address: <0x...>
- balance before: <SUI>
- balance after: <SUI>
### Package
- package id: <0x...>
- modules: <comma-separated module names>
- digest: <publish digest>
- upgrade cap object: <0x...>
- upgrade cap policy: <compatible | additive | dep-only | immutable>
### Notes
- <anything the user should know about this deploy>
Workflow
-
Preflight
- Verify Sui CLI is installed and version is at least the version pinned in
skills/data/guides/deploy-runbook.md. If not, ask the user to runcargo install --git https://github.com/MystenLabs/sui --branch testnet suior use the official binary. - Verify env is
testnetviasui client active-env. If not, switch. - Verify the active address has enough SUI for gas. If not, point at the official testnet faucet and pause.
- Read
build-context.mdto get the package path. Default to./move/.
- Verify Sui CLI is installed and version is at least the version pinned in
-
Build and check
- Run
sui move build --path <package path>. Surface any error. - Run
sui move test --path <package path>. If tests fail, do not proceed.
- Run
-
Publish
- Run the publish command per
skills/data/guides/deploy-runbook.md:sui client publish <package path> --gas-budget <budget> --json - Capture the JSON output to a temp file.
- Run the publish command per
-
Capture artifacts
- Apply the jq recipe from
skills/data/guides/package-id-capture.mdto extract:package iddigestUpgradeCapobject id
- Cross-check the package id against the modules listed in the build output.
- Apply the jq recipe from
-
Write deploy-context.md
- Append the new
## Deploy, <timestamp>block per the spec headers. - Include the env, RPC, gas address, balances, package id, modules, digest, upgrade cap, and policy.
- Leave any prior
## Deployblocks intact (append-only).
- Append the new
-
Verify on-chain
- Run
sui client object <package id>to confirm the package exists. - Run
sui client object <upgrade cap id>to confirm the cap landed in the active address.
- Run
-
Hand off
- Tell the user the package id explicitly so they can wire it into
cli/data/sui-skills.jsonor their frontend. - Recommend
deploy-to-mainnetonce the testnet deploy has been exercised by a frontend or PTB. Recommendsubmit-to-sui-overflowif this is the submission deploy.
- Tell the user the package id explicitly so they can wire it into
Quality gate (anti-slop)
Before reporting done:
- Did
sui move buildandsui move testboth pass before publish? - Was the package id captured from real publish output, not from a manual prompt to the user?
- Was the
UpgradeCapobject id captured and recorded? - Was the upgrade policy recorded?
- Was
deploy-context.mdappended (not overwritten)? - Were the post-deploy
sui client objectchecks run and surfaced?
If any answer is no, the skill keeps working.
References
On-demand references (load when relevant to the user's question):
references/preflight-checklist.md: Step-by-step preflight items to verify before publish.references/troubleshooting.md: Common testnet publish failures and fixes.
Canonical:
skills/data/guides/deploy-runbook.mdskills/data/guides/package-id-capture.mdskills/data/guides/rpc-wallet-guide.md
Use in your agent
- Claude Code:
claude "/suiper:deploy-to-testnet <your message>" - Codex:
codex "/deploy-to-testnet <your message>" - Grok Build: run
grok, then/deploy-to-testnet <your message>in the session - Cursor: paste a chat message that includes a phrase like "deploy to testnet", or load
~/.cursor/rules/deploy-to-testnet.mdcand reference it.
If you activated this and the user actually wants something else, consult skills/SKILL_ROUTER.md and hand off.
What ships with it: 3 files
4.6 KB alongside SKILL.md
agents/
- openai.yaml323 B
references/
- preflight-checklist.md1.9 KB
- troubleshooting.md2.4 KB
Gives 0 of the 12 instructions most ship operate skills give in ~1.6k tokens
Counted across 779 of the 1,178 authors here whose files we hold, read 2026-08-07
- Document a rollback plan before deploymentin 41 of 779, across 22 files
- Update the changelogin 21 of 779, across 19 files
- Run the test suitein 20 of 779
- Create an annotated git tagin 20 of 779
- Clean up feature flags after full rolloutin 18 of 779, across 10 files
- Verify deployment health after launchin 18 of 779, across 10 files
- Test both feature flag statesin 17 of 779, across 9 files
- Verify the working tree is cleanin 17 of 779
- Make database migrations backward-compatiblein 16 of 779, across 8 files
- Set up error monitoring before launchin 15 of 779, across 7 files
- Monitor metrics at each rollout stagein 14 of 779, across 5 files
- Create a GitHub releasein 14 of 779
Said here and by no other author read
- run the publish command
- capture package id and upgrade cap
- verify artifacts on-chain
- write deployment context
- leave existing deploy blocks intact
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.