Solana Token Development

VerifiedSafe

Guides the creation and management of tokens on Solana using SPL Token, Token-2022, and Metaplex metadata standards. Use this skill when building fungible tokens, NFTs, or token-gated applications on Solana, especially when implementing token extensions like transfer fees or on-chain metadata.

Sby Skills Guide Bot
DevelopmentIntermediate
306/2/2026
Claude CodeCursorWindsurf
#solana#spl-token#token-2022#metaplex#token-development

Recommended for

Our review

This skill guides the creation and management of tokens on Solana, covering SPL Token, Token-2022 (Token Extensions), and Metaplex metadata.

Strengths

  • Comprehensive coverage of Solana token standards (SPL Token, Token-2022, Metaplex)
  • Concrete Rust/Anchor examples for common operations (mint creation, minting, transferring)
  • Decision guide to choose the right standard for your project

Limitations

  • Requires familiarity with Rust and the Anchor framework
  • Does not cover deployment or production token management
  • May be overwhelming for complete beginners on Solana
When to use it

Use this skill when you need to create or manage tokens on Solana with advanced features (transfer fees, metadata, soulbound, etc.).

When not to use it

Avoid it if you are looking for a no-code solution or your project targets Ethereum or other blockchains exclusively.

Security analysis

Safe
Quality score90/100

The skill is a documentation guide for Solana token development, providing reference links and code examples. It declares no allowed tools, contains no executable commands, no data exfiltration, and no destructive instructions. It is purely informational.

No concerns found

Examples

Create SPL Token Mint
Create a new SPL token mint with 9 decimals and a freeze authority in Anchor.
Implement Transfer Fee Token
Implement a token with transfer fees using Token-2022 extensions in Solana.
Add Metaplex Metadata
Add Metaplex metadata to an existing SPL token on Solana.

Solana Token Development

Description

Guides creation and management of tokens on Solana using SPL Token, Token-2022 (Token Extensions), and Metaplex metadata standards.

When to Use

  • Creating fungible or non-fungible tokens
  • Working with SPL Token or Token-2022 programs
  • Implementing token extensions (transfer hooks, transfer fees, metadata, etc.)
  • Managing token accounts, minting, burning, transferring
  • Adding metadata to tokens (Metaplex)
  • Building token-gated applications

Instructions

Deciding Token Standard

  1. SPL Token (Original) — Simple fungible/NFT tokens. Widely supported.
  2. Token-2022 (Token Extensions) — Modern standard with built-in extensions:
    • Transfer Fees, Transfer Hooks, Confidential Transfers
    • Metadata (on-chain, no Metaplex needed), Metadata Pointer
    • Group/Member Pointers, Permanent Delegate
    • Non-Transferable (Soulbound), Close Authority
  3. Metaplex Metadata — Rich metadata for NFTs and fungible tokens (works with both token programs)

Key Decision:

  • New tokens in 2025+: Prefer Token-2022 unless you need maximum ecosystem compatibility
  • NFTs with rich metadata: Token-2022 + embedded metadata or SPL Token + Metaplex
  • DeFi tokens: SPL Token still has broadest DeFi protocol support

Reference Files

Common Patterns

Create Mint (Anchor)

#[account(
    init,
    payer = authority,
    mint::decimals = 9,
    mint::authority = authority,
    mint::freeze_authority = authority,
)]
pub mint: Account<'info, Mint>,

Mint Tokens (Anchor)

use anchor_spl::token::{mint_to, MintTo};

mint_to(
    CpiContext::new(
        ctx.accounts.token_program.to_account_info(),
        MintTo {
            mint: ctx.accounts.mint.to_account_info(),
            to: ctx.accounts.token_account.to_account_info(),
            authority: ctx.accounts.authority.to_account_info(),
        },
    ),
    amount,
)?;

Transfer Tokens (Anchor)

use anchor_spl::token::{transfer, Transfer};

transfer(
    CpiContext::new(
        ctx.accounts.token_program.to_account_info(),
        Transfer {
            from: ctx.accounts.from_ata.to_account_info(),
            to: ctx.accounts.to_ata.to_account_info(),
            authority: ctx.accounts.authority.to_account_info(),
        },
    ),
    amount,
)?;
Related skills