[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ET47VT1ZHM3D2EJHZD2XTY":3,"skill-same:01M6ET47VT1ZHM3D2EJHZD2XTY":79},{"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":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M6ET47VT1ZHM3D2EJHZD2XTY","stakr-protocol",null,"Interact with the Stakr protocol — ERC-4626 vaults with multi-reward staking. Use when the user or an agent needs to work with Stakr vaults, add or modify rewards (addRewardToken, addRewards, modifyRewardToken, modifyReward), create or manage an \"agent vault\" or \"own vault\", fund incentive programs, configure reward schedules, or integrate Stakr in scripts or tooling. Prefer this skill whenever Stakr, StakrVault, rewards, staking, or vault ownership is mentioned.","Eskyee\u002Fagentbot-opensource","Eskyee","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F30862925?v=4","01M6ESSG1VB0FYP310V08SY08K","Esky33","01M6ESSG5ZR55BV28APEN3Y2P6",17,"MIT","https:\u002F\u002Fgithub.com\u002FEskyee\u002Fagentbot-opensource\u002Fblob\u002Fmain\u002Fskills\u002Fstakr\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"protocol","stakr protocol","vaults","create","with","ownership","multi","add","scripts","staking","erc-4626","vault","manage","fund","tooling","integrate","use","user","work","configure","2026-11-10 10:12:30",false,"---\nname: stakr-protocol\ndescription: Interact with the Stakr protocol — ERC-4626 vaults with multi-reward staking. Use when the user or an agent needs to work with Stakr vaults, add or modify rewards (addRewardToken, addRewards, modifyRewardToken, modifyReward), create or manage an \"agent vault\" or \"own vault\", fund incentive programs, configure reward schedules, or integrate Stakr in scripts or tooling. Prefer this skill whenever Stakr, StakrVault, rewards, staking, or vault ownership is mentioned.\n---\n\n# Stakr Protocol — Agent Overview\n\nThis skill gives agents the context to interact with the **Stakr** protocol: ERC-4626 tokenized vaults with **multi-reward staking** for any ERC-20 token. Use it when building integrations, scripts, or tooling that create vaults, add rewards, modify reward schedules, or let an agent operate its \"own\" vault.\n\n---\n\n## Protocol at a Glance\n\n- **StakrVault**: Single-asset ERC-4626 vault. Users deposit underlying, get shares; they can **lock** shares to earn multiple reward tokens over configurable windows.\n- **StakrVaultFactory**: Deploys vaults and holds protocol fee configuration. One factory per chain.\n- **Rewards**: Up to 25 reward tokens per vault. Each reward has `startTime`, `endTime`, and total `amount`. Distribution is linear over the window; logic is Masterchef-style (accumulated rewards per share).\n- **Ownership**: A vault can have an `owner` (address that can add\u002Fmodify rewards) or `address(0)` for permissionless reward addition.\n\nWhen an agent is said to have its \"own vault\", it means: the agent (or a controlled EOA\u002Fcontract) is the vault **owner**, so it can call `addRewardToken` and `modifyRewardToken` to fund and adjust rewards without third-party permission.\n\n---\n\n## Emphasis: Adding and Modifying Rewards (Agent-Owned Vaults)\n\nAgents that operate their own vault will use these two functions most:\n\n### 1. `addRewardToken(token, amount, settings)`\n\n**Purpose**: Start a new reward program for a given ERC-20 token.\n\n- **Caller**: Vault **owner** (or anyone if `owner() == address(0)`).\n- **Parameters**:\n    - `token`: ERC-20 reward token address. Cannot be the vault’s share token `address(vault)`.\n    - `amount`: Total amount of `token` to distribute. Tokens are pulled from `msg.sender`; protocol may take a fee (see factory `feeOnAddReward`).\n    - `settings`: `Settings{ startTime, endTime }`. Distribution is linear from `startTime` to `endTime`; both must be in the future and `startTime \u003C endTime`.\n- **Effects**: Registers the reward, pulls tokens (minus fee) into the vault, and emits `AddReward`. Rewards cannot be withdrawn once added; they can only be modified (extended or topped up) via `modifyRewardToken`.\n- **Limits**: No duplicate reward token; vault cannot have more than 25 active rewards.\n\nUse this when the agent wants to **create a new reward** (e.g. launch an incentive program on its vault).\n\n### 2. `modifyRewardToken(token, amount, settings)`\n\n**Purpose**: Add more amount and\u002For extend (or reschedule) an existing reward.\n\n- **Caller**: Same as `addRewardToken` (vault owner or permissionless if owner is zero).\n- **Parameters**:\n    - `token`: Address of an **already active** reward token.\n    - `amount`: **Additional** amount of `token` to add. Pulled from `msg.sender`; fee may apply. Cannot reduce existing amount.\n    - `settings`: `Settings{ startTime, endTime }`. Rules:\n        - If the reward has **not** yet ended (`currentTime \u003C= reward.settings.endTime`): you can only **extend** `endTime` (and add more amount). `startTime` cannot be changed.\n        - If the reward **has** ended (`currentTime > reward.settings.endTime`): you can set a **new** window (`startTime`, `endTime`) and add amount; `accRewardsPerShare` is reset.\n- **Effects**: Increases `remainingAmount` (and total amount) by `amount`, updates `endTime` (and possibly `startTime` if reward had ended), pulls tokens from `msg.sender`, and emits `ModifyReward`.\n\nUse this when the agent wants to **top up** an existing reward or **extend** the distribution period (or reschedule after it has ended).\n\n**Summary for agents**:\n\n- New reward → `addRewardToken(token, amount, settings)`.\n- More reward or longer duration (or new window after end) → `modifyRewardToken(token, amount, settings)`.\n- Ensure the vault has been created via the factory and the agent (or its controlled address) is the vault owner to call these.\n\n## Executing Transactions via Bankr\n\nTo submit any Stakr call (vault creation, `addRewardToken`, `modifyRewardToken`), first encode calldata, then submit the transaction via the Bankr wallet API.\n\nUse a natural-language Bankr agent prompt:\n\n```bash\nbankr agent prompt \"Call addRewardToken on vault 0x... with token 0x... amount 1000 USDC starting tomorrow for 7 days\"\n```\n\nOr submit raw encoded calldata directly:\n\n```bash\nbankr wallet submit --to \u003Cvault-address> --data \u003Cencoded-calldata> --chain base\n```\n\nFor calldata encoding help, see the [vault API reference](references\u002Fvault-api.md).\n\n### 3. Streaming rewards (continuous incentives)\n\nAgents can **stream** rewards over time instead of funding one large window up front:\n\n- **Pattern**: Call `addRewardToken` once to start a reward (short amount if desired). Then call **`modifyRewardToken`** repeatedly to **add more amount** and **extend `endTime`**. Each call tops up the reward and pushes the end of the distribution window forward.\n- **Why**: This avoids locking a huge amount for a long period. The agent (or a script\u002Fcron) can fund the vault in chunks and extend the window as needed, effectively creating a continuous reward stream.\n- **Rules**: While the reward is active (`currentTime \u003C= reward.settings.endTime`), `modifyRewardToken` only allows extending `endTime` and adding `amount`; `startTime` cannot be changed. After the reward has ended, the agent can set a brand‑new window with `modifyRewardToken` (new `startTime` and `endTime`) and keep streaming.\n\nUse streaming when the agent wants to fund incentives on an ongoing basis (e.g. weekly top‑ups, or extending the program as budget allows) rather than committing to a single long window.\n\n---\n\n## Creating an Agent-Owned Vault\n\n1. Get the **StakrVaultFactory** address for the chain.\n    - On **Base mainnet**, the factory is deployed at `0x7Ef55108fa37472296DA59D2287FdA92cd21A0d0` ([view on BaseScan](https:\u002F\u002Fbasescan.org\u002Faddress\u002F0x7Ef55108fa37472296DA59D2287FdA92cd21A0d0)).\n    - For an example Stakr vault implementation on Base, see `0x93125009209e23fBAFf2B78712029F7A7CdD23cD` ([example vault on BaseScan](https:\u002F\u002Fbasescan.org\u002Faddress\u002F0x93125009209e23fbaff2b78712029f7a7cdd23cd)).\n2. Call **`createStakrVault(underlying, name, symbol, description, owner)`**:\n    - `underlying`: ERC-20 underlying asset.\n    - `name`, `symbol`: Vault share token name\u002Fsymbol.\n    - `description`: Short metadata (e.g. \"Agent incentive vault\").\n    - `owner`: Set to the agent’s address (or the EOA\u002Fcontract the agent controls). Use `address(0)` for permissionless reward add\u002Fmodify by anyone.\n3. Use the returned vault address for all subsequent calls (`addRewardToken`, `modifyRewardToken`, etc.).\n\n---\n\n## Core User Flows (for completeness)\n\n- **Deposit only**: `deposit(assets, receiver)` (ERC-4626).\n- **Deposit and lock**: `depositAndLock(assets, user)`.\n- **Lock existing shares**: `lock(shares, user)` (vault must be approved for the shares).\n- **Harvest**: `harvest(user)` to send pending rewards to `user`.\n- **Unlock**: `unlock(shares, user)`; then optionally `unlockAndRedeem(shares, receiver)` to redeem shares for underlying.\n\n---\n\n## Settings and Types\n\n- **Settings**: `struct Settings { uint256 startTime; uint256 endTime; }`\n- **Validation**: `block.timestamp \u003C= startTime` and `startTime \u003C endTime` for new or rescheduled rewards.\n- **Token**: Any ERC-20 except the vault’s share token. The underlying can be used as a reward.\n\n---\n\nFor exact function signatures, revert reasons, and events, read the [vault API](references\u002Fvault-api.md) in this skill when implementing calls or debugging.\n","# Stakr Protocol — Agent Overview\n\nThis skill gives agents the context to interact with the **Stakr** protocol: ERC-4626 tokenized vaults with **multi-reward staking** for any ERC-20 token. Use it when building integrations, scripts, or tooling that create vaults, add rewards, modify reward schedules, or let an agent operate its \"own\" vault.\n\n---\n\n## Protocol at a Glance\n\n- **StakrVault**: Single-asset ERC-4626 vault. Users deposit underlying, get shares; they can **lock** shares to earn multiple reward tokens over configurable windows.\n- **StakrVaultFactory**: Deploys vaults and holds protocol fee configuration. One factory per chain.\n- **Rewards**: Up to 25 reward tokens per vault. Each reward has `startTime`, `endTime`, and total `amount`. Distribution is linear over the window; logic is Masterchef-style (accumulated rewards per share).\n- **Ownership**: A vault can have an `owner` (address that can add\u002Fmodify rewards) or `address(0)` for permissionless reward addition.\n\nWhen an agent is said to have its \"own vault\", it means: the agent (or a controlled EOA\u002Fcontract) is the vault **owner**, so it can call `addRewardToken` and `modifyRewardToken` to fund and adjust rewards without third-party permission.\n\n---\n\n## Emphasis: Adding and Modifying Rewards (Agent-Owned Vaults)\n\nAgents that operate their own vault will use these two functions most:\n\n### 1. `addRewardToken(token, amount, settings)`\n\n**Purpose**: Start a new reward program for a given ERC-20 token.\n\n- **Caller**: Vault **owner** (or anyone if `owner() == address(0)`).\n- **Parameters**:\n    - `token`: ERC-20 reward token address. Cannot be the vault’s share token `address(vault)`.\n    - `amount`: Total amount of `token` to distribute. Tokens are pulled from `msg.sender`; protocol may take a fee (see factory `feeOnAddReward`).\n    - `settings`: `Settings{ startTime, endTime }`. Distribution is linear from `startTime` to `endTime`; both must be in the future and `startTime \u003C endTime`.\n- **Effects**: Registers the reward, pulls tokens (minus fee) into the vault, and emits `AddReward`. Rewards cannot be withdrawn once added; they can only be modified (extended or topped up) via `modifyRewardToken`.\n- **Limits**: No duplicate reward token; vault cannot have more than 25 active rewards.\n\nUse this when the agent wants to **create a new reward** (e.g. launch an incentive program on its vault).\n\n### 2. `modifyRewardToken(token, amount, settings)`\n\n**Purpose**: Add more amount and\u002For extend (or reschedule) an existing reward.\n\n- **Caller**: Same as `addRewardToken` (vault owner or permissionless if owner is zero).\n- **Parameters**:\n    - `token`: Address of an **already active** reward token.\n    - `amount`: **Additional** amount of `token` to add. Pulled from `msg.sender`; fee may apply. Cannot reduce existing amount.\n    - `settings`: `Settings{ startTime, endTime }`. Rules:\n        - If the reward has **not** yet ended (`currentTime \u003C= reward.settings.endTime`): you can only **extend** `endTime` (and add more amount). `startTime` cannot be changed.\n        - If the reward **has** ended (`currentTime > reward.settings.endTime`): you can set a **new** window (`startTime`, `endTime`) and add amount; `accRewardsPerShare` is reset.\n- **Effects**: Increases `remainingAmount` (and total amount) by `amount`, updates `endTime` (and possibly `startTime` if reward had ended), pulls tokens from `msg.sender`, and emits `ModifyReward`.\n\nUse this when the agent wants to **top up** an existing reward or **extend** the distribution period (or reschedule after it has ended).\n\n**Summary for agents**:\n\n- New reward → `addRewardToken(token, amount, settings)`.\n- More reward or longer duration (or new window after end) → `modifyRewardToken(token, amount, settings)`.\n- Ensure the vault has been created via the factory and the agent (or its controlled address) is the vault owner to call these.\n\n## Executing Transactions via Bankr\n\nTo submit any Stakr call (vault creation, `addRewardToken`, `modifyRewardToken`), first encode calldata, then submit the transaction via the Bankr wallet API.\n\nUse a natural-language Bankr agent prompt:\n\n```bash\nbankr agent prompt \"Call addRewardToken on vault 0x... with token 0x... amount 1000 USDC starting tomorrow for 7 days\"\n```\n\nOr submit raw encoded calldata directly:\n\n```bash\nbankr wallet submit --to \u003Cvault-address> --data \u003Cencoded-calldata> --chain base\n```\n\nFor calldata encoding help, see the [vault API reference](references\u002Fvault-api.md).\n\n### 3. Streaming rewards (continuous incentives)\n\nAgents can **stream** rewards over time instead of funding one large window up front:\n\n- **Pattern**: Call `addRewardToken` once to start a reward (short amount if desired). Then call **`modifyRewardToken`** repeatedly to **add more amount** and **extend `endTime`**. Each call tops up the reward and pushes the end of the distribution window forward.\n- **Why**: This avoids locking a huge amount for a long period. The agent (or a script\u002Fcron) can fund the vault in chunks and extend the window as needed, effectively creating a continuous reward stream.\n- **Rules**: While the reward is active (`currentTime \u003C= reward.settings.endTime`), `modifyRewardToken` only allows extending `endTime` and adding `amount`; `startTime` cannot be changed. After the reward has ended, the agent can set a brand‑new window with `modifyRewardToken` (new `startTime` and `endTime`) and keep streaming.\n\nUse streaming when the agent wants to fund incentives on an ongoing basis (e.g. weekly top‑ups, or extending the program as budget allows) rather than committing to a single long window.\n\n---\n\n## Creating an Agent-Owned Vault\n\n1. Get the **StakrVaultFactory** address for the chain.\n    - On **Base mainnet**, the factory is deployed at `0x7Ef55108fa37472296DA59D2287FdA92cd21A0d0` ([view on BaseScan](https:\u002F\u002Fbasescan.org\u002Faddress\u002F0x7Ef55108fa37472296DA59D2287FdA92cd21A0d0)).\n    - For an example Stakr vault implementation on Base, see `0x93125009209e23fBAFf2B78712029F7A7CdD23cD` ([example vault on BaseScan](https:\u002F\u002Fbasescan.org\u002Faddress\u002F0x93125009209e23fbaff2b78712029f7a7cdd23cd)).\n2. Call **`createStakrVault(underlying, name, symbol, description, owner)`**:\n    - `underlying`: ERC-20 underlying asset.\n    - `name`, `symbol`: Vault share token name\u002Fsymbol.\n    - `description`: Short metadata (e.g. \"Agent incentive vault\").\n    - `owner`: Set to the agent’s address (or the EOA\u002Fcontract the agent controls). Use `address(0)` for permissionless reward add\u002Fmodify by anyone.\n3. Use the returned vault address for all subsequent calls (`addRewardToken`, `modifyRewardToken`, etc.).\n\n---\n\n## Core User Flows (for completeness)\n\n- **Deposit only**: `deposit(assets, receiver)` (ERC-4626).\n- **Deposit and lock**: `depositAndLock(assets, user)`.\n- **Lock existing shares**: `lock(shares, user)` (vault must be approved for the shares).\n- **Harvest**: `harvest(user)` to send pending rewards to `user`.\n- **Unlock**: `unlock(shares, user)`; then optionally `unlockAndRedeem(shares, receiver)` to redeem shares for underlying.\n\n---\n\n## Settings and Types\n\n- **Settings**: `struct Settings { uint256 startTime; uint256 endTime; }`\n- **Validation**: `block.timestamp \u003C= startTime` and `startTime \u003C endTime` for new or rescheduled rewards.\n- **Token**: Any ERC-20 except the vault’s share token. The underlying can be used as a reward.\n\n---\n\nFor exact function signatures, revert reasons, and events, read the [vault API](references\u002Fvault-api.md) in this skill when implementing calls or debugging.\n",{"name":5,"description":7},"main","82fb6583c8457bf1cbf87293c95642f184e9dbaf","skills\u002Fstakr",2,"https:\u002F\u002Fgithub.com\u002FEskyee\u002Fagentbot-opensource","https:\u002F\u002Fagentbot-studio.vercel.app","https:\u002F\u002Fgithub.com\u002FEskyee","https:\u002F\u002Fagentbot.sh","London-based indie founder. \r\nCreator of Agentbot.sh - BaseFM.space","2026-11-05 10:56:50",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add Eskyee\u002Fagentbot-opensource --skill stakr-protocol",{"tool":65,"command":66},"bunx","bunx skills add Eskyee\u002Fagentbot-opensource --skill stakr-protocol",{"tool":68,"command":69},"pnpm","pnpm dlx skills add Eskyee\u002Fagentbot-opensource --skill stakr-protocol","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FEskyee\u002Fagentbot-opensource\u002Fblob\u002Fmain\u002Fskills\u002Fstakr\u002FSKILL.md",true,[73],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fvault-api.md","REFERENCE","参考文档",8348,"https:\u002F\u002Fgithub.com\u002FEskyee\u002Fagentbot-opensource\u002Fblob\u002Fmain\u002Fskills\u002Fstakr\u002Freferences\u002Fvault-api.md",[80,89,124,144,169,177],{"skillNo":81,"name":82,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":86,"publishedAt":44},"01M6ET5WZACASAB0WXF3RWEA00","provisioning-v1","https:\u002F\u002Fgithub.com\u002FEskyee\u002Fagentbot-opensource\u002Fblob\u002Fmain\u002Fweb\u002Fskills\u002Fprovisioning-v1\u002FSKILL.md",[85],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[87,88],"provisioning v1","provisioning",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":103,"publishedAt":44},"01M6ET5R7WW7NHX7BBH6RR41SH","get-api-docs","Use this skill when you need documentation for a third-party library, SDK, or API before writing code that uses it — for example, \"use the OpenAI API\", \"call the Stripe API\", \"use the Anthropic SDK\", \"query Pinecone\", or any time the user asks you to write code against an external service and you need current API reference. Fetch the docs with chub before answering, rather than relying on training knowledge.","https:\u002F\u002Fgithub.com\u002FEskyee\u002Fagentbot-opensource\u002Fblob\u002Fmain\u002Fweb\u002Fskills\u002Fget-api-docs\u002FSKILL.md",[95,98],{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":99,"categoryName":100,"taxonomyType":101,"taxonomyTypeDesc":102},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123],"docs","api","get api docs","get","writing","documentation","training","code","openai","openai api","library","knowledge","write","fetch","example","pinecone","stripe","query","time","anthropic sdk",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":44},"01M6ET5MHC01R668JHR5N0HGA1","zyfai","Earn yield on any Ethereum wallet on Base, Arbitrum, and Plasma. Use when a user wants passive DeFi yield on their funds. Deploys a non-custodial deterministic subaccount (Safe) linked to their EOA, enables automated yield optimization, and lets them deposit\u002Fwithdraw anytime.","https:\u002F\u002Fgithub.com\u002FEskyee\u002Fagentbot-opensource\u002Fblob\u002Fmain\u002Fskills\u002Fzyfai\u002FSKILL.md",[],[126,131,132,133,134,135,136,137,138,139,140,141,40,41,142,143],"passive","non-custodial","arbitrum","yield","withdraw","Optimization","deposit","defi","deterministic","base","Wallet","safe","ethereum",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":151,"publishedAt":44},"01M6ET5FA594JNMY39RN003ANW","zerion","Interpreted crypto wallet data for AI agents. Use when an agent needs portfolio values, token positions, DeFi positions, NFT holdings, transaction history, PnL data, token prices, charts, gas prices, swap quotes, or DApp information across 41+ chains. Zerion transforms raw blockchain data into agent-ready JSON with USD values, protocol labels, and enriched metadata. Supports x402 pay-per-request ($0.01 USDC on Base) and API key access. Triggers on mentions of portfolio, wallet analysis, positions, transactions, PnL, profit\u002Floss, DeFi, token balances, NFTs, swap quotes, gas prices, or Zerion.","https:\u002F\u002Fgithub.com\u002FEskyee\u002Fagentbot-opensource\u002Fblob\u002Fmain\u002Fskills\u002Fzerion\u002FSKILL.md",[150],{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},[146,152,153,154,155,156,157,158,159,160,161,162,141,163,164,165,166,167,168,105],"information","data","ai agents","analysis","x402","transforms","nfts","token","nft","across","usd","ready","portfolio","gas","access","transactions","Charts",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":44},"01M6ET5C758AY90H4E0AWAJ9JR","zapper","Placeholder for Zapper skill.","https:\u002F\u002Fgithub.com\u002FEskyee\u002Fagentbot-opensource\u002Fblob\u002Fmain\u002Fskills\u002Fzapper\u002FSKILL.md",[],[171,176],"placeholder",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":44},"01M6ET5965RAA4BZNSWEVK3MGW","yoink","Play Yoink, an onchain capture-the-flag game on Base. Yoink the flag from the current holder, check game stats and leaderboards, view player scores, and compete for the trophy. Uses Bankr for transaction execution.","https:\u002F\u002Fgithub.com\u002FEskyee\u002Fagentbot-opensource\u002Fblob\u002Fmain\u002Fskills\u002Fyoink\u002FSKILL.md",[],[179,184,185,186,187,188,140,189,190,191,192,193,194,195,196,197,198],"view","org","compete","transaction","bankr","onchain","check","capture","jq","curl","game","execution","stats","https","play"]