solana-skill

Review·Scanned 2/17/2026

Provides Solana wallet, balance, transaction and swap operations via Helius and Jupiter APIs. Reads/stores heliusApiKey in ~/.config/solana-skill/config.json, derives a local password from USER/HOME, makes network calls to https://mainnet.helius-rpc.com and https://api.jup.ag, and includes CLI npx tsx scripts/wallet.ts usage.

from clawhub.ai·vbf48d77·46.0 KB·0 installs
Scanned from 1.0.0 at bf48d77 · Transparency log ↗
$ vett add clawhub.ai/chattyclaw/solana-skillReview findings below

Solana Skill

Comprehensive Solana blockchain interaction using Helius infrastructure.

Prerequisites

  1. Helius API Key — Get free at https://dashboard.helius.dev/signup
  2. Store key in ~/.config/solana-skill/config.json:
{
  "heliusApiKey": "your-api-key",
  "network": "mainnet-beta"
}

Core Capabilities

Wallet Management

  • Create new wallets (keypair generation)
  • Import existing wallets (private key or seed phrase)
  • List managed wallets
  • Secure key storage (encrypted at rest)

Balance & Assets

  • Check SOL balance
  • Get all token balances (SPL tokens)
  • View NFTs and compressed NFTs
  • Portfolio valuation (via DAS API)

Transactions

  • Send SOL
  • Send SPL tokens
  • Transaction history (enhanced, human-readable)
  • Priority fee estimation

Swaps (Jupiter)

  • Get swap quotes
  • Execute token swaps
  • Slippage protection

Monitoring

  • Watch addresses for activity
  • Transaction notifications

Quick Reference

Check Balance

import { createHelius } from 'helius-sdk';

const helius = createHelius({ apiKey: 'YOUR_KEY' });
const assets = await helius.getAssetsByOwner({
  ownerAddress: 'WALLET_ADDRESS',
  displayOptions: {
    showFungible: true,
    showNativeBalance: true
  }
});

Send SOL

import { Connection, Keypair, SystemProgram, Transaction, sendAndConfirmTransaction, LAMPORTS_PER_SOL } from '@solana/web3.js';

const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=YOUR_KEY');
const tx = new Transaction().add(
  SystemProgram.transfer({
    fromPubkey: sender.publicKey,
    toPubkey: recipientPubkey,
    lamports: amount * LAMPORTS_PER_SOL
  })
);
await sendAndConfirmTransaction(connection, tx, [sender]);

Jupiter Swap

// 1. Get quote
const quote = await fetch(`https://api.jup.ag/swap/v1/quote?inputMint=${inputMint}&outputMint=${outputMint}&amount=${amount}`);

// 2. Build swap transaction
const swap = await fetch('https://api.jup.ag/swap/v1/swap', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    quoteResponse: await quote.json(),
    userPublicKey: wallet.publicKey.toString()
  })
});

// 3. Sign and send

API Endpoints

ServiceBase URL
Helius RPChttps://mainnet.helius-rpc.com/?api-key=KEY
Helius Senderhttps://sender.helius-rpc.com/fast
Jupiter Quotehttps://api.jup.ag/swap/v1/quote
Jupiter Swaphttps://api.jup.ag/swap/v1/swap

Security

Critical rules:

  • Never log or display private keys
  • Use encrypted storage for keys
  • Validate all addresses before transactions
  • Set reasonable slippage limits (default: 1%)
  • Always confirm large transactions with user

See references/security.md for detailed security practices.

Detailed References

  • references/helius-api.md — Full Helius API reference
  • references/security.md — Wallet security best practices
  • references/jupiter.md — Jupiter swap integration

Common Token Addresses

TokenMint Address
SOLSo11111111111111111111111111111111111111112 (wrapped)
USDCEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDTEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
BONKDezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263

Error Handling

Common errors and solutions:

  • Insufficient SOL: Need SOL for rent + transaction fees
  • Token account not found: Create ATA before sending tokens
  • Transaction too large: Reduce instructions or use address lookup tables
  • Blockhash expired: Retry with fresh blockhash