Learn-skills.dev stx
Stacks L2 STX token operations — check balances, transfer STX, broadcast pre-signed transactions, call Clarity contracts, deploy contracts, and check transaction status. Transfer and contract operations require an unlocked wallet.
git clone https://github.com/NeverSight/learn-skills.dev
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/stx" ~/.claude/skills/neversight-learn-skills-dev-stx && rm -rf "$T"
data/skills-md/aibtcdev/skills/stx/SKILL.mdSTX Skill
Provides Stacks L2 STX token and contract operations using the Hiro API. Transfer and contract write operations require an unlocked wallet (use
bun run wallet/wallet.ts unlock first). Balance and status queries work with just an address.
Usage
bun run stx/stx.ts <subcommand> [options]
Subcommands
get-balance
Get the STX balance for a Stacks address. Returns balance in both micro-STX and STX.
bun run stx/stx.ts get-balance [--address <addr>]
Options:
(optional) — Stacks address to check (uses active wallet if omitted)--address
Output:
{ "address": "SP2...", "network": "mainnet", "balance": { "microStx": "1000000", "stx": "1 STX" }, "locked": { "microStx": "0", "stx": "0 STX" }, "explorerUrl": "https://explorer.hiro.so/address/SP2...?chain=mainnet" }
transfer
Transfer STX to a recipient. Requires an unlocked wallet.
1 STX = 1,000,000 micro-STX. Specify
--amount in micro-STX.
bun run stx/stx.ts transfer --recipient <addr> --amount <microStx> [--memo <text>] [--fee low|medium|high|<microStx>]
Options:
(required) — Stacks address to send to (starts with SP or ST)--recipient
(required) — Amount in micro-STX (e.g., "2000000" for 2 STX)--amount
(optional) — Memo message to include with the transfer--memo
(optional) — Fee preset (low|medium|high) or micro-STX amount; auto-estimated if omitted--fee
Output:
{ "success": true, "txid": "abc123...", "from": "SP2...", "recipient": "SP3...", "amount": "2 STX", "amountMicroStx": "2000000", "network": "mainnet", "explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet" }
broadcast-transaction
Broadcast a pre-signed Stacks transaction to the network.
bun run stx/stx.ts broadcast-transaction --signed-tx <hex>
Options:
(required) — The signed transaction as a hex string--signed-tx
Output:
{ "success": true, "txid": "abc123...", "network": "mainnet", "explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet" }
call-contract
Call a function on a Stacks smart contract. Signs and broadcasts the transaction. Requires an unlocked wallet.
bun run stx/stx.ts call-contract --contract-address <addr> --contract-name <name> --function-name <fn> [--args <json>] [--post-condition-mode allow|deny] [--post-conditions <json>] [--fee low|medium|high|<microStx>]
Options:
(required) — Contract deployer's address (e.g., SP2...)--contract-address
(required) — Contract name (e.g., my-token)--contract-name
(required) — Function to call--function-name
(optional) — Function arguments as JSON array (default: "[]"). For typed args:--args[{"type":"uint","value":100}]
(optional) —--post-condition-mode
(default) blocks unexpected transfers;deny
permits anyallow
(optional) — Post conditions as JSON array. See SKILL.md for format.--post-conditions
(optional) — Fee preset or micro-STX; auto-estimated if omitted--fee
Post condition format:
- STX:
{"type":"stx","principal":"SP...","conditionCode":"eq","amount":"1000000"} - FT:
{"type":"ft","principal":"SP...","asset":"SP...contract","assetName":"token-name","conditionCode":"eq","amount":"1000"} - NFT:
{"type":"nft","principal":"SP...","asset":"SP...contract","assetName":"nft-name","tokenId":"1"}
Output:
{ "success": true, "txid": "abc123...", "contract": "SP2....my-token", "function": "transfer", "network": "mainnet", "explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet" }
deploy-contract
Deploy a Clarity smart contract to the Stacks blockchain. Requires an unlocked wallet.
bun run stx/stx.ts deploy-contract --contract-name <name> --code-body <clarity-source> [--fee low|medium|high|<microStx>]
Options:
(required) — Unique name for the contract (lowercase, hyphens allowed)--contract-name
(required) — The complete Clarity source code--code-body
(optional) — Fee preset or micro-STX; auto-estimated if omitted--fee
Output:
{ "success": true, "txid": "abc123...", "contractId": "SP2....my-contract", "network": "mainnet", "explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet" }
get-transaction-status
Check the status of a Stacks transaction by its txid.
bun run stx/stx.ts get-transaction-status --txid <txid>
Options:
(required) — The transaction ID (64 character hex string)--txid
Output:
{ "txid": "abc123...", "status": "success", "block_height": 150000, "network": "mainnet", "explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet" }
Notes
- Balance queries use the public Hiro API (no authentication required unless you set HIRO_API_KEY)
- Transfer and contract operations require an unlocked wallet (use
first)bun run wallet/wallet.ts unlock - Fees are auto-estimated if
is omitted; use presets (low|medium|high) or exact micro-STX amounts--fee - Post condition mode
(default) prevents unintended asset movements; usedeny
only when necessaryallow