Learn-skills.dev transfer
STX, fungible token (SIP-010), and NFT (SIP-009) transfers on Stacks. All operations require an unlocked wallet.
install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/aibtcdev/skills/transfer" ~/.claude/skills/neversight-learn-skills-dev-transfer && rm -rf "$T"
manifest:
data/skills-md/aibtcdev/skills/transfer/SKILL.mdsource content
Transfer Skill
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.
Usage
bun run transfer/transfer.ts <subcommand> [options]
Subcommands
stx
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:
(required) — Stacks address of the recipient (starts with SP or ST)--recipient
(required) — Amount in micro-STX (e.g.,--amount
for 2 STX)2000000
(optional) — Memo text to attach to the transfer (max 34 bytes)--memo
(optional) — Fee preset (--fee
,low
,medium
) or micro-STX amount; auto-estimated if omittedhigh
Output:
{ "success": true, "txid": "abc123...", "from": "SP2...", "recipient": "SP3...", "amount": "2 STX", "amountMicroStx": "2000000", "memo": null, "network": "mainnet", "explorerUrl": "https://explorer.hiro.so/txid/abc123..." }
token
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:
(required) — Stacks address of the recipient--recipient
(required) — Amount in the token's smallest unit (check token decimals)--amount
(required) — Token symbol (e.g.,--contract
) or full contract ID (e.g.,sBTC
)SP2...my-token
(optional) — Memo text (max 34 bytes)--memo
(optional) — Fee preset or micro-STX amount; auto-estimated if omitted--fee
Output:
{ "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..." }
nft
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:
(required) — Stacks address of the recipient--recipient
(required) — Integer token ID of the NFT to transfer--token-id
(required) — NFT collection contract ID (e.g.,--contract
)SP2...my-nft
(optional) — Fee preset or micro-STX amount; auto-estimated if omitted--fee
Output:
{ "success": true, "txid": "abc123...", "from": "SP2...", "recipient": "SP3...", "contract": "SP2...my-nft", "tokenId": 42, "network": "mainnet", "explorerUrl": "https://explorer.hiro.so/txid/abc123..." }
Notes
- Wallet must be unlocked before any transfer. Use
first.bun run wallet/wallet.ts unlock - For STX, 1 STX = 1,000,000 micro-STX. For tokens, check decimals with the
skill'stokens
subcommand.get-info - NFT token IDs are integers. Use the
skill'snft
subcommand to list owned token IDs.get-holdings - Fee is paid in STX regardless of the asset being transferred. Ensure sufficient STX balance for the fee.
- The
option is available for STX and token transfers, but not NFT transfers (not part of the SIP-009 standard).--memo