A unified interface for moving assets on Stacks L2: STX, SIP-010 fungible tokens, and SIP-009 NFTs. You get three subcommands with sensible defaults like auto fee estimation and support for common token symbols (sBTC, USDCx, ALEX). All operations require an unlocked wallet first, and fees are always paid in STX regardless of what you're transferring. The memo field works for STX and tokens but not NFTs since SIP-009 doesn't support it. Amounts are in micro-STX or the token's smallest unit, so you'll want to check decimals before sending. Straightforward tool that does exactly what it says without ceremony.
npx -y skills add aibtcdev/skills --skill transfer --agent claude-codeInstalls into .claude/skills of the current project.
Unified asset transfer skill for the Stacks L2 — sends STX, SIP-010 fungible tokens, and SIP-009 NFTs to a recipient address. All three subcommands require an unlocked wallet.
bun run transfer/transfer.ts <subcommand> [options]
Transfer STX to a recipient address. Amount is specified in micro-STX (1 STX = 1,000,000 micro-STX).
bun run transfer/transfer.ts stx \
--recipient <address> \
--amount <microStx> \
[--memo <text>] \
[--fee low|medium|high|<microStx>]
Options:
--recipient (required) — Stacks address of the recipient (starts with SP or ST)--amount (required) — Amount in micro-STX (e.g., 2000000 for 2 STX)--memo (optional) — Memo text to attach to the transfer (max 34 bytes)--fee (optional) — Fee preset (low, medium, high) or micro-STX amount; auto-estimated if omittedOutput:
{
"success": true,
"txid": "abc123...",
"from": "SP2...",
"recipient": "SP3...",
"amount": "2 STX",
"amountMicroStx": "2000000",
"memo": null,
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/abc123..."
}
Transfer any SIP-010 fungible token to a recipient. Accepts a well-known token symbol (sBTC, USDCx, ALEX, DIKO) or a full contract ID.
bun run transfer/transfer.ts token \
--recipient <address> \
--amount <uint> \
--contract <token-symbol-or-contract-id> \
[--memo <text>] \
[--fee low|medium|high|<microStx>]
Options:
--recipient (required) — Stacks address of the recipient--amount (required) — Amount in the token's smallest unit (check token decimals)--contract (required) — Token symbol (e.g., sBTC) or full contract ID (e.g., SP2...my-token)--memo (optional) — Memo text (max 34 bytes)--fee (optional) — Fee preset or micro-STX amount; auto-estimated if omittedOutput:
{
"success": true,
"txid": "abc123...",
"from": "SP2...",
"recipient": "SP3...",
"contract": "SP2...my-token",
"amount": "1000000",
"memo": null,
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/abc123..."
}
Transfer a SIP-009 NFT to a recipient. Requires the NFT collection contract ID and the specific token ID.
bun run transfer/transfer.ts nft \
--recipient <address> \
--token-id <uint> \
--contract <contract-id> \
[--fee low|medium|high|<microStx>]
Options:
--recipient (required) — Stacks address of the recipient--token-id (required) — Integer token ID of the NFT to transfer--contract (required) — NFT collection contract ID (e.g., SP2...my-nft)--fee (optional) — Fee preset or micro-STX amount; auto-estimated if omittedOutput:
{
"success": true,
"txid": "abc123...",
"from": "SP2...",
"recipient": "SP3...",
"contract": "SP2...my-nft",
"tokenId": 42,
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/abc123..."
}
bun run wallet/wallet.ts unlock first.tokens skill's get-info subcommand.nft skill's get-holdings subcommand to list owned token IDs.--memo option is available for STX and token transfers, but not NFT transfers (not part of the SIP-009 standard).juliusbrussee/caveman
mattpocock/skills
shadcn/improve
obra/superpowers
forrestchang/andrej-karpathy-skills
vercel-labs/skills