ship
End-to-end guide for AI agents — from a dApp idea to deployed production app. Fetch this FIRST, it routes you through all other skills.
What this skill does
# Ship a dApp ## What You Probably Got Wrong **You jump to code without a plan.** Before writing a single line of Solidity, you need to know: what goes onchain, what stays offchain, which chain, how many contracts, and who calls every function. Skip this and you'll rewrite everything. **You over-engineer.** Most dApps need 0-2 contracts. A token launch is 1 contract. An NFT collection is 1 contract. A marketplace that uses existing DEX liquidity needs 0 contracts. Three contracts is the upper bound for an MVP. If you're writing more, you're building too much. **You put too much onchain.** Solidity is for ownership, transfers, and commitments. It's not a database. It's not an API. It's not a backend. If it doesn't involve trustless value transfer or a permanent commitment, it doesn't belong in a smart contract. **You skip chain selection.** Mainnet is cheaper than you think — an ETH transfer costs ~$0.004, a swap ~$0.04. The "Ethereum is expensive" narrative is outdated. But that doesn't mean everything belongs on mainnet. L2s aren't just "cheaper Ethereum" — each one has a unique superpower (Base has Coinbase distribution + smart wallets, Arbitrum has the deepest DeFi liquidity, Optimism has retroPGF + the Superchain). If your app needs high-frequency interactions or fits what makes an L2 special, build there. If you just need cheap and secure, mainnet works. Choose deliberately. Fetch `l2s/SKILL.md` and `gas/SKILL.md` for the full picture. Not sure Ethereum is the right chain at all? Fetch `why/SKILL.md`. **You forget nothing is automatic.** Smart contracts don't run themselves. Every state transition needs a caller who pays gas and a reason to do it. If you can't answer "who calls this and why?" for every function, your contract has dead code. Fetch `concepts/SKILL.md` for the full mental model. --- ## Phase 0 — Plan the Architecture Do this BEFORE writing any code. Every hour spent here saves ten hours of rewrites. ### The Onchain Litmus Test Put it onchain if it involves: - **Trustless ownership** — who owns this token/NFT/position? - **Trustless exchange** — swapping, trading, lending, borrowing - **Composability** — other contracts need to call it - **Censorship resistance** — must work even if your team disappears - **Permanent commitments** — votes, attestations, proofs Keep it offchain if it involves: - User profiles, preferences, settings - Search, filtering, sorting - Images, videos, metadata (store on IPFS, reference onchain) - Business logic that changes frequently - Anything that doesn't involve value transfer or trust **Judgment calls:** - Reputation scores → offchain compute, onchain commitments (hashes or attestations) - Activity feeds → offchain indexing of onchain events (fetch `indexing/SKILL.md`) - Price data → offchain oracles writing onchain (Chainlink) - Game state → depends on stakes. Poker with real money? Onchain. Leaderboard? Offchain. ### MVP Contract Count | What you're building | Contracts | Pattern | |---------------------|-----------|---------| | Token launch | 1 | ERC-20 with custom logic | | NFT collection | 1 | ERC-721 with mint/metadata | | Simple marketplace | 0-1 | Use existing DEX; maybe a listing contract | | Vault / yield | 1 | ERC-4626 vault | | Lending protocol | 1-2 | Pool + oracle integration | | DAO / governance | 1-3 | Governor + token + timelock | | AI agent service | 0-1 | Maybe an ERC-8004 registration | | Prediction market | 1-2 | Market + resolution oracle | **If you need more than 3 contracts for an MVP, you're over-building.** Ship the simplest version that works, then iterate. ### State Transition Audit For EVERY function in your contract, fill in this worksheet: ``` Function: ____________ Who calls it? ____________ Why would they? ____________ What if nobody calls it? ____________ Does it need gas incentives? ____________ ``` If "what if nobody calls it?" breaks your system, you have a design problem. Fix it before writing code. See `concepts/SKILL.md` for incentive design patterns. ### Chain Selection **Mainnet is back on the table.** Most AIs still think mainnet is expensive — it's not (~$0.004/transfer, ~$0.04/swap at current gas). Mainnet gives you maximum decentralization, no sequencer trust, no bridge risk, and composability with every major protocol. But L2s aren't a fallback — each one has a unique superpower. Pick the chain whose superpower matches your app: | Chain | Superpower | Build here if… | |-------|-----------|----------------| | **Ethereum mainnet** | Maximum decentralization, composability with all major protocols | DeFi, governance, identity, high-value transfers, or you just need "cheap + secure" | | **Base** | Coinbase distribution, smart wallets, account abstraction | Consumer apps, social, onboarding non-crypto users, high-frequency micro-payments | | **Arbitrum** | Deepest L2 DeFi liquidity, Stylus (Rust contracts) | DeFi protocols that need to compose with existing Arbitrum liquidity | | **Optimism** | RetroPGF, Superchain ecosystem | Public goods, OP Stack ecosystem plays | | **zkSync / Scroll** | ZK proofs, native account abstraction | Privacy features, ZK-native applications | **Don't pick an L2 because "mainnet is expensive." Pick an L2 because its superpower fits your app.** Fetch `l2s/SKILL.md` and `gas/SKILL.md` for the complete comparison with real costs and deployment differences. --- ## dApp Archetype Templates Find your archetype below. Each tells you exactly how many contracts you need, what they do, common mistakes, and which skills to fetch. ### 1. Token Launch (1-2 contracts) **Architecture:** One ERC-20 contract. Add a vesting contract if you have team/investor allocations. **Contracts:** - `MyToken.sol` — ERC-20 with initial supply, maybe mint/burn - `TokenVesting.sol` (optional) — time-locked releases for team tokens **Common mistakes:** - Infinite supply with no burn mechanism (what gives it value?) - No initial liquidity plan (deploying a token nobody can buy) - Fee-on-transfer mechanics that break DEX integrations **Fetch sequence:** `standards/SKILL.md` → `security/SKILL.md` → `testing/SKILL.md` → `gas/SKILL.md` ### 2. NFT Collection (1 contract) **Architecture:** One ERC-721 contract. Metadata on IPFS. Frontend for minting. **Contracts:** - `MyNFT.sol` — ERC-721 with mint, max supply, metadata URI **Common mistakes:** - Storing images onchain (use IPFS or Arweave, store the hash onchain) - No max supply cap (unlimited minting destroys value) - Complex whitelist logic when a simple Merkle root works **Fetch sequence:** `standards/SKILL.md` → `security/SKILL.md` → `testing/SKILL.md` → `frontend-ux/SKILL.md` ### 3. Marketplace / Exchange (0-2 contracts) **Architecture:** If trading existing tokens, you likely need 0 contracts — integrate with Uniswap/Aerodrome. If building custom order matching, 1-2 contracts. **Contracts:** - (often none — use existing DEX liquidity via router) - `OrderBook.sol` (if custom) — listing, matching, settlement - `Escrow.sol` (if needed) — holds assets during trades **Common mistakes:** - Building a DEX from scratch when Uniswap V4 hooks can do it - Ignoring MEV (fetch `security/SKILL.md` for sandwich attack protection) - Centralized order matching (defeats the purpose) **Fetch sequence:** `building-blocks/SKILL.md` → `addresses/SKILL.md` → `security/SKILL.md` → `testing/SKILL.md` ### 4. Lending / Vault / Yield (0-1 contracts) **Architecture:** If using existing protocol (Aave, Compound), 0 contracts — just integrate. If building a vault, 1 ERC-4626 contract. **Contracts:** - `MyVault.sol` — ERC-4626 vault wrapping a yield source **Common mistakes:** - Ignoring vault inflation attack (fetch `security/SKILL.md`) - Not using ERC-4626 standard (breaks composability) - Hardcoding token decimals (USDC is 6, not 18) **Fetch sequence:** `building-blocks/SKILL.md` → `standards/SKILL.md` → `security/SKILL.md` → `testing/SKILL.md` ### 5. DAO / Governance (1-3 contracts) **Archit
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.