animation-reverse-engi…
Reverse-engineer any motion reference (a video from X/Twitter, Dribbble, a screen recording, a GIF) into production animation code through frame-level…
Helps developers understand when to use @solana/kit vs @solana/web3.js (v1), provides migration guidance, API mappings, and handles edge cases for Solana JavaScript SDK transitions
$ npx -y skills add sendaifun/skills --skill solana-kit-migration --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/solana-kit-migrationContext preview
The summary Claude sees to decide when to auto-load this skill.
Helps developers understand when to use @solana/kit vs @solana/web3.js (v1), provides migration guidance, API mappings, and handles edge cases for Solana JavaScript SDK transitions
name: solana-kit-migration description: Helps developers understand when to use @solana/kit vs @solana/web3.js (v1), provides migration guidance, API mappings, and handles edge cases for Solana JavaScript SDK transitions
This skill helps you navigate the transition between `@solana/web3.js` (v1.x) and `@solana/kit` (formerly web3.js 2.0), providing guidance on when to use each library and how to migrate between them.
The Solana JavaScript ecosystem has two major SDK options:
| Library | Status | Use Case | |---------|--------|----------| | `@solana/web3.js` (1.x) | Maintenance mode | Legacy projects, Anchor-dependent apps | | `@solana/kit` | Active development | New projects, performance-critical apps |
**Key Decision**: `@solana/kit` is the future, but migration isn't always straightforward.
1. **Starting a new project** without Anchor dependencies 2. **Bundle size matters** - Kit is tree-shakeable (26% smaller bundles) 3. **Performance is critical** - ~200ms faster confirmation latency, 10x faster crypto ops 4. **Using standard programs** (System, Token, Associated Token) 5. **Building browser applications** where bundle size impacts load time 6. **Type safety is important** - Better TypeScript support catches errors at compile time 7. **Using modern JavaScript** - Native BigInt, WebCrypto, AsyncIterators
1. **Using Anchor** - Anchor doesn't support Kit out of the box yet 2. **Existing large codebase** - Migration cost outweighs benefits 3. **Dependencies require v1** - Check if your SDKs support Kit 4. **Rapid prototyping** - v1's OOP style may be more familiar 5. **Documentation/examples** - More community resources for v1
1. **Gradual migration** - Use `@solana/compat` for interoperability 2. **Mixed dependencies** - Some libs require v1, some support Kit 3. **Feature-by-feature migration** - Convert hot paths first
START
│
├─ New project? ─────────────────────────────────────────┐
│ │ │
│ ├─ Using Anchor? ──► YES ──► Use @solana/web3.js │
│ │ │
│ └─ No Anchor? ──► Use @solana/kit │
│ │
└─ Existing project? ────────────────────────────────────┤
│ │
├─ Performance issues? ──► Consider migration │
│ │
├─ Bundle size issues? ──► Consider migration │
│ │
└─ Working fine? ──► Stay with current SDK │When a user asks about migration, follow these steps:
Run the migration analysis script to detect:
# Use the analyze-migration.sh script in scripts/ ./scripts/analyze-migration.sh /path/to/project
Look for these blocking dependencies:
Count occurrences of these patterns that need changes:
Based on findings, recommend:
See `resources/api-mappings.md` for complete mappings. Key conversions:
// v1
const connection = new Connection(url, 'confirmed');
const balance = await connection.getBalance(pubkey);
// Kit
const rpc = createSolanaRpc(url);
const { value: balance } = await rpc.getBalance(address).send();// v1 const keypair = Keypair.fromSecretKey(secretKey); console.log(keypair.publicKey.toBase58()); // Kit const signer = await createKeyPairSignerFromBytes(secretKey); console.log(signer.address);
// v1
const tx = new Transaction().add(
SystemProgram.transfer({
fromPubkey: sender.publicKey,
toPubkey: recipient,
lamports: amount,
})
);
tx.recentBlockhash = blockhash;
tx.feePayer = sender.publicKey;
// Kit
const tx = pipe(
createTransactionMessage({ version: 0 }),
tx => setTransactionMessageFeePayer(sender.address, tx),
tx => setTransactionMessageLifetimeUsingBlockhash(blockhash, tx),
tx => appendTransactionMessageInstruction(
getTransferSolInstruction({
source: sender,
destination: address(recipient),
amount: lamports(BigInt(amount)),
}),
tx
),
);Kit uses native BigInt everywhere. Watch for:
// WRONG - will fail const amount = 1000000000; // CORRECT const amount = 1_000_000_000n; // or const amount = BigInt(1000000000); // or use helper const amount = lamports(1_000_000_000n);
Kit may require explicit encoding:
// If you see: "Encoded binary (base 58) data should be less than 128 bytes" // Add encoding parameter: await rpc.getAccountIn
AI agent skills for Solana development — DeFi protocols, infrastructure, security, and more.
Repo: sendaifun/skills
Reverse-engineer any motion reference (a video from X/Twitter, Dribbble, a screen recording, a GIF) into production animation code through frame-level…
Build and debug encrypted Solana applications with Arcium — data stays private during computation, no single party sees it. Use when writing Arcis circuits…
Complete Birdeye API integration for real-time DeFi data across Solana and 15 other chains. Use for token prices, OHLCV charts, market discovery, on-chain…
Build on Solana with Carbium infrastructure — bare-metal RPC, Standard WebSocket pubsub, gRPC Full Block streaming (~22ms), DEX aggregation via CQ1 engine…
Complete CoinGecko Solana API integration for token prices, DEX pool data, OHLCV charts, trades, and market analytics. Use for building trading bots, portfolio…
Crypto Twitter intelligence and alpha research. Search X/Twitter for real-time crypto narratives, trending tokens, yield strategies, smart money signals, and…