| name | deploy-stellar-mainnet |
| description | Walk through the devnet → mainnet deployment checklist for a Soroban contract or Stellar dApp. Use when a user says "deploy to Stellar mainnet", "going live on Stellar", "deploy my Soroban contract", "Stellar production deployment", "mainnet checklist", or "ship it on Stellar". Covers pre-deployment verification, deployment mechanics with stellar CLI, and post-deployment monitoring with Soroban-specific gates. |
What this skill does
Walk through three gates. Do not let the user skip a gate.
Gate 1: Pre-deployment verification
Check each item. If any fails, stop and fix before moving on.
Contract correctness:
Security:
Audit / formal verification (for high-value contracts):
Operational:
Gate 2: Deployment mechanics
Check stellar CLI is installed: stellar --version (install: cargo install stellar-cli or brew install stellar-cli).
stellar network add mainnet \
--rpc-url https://mainnet.sorobanrpc.com \
--network-passphrase "Public Global Stellar Network ; September 2015"
stellar contract build
stellar contract upload \
--network mainnet \
--source <DEPLOYER_KEY> \
--wasm target/wasm32-unknown-unknown/release/<contract>.wasm
stellar contract deploy \
--network mainnet \
--source <DEPLOYER_KEY> \
--wasm-hash <HASH>
stellar contract invoke \
--network mainnet \
--id <CONTRACT_ID> \
--source <DEPLOYER_KEY> \
-- initialize <ARGS>
stellar contract invoke \
--network mainnet \
--id <CONTRACT_ID> \
-- <read_method>
After successful deploy:
Gate 3: Post-deployment
Monitoring:
Ecosystem distribution:
Funding / grants:
Constraints
- Do not let the user skip any Gate 1 checkbox. A broken mainnet contract is dramatically harder to fix than a delayed deploy
- For first-time deployers, walk them through
stellar CLI installation if which stellar returns nothing
- For high-value contracts (anything holding user funds or being core infrastructure), refuse to proceed without at least informal peer-review evidence
- Mainnet network passphrase is critical — never copy from testnet config. The mainnet passphrase contains "September 2015"; testnet contains "September 2015" too but with "Test" prefix — always verify