[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71KMDFQ2Y7SZX9HWAXTPVJD":3,"skill-same:01M71KMDFQ2Y7SZX9HWAXTPVJD":74},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":55,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M71KMDFQ2Y7SZX9HWAXTPVJD","pump-solana-dev",null,"Solana development patterns used in the Pump SDK — Anchor IDL-based program interaction, SPL Token and Token-2022 management, transaction construction with instruction composition, RPC batching, and cross-program coordination.","clawdsolana\u002FOpenClawd","clawdsolana","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F279036008?v=4","01M71JTVF9FNGKE2SVJRPTQM31","OpenClawd","01M71JTVGCKWBSS8ZYC1HYWVA5",2,"MIT","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fpump-solana-dev\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"pump solana dev","solana","solana dev","pump","dev","sdk","github","interaction","transaction","with","coordination","program","URL","batching","pump-fun","rpc","anchor","fun","development","Composition","2026-11-10 10:12:30",false,"---\nname: pump-solana-dev\ndescription: \"Solana development patterns used in the Pump SDK — Anchor IDL-based program interaction, SPL Token and Token-2022 management, transaction construction with instruction composition, RPC batching, and cross-program coordination.\"\nmetadata:\n  solanaos:\n    homepage: https:\u002F\u002Fgithub.com\u002Fnirholas\u002Fpump-fun-sdk\n    requires:\n      env:\n        - SOLANA_RPC_URL\n---\n\n# Solana Development — Web3.js, Anchor, SPL Tokens & On-Chain Patterns\n\nApply Solana development patterns used throughout the Pump SDK: Anchor IDL-based program interaction, SPL Token and Token-2022 account management, transaction construction with instruction composition, RPC batching, and cross-program account coordination.\n\n## Anchor Program Initialization\n\n```typescript\nimport { Program, AnchorProvider } from '@coral-xyz\u002Fanchor';\n\nfunction getPumpProgram(connection: Connection): Program\u003CPump> {\n    const provider = new AnchorProvider(\n        connection,\n        { publicKey: PublicKey.default, signTransaction: async (tx) => tx, signAllTransactions: async (txs) => txs },\n        { commitment: 'confirmed' }\n    );\n    return new Program(pumpIdl as Pump, PUMP_PROGRAM_ID, provider);\n}\n```\n\n**Offline pattern:** Uses a dummy provider (no wallet) for building instructions. Actual signing happens in the caller's code.\n\n## Instruction Building with `accountsStrict`\n\n```typescript\nconst ix = await program.methods\n    .buy(amount, maxSolCost, flags)\n    .accountsStrict({\n        global: GLOBAL_PDA,\n        bondingCurve: bondingCurvePda(mint),\n        user: userPublicKey,\n        \u002F\u002F ... all required accounts\n    })\n    .remainingAccounts(additionalAccounts)\n    .instruction();\n```\n\n## PDA Derivation\n\n```typescript\nconst [pda, bump] = PublicKey.findProgramAddressSync(\n    [Buffer.from(\"bonding-curve\"), mint.toBuffer()],\n    PUMP_PROGRAM_ID\n);\n```\n\n## RPC Batching\n\n```typescript\nconst accounts = await connection.getMultipleAccountsInfo([\n    bondingCurvePda(mint),\n    GLOBAL_PDA,\n    FEE_CONFIG_PDA,\n]);\n```\n\n## Token-2022 Support\n\nThe SDK supports both SPL Token and Token-2022:\n- `createV2Instruction` creates Token-2022 mints\n- `tokenProgram` parameter selects the appropriate program\n- Associated Token Accounts (ATAs) are created idempotently\n\n## Account Decoding\n\n```typescript\nconst bondingCurve = program.coder.accounts.decode('bondingCurve', accountInfo.data);\n```\n\nNullable variants handle missing accounts:\n```typescript\nconst bc = decodeBondingCurveNullable(accountInfo); \u002F\u002F returns null instead of throwing\n```\n\n## Transaction Simulation\n\n```typescript\nconst result = await connection.simulateTransaction(tx, [signer]);\n\u002F\u002F Parse return data from simulation logs\n```\n\n## BN.js Arithmetic\n\nAll amounts use `BN` for arbitrary-precision integer arithmetic:\n\n```typescript\nconst fee = amount.mul(new BN(feeBps)).div(new BN(10000));\nconst ceilFee = amount.mul(new BN(feeBps)).add(new BN(9999)).div(new BN(10000));\n```\n\n## Patterns to Follow\n\n- Always use `accountsStrict` — not `accounts` — for type-safe account specification\n- Use `getMultipleAccountsInfo` to batch account fetches\n- Build instruction arrays, not transactions — let callers compose\n- Handle both Token and Token-2022 programs via parameter\n- Use nullable decoders for optional accounts\n\n## Common Pitfalls\n\n- `AnchorProvider` with dummy wallet is for instruction building only — never sign with it\n- `getMultipleAccountsInfo` returns nulls for missing accounts — always check\n- Transaction size limit is 1232 bytes — large instruction sets may need multiple transactions\n- `remainingAccounts` order matters — the on-chain program reads them positionally\n\n","# Solana Development — Web3.js, Anchor, SPL Tokens & On-Chain Patterns\n\nApply Solana development patterns used throughout the Pump SDK: Anchor IDL-based program interaction, SPL Token and Token-2022 account management, transaction construction with instruction composition, RPC batching, and cross-program account coordination.\n\n## Anchor Program Initialization\n\n```typescript\nimport { Program, AnchorProvider } from '@coral-xyz\u002Fanchor';\n\nfunction getPumpProgram(connection: Connection): Program\u003CPump> {\n    const provider = new AnchorProvider(\n        connection,\n        { publicKey: PublicKey.default, signTransaction: async (tx) => tx, signAllTransactions: async (txs) => txs },\n        { commitment: 'confirmed' }\n    );\n    return new Program(pumpIdl as Pump, PUMP_PROGRAM_ID, provider);\n}\n```\n\n**Offline pattern:** Uses a dummy provider (no wallet) for building instructions. Actual signing happens in the caller's code.\n\n## Instruction Building with `accountsStrict`\n\n```typescript\nconst ix = await program.methods\n    .buy(amount, maxSolCost, flags)\n    .accountsStrict({\n        global: GLOBAL_PDA,\n        bondingCurve: bondingCurvePda(mint),\n        user: userPublicKey,\n        \u002F\u002F ... all required accounts\n    })\n    .remainingAccounts(additionalAccounts)\n    .instruction();\n```\n\n## PDA Derivation\n\n```typescript\nconst [pda, bump] = PublicKey.findProgramAddressSync(\n    [Buffer.from(\"bonding-curve\"), mint.toBuffer()],\n    PUMP_PROGRAM_ID\n);\n```\n\n## RPC Batching\n\n```typescript\nconst accounts = await connection.getMultipleAccountsInfo([\n    bondingCurvePda(mint),\n    GLOBAL_PDA,\n    FEE_CONFIG_PDA,\n]);\n```\n\n## Token-2022 Support\n\nThe SDK supports both SPL Token and Token-2022:\n- `createV2Instruction` creates Token-2022 mints\n- `tokenProgram` parameter selects the appropriate program\n- Associated Token Accounts (ATAs) are created idempotently\n\n## Account Decoding\n\n```typescript\nconst bondingCurve = program.coder.accounts.decode('bondingCurve', accountInfo.data);\n```\n\nNullable variants handle missing accounts:\n```typescript\nconst bc = decodeBondingCurveNullable(accountInfo); \u002F\u002F returns null instead of throwing\n```\n\n## Transaction Simulation\n\n```typescript\nconst result = await connection.simulateTransaction(tx, [signer]);\n\u002F\u002F Parse return data from simulation logs\n```\n\n## BN.js Arithmetic\n\nAll amounts use `BN` for arbitrary-precision integer arithmetic:\n\n```typescript\nconst fee = amount.mul(new BN(feeBps)).div(new BN(10000));\nconst ceilFee = amount.mul(new BN(feeBps)).add(new BN(9999)).div(new BN(10000));\n```\n\n## Patterns to Follow\n\n- Always use `accountsStrict` — not `accounts` — for type-safe account specification\n- Use `getMultipleAccountsInfo` to batch account fetches\n- Build instruction arrays, not transactions — let callers compose\n- Handle both Token and Token-2022 programs via parameter\n- Use nullable decoders for optional accounts\n\n## Common Pitfalls\n\n- `AnchorProvider` with dummy wallet is for instruction building only — never sign with it\n- `getMultipleAccountsInfo` returns nulls for missing accounts — always check\n- Transaction size limit is 1232 bytes — large instruction sets may need multiple transactions\n- `remainingAccounts` order matters — the on-chain program reads them positionally\n\n",{"name":5,"metadata":44,"description":7},{"solanaos":45},{"homepage":46,"requires":47},"https:\u002F\u002Fgithub.com\u002Fnirholas\u002Fpump-fun-sdk",{"env":48},[49],"SOLANA_RPC_URL","main","6b4a291df75c639681e93b4b5b812126443fd6ed","skills\u002Fpump-solana-dev",3,"https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd","https:\u002F\u002Fsolanaclawd.com\u002Fopenclawd","https:\u002F\u002Fgithub.com\u002Fclawdsolana","https:\u002F\u002Fmusebook.trade","Welcome to Open Clawd. The future of Ai on and off chain. Bringing webMCP to web 3 using X402, A2A, MPP and so much more!","2026-08-01 09:30:51",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add clawdsolana\u002FOpenClawd --skill pump-solana-dev",{"tool":66,"command":67},"bunx","bunx skills add clawdsolana\u002FOpenClawd --skill pump-solana-dev",{"tool":69,"command":70},"pnpm","pnpm dlx skills add clawdsolana\u002FOpenClawd --skill pump-solana-dev","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fpump-solana-dev\u002FSKILL.md",true,[],[75,105,133,159,169,193],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":86,"publishedAt":104},"01M71KRBD0W01EAXJ8YM4M1SJ2","solana-dev","End-to-end Solana development playbook (Jan 2026). Prefer Solana Foundation framework-kit (@solana\u002Fclient + @solana\u002Freact-hooks) for React\u002FNext.js UI. Prefer @solana\u002Fkit for all new client\u002FRPC\u002Ftransaction code. When legacy dependencies require web3.js, isolate it behind @solana\u002Fweb3-compat (or @solana\u002Fweb3.js as a true legacy fallback). Covers wallet-standard-first connection (incl. ConnectorKit), Anchor\u002FPinocchio programs, Codama-based client generation, LiteSVM\u002FMollusk\u002FSurfpool testing, and security checklists.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fsolana-dev\u002FSKILL.md",[81],{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[21,23,20,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],"Wallet","end","testing","hooks","kit","new","when","web3","code","react","next","2026","playbook","security","ui","fallback","framework","2026-11-10 10:56:23",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":114,"publishedAt":104},"01M71KR8QPESSY61SVE8ZTFNVT","xurl","A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fxurl\u002FSKILL.md",[111],{"categoryNo":112,"categoryName":113,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000023","Skill与智能体开发",[107,115,116,117,118,119,120,93,121,122,123,124,125,126,127,128,129,130,131,132],"posts","Media","x api","search","send","tap","you","api","cli","read","install","cli tool","endpoint","brew","for","manage","tool","twitter",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":140,"publishedAt":104},"01M71KR6FSXV88YDKWP7NBY3SH","wurk-integration","WURK API integration for monetizing agents with x402 payments on Solana\u002FBase - create social jobs, custom challenges, and agent help tasks","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fwurk-integration\u002FSKILL.md",[139],{"categoryNo":112,"categoryName":113,"taxonomyType":84,"taxonomyTypeDesc":85},[141,142,143,144,145,146,147,148,122,149,150,151,152,153,154,155,129,156,157,158],"wurk","wurk integration","integration","x402","social","payments","tasks","team","create","social-jobs","command","agent-help","custom-jobs","clawd","safe","api integration","custom","true",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":104},"01M71KR4HCX41BPAK9GP7RPRRP","workflows","Manage application workflows including configuration, restart, and removal.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fworkflows\u002FSKILL.md",[],[161,130,166,167,168],"configuration","application","restart",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":104},"01M71KR1VM0F5GPEQDNG5J7A0H","web-search","Search the web, fetch content, extract branding profiles, and capture screenshots from URLs. Use for real-time information, API documentation, current events, design matching, and visual reference.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fweb-search\u002FSKILL.md",[],[176,118,177,178,179,129,180,181,182,183,184,185,186,122,187,188,189,190,191,192],"web search","web","fetch","api documentation","real-time","time","profiles","design","use","information","visual","documentation","branding","matching","reference","capture","content",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":199,"publishedAt":104},"01M71KQZN5MR1JFQHG5GWXYAHS","weather","Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[195,200,129,201,184,93,202,122,203,204,205,206,207,208,209,210,211,212],"get","open","analysis","alerts","temperature","curl","via","help","about","https","location","data","user"]