[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71KKSE995W0S8QCFDMYP2CS":3,"skill-same:01M71KKSE995W0S8QCFDMYP2CS":71},{"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":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":52,"ownerHtmlUrl":53,"ownerBlogUrl":54,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M71KKSE995W0S8QCFDMYP2CS","pump-fee-system",null,"Complete Pump protocol fee system — tiered protocol fees based on market cap, creator fee collection across two programs, basis point arithmetic, and ceiling division for dust-safe calculations.","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-fee-system\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"system","pump","pump fee system","creator","protocol","safe","https","sdk","cap","github","two","across","Market","collection","pump-fun","complete","fun","for","point","dust","2026-11-10 10:12:30",false,"---\nname: pump-fee-system\ndescription: \"Complete Pump protocol fee system — tiered protocol fees based on market cap, creator fee collection across two programs, basis point arithmetic, and ceiling division for dust-safe calculations.\"\nmetadata:\n  solanaos:\n    homepage: https:\u002F\u002Fgithub.com\u002Fnirholas\u002Fpump-fun-sdk\n---\n\n# Fee System — Tiered Fees, Creator Fees & Protocol Fees\n\nImplement and extend the Pump protocol's fee system: tiered protocol fees based on market cap, creator fee collection across two programs, and fee computation with ceiling division.\n\n## Context\n\nThe Pump protocol charges fees on every buy\u002Fsell transaction. Fees flow to protocol fee recipients and token creators. The fee system spans three programs and must handle tokens in both bonding curve and graduated (AMM) states.\n\n## Fee Types\n\n| Fee | Recipient | When Charged |\n|-----|-----------|-------------|\n| Protocol fee | `feeRecipients[]` in `Global` | Every buy\u002Fsell |\n| Creator fee | Token creator's vault PDA | Every buy\u002Fsell (if creator is set) |\n| LP fee | Liquidity providers (AMM only) | Post-graduation trades |\n\n## Tiered Fee Calculation\n\nWhen a `FeeConfig` exists, fees are market-cap-dependent:\n\n```typescript\nfunction calculateFeeTier({ feeTiers, marketCap }): Fees {\n  \u002F\u002F Iterate tiers in REVERSE order\n  for (let i = feeTiers.length - 1; i >= 0; i--) {\n    if (marketCap >= feeTiers[i].marketCapLamportsThreshold) {\n      return feeTiers[i].fees;\n    }\n  }\n  return feeTiers[0].fees; \u002F\u002F fallback to lowest tier\n}\n```\n\n## Fee Computation\n\n```typescript\nfunction getFee({ global, feeConfig, mintSupply, bondingCurve, amount }): BN {\n  const { protocolFeeBps, creatorFeeBps } = computeFeesBps(...);\n  const protocolFee = ceilDiv(amount * protocolFeeBps, 10000);\n  const creatorFee = hasCreator ? ceilDiv(amount * creatorFeeBps, 10000) : 0;\n  return protocolFee + creatorFee;\n}\n```\n\n## Creator Vault Balance\n\nCreator fees accumulate in PDAs:\n- `creatorVaultPda(creator)` — Pump program vault\n- `ammCreatorVaultPda(creator)` — PumpAMM program vault\n\nBalance = total lamports - rent exemption minimum.\n\n## Error Classes\n\n| Error | Condition |\n|-------|-----------|\n| `NoShareholdersError` | Empty shareholders array |\n| `TooManyShareholdersError` | More than 10 shareholders |\n| `ZeroShareError` | Shareholder has `shareBps \u003C= 0` |\n| `InvalidShareTotalError` | Shares don't sum to 10,000 bps |\n| `DuplicateShareholderError` | Duplicate addresses |\n\n## Patterns to Follow\n\n- Use ceiling division (`ceilDiv`) for all fee calculations to prevent dust loss\n- Always check both creator vaults (Pump + AMM) when querying balances\n- Use transaction simulation (`simulateTransaction`) for read-only fee queries\n- Creator fee is only charged when `bondingCurve.creator != PublicKey.default` or it's a new curve\n\n## Common Pitfalls\n\n- Fee tiers must be iterated in reverse — the first match from the end is used\n- `computeFeesBps` returns different results depending on whether `feeConfig` is null (legacy vs tiered)\n- Creator fees are zero for tokens without a set creator\n- `getMinimumDistributableFee` requires transaction simulation — it cannot be computed offline\n- `transferCreatorFeesToPump` is only for graduated tokens — non-graduated tokens will fail\n\n","# Fee System — Tiered Fees, Creator Fees & Protocol Fees\n\nImplement and extend the Pump protocol's fee system: tiered protocol fees based on market cap, creator fee collection across two programs, and fee computation with ceiling division.\n\n## Context\n\nThe Pump protocol charges fees on every buy\u002Fsell transaction. Fees flow to protocol fee recipients and token creators. The fee system spans three programs and must handle tokens in both bonding curve and graduated (AMM) states.\n\n## Fee Types\n\n| Fee | Recipient | When Charged |\n|-----|-----------|-------------|\n| Protocol fee | `feeRecipients[]` in `Global` | Every buy\u002Fsell |\n| Creator fee | Token creator's vault PDA | Every buy\u002Fsell (if creator is set) |\n| LP fee | Liquidity providers (AMM only) | Post-graduation trades |\n\n## Tiered Fee Calculation\n\nWhen a `FeeConfig` exists, fees are market-cap-dependent:\n\n```typescript\nfunction calculateFeeTier({ feeTiers, marketCap }): Fees {\n  \u002F\u002F Iterate tiers in REVERSE order\n  for (let i = feeTiers.length - 1; i >= 0; i--) {\n    if (marketCap >= feeTiers[i].marketCapLamportsThreshold) {\n      return feeTiers[i].fees;\n    }\n  }\n  return feeTiers[0].fees; \u002F\u002F fallback to lowest tier\n}\n```\n\n## Fee Computation\n\n```typescript\nfunction getFee({ global, feeConfig, mintSupply, bondingCurve, amount }): BN {\n  const { protocolFeeBps, creatorFeeBps } = computeFeesBps(...);\n  const protocolFee = ceilDiv(amount * protocolFeeBps, 10000);\n  const creatorFee = hasCreator ? ceilDiv(amount * creatorFeeBps, 10000) : 0;\n  return protocolFee + creatorFee;\n}\n```\n\n## Creator Vault Balance\n\nCreator fees accumulate in PDAs:\n- `creatorVaultPda(creator)` — Pump program vault\n- `ammCreatorVaultPda(creator)` — PumpAMM program vault\n\nBalance = total lamports - rent exemption minimum.\n\n## Error Classes\n\n| Error | Condition |\n|-------|-----------|\n| `NoShareholdersError` | Empty shareholders array |\n| `TooManyShareholdersError` | More than 10 shareholders |\n| `ZeroShareError` | Shareholder has `shareBps \u003C= 0` |\n| `InvalidShareTotalError` | Shares don't sum to 10,000 bps |\n| `DuplicateShareholderError` | Duplicate addresses |\n\n## Patterns to Follow\n\n- Use ceiling division (`ceilDiv`) for all fee calculations to prevent dust loss\n- Always check both creator vaults (Pump + AMM) when querying balances\n- Use transaction simulation (`simulateTransaction`) for read-only fee queries\n- Creator fee is only charged when `bondingCurve.creator != PublicKey.default` or it's a new curve\n\n## Common Pitfalls\n\n- Fee tiers must be iterated in reverse — the first match from the end is used\n- `computeFeesBps` returns different results depending on whether `feeConfig` is null (legacy vs tiered)\n- Creator fees are zero for tokens without a set creator\n- `getMinimumDistributableFee` requires transaction simulation — it cannot be computed offline\n- `transferCreatorFeesToPump` is only for graduated tokens — non-graduated tokens will fail\n\n",{"name":5,"metadata":44,"description":7},{"solanaos":45},{"homepage":46},"https:\u002F\u002Fgithub.com\u002Fnirholas\u002Fpump-fun-sdk","main","6b4a291df75c639681e93b4b5b812126443fd6ed","skills\u002Fpump-fee-system",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":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add clawdsolana\u002FOpenClawd --skill pump-fee-system",{"tool":63,"command":64},"bunx","bunx skills add clawdsolana\u002FOpenClawd --skill pump-fee-system",{"tool":66,"command":67},"pnpm","pnpm dlx skills add clawdsolana\u002FOpenClawd --skill pump-fee-system","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fpump-fee-system\u002FSKILL.md",true,[],[72,105,132,157,167,191],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":83,"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",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],"solana dev","dev","solana","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":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000023","Skill与智能体开发",[107,115,116,117,118,119,120,93,121,122,123,124,125,126,127,128,36,129,130,131],"posts","Media","x api","search","send","tap","you","api","cli","read","install","cli tool","endpoint","brew","manage","tool","twitter",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":139,"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",[138],{"categoryNo":112,"categoryName":113,"taxonomyType":81,"taxonomyTypeDesc":82},[140,141,142,143,144,145,146,147,122,148,149,150,151,152,153,24,36,154,155,156],"wurk","wurk integration","integration","x402","social","payments","tasks","team","create","social-jobs","command","agent-help","custom-jobs","clawd","api integration","custom","true",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":104},"01M71KR4HCX41BPAK9GP7RPRRP","workflows","Manage application workflows including configuration, restart, and removal.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fworkflows\u002FSKILL.md",[],[159,129,164,165,166],"configuration","application","restart",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"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",[],[174,118,175,176,177,36,178,179,180,181,182,183,184,122,185,186,187,188,189,190],"web search","web","fetch","api documentation","real-time","time","profiles","design","use","information","visual","documentation","branding","matching","reference","capture","content",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":197,"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",[],[193,198,36,199,182,93,200,122,201,202,203,204,205,206,25,207,208,209],"get","open","analysis","alerts","temperature","curl","via","help","about","location","data","user"]