.claude/skills/sync-earn-pools/SKILL.md
Synchronize earn pool URLs with DefiLlama data. Validates URLs, removes stale pools, adds new pools. Use when asked to check, update, or fix earn pool links.
npx skillsauth add reserve-protocol/register sync-earn-poolsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Maintain the src/lib/meta/earn-pools.json file which maps DefiLlama pool IDs to
their corresponding protocol UI URLs.
Run the sync script with --fix to automatically clean up and add pools:
python3 .claude/skills/sync-earn-pools/scripts/analyze_pools.py --fix
This will:
# Just analyze (no changes)
python3 .claude/skills/sync-earn-pools/scripts/analyze_pools.py
# Analyze + validate that URLs actually work (slower)
python3 .claude/skills/sync-earn-pools/scripts/analyze_pools.py --validate-urls
# Apply fixes (remove stale, add new)
python3 .claude/skills/sync-earn-pools/scripts/analyze_pools.py --fix
# Dry run (show what would change without modifying)
python3 .claude/skills/sync-earn-pools/scripts/analyze_pools.py --fix --dry-run
| Category | Description | Auto-fixed? | |----------|-------------|-------------| | 🗑️ Stale pools | In JSON but removed from DefiLlama | ✅ Yes (with --fix) | | 🆕 New pools | In DefiLlama but not in JSON | ✅ Yes (with --fix) | | 🔧 Convex wrong URLs | Contract address instead of pool ID | ✅ Yes (queries on-chain) | | ❌ Broken URLs | URLs that return HTTP errors | ❌ Manual | | ⚠️ Generic URLs | Landing pages, not specific pool links | ❌ Manual | | 🔧 Other incorrect URLs | Uniswap/Aerodrome wrong patterns | ❌ Manual |
When running with --fix, the script queries the Convex Booster contract on-chain to:
After running --fix, there may be pools needing manual URL attention:
Curve - Use contract address in path
https://curve.finance/#/{chain}/pools/{contract-address}/deposit
Example: https://curve.finance/#/ethereum/pools/0xE99810Cd5AdCD7b13455aE1Be678B382d61f2d1E/deposit
StakeDAO - Use LP token address as search param
https://stakedao.org/yield?search={lp-token-address}
Example: https://stakedao.org/yield?search=0x7b303cF6124A74a867C99889d39278Bc63e1054B
Morpho - Markets use market ID, vaults use vault address
# Markets
https://app.morpho.org/market?id={market-id}&network={network}
# Vaults
https://app.morpho.org/{network}/vault/{vault-address}
Example market: https://app.morpho.org/market?id=0xdb8938f97571aeab0deb0c34cf7e6278cff969538f49eebe6f4fc75a9a111293&network=ethereum
Example vault: https://app.morpho.org/base/vault/0xbb819D845b573B5D7C538F5b85057160cfb5f313
Yearn - Use chainId and vault address
https://yearn.fi/vaults/{chainId}/{vault-address}
Example: https://yearn.fi/vaults/1/0xBfBC4acAE2ceC91A5bC80eCA1C9290F92959f7c3
Merkl - Use chain name and vault type + address
https://app.merkl.xyz/opportunities/{chain}/{type}/{address}
Example: https://app.merkl.xyz/opportunities/base/MORPHOVAULT/0xbb819D845b573B5D7C538F5b85057160cfb5f313
Aerodrome / Aerodrome Slipstream (Base)
https://aerodrome.finance/deposit?token0={addr}&token1={addr}&type={type}&chain0=8453&chain1=8453&factory={factory}
0 = stable, -1 = volatile (vAMM), 200 or similar = concentrated (Slipstream)0x420DD381b31aEf6683db6B902084cB0FFECe40Da0x5e7BB104d84c7CB9B682AaC2F3d509f5F406809AExample vAMM: https://aerodrome.finance/deposit?token0=0x4200000000000000000000000000000000000006&token1=0x4da9a0f397db1397902070f93a4d6ddbc0e0e6e8&type=-1&chain0=8453&chain1=8453&factory=0x420DD381b31aEf6683db6B902084cB0FFECe40Da
Example Slipstream: https://aerodrome.finance/deposit?token0=0x4da9a0f397db1397902070f93a4d6ddbc0e0e6e8&token1=0x9b8df6e244526ab5f6e6400d331db28c8fdddb55&type=200&chain0=8453&chain1=8453&factory=0x5e7BB104d84c7CB9B682AaC2F3d509f5F406809A
Beefy - Must lookup vault ID on beefy.finance
https://app.beefy.finance/vault/{vault-id}
Example: https://app.beefy.finance/vault/aerodrome-weth-lcap
Convex - Use pool NUMBER (not contract address!)
https://curve.convexfinance.com/stake/ethereum/{pool-number}
Example: https://curve.convexfinance.com/stake/ethereum/412
https://curve.convexfinance.com/stake/ethereum/0xE99810Cd5AdCD7b13455aE1Be678B382d61f2d1EUniswap - Include chain in path
https://app.uniswap.org/explore/pools/{chain}/{pool-address}
Example: https://app.uniswap.org/explore/pools/ethereum/0x32d9259e6792b2150fd50395d971864647fa27b2
https://info.uniswap.org/#/pools/{address} or https://app.uniswap.org/explore#/pools/{address}Concentrator - Only has landing page, no pool-specific URLs
https://concentrator.aladdin.club/The script tracks pools containing these Reserve Protocol tokens:
When the user invokes this skill:
development
Verify that new blockchain addresses in the codebase are valid and match their expected type (contract, EOA, specific contract type like Folio, Governor, etc.). Use when reviewing PRs, commits, or uncommitted changes that add new addresses.
testing
Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like "create a skill", "author a skill", "tidy up a skill", "improve this skill", "review the skill", "clean up the skill", "audit the skill".
testing
Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).
testing
Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like "create a skill", "author a skill", "tidy up a skill", "improve this skill", "review the skill", "clean up the skill", "audit the skill".