animation-reverse-engi…
Reverse-engineer any motion reference (a video from X/Twitter, Dribbble, a screen recording, a GIF) into production animation…
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
Claude Code
$ npx -y skills add sendaifun/skills --skill solana-kit-migration --agent claude-code
Codex
$ npx skills add sendaifun/skills --skill solana-kit-migration -a codex -y
Cursor
$ npx skills add sendaifun/skills --skill solana-kit-migration -a cursor -y
Gemini CLI
$ npx skills add sendaifun/skills --skill solana-kit-migration -a gemini-cli -y
GitHub Copilot
$ npx skills add sendaifun/skills --skill solana-kit-migration -a github-copilot -y
OpenCode
$ npx skills add sendaifun/skills --skill solana-kit-migration -a opencode -y
Windsurf
$ npx skills add sendaifun/skills --skill solana-kit-migration -a windsurf -y
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.
Reverse-engineer any motion reference (a video from X/Twitter, Dribbble, a screen recording, a GIF) into production animation…
Build and debug encrypted Solana applications with Arcium — data stays private during computation, no single party sees it. Use…
Complete Birdeye API integration for real-time DeFi data across Solana and 15 other chains. Use for token prices, OHLCV charts,…
Build on Solana with Carbium infrastructure — bare-metal RPC, Standard WebSocket pubsub, gRPC Full Block streaming (~22ms), DEX…
Complete CoinGecko Solana API integration for token prices, DEX pool data, OHLCV charts, trades, and market analytics. Use for…
Crypto Twitter intelligence and alpha research. Search X/Twitter for real-time crypto narratives, trending tokens, yield…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.