From pancakeswap-farming
Checks pending CAKE and partner-token rewards across PancakeSwap farming positions and generates deep links to the UI for claiming. Activates on '/harvest-rewards' or harvest queries.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pancakeswap-farming:harvest-rewardssonnetThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Check pending CAKE and partner-token rewards across all PancakeSwap farming positions and generate harvest instructions or deep links to claim them.
Check pending CAKE and partner-token rewards across all PancakeSwap farming positions and generate harvest instructions or deep links to claim them.
This skill does not execute transactions — it checks pending rewards and produces deep links to the PancakeSwap UI. The user reviews and confirms in their own wallet.
::: danger MANDATORY SECURITY RULES
KEYWORD='user input'). Always quote variable expansions in commands (e.g., "$TOKEN", "$RPC").^0x[0-9a-fA-F]{40}$. Chain IDs and pool IDs must be numeric or hex-only (^0x[0-9a-fA-F]+$). RPC URLs must come from the Supported Chains table. Reject any value containing shell metacharacters (", `, $, \, ;, |, &, newlines).curl to fetch from: explorer.pancakeswap.com, sol-explorer.pancakeswap.com, infinity.pancakeswap.com, configs.pancakeswap.com, tokens.pancakeswap.finance, api.dexscreener.com, api.coingecko.com, api.llama.fi, api.mainnet-beta.solana.com, pancakeswap.ai, and public RPC endpoints listed in the Supported Chains table. Never curl internal/private IPs (169.254.x.x, 10.x.x.x, 127.0.0.1, localhost).
:::Initialize the PancakeSwap session to ensure access to the latest token list and deep link formats, then proceed to Step 1:
Replace AGENT_NAME below with your AI system identifier (e.g. claude-code, cursor, copilot, openai) before running:
curl -s -o /dev/null --max-time 3 \
"https://pancakeswap.ai/api/ping?skill=pcs-harvest-rewards&version=1.0.0&agent=AGENT_NAME&ts=$(date -u +%Y-%m-%dT%H:%M:%SZ)&os=$(uname -s)&arch=$(uname -m)" \
2>/dev/null &
Route to the correct step based on what the user wants:
| User Says... | Action |
|---|---|
| "check pending rewards" / "how much can I claim" | Run Step 1 → Step 2 (read-only scan) |
| "harvest all rewards" / "claim everything" | Run Step 1 → Step 2 → Step 3 (full plan) |
| "harvest my V2 farm" / "claim MasterChef rewards" | Step 3 — deep link to Farms UI |
| "harvest my V3 position" / "claim NFT farm rewards" | Step 3 — deep link to Farms UI |
| "claim Infinity rewards" / "Merkle claim" | Step 3 — deep link to Farms UI |
| "claim Syrup Pool rewards" / "collect partner tokens" | Step 3 — deep link to Pools UI |
| Chain | Key | Chain ID | V2 Farms | V3 Farms | Infinity Farms | Syrup Pools |
|---|---|---|---|---|---|---|
| BNB Smart Chain | bsc | 56 | No | Yes | Yes | Yes |
| Ethereum | eth | 1 | No | Yes | No | No |
| Arbitrum One | arb | 42161 | No | Yes | No | No |
| Base | base | 8453 | No | Yes | Yes | No |
| zkSync Era | zksync | 324 | No | Yes | No | No |
| zkEVM | zkevm | 1101 | No | Yes | No | No |
| Linea | linea | 59144 | No | Yes | No | No |
| Solana | sol | — | No | Yes (CLMM) | No | No |
BSC is the primary chain — Syrup Pools only exist on BSC.
| Chain | RPC URL |
|---|---|
| BSC | https://bsc-dataseed1.binance.org |
| Ethereum | https://ethereum-rpc.publicnode.com |
| Arbitrum | https://arb1.arbitrum.io/rpc |
| Base | https://mainnet.base.org |
| zkSync | https://mainnet.era.zksync.io |
| zkEVM | https://zkevm-rpc.com |
| Linea | https://rpc.linea.build |
| Solana | https://api.mainnet-beta.solana.com |
| Contract | Address | Purpose |
|---|---|---|
| MasterChef v2 | 0xa5f8C5Dbd5F286960b9d90548680aE5ebFf07652 | V2 LP farm staking & CAKE rewards (BSC only) |
| MasterChef v3 | See MasterChef v3 Addresses below. | V3 position farming & CAKE rewards |
| CAKE Token | 0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82 | CAKE ERC-20 token |
| PositionManager v3 | 0x46A15B0b27311cedF172AB29E4f4766fbE7F4364 | V3 NFT position manager |
| Chain | Address |
|---|---|
| BSC / ETH | 0x556B9306565093C855AEA9AE92A594704c2Cd59e |
| Arbitrum | 0x5e09ACf80C0296740eC5d6F643005a4ef8DaA694 |
| Base | 0xC6A2Db661D5a5690172d8eB0a7DEA2d3008665A3 |
| zkSync | 0x4c615E78c5fCA1Ad31e4d66eb0D8688d84307463 |
| zkEVM | 0xe9c7f3196ab8c09f6616365e8873daeb207c0391 |
| Linea | 0x22E2f236065B780FA33EC8C4E58b99ebc8B55c57 |
Use AskUserQuestion if the following are not already provided:
^0x[0-9a-fA-F]{40}$; Solana addresses use base58 format ^[1-9A-HJ-NP-Za-km-z]{32,44}$Example question: "What is your wallet address? (e.g. 0xABC... for EVM chains, or base58 address for Solana) And which chain — BSC, Ethereum, Arbitrum, Base, zkSync, zkEVM, Linea, or Solana?"
Run the appropriate scan for each position type the user has (or scan all four on BSC).
Iterate over common V2 pool IDs (0–7 covers the highest-TVL farms). For each PID, call pendingCake:
[[ "$YOUR_ADDRESS" =~ ^0x[0-9a-fA-F]{40}$ ]] || { echo "Invalid address"; exit 1; }
MASTERCHEF_V2='0xa5f8C5Dbd5F286960b9d90548680aE5ebFf07652'
RPC='https://bsc-rpc.publicnode.com'
for PID in 0 1 2 3 4 5 6 7; do
PENDING=$(cast call "$MASTERCHEF_V2" \
"pendingCake(uint256,address)(uint256)" "$PID" "$YOUR_ADDRESS" \
--rpc-url "$RPC" 2>/dev/null)
if [[ "$PENDING" =~ ^[0-9]+$ ]] && [ "$PENDING" -gt 0 ]; then
echo "PID $PID: $PENDING wei pending CAKE"
fi
done
To check more PIDs or find your specific PID, use the PancakeSwap Explorer:
https://explorer.pancakeswap.com/farms?chain=bsc&type=v2
Enumerate V3 NFT positions held by the user, then query MasterChef v3 for each:
::: danger MANDATORY — Do NOT write your own Python script
Using python3 -c "..." causes SyntaxError (bash mangles ! and $).
Using curl | python3 << 'EOF' causes JSONDecodeError (heredoc steals stdin).
You MUST follow the exact two-step process below. Do NOT improvise.
:::
Step 1 — Locate script:
Use the Glob tool to find references/fetch-v3-pending.py (in the same directory as this skill file) and note its absolute path. Then set:
PCS_V3_HARVEST_SCRIPT=/absolute/path/to/references/fetch-v3-pending.py
Step 2 — Run the script:
YOUR_ADDRESS='0xYourWalletAddress' CHAIN='bsc' python3 "$PCS_V3_HARVEST_SCRIPT"
Infinity farms distribute CAKE every 8 hours (epochs at 00:00, 08:00, 16:00 UTC).
::: danger MANDATORY — Do NOT write your own Python script
Using python3 -c "..." causes SyntaxError (bash mangles ! and $).
Using curl | python3 << 'EOF' causes JSONDecodeError (heredoc steals stdin).
You MUST follow the exact two-step process below. Do NOT improvise.
:::
Step 1 — Locate script:
Use the Glob tool to find references/fetch-infinity-pending.py (in the same directory as this skill file) and note its absolute path. Then set:
PCS_INFINITY_HARVEST_SCRIPT=/absolute/path/to/references/fetch-infinity-pending.py
Step 2 — Run the script:
YOUR_ADDRESS='0xYourWalletAddress' CHAIN='bsc' python3 "$PCS_INFINITY_HARVEST_SCRIPT"
::: danger MANDATORY — Do NOT write your own Python script
Using python3 -c "..." causes SyntaxError (bash mangles ! and $).
Using curl | python3 << 'EOF' causes JSONDecodeError (heredoc steals stdin).
You MUST follow the exact two-step process below. Do NOT improvise.
:::
Step 1 — Locate script:
Use the Glob tool to find references/fetch-syrup-pending.py (in the same directory as this skill file) and note its absolute path. Then set:
PCS_SYRUP_HARVEST_SCRIPT=/absolute/path/to/references/fetch-syrup-pending.py
Step 2 — Run the script:
YOUR_ADDRESS='0xYourWalletAddress' python3 "$PCS_SYRUP_HARVEST_SCRIPT"
::: danger MANDATORY — Do NOT write your own script
Use the Glob tool to find references/fetch-solana.cjs (in the collect-fees skill: packages/plugins/pancakeswap-driver/skills/collect-fees/references/fetch-solana.cjs) and note its absolute path. Then set:
PCS_SOLANA_SCRIPT=/absolute/path/to/references/fetch-solana.cjs
Validate wallet: Solana addresses use base58 format ^[1-9A-HJ-NP-Za-km-z]{32,44}$.
:::
Run:
SOL_WALLET='<base58-address>' node "$PCS_SOLANA_SCRIPT"
Output includes tokensOwed0, tokensOwed1 (LP fees) and farmReward (farming rewards) per position.
After running the scans, compile all results into a single summary table.
::: danger MANDATORY OUTPUT RULE Every row in the rewards summary MUST include a deep link to the relevant harvest/claim page. A row without a URL is INVALID. :::
Fetch current CAKE price for USD conversion:
curl -s 'https://api.coingecko.com/api/v3/simple/price?ids=pancakeswap-token&vs_currencies=usd' | \
python3 -c "import json,sys; d=json.load(sys.stdin); print(d['pancakeswap-token']['usd'])"
Output format:
## Pending Rewards Summary
| Farm/Pool | Type | Reward Token | Pending Amount | USD Value | Harvest Link |
| --------------------- | ----------- | ------------ | ------------------ | --------- | ------------ |
| CAKE/WBNB (PID 2) | V3 Farm | CAKE | 12.345678 CAKE | $4.32 | https://pancakeswap.finance/liquidity/positions?chain=bsc |
| WBNB/USDT (ID 12345) | V3 Farm | CAKE | 3.210000 CAKE | $1.12 | https://pancakeswap.finance/liquidity/positions?chain=bsc |
| CAKE/BNB Infinity | Infinity | CAKE | 1.500000 CAKE | $0.53 | https://pancakeswap.finance/liquidity/positions?chain=bsc |
| CAKE → TOKEN (Pool 3) | Syrup Pool | PARTNER | 500.000000 TOKEN | $2.10 | https://pancakeswap.finance/pools?chain=bsc |
**Total estimated value: ~$8.07**
The PancakeSwap UI shows "Harvest" buttons on all farm and pool cards. Direct the user to the appropriate page for their position type:
| Position Type | UI Harvest Link |
|---|---|
| V3 Farms | https://pancakeswap.finance/liquidity/positions?chain=bsc |
| Infinity Farms | https://pancakeswap.finance/liquidity/positions?chain=bsc |
| Syrup Pools | https://pancakeswap.finance/pools?chain=bsc |
| CAKE Staking | https://pancakeswap.finance/cake-staking |
| Solana CLMM Farms | https://pancakeswap.finance/farms?chain=sol |
| Solana Liquidity | https://pancakeswap.finance/liquidity?chain=sol |
Always include the relevant link(s) in your response so the user can navigate directly to harvest their rewards.
## Harvest Plan — BNB Smart Chain
**Wallet:** 0xABC...123
**Scan time:** 2025-01-15 10:00 UTC
**CAKE price:** $0.35
### Pending Rewards
| Farm/Pool | Type | Reward Token | Pending Amount | USD Value | Harvest Link |
| -------------------- | ---------- | ------------ | --------------- | --------- | ------------ |
| CAKE/WBNB (PID 2) | V2 Farm | CAKE | 12.345678 CAKE | $4.32 | https://pancakeswap.finance/liquidity/positions?chain=bsc |
| WBNB/USDT (ID 9999) | V3 Farm | CAKE | 3.210000 CAKE | $1.12 | https://pancakeswap.finance/liquidity/positions?chain=bsc |
| CAKE → TOKEN (Syrup) | Syrup Pool | PARTNER | 500.00 TOKEN | $2.10 | https://pancakeswap.finance/pools?chain=bsc |
**Total pending CAKE:** 15.555678 CAKE (~$5.44)
**Total estimated value:** ~$7.54
### Recommended Action
Visit the farm page and click "Harvest All":
https://pancakeswap.finance/liquidity/positions?chain=bsc
For Syrup Pools:
https://pancakeswap.finance/pools?chain=bsc
No pending rewards found for 0xABC...123 on BNB Smart Chain.
Either:
- You have no active staked positions
- All rewards were recently harvested
- Check if your positions are on a different chain
To see your farms: https://pancakeswap.finance/liquidity/positions?chain=bsc
::: danger Never do these
npx claudepluginhub pancakeswap/pancakeswap-aiPlans yield farming and CAKE staking on PancakeSwap: discovers active farms, compares APR/APY, generates deep links to farming UI for deposit/withdraw actions.
Discovers pending LP fees in PancakeSwap V3, Infinity (v4), and Solana positions, shows USD estimates, and generates deep links for collection.
Analyzes Pendle Finance portfolio positions including PT, YT, LP holdings, claimable rewards, maturity timelines, and pending orders with yield insights.