skills/batch/SKILL.md
Execute multiple different DeFi operations in a single Starknet transaction — combine swaps, staking, lending supply/borrow/repay/withdraw, token sends, DCA orders, and Troves vault deposits/withdrawals into one multicall. Use this skill when the user wants to batch, combine, bundle, or chain multiple diverse operations together in one atomic transaction, such as "swap ETH and then stake STRK" or "withdraw from lending and swap" or "repay debt and stake" or "swap and send in one go" or "create a DCA order and stake" or "deposit into vault and swap". Also trigger when the user mentions multicall, combining operations, doing multiple things at once, or wants to save gas by bundling actions — even if they don't use the word "batch".
npx skillsauth add ahmetenesdur/starkfi batchInstall 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.
Bundle multiple diverse DeFi operations into a single Starknet multicall transaction. Supports combining swaps, staking, lending supply/borrow/repay/withdraw, token sends, DCA orders, and Troves vault deposits/withdrawals — all executed atomically in one on-chain call.
npx starkfi@latest status and npx starkfi@latest balance to verify connectivity and funds.trade, send, staking, lending, or dca).--swap, --stake, --supply, --send, --dca-create, and --dca-cancel flag can appear multiple times (repeatable).--send operation, you MUST confirm the recipient address with the user before executing.--simulate first to verify the entire batch would succeed.npx starkfi@latest tx-status <hash>.npx starkfi@latest batch [--simulate] [--json] \
--swap "<amount> <from> <to>" \
--stake "<amount> <token> <validator_or_pool>" \
--supply "<amount> <token> <pool>" \
--send "<amount> <token> <recipient>" \
--borrow "<col_amt> <col_token> <bor_amt> <bor_token> <pool>" \
--repay "<amount> <token> <col_token> <pool>" \
--withdraw "<amount> <token> <pool>" \
--dca-create "<amount> <sell> <buy> <perCycle> [frequency]" \
--dca-cancel "<orderId>" \
--troves-deposit "<amount> <token> <strategyId> [amount2 token2]" \
--troves-withdraw "<amount> <token> <strategyId> [amount2 token2]"
| Flag | Format | Example |
| ---------- | ------------------------------------------ | ------------------------------- |
| --swap | "<amount> <from> <to>" | --swap "100 USDC ETH" |
| --stake | "<amount> <token> <validator_or_0xPool>" | --stake "500 STRK Karnot" |
| --supply | "<amount> <token> <pool>" | --supply "100 USDC Prime" |
| --send | "<amount> <token> <0xRecipient>" | --send "10 STRK 0x07b2..." |
| --borrow | "<col_amt> <col_token> <bor_amt> <bor_token> <pool>" | --borrow "0.5 ETH 500 USDC Prime" |
| --repay | "<amount> <token> <col_token> <pool>" | --repay "100 USDC ETH Prime" |
| --withdraw | "<amount> <token> <pool>" | --withdraw "200 USDC Prime" |
| --dca-create | "<amount> <sell> <buy> <perCycle> [freq]" | --dca-create "1000 USDC ETH 10 P1D" |
| --dca-cancel | "<orderId>" | --dca-cancel "abc123" |
| --troves-deposit | "<amount> <token> <strategyId> [amount2 token2]" | --troves-deposit "100 STRK evergreen_strk" or "100 STRK ekubo_cl_strketh 0.005 ETH" |
| --troves-withdraw | "<amount> <token> <strategyId> [amount2 token2]" | --troves-withdraw "50 STRK evergreen_strk" or "50 STRK ekubo_cl_strketh 0.005 ETH" |
Note:
--stakeaccepts either a validator name (e.g.Karnot) or a pool contract address (starting with0x). The CLI auto-detects the format.
| Parameter | Type | Description | Required |
| ------------ | ------ | ------------------------------------- | -------- |
| --swap | string | Swap operation (repeatable) | No* |
| --stake | string | Stake operation (repeatable) | No* |
| --supply | string | Lending supply operation (repeatable) | No* |
| --send | string | Token transfer operation (repeatable) | No* |
| --borrow | string | Borrow from lending pool (repeatable) | No* |
| --repay | string | Repay lending debt (repeatable) | No* |
| --withdraw | string | Withdraw from lending pool (repeatable) | No* |
| --dca-create | string | Create DCA order (repeatable) | No* |
| --dca-cancel | string | Cancel DCA order (repeatable) | No* |
| --troves-deposit | string | Troves vault deposit (repeatable) | No* |
| --troves-withdraw | string | Troves vault withdraw (repeatable) | No* |
| --simulate | flag | Estimate fees without broadcasting | No |
| --json | flag | Output as JSON | No |
*At least 2 operations (of any type) are required.
User: "Swap 100 USDC to ETH and stake 500 STRK with Karnot in one transaction"
npx starkfi@latest status
npx starkfi@latest balance
npx starkfi@latest batch --swap "100 USDC ETH" --stake "500 STRK Karnot"
npx starkfi@latest tx-status <hash>
User: "Withdraw my USDC from Prime lending and swap it to ETH"
npx starkfi@latest status
npx starkfi@latest balance
npx starkfi@latest batch --withdraw "200 USDC Prime" --swap "200 USDC ETH"
npx starkfi@latest tx-status <hash>
User: "Repay my USDC debt on Prime and stake STRK"
npx starkfi@latest status
npx starkfi@latest balance
npx starkfi@latest batch --repay "100 USDC ETH Prime" --stake "50 STRK karnot"
npx starkfi@latest tx-status <hash>
User: "Borrow USDC using ETH as collateral and swap half to STRK"
npx starkfi@latest status
npx starkfi@latest balance
npx starkfi@latest batch \
--borrow "0.5 ETH 500 USDC Prime" \
--swap "250 USDC STRK"
npx starkfi@latest tx-status <hash>
User: "Simulate a batch of two swaps and a stake"
npx starkfi@latest batch --simulate \
--swap "100 USDC ETH" \
--swap "200 USDT STRK" \
--stake "500 STRK Karnot"
| Error | Action |
| ------------------------ | ------------------------------------------------------------- |
| Too few operations | At least 2 operations required. Use dedicated skills instead. |
| Insufficient balance | Check balance for all required tokens. |
| Invalid validator/pool | Run validators/pools to find valid names/addresses. |
| Simulation failed | One of the operations would revert. Check each individually. |
| Not authenticated | Run authenticate-wallet skill first. |
trade for a single swap.staking for standalone staking operations.lending for standalone lending operations.send for standalone token transfers.dca for standalone DCA order management.troves for standalone vault deposit/withdraw operations.lst for liquid staking operations (not supported in batch).testing
Deposit and withdraw from Troves DeFi yield vault strategies on Starknet. View available strategies, check positions, and manage vault deposits. Use this skill when the user mentions Troves, vault, yield vault, DeFi vault, strategy, yield farming, vault deposit, vault withdraw, earning yield through vaults, passive yield strategies, or wants to deposit into or withdraw from a yield strategy — even if they don't say "Troves" explicitly.
testing
Liquid staking via Endur on Starknet — stake STRK to receive xSTRK, redeem xSTRK back to STRK, check positions, and view protocol stats. Yield is embedded in the xSTRK share price (no manual claim needed). Use this skill when the user mentions liquid staking, LST, xSTRK, Endur, liquid staking token, share price, instant staking, tradeable staking position, or wants a staking token they can trade or use in DeFi — even if they don't say "liquid staking" explicitly.
testing
Create, preview, list, and cancel recurring Dollar-Cost Averaging (DCA) buy orders on Starknet via AVNU or Ekubo. Use this skill when the user wants to set up automatic recurring purchases, dollar-cost average into a token, create a DCA order, schedule periodic buys, invest regularly, buy every day/week/month, or manage existing DCA orders. Also trigger when the user says "recurring buy", "scheduled purchase", "buy X of Y every day", or any variation about automated periodic investing — even if they don't use the term "DCA" explicitly.
development
Manage confidential (private) transfers via Tongo Cash on Starknet — setup, fund, transfer, withdraw, ragequit, rollover using ZK proofs. Use this skill when the user wants to send tokens privately, hide transfer amounts, use zero-knowledge proofs, set up Tongo, fund or withdraw from a confidential account, perform an emergency exit (ragequit), or activate pending balance (rollover). Also trigger when the user says "send privately", "confidential transfer", "hide my transaction", "Tongo Cash", "ZK transfer", or any variation about privacy-preserving transfers — even if they don't use the word "confidential".