staking
Skill2 starsChanged 8 months agoMITView on GitHub
Stake, unstake, claim, and compound rewards for STRK, WBTC, tBTC, SolvBTC, and LBTC on Starknet. View validators, pools, and staking positions. Use this skill when the user mentions staking, delegating, validators, staking pools, rewards, compounding, unstaking, earning yield, passive income on crypto, or wants to earn on their STRK or BTC tokens — even if they don't say "stake" explicitly.
In this repository13 other files it gives its agents.
- authenticate-walletSkill
- balanceSkill
- batchSkill
- confidentialSkill
- configSkill
- dcaSkill
- lendingSkill
- lstSkill
- multi-swapSkill
- portfolioSkill
- sendSkill
- tradeSkill
- trovesSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 0 are distinctive, and 9 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 46
BEFORE staking, you MUST run npx starkfi@latest validators to list available validators, then npx starkfi@latest pools <validator> to see …
- Very specific: line 47
BEFORE staking, check balance to confirm the user has enough tokens.
- Very specific: line 50
AFTER any transactional operation (stake, unstake, rewards), verify with tx-status.
- Very specific: line 51
Use stake-status to view the user's current staking positions across all validators.
- Very specific: line 53
LST Disambiguation: If the user mentions "liquid staking", "xSTRK", or "Endur", redirect to the lst skill instead.
- Very specific: line 188
Use balance to check available tokens before staking.
- Very specific: line 189
Use portfolio for a full overview including staking positions with USD values.
- Very specific: line 190
Use batch to combine staking with other operations in one transaction.
- Very specific: line 191
Use lst for liquid staking via Endur (xSTRK — automatic yield, instant redemption).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Staking
Manage Starknet staking operations: delegate tokens to validators, claim or compound rewards, and unstake positions. Supports multiple token types across various validators and pools.
Prerequisites
- Active session required.
- Sufficient token balance for staking + gas fees.
Supported Tokens
| Token | Type |
| STRK | Native |
| WBTC | Bitcoin |
| tBTC | Bitcoin |
| SolvBTC | Bitcoin |
| LBTC | Bitcoin |
Rules
- BEFORE staking, you MUST run
npx starkfi@latest validatorsto list available validators, thennpx starkfi@latest pools <validator>to see available pools. - BEFORE staking, check
balanceto confirm the user has enough tokens. - Unstaking is a two-step process: first
unstake intentstarts a cooldown, thenunstake exitfinalizes after the cooldown period. The user must wait between these steps. rewards --compoundatomically claims and restakes in one transaction.- AFTER any transactional operation (stake, unstake, rewards), verify with
tx-status. - Use
stake-statusto view the user's current staking positions across all validators. When exit intents are active, unpooling amounts and cooldown dates are shown automatically. - Token defaults to
STRKif--tokenis not specified. - LST Disambiguation: If the user mentions "liquid staking", "xSTRK", or "Endur", redirect to the
lstskill instead. This skill handles delegation staking only. Do NOT userewards --claimorrewards --compoundfor xSTRK positions.
Commands
# Discovery
npx starkfi@latest validators [--json]
npx starkfi@latest pools <validator> [--json]
npx starkfi@latest stake-status [validator] [--json]
# Stake tokens
npx starkfi@latest stake <amount> --validator <name> [--token <symbol>] [--simulate] [--json]
# Unstake (two-step)
npx starkfi@latest unstake intent --validator <name> --amount <amount> [--token <symbol>]
npx starkfi@latest unstake exit --validator <name> [--token <symbol>]
# Rewards
npx starkfi@latest rewards --claim --validator <name> [--token <symbol>]
npx starkfi@latest rewards --compound --validator <name> [--token <symbol>]Parameters
stake
| Parameter | Type | Description | Required |
amount | number | Amount to stake (positional) | Yes |
--validator | string | Validator name (from validators list) | Yes* |
--pool | string | Pool contract address (alternative to validator) | Yes* |
--token | string | Token symbol (default: STRK) | No |
--simulate | flag | Estimate fees without broadcasting | No |
--json | flag | Output raw JSON | No |
*Provide either --validator or --pool.
unstake
| Parameter | Type | Description | Required |
| action | string | intent or exit (positional) | Yes |
--validator | string | Validator name | Yes* |
--pool | string | Pool contract address | Yes* |
--amount | number | Amount to unstake (required for intent) | For intent |
--token | string | Token symbol (default: STRK) | No |
rewards
| Parameter | Type | Description | Required |
--claim | flag | Claim pending rewards | Yes* |
--compound | flag | Claim and immediately restake | Yes* |
--validator | string | Validator name | Yes** |
--pool | string | Pool contract address | Yes** |
--token | string | Token symbol (default: STRK) | No |
*Provide either --claim or --compound. **Provide either --validator or --pool.
Examples
User: "Which validators can I stake with?"
npx starkfi@latest validatorsUser: "Show me pools for Karnot"
npx starkfi@latest pools KarnotUser: "Stake 1000 STRK with Karnot"
npx starkfi@latest status
npx starkfi@latest balance --token STRK
npx starkfi@latest stake 1000 --validator Karnot
npx starkfi@latest tx-status <hash>User: "Stake 0.5 WBTC with Karnot"
npx starkfi@latest balance --token WBTC
npx starkfi@latest stake 0.5 --validator Karnot --token WBTC
npx starkfi@latest tx-status <hash>User: "Compound my STRK rewards from Karnot"
npx starkfi@latest rewards --compound --validator Karnot
npx starkfi@latest tx-status <hash>User: "Claim my rewards from Karnot"
npx starkfi@latest rewards --claim --validator Karnot
npx starkfi@latest tx-status <hash>User: "I want to unstake my STRK from Karnot"
# Step 1: Start unstake cooldown
npx starkfi@latest unstake intent --validator Karnot --amount 1000
npx starkfi@latest tx-status <hash>
# Inform user about cooldown period
# Step 2: After cooldown, finalize
npx starkfi@latest unstake exit --validator Karnot
npx starkfi@latest tx-status <hash>User: "Show me all my staking positions"
npx starkfi@latest stake-statusError Handling
| Error | Action |
Validator not found | Run validators to list valid names. |
Pool not found | Run pools <validator> to list available pools. |
Insufficient balance | Check balance and suggest a smaller amount. |
Cooldown not complete | User must wait before running unstake exit. |
No rewards to claim | Position has no pending rewards. |
Not authenticated | Run authenticate-wallet skill first. |
Related Skills
- Use
balanceto check available tokens before staking. - Use
portfoliofor a full overview including staking positions with USD values. - Use
batchto combine staking with other operations in one transaction. - Use
lstfor liquid staking via Endur (xSTRK — automatic yield, instant redemption).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

