Skip to content
Development
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

From plugin
solana-dev-skill
5591 skill
Install
$ npx -y skills add solana-foundation/solana-dev-skill --skill solana-dev --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/solana-dev

Context preview

The summary Claude sees to decide when to auto-load this skill.

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

SKILL.md

solana-dev.SKILL.md
name: solana-dev
description: '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.'
license: MIT
compatibility: Requires Node.js 20.18+, Rust toolchain, Solana CLI, Anchor CLI
metadata:
  author: Solana Foundation
  version: "2.4.0"

Solana Development Skill (Kit-first)

What this Skill is for

Use this Skill when the user asks for:

  • Solana dApp UI work (React / Next.js)
  • Wallet connection + signing flows
  • Transaction building / sending / confirmation UX
  • Transaction v1 / larger transactions (SIMD-0385) — sending, reading, indexing
  • On-chain program development (Anchor or Pinocchio)
  • Program architecture — state layout, PDA seed conventions, naming, parallelization, cranks, vault topology
  • Client SDK generation (typed program clients)
  • Local testing (Surfpool, LiteSVM, Mollusk) and fuzz testing (Trident, cargo-fuzz)
  • Security hardening and audit-style reviews
  • Confidential transfers (Token-2022 ZK extension)
  • **Toolchain setup, version mismatches, GLIBC errors, dependency conflicts**
  • **Upgrading Anchor/Solana CLI versions, migration between versions**
  • **Migrating web3.js v1 code to web3.js v3 or Kit**

Default stack decisions (opinionated)

1) **SDK: @solana/kit (v7+) first**

  • Build clients with `createClient()` from `@solana/kit`, then `.use(...)` plugins:
  createClient()
    .use(signer(mySigner))
    .use(solanaRpc({ rpcUrl }));
  // or solanaLocalRpc / solanaDevnetRpc / solanaMainnetRpc from @solana/kit-plugin-rpc
  • Default to `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.

  • Use `@solana-program/*` program plugins (e.g., `tokenProgram()`) for fluent instruction APIs.
  • Prefer Kit types (`Address`, `Signer`, transaction message APIs, codecs).
  • **Transaction v1** (4096-byte transactions, SIMD-0385) is the one exception to the plugin-client default: `rpcTransactionPlanner` throws on `version: 1` today, so v1 needs `@solana/kit` 8 and the manual `pipe()` path. See [transactions-v1.md](references/transactions-v1.md).

2) **UI: Kit plugin client + @solana/react**

  • Wallet connection via `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`.
  • Client bindings via `@solana/react` v7 (`ClientProvider`, typed `useClient<AppClient>`, data hooks, SWR/TanStack adapters). Its legacy Wallet Standard hooks are being deprecated — don't use them.
  • Do **not** use `@solana/client` / `@solana/react-hooks` (framework-kit) or `@solana/wallet-adapter-*` for new work.

3) **Legacy compatibility: web3.js v3 (RC)**

  • web3.js v3 (`@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.
  • Migrating a v1 codebase: use the official migration skill from the solana-web3.js repo rather than hand-migrating — see [kit-web3-interop.md](references/kit-web3-interop.md) for routing.
  • Do not introduce `@solana/web3-compat` in new work — it is superseded.
  • Do not let legacy class types leak across the entire app; contain them to adapter modules.

4) **Programs**

  • Default: Anchor 1.1.x (fast iteration, IDL generation, mature tooling).
  • Performance/footprint: Pinocchio (0.11+) when you need CU optimization, minimal binary size,

zero dependencies, or fine-grained control over parsing/allocations.

5) **Testing (Surfpool-centered)**

  • Unit tests: LiteSVM (in-process, Rust/TS) or Mollusk (Rust instruction harness).
  • Integration tests: **Surfpool** — mainnet forking with lazy account cloning, 26 `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+.
  • In TypeScript, boot the surfnet through the Kit plugin: `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](references/surfpool/kit-plugin.md).
  • Use solana-test-validator only when you need full validator runtime fidelity not emulated by Surfpool.

Agent safety guardrails

Transaction review (W009)

  • **Never sign or send transactions without explicit user approval.** Always display the transaction summary (recipient, amount, token, fee payer, cluster) and wait for confirmation before proceeding.
  • **Never ask for or store private keys, seed phrases, or keypair files.** Use wallet-standard signing flows where the wallet holds the keys.
  • **Default to devnet/localnet.** Never target mainnet unless the
Read more
Ships withsolana-dev-skill

A comprehensive Agent Skill for modern Solana development (July 2026 best practices).

Get the whole plugin
Stats
560
Stars
134
Forks
Active
Maintenance
TypeScript
Language
MIT
License
5d ago
Last commit
8mo ago
Created

Repo: solana-foundation/solana-dev-skill