stakr/SKILL.md
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.
npx skillsauth add bankrbot/skills stakr-protocolInstall 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.
This 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.
startTime, endTime, and total amount. Distribution is linear over the window; logic is Masterchef-style (accumulated rewards per share).owner (address that can add/modify rewards) or address(0) for permissionless reward addition.When an agent is said to have its "own vault", it means: the agent (or a controlled EOA/contract) is the vault owner, so it can call addRewardToken and modifyRewardToken to fund and adjust rewards without third-party permission.
Agents that operate their own vault will use these two functions most:
addRewardToken(token, amount, settings)Purpose: Start a new reward program for a given ERC-20 token.
owner() == address(0)).token: ERC-20 reward token address. Cannot be the vault’s share token address(vault).amount: Total amount of token to distribute. Tokens are pulled from msg.sender; protocol may take a fee (see factory feeOnAddReward).settings: Settings{ startTime, endTime }. Distribution is linear from startTime to endTime; both must be in the future and startTime < endTime.AddReward. Rewards cannot be withdrawn once added; they can only be modified (extended or topped up) via modifyRewardToken.Use this when the agent wants to create a new reward (e.g. launch an incentive program on its vault).
modifyRewardToken(token, amount, settings)Purpose: Add more amount and/or extend (or reschedule) an existing reward.
addRewardToken (vault owner or permissionless if owner is zero).token: Address of an already active reward token.amount: Additional amount of token to add. Pulled from msg.sender; fee may apply. Cannot reduce existing amount.settings: Settings{ startTime, endTime }. Rules:
currentTime <= reward.settings.endTime): you can only extend endTime (and add more amount). startTime cannot be changed.currentTime > reward.settings.endTime): you can set a new window (startTime, endTime) and add amount; accRewardsPerShare is reset.remainingAmount (and total amount) by amount, updates endTime (and possibly startTime if reward had ended), pulls tokens from msg.sender, and emits ModifyReward.Use this when the agent wants to top up an existing reward or extend the distribution period (or reschedule after it has ended).
Summary for agents:
addRewardToken(token, amount, settings).modifyRewardToken(token, amount, settings).To submit any Stakr call (vault creation, addRewardToken, modifyRewardToken), first encode calldata, then submit the transaction via the Bankr wallet API.
Use a natural-language Bankr agent prompt:
bankr agent prompt "Call addRewardToken on vault 0x... with token 0x... amount 1000 USDC starting tomorrow for 7 days"
Or submit raw encoded calldata directly:
bankr wallet submit --to <vault-address> --data <encoded-calldata> --chain base
For calldata encoding help, see the vault API reference.
Agents can stream rewards over time instead of funding one large window up front:
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.currentTime <= 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.Use 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.
0x7Ef55108fa37472296DA59D2287FdA92cd21A0d0 (view on BaseScan).0x93125009209e23fBAFf2B78712029F7A7CdD23cD (example vault on BaseScan).createStakrVault(underlying, name, symbol, description, owner):
underlying: ERC-20 underlying asset.name, symbol: Vault share token name/symbol.description: Short metadata (e.g. "Agent incentive vault").owner: Set to the agent’s address (or the EOA/contract the agent controls). Use address(0) for permissionless reward add/modify by anyone.addRewardToken, modifyRewardToken, etc.).deposit(assets, receiver) (ERC-4626).depositAndLock(assets, user).lock(shares, user) (vault must be approved for the shares).harvest(user) to send pending rewards to user.unlock(shares, user); then optionally unlockAndRedeem(shares, receiver) to redeem shares for underlying.struct Settings { uint256 startTime; uint256 endTime; }block.timestamp <= startTime and startTime < endTime for new or rescheduled rewards.For exact function signatures, revert reasons, and events, read the vault API in this skill when implementing calls or debugging.
data-ai
Claim and withdraw payments from Metr (metrpay.com) merchant account.
development
AI-powered crypto trading agent, wallet API, and LLM gateway via natural language. Use when the user wants to trade crypto, trade tokenized stocks and ETFs (spot or leveraged), check portfolio balances (with PnL and NFTs), view token prices, search tokens, transfer crypto, manage NFTs, use leverage (Hyperliquid or Avantis), bet on Polymarket, deploy tokens, set up automated trading, sign and submit raw transactions, call or deploy x402 paid API endpoints, browse the web, or access LLM models through the Bankr LLM gateway funded by your Bankr wallet. Supports Base, Ethereum, Polygon, Solana, Unichain, World Chain, Arbitrum, BNB Chain, and Robinhood Chain.
testing
Urizen — an AI equity-research desk + the first autonomous fund on Robinhood Chain (4663), as an agent skill. Real charts & technicals for any tokenized US stock, SEC fundamentals + filings + insider activity, Wall Street analyst consensus, financial news, the macro calendar (Fed/CPI/jobs), live prediction-market odds, and on-chain price — plus the fund's live strategies, book, execution tape, and one-token exposure via $URI. Public, key-less, CORS-open REST on chain 4663. Triggers on: "urizen", "research a stock", "tokenized stock", "SEC fundamentals", "analyst rating", "economic calendar", "prediction market odds", "copy trade the fund", "urizen book", "buy $URI".
development
List tokens on CoinHero via consignment deals on Base — deposit ERC-20 inventory, earn USDC when the protocol buys your token for CoinHero card games. Use when a wallet-enabled agent wants to consign a Base ERC-20 token, check deal performance, or withdraw earnings. Requires a CoinHero dashboard API key and a wallet (EOA) on Base mainnet with at least $50 USD worth of the token to deposit.