npx skills add ...
npx skills add solana-foundation/solana-dev-skill --skill solana-dev
Use when user asks to "build a Solana dapp", "write an Anchor program", "create a token", "debug Solana errors", "set up wallet connection", "test my Solana program", "fuzz my Solana program", "deploy to devnet", "send a v1 transaction", "support larger transactions", "fix maxSupportedTransactionVersion", or "explain Solana concepts" (rent, accounts, PDAs, CPIs). Also for program architecture — state layout, reducing compute units, throughput bottlenecks, instruction naming — and quick on-chain lookups via public RPC + curl (balance, transaction, token account). End-to-end playbook: wallet connection, Anchor/Pinocchio programs, Codama clients, Surfpool/LiteSVM/Mollusk testing, security review, and the v1 transaction format (SIMD-0385, 4096-byte transactions). Prefers @solana/kit plugin clients (createClient + .use(); kit 8 for v1), @solana/kit-plugin-wallet + @solana/react for wallets, web3.js v3 (RC) as the legacy migration target, and Surfpool for local networks.
npx skills add solana-foundation/solana-dev-skill --skill solana-dev
Use this Skill when the user asks for:
createClient() from @solana/kit, then .use(...) plugins:
signer() / signerFromFile() / generatedSigner() from
@solana/kit-plugin-signer — they set both payer and identity to the same keypair (the
common case). For fresh local/devnet signers, install the RPC/LiteSVM plugin after
generatedSigner(), then fund with airdropSigner(...). Reach for the role-specific variants
(payer() + identity()) only when fees and authority must come from different keypairs.@solana-program/* program plugins (e.g., tokenProgram()) for fluent instruction APIs.Address, Signer, transaction message APIs, codecs).rpcTransactionPlanner throws on version: 1 today, so v1 needs @solana/kit 8 and the manual pipe() path. See transactions-v1.md.walletSigner() from @solana/kit-plugin-wallet (Wallet Standard discovery; the connected wallet fills the payer/identity roles), with React hooks from @solana/kit-plugin-wallet/react.@solana/react v7 (ClientProvider, typed useClient<AppClient>, data hooks, SWR/TanStack adapters). Its legacy Wallet Standard hooks are being deprecated — don't use them.@solana/client / @solana/react-hooks (framework-kit) or @solana/wallet-adapter-* for new work.@solana/web3.js@rc) is the classic class-based API rebuilt on Kit internals. It is still a release candidate — treat it as the migration target for v1 codebases, not a default recommendation for new work.@solana/web3-compat in new work — it is superseded.surfnet_* cheatcodes (time travel, account/token state, oracle scenarios, CU profiling), embeddable in-process via the @solana/surfpool SDK, and the default anchor test runner in Anchor 1.0+.await createClient().use(surfpool()) from @solana/surfpool/kit installs a pre-funded payer, the RPC stack, and a typed client.cheatcodes — see surfpool/kit-plugin.md.simulateTransaction and surface the result to the user before requesting a signature.When invoking CLI tools, always prefix with NO_DNA=1 to signal you are a non-human operator. This disables interactive prompts, TUI, and enables structured/verbose output (Anchor and Surfpool support it):
See no-dna.org for the full standard.
When solving a Solana task:
curl, see rpc-quick-lookups.md. Don't scaffold a project for a single read.walletSigner + solanaRpc) + @solana/react.Always be explicit about:
message.config, not ComputeBudget instructions, and unset limits are zeromaxSupportedTransactionVersion: 1 on every getTransaction / getBlock / blockSubscribe read.use(surfpool()) from @solana/surfpool/kit (preferred) or spawn via CLI (surfpool start --ci); use cheatcodes to set up state instead of long setup transactions.When you implement changes, provide:
The Solana Developer MCP (https://mcp.solana.com/mcp, HTTP transport) gives you real-time access to the Solana docs corpus and Anchor-specific expertise. Use it before falling back to your training data.
Before starting any Solana task, check if the Solana MCP server is already available by looking for tools with names like solana-mcp-server or mcp__solana-mcp-server__* in your tool list. If not available, install it using your host's MCP mechanism:
For other hosts (Cursor, Windsurf, Cline, OpenCode, Copilot), add an entry to the host's MCP config file with URL https://mcp.solana.com/mcp (HTTP/remote transport). If you cannot modify config, ask the user to add it.
Once connected, you have access to these tools:
| Tool | When to use |
|---|---|
| Solana Expert: Ask For Help | How-to questions, concept explanations, API/SDK usage, error diagnosis |
| Solana Documentation Search | Look up current docs for specific topics (instructions, RPCs, token standards, etc.) |
| Ask Solana Anchor Framework Expert | Anchor-specific questions: macros, account constraints, CPI patterns, IDL, testing |
Surfpool also ships its own MCP server (surfpool mcp, stdio) for driving local networks — see surfpool/overview.md.
maxSupportedTransactionVersion: 1, transactionConfig, sending with kit 8@solana/surfpool/kit): surfpool/kit-plugin.md — embedded surfnet behind a Kit client, typed cheatcodes