.agents/skills/pump-ts-vanity/SKILL.md
Educational single-threaded TypeScript vanity address generator for Solana using @solana/web3.js with async iteration, event-loop yielding, streaming generator API, and best-effort memory zeroization.
npx skillsauth add x402agent/solana-clawd pump-ts-vanityInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Single-threaded TypeScript vanity address generator using @solana/web3.js with async iteration, event-loop yielding, and streaming generator API.
CLI / Library API
│
VanityGenerator
│
async generator loop
│
Keypair.generate() per iteration
│
AddressMatcher.matches()
│
yield on match / yield progress
// 1. Async generator (streaming)
for await (const result of generateVanityAddress({ prefix: 'pump' })) {
console.log(result.address);
break; // stop after first match
}
// 2. First match (promise)
const result = await findVanityAddress({ prefix: 'pump' });
// 3. Batch generation
const results = await findVanityAddresses({ prefix: 'So', count: 5 });
async function* generateVanityAddress(config: VanityConfig) {
let attempts = 0;
while (true) {
attempts++;
if (attempts % 1000 === 0) {
await new Promise(resolve => setImmediate(resolve));
}
const keypair = Keypair.generate();
const address = keypair.publicKey.toBase58();
if (matcher.matches(address)) {
yield { keypair, address, attempts };
}
}
}
Yields to the event loop every 1,000 iterations to prevent blocking.
| Feature | Rust | TypeScript | |---------|------|-----------| | Speed | 100K+ keys/sec | ~5K keys/sec | | Parallelism | Rayon (multi-core) | Single-threaded | | Memory safety | Zeroize trait | Best-effort fill(0) | | Use case | Production | Educational/prototyping |
// Zeroize secret key after use
const secretKey = keypair.secretKey;
try {
// ... use keypair
} finally {
secretKey.fill(0);
}
JavaScript's garbage collector may copy/relocate buffers, so fill(0) is best-effort.
@solana/web3.js Keypair.generate() — never custom RNGsecretKey.fill(0) after use (best-effort zeroization)setImmediate or setTimeout(0) for yielding, not process.nextTickfill(0) — no guaranteed memory cleanup in JSKeypair.generate() returns 64-byte array (32 secret + 32 public)development
Formally verify programs by writing Lean 4 proofs. Trigger this skill whenever the user wants to formally verify code, generate Lean 4 proofs, prove properties about algorithms or smart contracts, verify invariants, convert program logic into formal specifications, or anything involving Lean 4 and formal verification. Also trigger when the user mentions "qedgen", "lean proof", "formal proof", "verify my code", "prove correctness", "formal verification", or wants mathematical guarantees about their implementation.
data-ai
Orchestrate multi-bot trading swarms on Pump.fun with persona-driven agents
tools
End-to-end Solana development playbook (Jan 2026). Prefer Solana Foundation framework-kit (@solana/client + @solana/react-hooks) for React/Next.js UI. Prefer @solana/kit for all new client/RPC/transaction code. When legacy dependencies require web3.js, isolate it behind @solana/web3-compat (or @solana/web3.js as a true legacy fallback). Covers wallet-standard-first connection (incl. ConnectorKit), Anchor/Pinocchio programs, Codama-based client generation, LiteSVM/Mollusk/Surfpool testing, and security checklists.
tools
Buy and sell tokens on Pump.fun bonding curves and AMM pools