PancakeSwap Skill Directory This skill is a directory. Read the specific guide for the user's request using . All guides live under this skill folder, organized into three plugins: How to Use 1. Match the user's intent to a guide below 2. the corresponding SKILL.md path 3. Follow the instructions in that guide --- pancakeswap-driver — Swaps & Liquidity swap-planner Path: When to use: User wants to swap tokens on PancakeSwap — "swap BNB for USDT", "buy CAKE", "exchange tokens", "cross-chain swap", "bridge swap". What it does: Discovers tokens, verifies contracts, fetches prices, generates a de…

)\nPOOL_ID_RE = re.compile(r'^0x[0-9a-fA-F]{64}

PancakeSwap Skill Directory This skill is a directory. Read the specific guide for the user's request using . All guides live under this skill folder, organized into three plugins: How to Use 1. Match the user's intent to a guide below 2. the corresponding SKILL.md path 3. Follow the instructions in that guide --- pancakeswap-driver — Swaps & Liquidity swap-planner Path: When to use: User wants to swap tokens on PancakeSwap — "swap BNB for USDT", "buy CAKE", "exchange tokens", "cross-chain swap", "bridge swap". What it does: Discovers tokens, verifies contracts, fetches prices, generates a de…

)\n\ndef _rpc_batch(rpc, batch, retries=2):\n for attempt in range(retries + 1):\n try:\n resp = requests.post(rpc, json=batch, timeout=15)\n raw = resp.json()\n if isinstance(raw, dict):\n if attempt \u003c retries:\n time.sleep(1.0 * (attempt + 1))\n continue\n return [{'result': '0x'}] * len(batch)\n has_err = any(r.get('error', {}).get('code') in (-32016, -32014) for r in raw)\n if has_err and attempt \u003c retries:\n time.sleep(1.0 * (attempt + 1))\n continue\n return raw\n except Exception:\n if attempt \u003c retries:\n time.sleep(1.0 * (attempt + 1))\n else:\n return [{'result': '0x'}] * len(batch)\n return [{'result': '0x'}] * len(batch)\n\ndef eth_call_batch(rpc, calls):\n if not calls:\n return []\n all_results = [None] * len(calls)\n for cs in range(0, len(calls), BATCH_CHUNK):\n chunk = calls[cs:cs + BATCH_CHUNK]\n batch = [{'jsonrpc': '2.0', 'id': i, 'method': 'eth_call',\n 'params': [{'to': to, 'data': data}, 'latest']}\n for i, (to, data) in enumerate(chunk)]\n raw = _rpc_batch(rpc, batch)\n if isinstance(raw, list):\n raw.sort(key=lambda r: r.get('id', 0))\n for i, r in enumerate(raw):\n all_results[cs + i] = r.get('result', '0x')\n else:\n for i in range(len(chunk)):\n all_results[cs + i] = '0x'\n if cs + BATCH_CHUNK \u003c len(calls):\n time.sleep(0.3)\n return all_results\n\ndef decode_uint(h):\n if not h or h == '0x': return 0\n return int(h, 16)\n\ndef pad_address(addr):\n return addr.lower().replace('0x', '').zfill(64)\n\ndef pad_uint(val):\n return hex(val).replace('0x', '').zfill(64)\n\ndef get_cake_price():\n try:\n r = requests.get(\n 'https://api.coingecko.com/api/v3/simple/price?ids=pancakeswap-token&vs_currencies=usd',\n timeout=5)\n return r.json().get('pancakeswap-token', {}).get('usd', 0)\n except Exception:\n return 0\n\ndef get_v3_cake_data(chain_id, pool_addresses):\n mc = MASTERCHEF_V3.get(chain_id)\n rpc = RPC_URLS.get(chain_id)\n if not mc or not rpc or not pool_addresses:\n return {}\n try:\n calls = [(mc, SIG_CAKE_PER_SEC), (mc, SIG_TOTAL_ALLOC)]\n for a in pool_addresses:\n calls.append((mc, SIG_POOL_ADDR_PID + pad_address(a)))\n results = eth_call_batch(rpc, calls)\n cake_per_sec_raw = decode_uint(results[0])\n total_alloc = decode_uint(results[1])\n if total_alloc == 0 or cake_per_sec_raw == 0:\n return {}\n cake_per_sec = cake_per_sec_raw / 1e12 / 1e18\n pids = [decode_uint(results[2 + i]) for i in range(len(pool_addresses))]\n time.sleep(0.5)\n info_calls = [(mc, SIG_POOL_INFO + pad_uint(pid)) for pid in pids]\n info_results = eth_call_batch(rpc, info_calls)\n result = {}\n for i, addr in enumerate(pool_addresses):\n info_hex = info_results[i]\n if not info_hex or info_hex == '0x' or len(info_hex) \u003c 66:\n result[addr.lower()] = 0\n continue\n alloc_point = int(info_hex[2:66], 16)\n if len(info_hex) >= 130:\n returned_pool = '0x' + info_hex[90:130].lower()\n if returned_pool != addr.lower():\n result[addr.lower()] = 0\n continue\n if alloc_point == 0:\n result[addr.lower()] = 0\n continue\n pool_cake_per_sec = cake_per_sec * (alloc_point / total_alloc)\n result[addr.lower()] = pool_cake_per_sec * 31_536_000\n return result\n except Exception:\n return {}\n\ndef main():\n try:\n if len(sys.argv) \u003c 2:\n print(json.dumps({'chainId': 0, 'cakePrice': 0, 'cakePerYear': {}}))\n sys.exit(0)\n\n chain_id = int(sys.argv[1])\n pool_ids = [p.lower() for p in sys.argv[2:]]\n\n v3_addrs = [p for p in pool_ids if ADDR_RE.match(p)]\n inf_ids = [p for p in pool_ids if POOL_ID_RE.match(p)]\n\n cake_price = get_cake_price()\n cake_per_year = {}\n\n # V3: on-chain MasterChef lookup\n if v3_addrs:\n v3_data = get_v3_cake_data(chain_id, v3_addrs)\n cake_per_year.update(v3_data)\n\n # Infinity: REST campaign API\n if inf_ids:\n try:\n r = requests.get(\n f'https://infinity.pancakeswap.com/farms/campaigns/{chain_id}/false?limit=100&page=1',\n timeout=10)\n campaigns = r.json().get('campaigns', [])\n SECONDS_PER_YEAR = 31_536_000\n for c in campaigns:\n pid = c['poolId'].lower()\n if pid not in inf_ids:\n continue\n reward_raw = int(c.get('totalRewardAmount', 0))\n duration = int(c.get('duration', 0))\n if duration \u003c= 0 or reward_raw \u003c= 0:\n continue\n yearly_reward = (reward_raw / 1e18) / duration * SECONDS_PER_YEAR\n cake_per_year[pid] = cake_per_year.get(pid, 0) + yearly_reward\n except Exception:\n pass\n\n print(json.dumps({\n 'chainId': chain_id,\n 'cakePrice': cake_price,\n 'cakePerYear': cake_per_year,\n }))\n except Exception:\n chain_id = int(sys.argv[1]) if len(sys.argv) >= 2 else 0\n print(json.dumps({'chainId': chain_id, 'cakePrice': 0, 'cakePerYear': {}}))\n sys.exit(0)\n\nmain()\n","content_type":"text/x-python; charset=utf-8","language":"python","size":6770,"content_sha256":"c30c876ae3cd38310c1fc82a114789ab7f7106daf39e4e57a95a3245364afae2"},{"filename":"pancakeswap-driver/skills/common/pool-apr.mjs","content":"const INCENTRA_API = 'https://incentra-prd.brevis.network/sdk/v1'\nconst INCENTRA_CAMPAIGN_TYPES = [3, 4, 8]\n\n// Networks supported by PCS + Merkl\nconst merklChainIds = [\n 1, // Ethereum\n 56, // BSC\n 8453, // Base\n 42161, // Arbitrum One\n 324, // Zksync Era\n 59144, // Linea Mainnet\n 143, // Monad Mainnet\n]\n\nasync function getIncentraApr() {\n try {\n const resp = await fetch(`${INCENTRA_API}/liquidityCampaigns`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n campaign_type: INCENTRA_CAMPAIGN_TYPES,\n status: [4], // ACTIVE\n }),\n })\n\n const data = await resp.json()\n\n if (data.err) {\n return []\n }\n\n return data.campaigns.map((c) => ({\n chainId: c.chainId,\n campaignId: c.campaignId,\n poolId: c.pools.poolId,\n poolName: c.pools.poolName,\n apr: c.rewardInfo.apr * 100, // convert to percentage\n status: c.status,\n }))\n } catch (e) {\n return []\n }\n}\n\nasync function getMerklApr() {\n try {\n const resp = await fetch(\n `https://api.merkl.xyz/v4/opportunities/?chainId=${merklChainIds.join(\n ',',\n )}&test=false&mainProtocolId=pancake-swap&action=POOL,HOLD&status=LIVE&items=100`,\n )\n\n const result = await resp.json()\n const pancakeResult = result?.filter(\n (opportunity) =>\n opportunity?.tokens?.[0]?.symbol?.toLowerCase().startsWith('cake-lp') ||\n opportunity?.protocol?.id?.toLowerCase().startsWith('pancake-swap') ||\n opportunity?.protocol?.id?.toLowerCase().startsWith('pancakeswap'),\n )\n\n return pancakeResult.map((c) => ({\n chainId: c.chainId,\n campaignId: c.identifier,\n poolId: c.identifier,\n poolName: c.name,\n apr: c.apr / 100, // convert to percentage\n status: c.status,\n }))\n } catch (e) {\n return []\n }\n}\n\nconst [merklApr, incentraApr] = await Promise.all([getMerklApr(), getIncentraApr()])\nconsole.log(JSON.stringify({ merklApr, incentraApr }))\n","content_type":"text/javascript","language":"javascript","size":2006,"content_sha256":"ad5ee007e268116a01a7284317337aaa19498531bd8abadea9446772626945c2"},{"filename":"pancakeswap-driver/skills/common/protocol-fee.mjs","content":"// protocol-fee.mjs\n// Fetch the protocol fee for a PancakeSwap Infinity (v4) pool via getSlot0 on the pool manager.\n//\n// Environment variables:\n// CHAIN_ID — numeric chain ID (required). Supported: 56 (BSC), 8453 (Base)\n// RPC — JSON-RPC endpoint URL (required)\n// POOL_ID — pool ID as a bytes32 hex string (0x + 64 hex chars) (required)\n\nimport {\n BinPoolManagerAbi,\n CLPoolManagerAbi,\n INFI_BIN_POOL_MANAGER_ADDRESSES,\n INFI_CL_POOL_MANAGER_ADDRESSES,\n} from '@pancakeswap/infinity-sdk'\nimport { createPublicClient, http } from 'viem'\nimport { base, bsc } from 'viem/chains'\n\n// ─── Chain config ─────────────────────────────────────────────────────────────\n\nconst CHAIN_MAP = {\n 56: bsc,\n 8453: base,\n}\n\nconst chainId = Number(process.env.CHAIN_ID)\nconst chain = CHAIN_MAP[chainId]\nif (!chain) {\n const supported = Object.keys(CHAIN_MAP).join(', ')\n throw new Error(`Unsupported CHAIN_ID: ${chainId}. Supported chain IDs: ${supported}`)\n}\n\nconst RPC = process.env.RPC\nif (!RPC) throw new Error('RPC is required')\n\n// ─── Pool ID ──────────────────────────────────────────────────────────────────\n\nconst POOL_ID = process.env.POOL_ID\nif (!/^0x[0-9a-fA-F]{64}$/.test(POOL_ID)) {\n throw new Error(`POOL_ID must be a 32-byte hex string (0x + 64 hex chars), got: ${POOL_ID}`)\n}\n\nconst FEE_BASE = 10_000\nfunction parseProtocolFee(packed) {\n const token0ProtocolFee = packed % 2 ** 12\n // eslint-disable-next-line no-bitwise\n const token1ProtocolFee = packed >> 12\n\n return [token0ProtocolFee / FEE_BASE, token1ProtocolFee / FEE_BASE]\n}\n\n// ─── Main ─────────────────────────────────────────────────────────────────────\n\nconst client = createPublicClient({ chain, transport: http(RPC) })\n\nconst [clResult, binResult] = await client.multicall({\n contracts: [\n {\n address: INFI_CL_POOL_MANAGER_ADDRESSES[chainId],\n abi: CLPoolManagerAbi,\n functionName: 'getSlot0',\n args: [POOL_ID],\n },\n {\n address: INFI_BIN_POOL_MANAGER_ADDRESSES[chainId],\n abi: BinPoolManagerAbi,\n functionName: 'getSlot0',\n args: [POOL_ID],\n },\n ],\n})\n\nif (clResult.status === 'success' && clResult.result[0] !== 0n) {\n console.log(\n JSON.stringify({\n protocolFeePercent: `${parseProtocolFee(clResult.result[2])[0]}%`,\n poolType: 'cl',\n }),\n )\n} else if (binResult.status === 'success' && binResult.result[0] !== 0n) {\n console.log(\n JSON.stringify({\n protocolFeePercent: `${parseProtocolFee(binResult.result[1])[0]}%`,\n poolType: 'bin',\n }),\n )\n}\n","content_type":"text/javascript","language":"javascript","size":2955,"content_sha256":"9e5e3eacb3a3f1df4ed8d549e183cc34f92ff0f1787d38f6f39e06064c425acf"},{"filename":"pancakeswap-driver/skills/common/token-lists.md","content":"# PancakeSwap Token Lists — Shared Reference\n\nTokens found in a **primary PancakeSwap token list** (any URL marked Primary below) are considered **PancakeSwap-whitelisted tokens** — no additional scam/rug-pull verification is required for these tokens. Tokens found only in secondary lists (CoinGecko, Ondo RWA, Optimism) are community-listed but not PancakeSwap-curated — apply normal diligence.\n\n## Token List Absence — Red Flag\n\nIf a token is absent from **all** lists (primary and secondary) for its chain, this is a **red flag**. Warn the user explicitly and do not proceed without confirmation. Absence from all lists does not block the flow but requires surfacing a prominent warning before generating any deep link.\n\n---\n\n## Chain → Token List URLs\n\n| Chain | Chain ID | Primary URL | Secondary URL(s) |\n| --------------- | -------- | ---------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| BNB Smart Chain | 56 | `https://tokens.pancakeswap.finance/pancakeswap-extended.json` | `https://tokens.coingecko.com/binance-smart-chain/all.json`, `https://tokens.pancakeswap.finance/ondo-rwa-tokens.json` |\n| Ethereum | 1 | `https://tokens.pancakeswap.finance/pancakeswap-eth-default.json` | `https://tokens.coingecko.com/uniswap/all.json`, `https://tokens.pancakeswap.finance/ondo-rwa-tokens.json` |\n| zkSync Era | 324 | `https://tokens.pancakeswap.finance/pancakeswap-zksync-default.json` | — |\n| Linea | 59144 | `https://tokens.pancakeswap.finance/pancakeswap-linea-default.json` | `https://tokens.coingecko.com/linea/all.json` |\n| Base | 8453 | `https://tokens.pancakeswap.finance/pancakeswap-base-default.json` | `https://raw.githubusercontent.com/ethereum-optimism/ethereum-optimism.github.io/master/optimism.tokenlist.json`, `https://tokens.coingecko.com/base/all.json` |\n| Arbitrum One | 42161 | `https://tokens.pancakeswap.finance/pancakeswap-arbitrum-default.json` | `https://tokens.coingecko.com/arbitrum-one/all.json` |\n| Optimism | 10 | `https://raw.githubusercontent.com/ethereum-optimism/ethereum-optimism.github.io/master/optimism.tokenlist.json` | — |\n| opBNB | 204 | `https://tokens.pancakeswap.finance/pancakeswap-opbnb-default.json` | — |\n| Monad Mainnet | 143 | `https://tokens.pancakeswap.finance/pancakeswap-monad-default.json` | — |\n| Monad Testnet | 10143 | `https://tokens.pancakeswap.finance/pancakeswap-monad-testnet-default.json` | — |\n| Solana | - | `https://tokens.pancakeswap.finance/pancakeswap-solana-default.json` | — |\n\n---\n\n## Token Resolution Algorithm\n\nTry each list URL in order (primary first, then secondary). Stop as soon as the token is found. Fall back to on-chain RPC only if the token is not in any list.\n\n```bash\nTOKEN='0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82'\n[[ \"$TOKEN\" =~ ^0x[0-9a-fA-F]{40}$ ]] || { echo \"Invalid token address\"; exit 1; }\n\n# Token list URLs for this chain (ordered: try each in sequence)\n# Example for BNB Smart Chain (chain ID 56):\nTOKEN_LISTS=(\n \"https://tokens.pancakeswap.finance/pancakeswap-extended.json\" # BSC primary\n \"https://tokens.coingecko.com/binance-smart-chain/all.json\" # BSC secondary\n \"https://tokens.pancakeswap.finance/ondo-rwa-tokens.json\" # RWA multi-chain\n)\n\nSYMBOL=\"\"\nDECIMALS=\"\"\nIS_WHITELISTED=false\nfor i in \"${!TOKEN_LISTS[@]}\"; do\n LIST_URL=\"${TOKEN_LISTS[$i]}\"\n RESULT=$(curl -s \"$LIST_URL\" | \\\n jq -r --arg addr \"$TOKEN\" \\\n '.tokens[] | select(.address == $addr) | \"\\(.symbol)|\\(.decimals)\"' 2>/dev/null | head -1)\n if [[ -n \"$RESULT\" ]]; then\n SYMBOL=\"${RESULT%%|*}\"\n DECIMALS=\"${RESULT##*|}\"\n # Primary list is index 0 — tokens found there are PancakeSwap-whitelisted\n [[ \"$i\" == \"0\" ]] && IS_WHITELISTED=true\n break\n fi\ndone\n\n# Fallback: on-chain RPC if not found in any list\nif [[ -z \"$SYMBOL\" || -z \"$DECIMALS\" ]]; then\n SYMBOL=$(cast call \"$TOKEN\" \"symbol()(string)\" --rpc-url \"$RPC\")\n DECIMALS=$(cast call \"$TOKEN\" \"decimals()(uint8)\" --rpc-url \"$RPC\")\nfi\n```\n\n---\n\n## Token List Schema\n\nToken list JSON files follow the [Uniswap Token Lists standard](https://tokenlists.org/):\n\n```json\n{\n \"name\": \"PancakeSwap Extended\",\n \"tokens\": [\n {\n \"chainId\": 56,\n \"address\": \"0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82\",\n \"symbol\": \"CAKE\",\n \"decimals\": 18,\n \"name\": \"PancakeSwap Token\",\n \"logoURI\": \"https://tokens.pancakeswap.finance/images/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82.png\"\n }\n ]\n}\n```\n\nKey fields: `chainId`, `address`, `symbol`, `decimals`, `name`, `logoURI`.\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":6800,"content_sha256":"61a7ff5b0bee69314a2793071c50cd255a99a7fdcd4153905c5ae51934d4efc2"},{"filename":"pancakeswap-farming/README.md","content":"# pancakeswap-farming\n\nAI-powered assistance for discovering PancakeSwap farms, staking CAKE, and managing yield farming positions.\n\n## Installation\n\n```bash\nclaude plugin add @pancakeswap/pancakeswap-farming\n```\n\n## Skills\n\n### farming-planner\n\nPlan yield farming strategies on PancakeSwap by discovering active farms, comparing APR/APY, managing CAKE staking (flexible/fixed-term), and Syrup Pools. Generates deep links to the PancakeSwap farming UI.\n\n**Usage examples:**\n\n- \"Stake my CAKE on PancakeSwap\"\n- \"Find the best yield farming opportunities on BSC\"\n- \"How do I add liquidity and farm the BNB/CAKE pool?\"\n- \"What's the APR on the CAKE Syrup Pool?\"\n\n### harvest-rewards\n\nCheck pending CAKE and partner-token rewards across all PancakeSwap farming positions (V2, V3, Infinity, Syrup Pools) and generate harvest deep links.\n\n**Usage examples:**\n\n- \"How much CAKE can I harvest from my farms?\"\n- \"Check my pending rewards across all PancakeSwap positions\"\n- \"Harvest all my V3 farming rewards\"\n- \"Claim my Syrup Pool partner token rewards\"\n\n## License\n\nMIT\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":1064,"content_sha256":"d5b1a52e1b0ff75e8b7a660009c173cc46b68f805e0f0c57bfecfd74ab00469b"},{"filename":"pancakeswap-hub/README.md","content":"# pancakeswap-hub\n\nAI-powered assistance for integrating and using PancakeSwap Hub.\n\n## Installation\n\n```bash\nclaude plugin add @pancakeswap/pancakeswap-hub\n```\n\n## Skills\n\n### hub-swap-planner\n\nPlan token swaps through PCS Hub, PancakeSwap's aggregator API. Fetches optimal routing across multiple DEXs on BSC, presents a route summary with split breakdowns, and generates a channel-specific handoff link for the target distribution interface (PancakeSwap, Binance Wallet, Trust Wallet, or headless).\n\n**Usage examples:**\n\n- \"Swap 1 BNB for CAKE via PCS Hub\"\n- \"Find the best route for swapping USDT to ETH through Trust Wallet\"\n- \"Hub swap 100 USDT to CAKE\"\n\n### hub-api-integration\n\nIntegrate the PancakeSwap Hub API into your website, script, bot, or other application. Provides code snippets and guidance for calling the Hub API, parsing responses, and handling routing data to execute swaps through the Hub.\n\n**Usage examples:**\n\n- \"Integrate PCS Hub into my wallet app\"\n- \"How do I embed PCS Hub swap in my frontend?\"\n- \"Create a PCS Hub integration spec for my dApp\"\n\n## License\n\nMIT\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":1092,"content_sha256":"58d2e8cabbf8dbf4d39fd8f3f90b9a3611fb594e91d206eb2441db2d8691ecdd"},{"filename":"pancakeswap-hub/skills/common/token-lists.md","content":"# PancakeSwap Token Lists — Shared Reference\n\nTokens found in a **primary PancakeSwap token list** (any URL marked Primary below) are considered **PancakeSwap-whitelisted tokens** — no additional scam/rug-pull verification is required for these tokens. Tokens found only in secondary lists (CoinGecko, Ondo RWA, Optimism) are community-listed but not PancakeSwap-curated — apply normal diligence.\n\n## Token List Absence — Red Flag\n\nIf a token is absent from **all** lists (primary and secondary) for its chain, this is a **red flag**. Warn the user explicitly and do not proceed without confirmation. Absence from all lists does not block the flow but requires surfacing a prominent warning before generating any deep link.\n\n---\n\n## Chain → Token List URLs\n\n| Chain | Chain ID | Primary URL | Secondary URL(s) |\n| --------------- | -------- | ---------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| BNB Smart Chain | 56 | `https://tokens.pancakeswap.finance/pancakeswap-extended.json` | `https://tokens.coingecko.com/binance-smart-chain/all.json`, `https://tokens.pancakeswap.finance/ondo-rwa-tokens.json` |\n| Ethereum | 1 | `https://tokens.pancakeswap.finance/pancakeswap-eth-default.json` | `https://tokens.coingecko.com/uniswap/all.json`, `https://tokens.pancakeswap.finance/ondo-rwa-tokens.json` |\n| zkSync Era | 324 | `https://tokens.pancakeswap.finance/pancakeswap-zksync-default.json` | — |\n| Linea | 59144 | `https://tokens.pancakeswap.finance/pancakeswap-linea-default.json` | `https://tokens.coingecko.com/linea/all.json` |\n| Base | 8453 | `https://tokens.pancakeswap.finance/pancakeswap-base-default.json` | `https://raw.githubusercontent.com/ethereum-optimism/ethereum-optimism.github.io/master/optimism.tokenlist.json`, `https://tokens.coingecko.com/base/all.json` |\n| Arbitrum One | 42161 | `https://tokens.pancakeswap.finance/pancakeswap-arbitrum-default.json` | `https://tokens.coingecko.com/arbitrum-one/all.json` |\n| Optimism | 10 | `https://raw.githubusercontent.com/ethereum-optimism/ethereum-optimism.github.io/master/optimism.tokenlist.json` | — |\n| opBNB | 204 | `https://tokens.pancakeswap.finance/pancakeswap-opbnb-default.json` | — |\n| Monad Mainnet | 143 | `https://tokens.pancakeswap.finance/pancakeswap-monad-default.json` | — |\n| Monad Testnet | 10143 | `https://tokens.pancakeswap.finance/pancakeswap-monad-testnet-default.json` | — |\n\n---\n\n## Token Resolution Algorithm\n\nTry each list URL in order (primary first, then secondary). Stop as soon as the token is found. Fall back to on-chain RPC only if the token is not in any list.\n\n```bash\nTOKEN='0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82'\n[[ \"$TOKEN\" =~ ^0x[0-9a-fA-F]{40}$ ]] || { echo \"Invalid token address\"; exit 1; }\n\n# Token list URLs for this chain (ordered: try each in sequence)\n# Example for BNB Smart Chain (chain ID 56):\nTOKEN_LISTS=(\n \"https://tokens.pancakeswap.finance/pancakeswap-extended.json\" # BSC primary\n \"https://tokens.coingecko.com/binance-smart-chain/all.json\" # BSC secondary\n \"https://tokens.pancakeswap.finance/ondo-rwa-tokens.json\" # RWA multi-chain\n)\n\nSYMBOL=\"\"\nDECIMALS=\"\"\nIS_WHITELISTED=false\nfor i in \"${!TOKEN_LISTS[@]}\"; do\n LIST_URL=\"${TOKEN_LISTS[$i]}\"\n RESULT=$(curl -s \"$LIST_URL\" | \\\n jq -r --arg addr \"$TOKEN\" \\\n '.tokens[] | select(.address == $addr) | \"\\(.symbol)|\\(.decimals)\"' 2>/dev/null | head -1)\n if [[ -n \"$RESULT\" ]]; then\n SYMBOL=\"${RESULT%%|*}\"\n DECIMALS=\"${RESULT##*|}\"\n # Primary list is index 0 — tokens found there are PancakeSwap-whitelisted\n [[ \"$i\" == \"0\" ]] && IS_WHITELISTED=true\n break\n fi\ndone\n\n# Fallback: on-chain RPC if not found in any list\nif [[ -z \"$SYMBOL\" || -z \"$DECIMALS\" ]]; then\n SYMBOL=$(cast call \"$TOKEN\" \"symbol()(string)\" --rpc-url \"$RPC\")\n DECIMALS=$(cast call \"$TOKEN\" \"decimals()(uint8)\" --rpc-url \"$RPC\")\nfi\n```\n\n---\n\n## Token List Schema\n\nToken list JSON files follow the [Uniswap Token Lists standard](https://tokenlists.org/):\n\n```json\n{\n \"name\": \"PancakeSwap Extended\",\n \"tokens\": [\n {\n \"chainId\": 56,\n \"address\": \"0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82\",\n \"symbol\": \"CAKE\",\n \"decimals\": 18,\n \"name\": \"PancakeSwap Token\",\n \"logoURI\": \"https://tokens.pancakeswap.finance/images/0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82.png\"\n }\n ]\n}\n```\n\nKey fields: `chainId`, `address`, `symbol`, `decimals`, `name`, `logoURI`.\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":6491,"content_sha256":"95049d8c2cbeab7742756b184229d9b9f46082c03bdf2403875bcbd2bf92dd8d"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"PancakeSwap Skill Directory","type":"text"}]},{"type":"paragraph","content":[{"text":"This skill is a directory. Read the specific guide for the user's request using ","type":"text"},{"text":"read_file","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"paragraph","content":[{"text":"All guides live under this skill folder, organized into three plugins:","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"How to Use","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Match the user's intent to a guide below","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"read_file","type":"text","marks":[{"type":"code_inline"}]},{"text":" the corresponding SKILL.md path","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Follow the instructions in that guide","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"pancakeswap-driver — Swaps & Liquidity","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"swap-planner","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Path:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"pancakeswap-driver/skills/swap-planner/SKILL.md","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"paragraph","content":[{"text":"When to use:","type":"text","marks":[{"type":"strong"}]},{"text":" User wants to swap tokens on PancakeSwap — \"swap BNB for USDT\", \"buy CAKE\", \"exchange tokens\", \"cross-chain swap\", \"bridge swap\".","type":"text"}]},{"type":"paragraph","content":[{"text":"What it does:","type":"text","marks":[{"type":"strong"}]},{"text":" Discovers tokens, verifies contracts, fetches prices, generates a ","type":"text"},{"text":"pancakeswap.finance/swap?...","type":"text","marks":[{"type":"code_inline"}]},{"text":" deep link. Does not execute transactions.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"liquidity-planner","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Path:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"pancakeswap-driver/skills/liquidity-planner/SKILL.md","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"paragraph","content":[{"text":"When to use:","type":"text","marks":[{"type":"strong"}]},{"text":" User wants to add liquidity — \"add liquidity\", \"LP position\", \"provide liquidity\", \"earn yield with my ETH and USDT\", \"put tokens to work\".","type":"text"}]},{"type":"paragraph","content":[{"text":"What it does:","type":"text","marks":[{"type":"strong"}]},{"text":" Plans LP positions (V2, V3, StableSwap, Infinity), recommends fee tiers and price ranges, assesses impermanent loss risk, generates add-liquidity deep links.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"collect-fees","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Path:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"pancakeswap-driver/skills/collect-fees/SKILL.md","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"paragraph","content":[{"text":"When to use:","type":"text","marks":[{"type":"strong"}]},{"text":" User asks about uncollected LP fees — \"collect my fees\", \"pending fees\", \"how much fees have I earned\", \"claim LP fees\".","type":"text"}]},{"type":"paragraph","content":[{"text":"What it does:","type":"text","marks":[{"type":"strong"}]},{"text":" Checks uncollected fees across V3, Infinity, and Solana CLMM positions. Generates collection deep links.","type":"text"}]},{"type":"paragraph","content":[{"text":"Reference scripts:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"collect-fees/references/","type":"text","marks":[{"type":"code_inline"}]},{"text":" — fetch-v3-positions.mjs, fetch-infinity-positions.mjs, fetch-solana.cjs","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"swap-integration","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Path:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"pancakeswap-driver/skills/swap-integration/SKILL.md","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"paragraph","content":[{"text":"When to use:","type":"text","marks":[{"type":"strong"}]},{"text":" Developer wants to integrate PancakeSwap swaps into an app — \"integrate swaps\", \"Smart Router SDK\", \"Universal Router\", \"build swap frontend\", \"swap script\".","type":"text"}]},{"type":"paragraph","content":[{"text":"What it does:","type":"text","marks":[{"type":"strong"}]},{"text":" SDK integration guide with working code for Smart Router, Universal Router, and direct V2 Router contract calls.","type":"text"}]},{"type":"paragraph","content":[{"text":"Shared utilities:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"pancakeswap-driver/skills/common/","type":"text","marks":[{"type":"code_inline"}]},{"text":" — discover-pools.mjs, pool-apr.mjs, protocol-fee.mjs, farm-apr.py, token-lists.md","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"pancakeswap-farming — Farms & Staking","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"farming-planner","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Path:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"pancakeswap-farming/skills/farming-planner/SKILL.md","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"paragraph","content":[{"text":"When to use:","type":"text","marks":[{"type":"strong"}]},{"text":" User wants to farm or stake — \"farm on PancakeSwap\", \"stake CAKE\", \"unstake CAKE\", \"yield farming\", \"syrup pool\", \"best farm APR\", \"deposit LP\", \"withdraw LP\".","type":"text"}]},{"type":"paragraph","content":[{"text":"What it does:","type":"text","marks":[{"type":"strong"}]},{"text":" Discovers active farms, compares APR/APY, plans CAKE staking in Syrup Pools, generates farming UI deep links.","type":"text"}]},{"type":"paragraph","content":[{"text":"Note:","type":"text","marks":[{"type":"strong"}]},{"text":" If the user has a specific token pair and asks about yield, use ","type":"text"},{"text":"liquidity-planner","type":"text","marks":[{"type":"code_inline"}]},{"text":" instead.","type":"text"}]},{"type":"paragraph","content":[{"text":"Reference scripts:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"farming-planner/references/","type":"text","marks":[{"type":"code_inline"}]},{"text":" — fetch-farms.py, fetch-syrup-pools.py","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"harvest-rewards","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Path:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"pancakeswap-farming/skills/harvest-rewards/SKILL.md","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"paragraph","content":[{"text":"When to use:","type":"text","marks":[{"type":"strong"}]},{"text":" User wants to claim rewards — \"harvest rewards\", \"claim CAKE\", \"pending rewards\", \"how much can I harvest\", \"collect farming rewards\".","type":"text"}]},{"type":"paragraph","content":[{"text":"What it does:","type":"text","marks":[{"type":"strong"}]},{"text":" Checks pending CAKE and partner-token rewards across V2, V3, Infinity farms and Syrup Pools. Generates harvest deep links.","type":"text"}]},{"type":"paragraph","content":[{"text":"Reference scripts:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"harvest-rewards/references/","type":"text","marks":[{"type":"code_inline"}]},{"text":" — fetch-v3-pending.py, fetch-infinity-pending.py, fetch-syrup-pending.py","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"pancakeswap-hub — PCS Hub Distribution","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"hub-swap-planner","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Path:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"pancakeswap-hub/skills/hub-swap-planner/SKILL.md","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"paragraph","content":[{"text":"When to use:","type":"text","marks":[{"type":"strong"}]},{"text":" User wants to swap via PCS Hub — \"PCS Hub swap\", \"swap via Binance Wallet\", \"swap via Trust Wallet\", \"hub route\".","type":"text"}]},{"type":"paragraph","content":[{"text":"What it does:","type":"text","marks":[{"type":"strong"}]},{"text":" Fetches optimal routing via PCS Hub aggregator API, generates channel-specific handoff links. BSC only.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"hub-api-integration","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Path:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"pancakeswap-hub/skills/hub-api-integration/SKILL.md","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"paragraph","content":[{"text":"When to use:","type":"text","marks":[{"type":"strong"}]},{"text":" Developer wants to embed PCS Hub — \"integrate PCS Hub\", \"embed PCS Hub swap\", \"Hub integration spec\", \"add PCS Hub to my wallet app\".","type":"text"}]},{"type":"paragraph","content":[{"text":"What it does:","type":"text","marks":[{"type":"strong"}]},{"text":" Integration spec with API contracts, frontend state machine, allowance checking, and quote TTL management.","type":"text"}]},{"type":"paragraph","content":[{"text":"Shared utilities:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"pancakeswap-hub/skills/common/","type":"text","marks":[{"type":"code_inline"}]},{"text":" — token-lists.md","type":"text"}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Supported Chains","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Chain","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ID","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"V2","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"V3","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Infinity","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"StableSwap","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"BNB Smart Chain","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"56","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Ethereum","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"1","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Arbitrum One","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"42161","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Base","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"8453","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"zkSync Era","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"324","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Linea","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"59144","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"opBNB","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"204","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Monad","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"143","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"+","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"-","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Resources","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"App: https://pancakeswap.finance/","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Dev Docs: https://developer.pancakeswap.finance/","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"BSCScan: https://bscscan.com/","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Smart Router SDK: ","type":"text"},{"text":"@pancakeswap/smart-router","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Universal Router SDK: ","type":"text"},{"text":"@pancakeswap/universal-router-sdk","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"pancakeswap","author":"@skillopedia","source":{"stars":13,"repo_name":"official-skills","origin_url":"https://github.com/starchild-ai-agent/official-skills/blob/HEAD/pancakeswap/SKILL.md","repo_owner":"starchild-ai-agent","body_sha256":"4c8a736b5649c6d80cd89e3d0a399943ea61b08daaccf17d43d5414447e592fe","cluster_key":"3860235d8241e3b272a4b63c05d8b633e35707ec51a0baad1945db9478b3e8cb","clean_bundle":{"format":"clean-skill-bundle-v1","source":"starchild-ai-agent/official-skills/pancakeswap/SKILL.md","attachments":[{"id":"d6258e40-0d42-57b7-ade2-83101b55c3cc","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/d6258e40-0d42-57b7-ade2-83101b55c3cc/attachment.png","path":"logo.png","size":124963,"sha256":"e1aca42d384fe60b0065cf510ee57fed509b5946f138f4f22ddd9fe2a24d348b","contentType":"image/png"},{"id":"97885276-cb38-5ab8-987f-443c08b28795","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/97885276-cb38-5ab8-987f-443c08b28795/attachment.md","path":"pancakeswap-driver/README.md","size":2257,"sha256":"0a08babc689bd513186dd234c6c68b9b456339d59fae690bbb1563be0248d3eb","contentType":"text/markdown; charset=utf-8"},{"id":"9e5c3cf9-c560-54a3-8ab7-4443abcfb4c5","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/9e5c3cf9-c560-54a3-8ab7-4443abcfb4c5/attachment.md","path":"pancakeswap-driver/agents/swap-integration-expert.md","size":11580,"sha256":"8d4f3feec0847c4e1d87c3ec4474e1d4c53ab563e79db026b67646ef08efe862","contentType":"text/markdown; charset=utf-8"},{"id":"913c73c4-14e5-5198-9fe2-dee4fb972057","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/913c73c4-14e5-5198-9fe2-dee4fb972057/attachment.mjs","path":"pancakeswap-driver/skills/common/discover-pools.mjs","size":20299,"sha256":"efbf79f03d4932b89c5939b0599d644c7b620b2a8b49f4d76bf4c6ad8455136e","contentType":"text/javascript"},{"id":"db03968b-ff74-50ab-a642-3e7db348475f","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/db03968b-ff74-50ab-a642-3e7db348475f/attachment.py","path":"pancakeswap-driver/skills/common/farm-apr.py","size":6770,"sha256":"c30c876ae3cd38310c1fc82a114789ab7f7106daf39e4e57a95a3245364afae2","contentType":"text/x-python; charset=utf-8"},{"id":"948ad99f-12cb-5612-99da-854d3b3600d8","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/948ad99f-12cb-5612-99da-854d3b3600d8/attachment.mjs","path":"pancakeswap-driver/skills/common/pool-apr.mjs","size":2006,"sha256":"ad5ee007e268116a01a7284317337aaa19498531bd8abadea9446772626945c2","contentType":"text/javascript"},{"id":"d4a1d69b-4cce-567f-ad7b-f3ba3be38d7e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/d4a1d69b-4cce-567f-ad7b-f3ba3be38d7e/attachment.mjs","path":"pancakeswap-driver/skills/common/protocol-fee.mjs","size":2955,"sha256":"9e5e3eacb3a3f1df4ed8d549e183cc34f92ff0f1787d38f6f39e06064c425acf","contentType":"text/javascript"},{"id":"4eca6ca0-f471-5f14-8aae-1182d4f103a3","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/4eca6ca0-f471-5f14-8aae-1182d4f103a3/attachment.md","path":"pancakeswap-driver/skills/common/token-lists.md","size":6800,"sha256":"61a7ff5b0bee69314a2793071c50cd255a99a7fdcd4153905c5ae51934d4efc2","contentType":"text/markdown; charset=utf-8"},{"id":"9b53642f-fd52-5de4-964a-cb3717769a11","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/9b53642f-fd52-5de4-964a-cb3717769a11/attachment.md","path":"pancakeswap-farming/README.md","size":1064,"sha256":"d5b1a52e1b0ff75e8b7a660009c173cc46b68f805e0f0c57bfecfd74ab00469b","contentType":"text/markdown; charset=utf-8"},{"id":"0b12ced1-78cf-50eb-8166-01796bcbe689","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0b12ced1-78cf-50eb-8166-01796bcbe689/attachment.md","path":"pancakeswap-hub/README.md","size":1092,"sha256":"58d2e8cabbf8dbf4d39fd8f3f90b9a3611fb594e91d206eb2441db2d8691ecdd","contentType":"text/markdown; charset=utf-8"},{"id":"0b066b7d-b485-54d7-83a8-9c6609cc3a9b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0b066b7d-b485-54d7-83a8-9c6609cc3a9b/attachment.md","path":"pancakeswap-hub/skills/common/token-lists.md","size":6491,"sha256":"95049d8c2cbeab7742756b184229d9b9f46082c03bdf2403875bcbd2bf92dd8d","contentType":"text/markdown; charset=utf-8"}],"bundle_sha256":"47ad0d3adae94ad0e498c405e10780f0d0c89aefaba3eb6ddd1ea1d706442059","attachment_count":11,"text_attachments":10,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":1,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"pancakeswap/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"web-development","category_label":"Web"},"exact_dupes_collapsed_into_this":0},"version":"v1","category":"web-development","metadata":{"starchild":{"emoji":"🥞","requires":{"bins":["curl","jq"],"any_bins":["node","python3"]},"skillKey":"pancakeswap"}},"import_tag":"clean-skills-v1","description":"PancakeSwap DeFi operations — token swaps, liquidity provision, yield farming, fee collection, reward harvesting, and PCS Hub integration. Use when the user mentions PancakeSwap, CAKE, swapping on BSC/BNB Chain, LP positions, farming, staking, syrup pools, or any PancakeSwap-related DeFi action.","user-invocable":true,"disable-model-invocation":false}},"renderedAt":1782981054786}

PancakeSwap Skill Directory This skill is a directory. Read the specific guide for the user's request using . All guides live under this skill folder, organized into three plugins: How to Use 1. Match the user's intent to a guide below 2. the corresponding SKILL.md path 3. Follow the instructions in that guide --- pancakeswap-driver — Swaps & Liquidity swap-planner Path: When to use: User wants to swap tokens on PancakeSwap — "swap BNB for USDT", "buy CAKE", "exchange tokens", "cross-chain swap", "bridge swap". What it does: Discovers tokens, verifies contracts, fetches prices, generates a de…