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.
tools
HSM-backed secret management for AI agents. Store API keys (including Bankr `bk_` keys), passwords, and credentials in an encrypted vault; retrieve them at runtime via MCP without keeping secrets in chat context. Policy-based access control, secret rotation, sharing, EVM transaction intents (sign/simulate/broadcast), multi-chain signing keys, treasury multisig proposals, OIDC federation for external service auth, built-in prompt injection detection, and optional Shroud TEE LLM proxy. Use when the agent needs secure credential storage, just-in-time secret access, guarded on-chain signing, or security scanning — not for Bankr trading prompts, portfolio checks, or x402 calls (use the bankr skill instead).
testing
Stake $GEM tokens on Gem Miner (gemminer.app) to earn yield and unlock the in-game earn/cashout system. Use when the user wants to stake GEM, check their staking balance or rewards, unstake, claim rewards, or check whether they meet the 25M GEM gate. Base mainnet only.
development
CodeGrid is a native macOS canvas where multiple coding agents (Claude, Codex, Gemini, Cursor, Grok, shells) run side by side in panes and collaborate via a local agent bus — no tmux, no cloud, no account, no stored API keys. Install this skill when an agent should know how to operate inside a CodeGrid pane, drive the workspace from outside (control socket or codegrid:// deep links), spawn or message sibling agents, or coordinate multi-agent work (delegate, review, pipeline, parallel fan-out, monitor, debate). The differentiator: multiple coding agents collaborating on one canvas, addressable by stable session_id, with a read → message → read protocol built for orchestration.
tools
Use Agent Wormhole for one-time sealed handoffs between autonomous agents, including encrypted mission briefs, scoped secrets, temporary artifacts, receipts, config drops, CLI/API usage, ECHO holder access, and Bankr x402 paid opens.