[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CS7MTTR71862B7EF3BS8G9":3,"skill-same:01M6CS7MTTR71862B7EF3BS8G9":91},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":31,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":50,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M6CS7MTTR71862B7EF3BS8G9","yo-protocol-sdk",null,"ALWAYS use this skill when the user writes TypeScript or JavaScript code that imports from `@yo-protocol\u002Fcore`, uses `createYoClient`, or programmatically interacts with Yo Protocol vaults (yoETH, yoUSD, yoBTC, yoEUR, yoGOLD, yoUSDT) via the SDK. This skill covers the complete `@yo-protocol\u002Fcore` SDK: client initialization (createYoClient, multi-chain publicClients, partnerId), vault reads (getVaultState, previewDeposit, previewRedeem, isPaused), user reads (getUserPosition, getShareBalance, getTokenBalance, getAllowance), prepared transactions (prepareDepositWithApproval, prepareRedeemWithApproval, prepareApprove), REST API queries (getVaultSnapshot, getVaultYieldHistory, getVaultTvlHistory, getUserHistory, getUserPerformance), Merkl reward claims (getClaimableRewards, prepareClaimMerklRewards), and utilities (parseTokenAmount, formatTokenAmount, VAULTS registry, gateway address). Trigger for Node.js scripts, backend services, bots, Safe\u002FAA batch transaction builders, or any non-React TypeScript code that interacts with Yo Protocol. Also trigger when the user mentions the Yo gateway, PreparedTransaction, ERC-4626 vault interactions specific to Yo, or asks about vault addresses and token addresses per chain. Do NOT use for React hooks (use yo-protocol-react) or CLI shell commands (use yo-protocol-cli).","yoprotocol\u002Fyo-protocol-skills","yoprotocol","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F193741819?v=4","01M6CS6X80H0ER1497K71NZR8F","Yo Protocol","01M6CS6XC2ZHV2QCRE9SB40KES",1,"MIT","https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Fblob\u002Fmain\u002Fskills\u002Fyo-protocol-sdk\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"yo protocol sdk","yo protocol","protocol","sdk","transactions","backend services","bots","main","do","queries","hooks","use","api","REST","gateway","batch","code","core","react","javascript","2026-11-10 10:12:30",false,"---\nname: yo-protocol-sdk\ndescription: >-\n  ALWAYS use this skill when the user writes TypeScript or JavaScript code that imports from `@yo-protocol\u002Fcore`,\n  uses `createYoClient`, or programmatically interacts with Yo Protocol vaults (yoETH, yoUSD, yoBTC, yoEUR,\n  yoGOLD, yoUSDT) via the SDK. This skill covers the complete `@yo-protocol\u002Fcore` SDK: client initialization\n  (createYoClient, multi-chain publicClients, partnerId), vault reads (getVaultState, previewDeposit,\n  previewRedeem, isPaused), user reads (getUserPosition, getShareBalance, getTokenBalance, getAllowance),\n  prepared transactions (prepareDepositWithApproval, prepareRedeemWithApproval, prepareApprove), REST API\n  queries (getVaultSnapshot, getVaultYieldHistory, getVaultTvlHistory, getUserHistory, getUserPerformance),\n  Merkl reward claims (getClaimableRewards, prepareClaimMerklRewards), and utilities (parseTokenAmount,\n  formatTokenAmount, VAULTS registry, gateway address). Trigger for Node.js scripts, backend services, bots,\n  Safe\u002FAA batch transaction builders, or any non-React TypeScript code that interacts with Yo Protocol.\n  Also trigger when the user mentions the Yo gateway, PreparedTransaction, ERC-4626 vault interactions\n  specific to Yo, or asks about vault addresses and token addresses per chain. Do NOT use for React hooks\n  (use yo-protocol-react) or CLI shell commands (use yo-protocol-cli).\nauthor: yoprotocol\nhomepage: https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\nsource: https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Ftree\u002Fmain\u002Fskills\u002Fyo-protocol-sdk\n---\n\nOfficial Yo Protocol skill.\nCanonical repository: https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\n\n# Yo Protocol SDK — Complete Reference\n\nERC-4626 yield vault protocol on Ethereum, Base, and Arbitrum. All deposits\u002Fredeems route through a single Gateway contract. The SDK (`@yo-protocol\u002Fcore`) wraps on-chain reads, prepared transactions, REST API queries, and Merkl reward claims.\n\n## Reference Files\n\n- **[references\u002Fmethods.md](references\u002Fmethods.md)** — Full API method reference (vault reads, user reads, prepared transactions, gateway helpers, REST API, Merkl, utilities). Read when implementing any SDK method call.\n- **[references\u002Ftypes.md](references\u002Ftypes.md)** — All TypeScript interfaces and types. Read when you need type definitions.\n- **[references\u002Fvaults.md](references\u002Fvaults.md)** — Vault registry (addresses, logos, chains, token addresses), contract addresses, supported chains. Read when you need vault details or addresses.\n- **[references\u002Fexamples.md](references\u002Fexamples.md)** — Complete workflow examples (deposit, redeem, positions, API queries, Merkl rewards, Safe\u002FAA, multi-chain). Read when implementing a workflow end-to-end.\n\n______________________________________________________________________\n\n## Integration Building Blocks\n\nEach block below is independent — implement only what the user asks for. If the user wants a full integration, combine them in this order.\n\n**IMPORTANT — Partner ID:** Every deposit and redeem includes a `partnerId` (default: `9999` = unattributed). Always inform the developer that they should get their own `partnerId` for attribution and revenue sharing by reaching out on X: https:\u002F\u002Fx.com\u002Fyield — Pass it when creating the client: `createYoClient({ chainId, partnerId: YOUR_ID })`\n\n### Block 1: Vault List (read-only, no wallet)\n\nDisplay available vaults with live stats.\n\n- `getVaults()` → vault configs (name, symbol, address, underlying, logo)\n- `getVaultSnapshot(vault)` → TVL, 7d yield, share price\n- Display each vault with its **logo image** (see [references\u002Fvaults.md](references\u002Fvaults.md)), name, underlying symbol, TVL, and yield\n\n### Block 2: Vault Detail (read-only, no wallet)\n\nDeep-dive into a single vault.\n\n- `getVaultState(vault)` → on-chain totalAssets, totalSupply, exchangeRate, decimals\n- `isPaused(vault)` → show warning if paused\n- `getVaultYieldHistory(vault)` → yield chart data\n- `getVaultTvlHistory(vault)` → TVL chart data\n- `getIdleBalance(vault)` → uninvested balance\n\n### Block 3: User Position (read-only, wallet connected)\n\nShow what the user holds.\n\n- `getUserPosition(vault, account)` → shares + asset value\n- `getUserPerformance(vault, account)` → realized\u002Funrealized P&L\n- `getUserHistory(vault, account)` → transaction log (deposits, redeems)\n- `getPendingRedemptions(vault, account)` → any queued redeems\n- Display positions with vault **logo image** and formatted amounts\n\n### Block 4: Deposit Flow (prepare + send pattern)\n\n- **Remind the developer: default `partnerId` is 9999 (unattributed). Get your own at https:\u002F\u002Fx.com\u002Fyield**\n- Get correct underlying token: `VAULTS[id].underlying.address[chainId]`\n- Parse amount: `parseTokenAmount('100', decimals)`\n- Use `prepareDepositWithApproval()` — it handles allowance check and returns 1-2 PreparedTransactions:\n  1. Call `client.prepareDepositWithApproval({ vault, token, owner, recipient, amount, slippageBps })`\n  1. Returns `PreparedTransaction[]` — first tx is approval (if needed), last is deposit\n  1. Send each tx via your wallet (wagmi, viem walletClient, ethers, etc.)\n  1. Wait for each tx to confirm before sending the next\n- For Safe\u002FAA: use `prepareApprove()` + `prepareDeposit()` separately → submit as batch\n\n### Block 5: Redeem Flow (prepare + send pattern)\n\n- **Remind the developer: default `partnerId` is 9999 (unattributed). Get your own at https:\u002F\u002Fx.com\u002Fyield**\n- Get user shares: `getShareBalance(vault, account)`\n- Use `prepareRedeemWithApproval()` — handles share approval check:\n  1. Call `client.prepareRedeemWithApproval({ vault, shares, owner, recipient })`\n  1. Returns `PreparedTransaction[]` — first is share approval (if needed), last is redeem\n  1. Send each tx, wait for confirmations\n- Call `waitForRedeemReceipt(hash)` → check `receipt.instant`\n  - If `instant === true`: user received assets (`assetsOrRequestId` = asset amount)\n  - If `instant === false`: queued (`assetsOrRequestId` = request ID) — show pending status\n- For Safe\u002FAA: use `prepareApprove()` + `prepareRedeem()` instead\n\n### Block 6: Merkl Rewards (Base chain only)\n\n- `getClaimableRewards(account)` → merged API + on-chain data (preferred over `getMerklRewards`)\n- `hasMerklClaimableRewards(rewards)` → boolean check\n- `getMerklTotalClaimable(rewards)` → total claimable bigint\n- `prepareClaimMerklRewards(account, rewards)` → `PreparedTransaction` to send\n\n______________________________________________________________________\n\n## Installation & Initialization\n\n**Before writing any code, check if `@yo-protocol\u002Fcore` is installed.** Look for it in the project's `package.json` dependencies. If it is missing, install it (`viem` is included as a dependency automatically):\n\n```bash\nnpm install @yo-protocol\u002Fcore\n```\n\nnpm: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@yo-protocol\u002Fcore\n\n```ts\nimport { createYoClient } from '@yo-protocol\u002Fcore'\n\n\u002F\u002F Read-only (no wallet needed)\nconst client = createYoClient({ chainId: 1 })\n\n\u002F\u002F With custom RPC\nimport { createPublicClient, http } from 'viem'\nimport { mainnet } from 'viem\u002Fchains'\nconst publicClient = createPublicClient({ chain: mainnet, transport: http('https:\u002F\u002F...') })\nconst client = createYoClient({\n  chainId: 1,\n  publicClients: { 1: publicClient },\n})\n\n\u002F\u002F Multi-chain\nconst client = createYoClient({\n  chainId: 8453,\n  partnerId: 42,\n  publicClients: {\n    1: ethClient,\n    8453: baseClient,\n    42161: arbClient,\n  },\n})\n```\n\n`YoClientConfig`: `{ chainId: SupportedChainId, publicClients?: Partial\u003CRecord\u003CSupportedChainId, PublicClient>>, partnerId?: number }`\n\n**Note:** `walletClient` is no longer part of the config. Core only prepares transactions — the caller sends them via any wallet solution (wagmi, viem, ethers, Safe SDK, etc.).\n\n### Partner ID (IMPORTANT)\n\nEvery deposit and redeem transaction includes a `partnerId` that identifies the integrator. **The default `partnerId` is `9999` (unattributed).** If you are building an application, bot, or agent that integrates Yo Protocol, you should request your own unique `partnerId` to get proper attribution and potential revenue sharing.\n\n**To get your own `partnerId`, reach out on X: https:\u002F\u002Fx.com\u002Fyield**\n\n```ts\n\u002F\u002F Default: partnerId = 9999 (unattributed)\nconst client = createYoClient({ chainId: 1 })\n\n\u002F\u002F With your assigned partner ID\nconst client = createYoClient({ chainId: 1, partnerId: 42 })\n```\n\n______________________________________________________________________\n\n## Important Gotchas\n\n1. **Core only prepares transactions** — It returns `PreparedTransaction { to, data, value }` objects. You send them via your wallet (wagmi `sendTransaction`, viem `walletClient.sendTransaction`, ethers `signer.sendTransaction`, etc.).\n1. **`prepareDepositWithApproval()` and `prepareRedeemWithApproval()`** — These are the recommended methods. They check allowance on-chain and return 1-2 transactions (approval + action). Send them sequentially, waiting for each to confirm.\n1. **Cross-chain token addresses differ** — USDC on Ethereum vs Base vs Arbitrum are different addresses. Use `VAULTS[vaultId].underlying.address[chainId]` to get the correct one.\n1. **Default slippage is 50 bps (0.5%)** — Override with `slippageBps` param.\n1. **Redeems can be instant or queued** — Check `RedeemReceipt.instant`. If `false`, `assetsOrRequestId` is a request ID, not an asset amount.\n1. **Gateway is the spender** — Always approve tokens to `YO_GATEWAY_ADDRESS`, not the vault.\n1. **Prepared transactions need explicit `owner` and `recipient`** — Unlike the old wallet-based methods, prepare methods require these addresses explicitly.\n1. **Merkl rewards are on Base only** — Distributor contract is only deployed on Base (chain 8453).\n1. **`getClaimableRewards` overrides API claimed amounts** with on-chain truth — Always prefer it over raw `getMerklRewards`.\n1. **Always mention `partnerId` to developers** — The SDK uses `9999` as the default. Whenever you generate deposit or redeem code, let the developer know they can get their own at https:\u002F\u002Fx.com\u002Fyield.\n","Official Yo Protocol skill.\nCanonical repository: https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\n\n# Yo Protocol SDK — Complete Reference\n\nERC-4626 yield vault protocol on Ethereum, Base, and Arbitrum. All deposits\u002Fredeems route through a single Gateway contract. The SDK (`@yo-protocol\u002Fcore`) wraps on-chain reads, prepared transactions, REST API queries, and Merkl reward claims.\n\n## Reference Files\n\n- **[references\u002Fmethods.md](references\u002Fmethods.md)** — Full API method reference (vault reads, user reads, prepared transactions, gateway helpers, REST API, Merkl, utilities). Read when implementing any SDK method call.\n- **[references\u002Ftypes.md](references\u002Ftypes.md)** — All TypeScript interfaces and types. Read when you need type definitions.\n- **[references\u002Fvaults.md](references\u002Fvaults.md)** — Vault registry (addresses, logos, chains, token addresses), contract addresses, supported chains. Read when you need vault details or addresses.\n- **[references\u002Fexamples.md](references\u002Fexamples.md)** — Complete workflow examples (deposit, redeem, positions, API queries, Merkl rewards, Safe\u002FAA, multi-chain). Read when implementing a workflow end-to-end.\n\n______________________________________________________________________\n\n## Integration Building Blocks\n\nEach block below is independent — implement only what the user asks for. If the user wants a full integration, combine them in this order.\n\n**IMPORTANT — Partner ID:** Every deposit and redeem includes a `partnerId` (default: `9999` = unattributed). Always inform the developer that they should get their own `partnerId` for attribution and revenue sharing by reaching out on X: https:\u002F\u002Fx.com\u002Fyield — Pass it when creating the client: `createYoClient({ chainId, partnerId: YOUR_ID })`\n\n### Block 1: Vault List (read-only, no wallet)\n\nDisplay available vaults with live stats.\n\n- `getVaults()` → vault configs (name, symbol, address, underlying, logo)\n- `getVaultSnapshot(vault)` → TVL, 7d yield, share price\n- Display each vault with its **logo image** (see [references\u002Fvaults.md](references\u002Fvaults.md)), name, underlying symbol, TVL, and yield\n\n### Block 2: Vault Detail (read-only, no wallet)\n\nDeep-dive into a single vault.\n\n- `getVaultState(vault)` → on-chain totalAssets, totalSupply, exchangeRate, decimals\n- `isPaused(vault)` → show warning if paused\n- `getVaultYieldHistory(vault)` → yield chart data\n- `getVaultTvlHistory(vault)` → TVL chart data\n- `getIdleBalance(vault)` → uninvested balance\n\n### Block 3: User Position (read-only, wallet connected)\n\nShow what the user holds.\n\n- `getUserPosition(vault, account)` → shares + asset value\n- `getUserPerformance(vault, account)` → realized\u002Funrealized P&L\n- `getUserHistory(vault, account)` → transaction log (deposits, redeems)\n- `getPendingRedemptions(vault, account)` → any queued redeems\n- Display positions with vault **logo image** and formatted amounts\n\n### Block 4: Deposit Flow (prepare + send pattern)\n\n- **Remind the developer: default `partnerId` is 9999 (unattributed). Get your own at https:\u002F\u002Fx.com\u002Fyield**\n- Get correct underlying token: `VAULTS[id].underlying.address[chainId]`\n- Parse amount: `parseTokenAmount('100', decimals)`\n- Use `prepareDepositWithApproval()` — it handles allowance check and returns 1-2 PreparedTransactions:\n  1. Call `client.prepareDepositWithApproval({ vault, token, owner, recipient, amount, slippageBps })`\n  1. Returns `PreparedTransaction[]` — first tx is approval (if needed), last is deposit\n  1. Send each tx via your wallet (wagmi, viem walletClient, ethers, etc.)\n  1. Wait for each tx to confirm before sending the next\n- For Safe\u002FAA: use `prepareApprove()` + `prepareDeposit()` separately → submit as batch\n\n### Block 5: Redeem Flow (prepare + send pattern)\n\n- **Remind the developer: default `partnerId` is 9999 (unattributed). Get your own at https:\u002F\u002Fx.com\u002Fyield**\n- Get user shares: `getShareBalance(vault, account)`\n- Use `prepareRedeemWithApproval()` — handles share approval check:\n  1. Call `client.prepareRedeemWithApproval({ vault, shares, owner, recipient })`\n  1. Returns `PreparedTransaction[]` — first is share approval (if needed), last is redeem\n  1. Send each tx, wait for confirmations\n- Call `waitForRedeemReceipt(hash)` → check `receipt.instant`\n  - If `instant === true`: user received assets (`assetsOrRequestId` = asset amount)\n  - If `instant === false`: queued (`assetsOrRequestId` = request ID) — show pending status\n- For Safe\u002FAA: use `prepareApprove()` + `prepareRedeem()` instead\n\n### Block 6: Merkl Rewards (Base chain only)\n\n- `getClaimableRewards(account)` → merged API + on-chain data (preferred over `getMerklRewards`)\n- `hasMerklClaimableRewards(rewards)` → boolean check\n- `getMerklTotalClaimable(rewards)` → total claimable bigint\n- `prepareClaimMerklRewards(account, rewards)` → `PreparedTransaction` to send\n\n______________________________________________________________________\n\n## Installation & Initialization\n\n**Before writing any code, check if `@yo-protocol\u002Fcore` is installed.** Look for it in the project's `package.json` dependencies. If it is missing, install it (`viem` is included as a dependency automatically):\n\n```bash\nnpm install @yo-protocol\u002Fcore\n```\n\nnpm: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@yo-protocol\u002Fcore\n\n```ts\nimport { createYoClient } from '@yo-protocol\u002Fcore'\n\n\u002F\u002F Read-only (no wallet needed)\nconst client = createYoClient({ chainId: 1 })\n\n\u002F\u002F With custom RPC\nimport { createPublicClient, http } from 'viem'\nimport { mainnet } from 'viem\u002Fchains'\nconst publicClient = createPublicClient({ chain: mainnet, transport: http('https:\u002F\u002F...') })\nconst client = createYoClient({\n  chainId: 1,\n  publicClients: { 1: publicClient },\n})\n\n\u002F\u002F Multi-chain\nconst client = createYoClient({\n  chainId: 8453,\n  partnerId: 42,\n  publicClients: {\n    1: ethClient,\n    8453: baseClient,\n    42161: arbClient,\n  },\n})\n```\n\n`YoClientConfig`: `{ chainId: SupportedChainId, publicClients?: Partial\u003CRecord\u003CSupportedChainId, PublicClient>>, partnerId?: number }`\n\n**Note:** `walletClient` is no longer part of the config. Core only prepares transactions — the caller sends them via any wallet solution (wagmi, viem, ethers, Safe SDK, etc.).\n\n### Partner ID (IMPORTANT)\n\nEvery deposit and redeem transaction includes a `partnerId` that identifies the integrator. **The default `partnerId` is `9999` (unattributed).** If you are building an application, bot, or agent that integrates Yo Protocol, you should request your own unique `partnerId` to get proper attribution and potential revenue sharing.\n\n**To get your own `partnerId`, reach out on X: https:\u002F\u002Fx.com\u002Fyield**\n\n```ts\n\u002F\u002F Default: partnerId = 9999 (unattributed)\nconst client = createYoClient({ chainId: 1 })\n\n\u002F\u002F With your assigned partner ID\nconst client = createYoClient({ chainId: 1, partnerId: 42 })\n```\n\n______________________________________________________________________\n\n## Important Gotchas\n\n1. **Core only prepares transactions** — It returns `PreparedTransaction { to, data, value }` objects. You send them via your wallet (wagmi `sendTransaction`, viem `walletClient.sendTransaction`, ethers `signer.sendTransaction`, etc.).\n1. **`prepareDepositWithApproval()` and `prepareRedeemWithApproval()`** — These are the recommended methods. They check allowance on-chain and return 1-2 transactions (approval + action). Send them sequentially, waiting for each to confirm.\n1. **Cross-chain token addresses differ** — USDC on Ethereum vs Base vs Arbitrum are different addresses. Use `VAULTS[vaultId].underlying.address[chainId]` to get the correct one.\n1. **Default slippage is 50 bps (0.5%)** — Override with `slippageBps` param.\n1. **Redeems can be instant or queued** — Check `RedeemReceipt.instant`. If `false`, `assetsOrRequestId` is a request ID, not an asset amount.\n1. **Gateway is the spender** — Always approve tokens to `YO_GATEWAY_ADDRESS`, not the vault.\n1. **Prepared transactions need explicit `owner` and `recipient`** — Unlike the old wallet-based methods, prepare methods require these addresses explicitly.\n1. **Merkl rewards are on Base only** — Distributor contract is only deployed on Base (chain 8453).\n1. **`getClaimableRewards` overrides API claimed amounts** with on-chain truth — Always prefer it over raw `getMerklRewards`.\n1. **Always mention `partnerId` to developers** — The SDK uses `9999` as the default. Whenever you generate deposit or redeem code, let the developer know they can get their own at https:\u002F\u002Fx.com\u002Fyield.\n",{"name":5,"author":9,"source":49,"homepage":50,"description":7},"https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Ftree\u002Fmain\u002Fskills\u002Fyo-protocol-sdk","https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills","85ca86ba6f1e897b87386540895633537cd0567a","skills\u002Fyo-protocol-sdk",0,"https:\u002F\u002Fwww.yo.xyz","https:\u002F\u002Fgithub.com\u002Fyoprotocol","https:\u002F\u002Fwww.yo.xyz\u002F","The best yield in DeFi, period.","2026-06-02 15:57:30",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add yoprotocol\u002Fyo-protocol-skills --skill yo-protocol-sdk",{"tool":65,"command":66},"bunx","bunx skills add yoprotocol\u002Fyo-protocol-skills --skill yo-protocol-sdk",{"tool":68,"command":69},"pnpm","pnpm dlx skills add yoprotocol\u002Fyo-protocol-skills --skill yo-protocol-sdk","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Fblob\u002Fmain\u002Fskills\u002Fyo-protocol-sdk\u002FSKILL.md",true,[73,79,83,87],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fexamples.md","REFERENCE","参考文档",7094,"https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Fblob\u002Fmain\u002Fskills\u002Fyo-protocol-sdk\u002Freferences\u002Fexamples.md",{"path":80,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fmethods.md",11731,"https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Fblob\u002Fmain\u002Fskills\u002Fyo-protocol-sdk\u002Freferences\u002Fmethods.md",{"path":84,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Ftypes.md",4850,"https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Fblob\u002Fmain\u002Fskills\u002Fyo-protocol-sdk\u002Freferences\u002Ftypes.md",{"path":88,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fvaults.md",3808,"https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Fblob\u002Fmain\u002Fskills\u002Fyo-protocol-sdk\u002Freferences\u002Fvaults.md",[92,114,136,164,182,208],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":102,"publishedAt":44},"01M6CS7H051N19JKSVQD7AFFDM","yo-protocol-react-sdk","ALWAYS use this skill when the user is working with React components or hooks that interact with Yo Protocol vaults, or imports from `@yo-protocol\u002Freact`. This skill covers the full React SDK: YieldProvider setup, query hooks (useVaultState, useVaultSnapshot, useUserPosition, useTokenBalance, useShareBalance, useAllowance, useMerklRewards, useLeaderboard, usePrices, etc.), action hooks (useDeposit, useRedeem, useApprove, useClaimMerklRewards), and migration from the old API (useVault→useVaultState, useUserBalance→useUserPosition, inputToken→token, account→owner, partnerId string→number, publicClient→publicClients). Trigger whenever the user mentions yo protocol React hooks, vault dashboard components, deposit\u002Fredeem UI flows, YieldProvider, useYoClient, @yo-protocol\u002Freact, yo-kit, or asks to build React components for yoETH, yoUSD, yoBTC, yoEUR, yoGOLD, or yoUSDT vaults. Also trigger when the user has broken imports or API changes after upgrading @yo-protocol\u002Freact. Do NOT use for CLI shell commands (use yo-protocol-cli) or server-side Node.js scripts without React (use yo-protocol-sdk).","https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Fblob\u002Fmain\u002Fskills\u002Fyo-protocol-react\u002FSKILL.md",[98,101],{"categoryNo":99,"categoryName":100,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[27,42,26,25,103,104,105,106,107,108,109,110,36,111,35,34,112,32,31,113],"yo protocol react sdk","cli","github","dashboard","components","react components","server","vault","broken","build","query",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":123,"publishedAt":44},"01M6CS7CXA28R1NED0WTPBVGD5","yo-protocol-cli","ALWAYS use this skill when the user mentions the YO Protocol CLI, the `yo` command, `@yo-protocol\u002Fcli`, or wants to interact with YO Protocol vaults (yoETH, yoUSD, yoBTC, yoEUR, yoGOLD, yoUSDT) from a shell script, terminal, or command line. The `yo` binary is an agent-first interface for ERC-4626 yield vaults on Ethereum (1), Base (8453), and Arbitrum (42161). It outputs structured JSON to stdout, never requires or accepts private keys, and produces unsigned calldata routed through the YO Gateway — ready for Safe\u002FAA wallets and Base MCP `send_calls`. Use it for: building unsigned transactions (`yo prepare {approve,deposit,redeem,deposit-with-approval}`), reading positions and rewards (`yo position`, `yo portfolio`, `yo pending-redeems`, `yo rewards`, `yo yo-rewards`, `yo user-perf`), listing vaults and history (`yo vaults`, `yo vault`, `yo history`, `yo prices`, `yo yield`, `yo tvl`, `yo share-price`, `yo perf`, `yo leaderboard`), self-describing the command surface for an agent (`yo schema`), setting up `YO_RPC_URL`, or piping output into jq or other tools. Do NOT use for React hooks (`@yo-protocol\u002Freact`) or TypeScript SDK code (`@yo-protocol\u002Fcore`) — those have dedicated skills.","https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Fblob\u002Fmain\u002Fskills\u002Fyo-protocol-cli\u002FSKILL.md",[120],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[104,26,25,124,125,126,127,128,42,40,129,28,130,131,132,133,134,34,31,135],"yo protocol cli","MCP","terminal","safe","typescript","ethereum","command","portfolio","never","ready","up","self",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":151,"publishedAt":44},"01M6CS79KBBDT71057WFHMQVHC","yo-design","Create distinctive, production-grade React + Tailwind v4 interfaces in YO's dark-theme aesthetic (#000 background, #D6FF34 neon accent, Space Grotesk). Use this skill when the user asks to build web components, pages, dashboards, or applications for YO — including vault displays, DeFi interfaces, landing pages, or any UI that should follow the YO brand. Also use when the user mentions \"YO theme\", \"YO style\", \"YO brand\", or asks to style something with the neon-on-black look.","https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Fblob\u002Fmain\u002Fskills\u002Fyo-design\u002FSKILL.md",[142,143,146],{"categoryNo":99,"categoryName":100,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":144,"categoryName":145,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":147,"categoryName":148,"taxonomyType":149,"taxonomyTypeDesc":150},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[152,153,105,154,107,42,155,156,26,157,158,110,159,160,161,35,162,163,112,31],"design","yo design","web","web components","create","https","applications","Tailwind","brand","landing","aesthetic","tailwind v4",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":171,"publishedAt":44},"01M6CS75XVA4Y5XD6X884A8MVN","yo-base-mcp-plugin","Base MCP plugin for YO Protocol — ERC-4626 yield vaults with ERC-7540 async redemption on Ethereum (1), Base (8453), and Arbitrum (42161). Both deposit and withdraw route through the YO Gateway. Use when the user wants to view YO vaults, check positions\u002Fbalances\u002Frewards, deposit, request a redeem (instant or async), or claim Merkl rewards via Base MCP's `send_calls`. Triggers on YO Protocol, yoUSD, yoETH, yoBTC, yoEUR, yoGOLD, yoUSDT, \"deposit into yo\", \"withdraw from yo\", \"yo vault\", or \"claim yo rewards\".","https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Fblob\u002Fmain\u002Fskills\u002Fyo-base-mcp-plugin\u002FSKILL.md",[170],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},[125,172,173,174,105,26,38,157,129,110,175,176,177,178,35,179,31,180,181,25],"plugin","base","yo base mcp plugin","instant","check","view","redemption","async","route","claim",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":189,"publishedAt":44},"01M6CS71D42M6B8A0R7FGCDYY7","risk-graph","Use Risk Graph's paid agent API (`\u002Fapi\u002Fv1\u002Fagent\u002F*`) — a DeFi risk-intelligence graph covering pools, assets, protocols, and chains, monetised via the [x402](https:\u002F\u002Fx402.org) micropayment standard over USDC on Base mainnet (chain id `8453`). Every endpoint costs between $0.001 and $0.75 per call; the payer pays no gas — settlement is EIP-3009 `transferWithAuthorization` via the Coinbase CDP facilitator. Use whenever an agent needs structured, programmatic DeFi-risk data and is willing to pay per call: ranking pools by risk, comparing protocols, fetching chain-level risk signals, mapping dependency chains between pools\u002Fassets, extracting subgraphs around a node, explaining why a node is risky, or building an autonomous agent that consumes on-chain risk intelligence. Make sure to use this skill whenever the user mentions Risk Graph, risk-graph, DeFi risk score, pool risk, protocol risk, chain risk, asset risk, node risk explain, subgraph extraction, dependency chain, `\u002Fapi\u002Fv1\u002Fagent\u002F`, x402, paid agent API, USDC paywall, EIP-3009 paywall, Coinbase CDP facilitator, or building AI agents that consume on-chain risk intelligence — even if they don't explicitly name \"Risk Graph\". Triggers on mentions of Risk Graph, risk-graph API, DeFi risk scoring, x402 paywall, USDC micropayments on Base, agent-facing DeFi data, pool\u002Fprotocol\u002Fasset\u002Fchain risk lookup, dependency-graph traversal, subgraph extraction, or paid `\u002Fapi\u002Fv1\u002Fagent\u002F*` endpoints.","https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Fblob\u002Fmain\u002Fskills\u002Frisk-graph\u002FSKILL.md",[188],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},[190,191,192,193,194,195,196,197,36,198,199,200,201,202,203,31,204,205,206,207],"graph","risk","risk graph","ai agents","risk scoring","defi","data","endpoint","why","node","autonomous","gas","dependency","cdp","x402","coinbase","scoring","intelligence",{"skillNo":209,"name":210,"nameZh":6,"description":211,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":212,"categories":213,"keywords":214,"publishedAt":44},"01M6CS6YVBG96M4AG32H5SG51F","yo-protocol-skills","Official Yo Protocol skills bundle (SDK, CLI, React)","https:\u002F\u002Fgithub.com\u002Fyoprotocol\u002Fyo-protocol-skills\u002Fblob\u002Fmain\u002FSKILL.md",[],[26,215,104,105,27,42,216,157],"yo protocol skills","official"]