Multi-chain wallet operations for EVM and Solana with balance queries, transfers, signing, and transaction history.
Works with
Supports 13 tools across EVM (Ethereum, Base, Arbitrum, Optimism, Polygon, Linea) and Solana, including balance checks, fund transfers, message signing, and transaction history
Use wallet_get_all_balances() for complete portfolio visibility across all chains with USD values in a single call
Transfers are policy-gated by Privy TEE — only whitelisted addresses and amounts
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionwalletExecute the skills CLI command in your project's root directory to begin installation:
Fetches wallet from starchild-ai-agent/official-skills and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate wallet. Access via /wallet in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Create detailed user stories, acceptance criteria, and feature specs
Example
Generate user stories for 'password reset feature' with acceptance criteria, edge cases, and test scenarios
Reduce spec writing time by 50%, ensure comprehensive coverage
Research competitors, compare features, identify gaps
Example
Analyze 5 competitor products, create feature comparison matrix, suggest differentiation opportunities
Complete competitive research in 2 hours instead of 2 days
Evaluate features using frameworks (RICE, ICE, Kano) and create prioritized backlogs
Example
Score 20 feature ideas using RICE framework, generate prioritized roadmap with rationale
0
total installs
0
this week
1
GitHub stars
0
upvotes
Run in your terminal
0
installs
0
this week
1
stars
Interact with this agent's on-chain wallets. Each agent has one wallet per chain (EVM + Solana). Supports balance queries, transfers (policy-gated), message signing, and transaction history.
Authentication is automatic via Fly OIDC token — no API keys or wallet addresses needed. Wallets are bound to this machine at deploy time.
| Tool | Description |
|---|---|
wallet_info |
Get all wallet addresses and chain types |
wallet_get_all_balances |
PRIMARY TOOL - Get complete portfolio across ALL chains (EVM + Solana) with USD values |
wallet_get_policy |
Get current policy status (enabled/disabled) and rules for a chain |
| Tool | Description |
|---|---|
wallet_balance |
Get ETH/token balances on a specific chain (requires chain parameter) |
wallet_transactions |
Get recent EVM transaction history |
wallet_transfer |
Sign and broadcast a transaction on-chain (policy-gated). Funds leave the wallet. |
wallet_sign_transaction |
Sign a transaction WITHOUT broadcasting (returns RLP-encoded signed tx, nothing sent on-chain) |
wallet_sign |
Sign a message (EIP-191 personal_sign) |
wallet_sign_typed_data |
Sign EIP-712 structured data (permits, orders, etc.) |
| Tool | Description |
|---|---|
wallet_sol_balance |
Get SOL/SPL token balances with USD values |
wallet_sol_transactions |
Get recent Solana transaction history |
wallet_sol_transfer |
Sign and broadcast a Solana transaction on-chain (policy-gated). Funds leave the wallet. |
wallet_sol_sign_transaction |
Sign a Solana transaction WITHOUT broadcasting (returns base64 signed tx, nothing sent on-chain) |
wallet_sol_sign |
Sign a message with the Solana wallet |
wallet_info()
Returns: list of wallets with wallet_address and chain_type for each active wallet.
Use this first to see all available wallets before any operations.
IMPORTANT: Always specify the chain parameter! To check all chains at once, use wallet_get_all_balances instead.
wallet_balance(chain="ethereum") # Get ALL tokens on Ethereum
wallet_balance(chain="base", asset="usdc") # Check specific asset on Base
wallet_balance(chain="polygon", asset="pol") # Polygon requires explicit asset
chain parameter is REQUIRED. Valid chains: ethereum, base, arbitrum, optimism, polygon, linea
Asset naming:
"pol" NOT "matic""usdc", "weth", "usdt""0x..."), use symbols onlyasset parameter to discover ALL tokens on the specified chainKnown Limitation - Polygon: The Polygon chain requires explicit asset parameters. Instead of:
wallet_balance(chain="polygon") # ❌ May fail with "eth not supported"
Use:
wallet_balance(chain="polygon", asset="pol") # ✅ Check POL balance
wallet_balance(chain="polygon", asset="usdc") # ✅ Check USDC balance
For complete Polygon portfolio, use wallet_get_all_balances() which handles this correctly.
For checking balances across ALL chains in one call, use wallet_get_all_balances() instead.
wallet_get_all_balances()
This is the PRIMARY tool for comprehensive balance checks.
Automatically checks ALL supported chains (Ethereum, Base, Arbitrum, Optimism, Polygon, Linea, Solana) and returns complete portfolio with USD values.
Use this instead of calling wallet_balance() multiple times for different chains.
wallet_transactions()
wallet_transactions(chain="ethereum", asset="eth", limit=10)
wallet_transactions(limit=50)
Defaults: chain="ethereum", asset="eth", limit=20 (max 100).
Returns: list of transactions with tx_hash, from, to, amount, status, timestamp.
wallet_transfer(to="0xRecipientAddress", amount="1000000000000000000")
wallet_transfer(to="0xRecipientAddress", amount="1000000000000000000", chain_id=8453)
wallet_transfer(to="0xContractAddress", amount="0", data="0xa9059cbb000000...", chain_id=8453)
to: Target wallet or contract address (0x...)amount: Amount in wei (not ETH). "1000000000000000000" = 1 ETH. Use "0" for contract calls that don't send ETH.chain_id: Chain ID (default: 1 = Ethereum mainnet, 8453 = Base, 10 = Optimism)data: Hex-encoded calldata for contract calls (e.g. ERC-20 transfer, swap). Optional — omit for simple ETH transfers.gas_limit: Gas limit (decimal string). Optional — Privy estimates if omitted.gas_price: Gas price in wei (decimal string, for legacy transactions). Optional.max_fee_per_gas: Max fee per gas in wei (decimal string, for EIP-1559 transactions). Optional.max_priority_fee_per_gas: Max priority fee in wei (decimal string, for EIP-1559 transactions). Optional.nonce: Transaction nonce (decimal string). Optional — auto-determined if omitted.tx_type: Transaction type integer. 0=legacy, 1=EIP-2930, 2=EIP-1559, 4=EIP-7702. Optional.Policy enforcement: If a policy is enabled, transfers are gated by Privy TEE policy rules. Policy violations return an error. If no policy is attached (default), all transfers are allowed.
wallet_sign_transaction(to="0xRecipientAddress", amount="1000000000000000000")
wallet_sign_transaction(to="0xRecipientAddress", amount="1000000000000000000", chain_id=8453)
wallet_sign_transaction(to="0xContractAddress", amount="0", data="0xa9059cbb000000...", chain_id=8453, tx_type=2, max_fee_per_gas="30000000000", max_priority_fee_per_gas="2000000000")
Same parameters as wallet_transfer, plus max_fee_per_gas and max_priority_fee_per_gas for EIP-1559.
Returns: signed_transaction (RLP-encoded hex), encoding ("rlp")
Use cases: pre-sign transactions for later submission, multi-step flows, external broadcast.
wallet_sign(message="Hello World")
wallet_sign(message="Verify ownership of this wallet")
Returns: signature (EIP-191 personal_sign format)
Use cases: prove wallet ownership, sign off-chain messages, create verifiable attestations.
wallet_sign_typed_data(
domain={"name": "MyDApp", "version": "1", "chainId": 1, "verifyingContract": "0x..."},
types={"Person": [{"name": "name", "type": "string"}, {"name": "wallet", "type": "address"}]},
primaryType="Person",
message={"name": "Alice", "wallet": "0x..."}
)
domain: EIP-712 domain separator (name, version, chainId, verifyingContract)types: Type definitions — mapping of type name to array of {name, type} fieldsprimaryType: The primary type being signed (must exist in types)message: The structured data to sign (must match primaryType schema)Returns: signature (hex)
Use cases: EIP-2612 permit approvals, off-chain order signing (Seaport, 0x), gasless approvals, structured attestations.
wallet_sol_balance()
wallet_sol_balance(chain="solana", asset="sol")
All parameters are optional. Returns balances with USD-equivalent values.
wallet_sol_transactions()
wallet_sol_transactions(chain="solana", asset="sol", limit=10)
Defaults: chain="solana", asset="sol", limit=20 (max 100).
wallet_sol_transfer(transaction="<base64-encoded-transaction>")
wallet_sol_transfer(transaction="<base64-encoded-transaction>", caip2="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1")
transaction: Base64-encoded serialized Solana transactioncaip2: CAIP-2 chain identifier (default: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp" for mainnet, use "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1" for devnet)Policy enforcement: Same as EVM — if a policy is enabled, transfers are gated by Privy TEE policy rules.
wallet_sol_sign_transaction(transaction="<base64-encoded-transaction>")
transaction: Base64-encoded serialized Solana transactionReturns: signed_transaction (base64), encoding ("base64")
Use cases: pre-sign transactions for later submission, multi-step flows, external broadcast.
wallet_sol_sign(message="<base64-encoded-message>")
Returns: signature (base64)
wallet_info() — Confirm wallets are activewallet_balance(chain="ethereum") — Check available funds on specific chain (or use wallet_get_all_balances())wallet_transfer(to="0x...", amount="...") — Execute transferwallet_transactions(limit=1) — Confirm transaction statuswallet_info() — Confirm wallets are activewallet_sol_balance() — Check available SOL fundswallet_sol_transfer(transaction="...") — Sign and send transactionwallet_sol_transactions(limit=1) — Confirm transaction statuswallet_info() — See all walletswallet_get_all_balances() — Complete portfolio across ALL chains (EVM + Solana)wallet_transactions(limit=20) — Recent EVM activitywallet_sol_transactions(limit=20) — Recent Solana activitywallet_info() — Get all wallet addresseswallet_sign(message="I am the owner of this wallet at timestamp 1234567890") — EVM proofwallet_sol_sign(message="<base64-encoded-message>") — Solana proofAmounts are always in wei (smallest unit). Conversion table:
| Amount | Wei String |
|---|---|
| 0.001 ETH | "1000000000000000" |
| 0.01 ETH | "10000000000000000" |
| 0.1 ETH | "100000000000000000" |
| 1 ETH | "1000000000000000000" |
| 10 ETH | "10000000000000000000" |
Formula: wei = eth_amount * 10^18
| Chain | ID | CAIP-2 | Native Asset |
|---|---|---|---|
| Ethereum Mainnet | 1 | eip155:1 |
eth |
| Ethereum Sepolia | 11155111 | eip155:11155111 |
eth |
| Base | 8453 | eip155:8453 |
eth |
| Optimism | 10 | eip155:10 |
eth |
| Arbitrum One | 42161 | eip155:42161 |
eth |
| Polygon | 137 | eip155:137 |
pol (NOT "matic") |
| Linea | 59144 | eip155:59144 |
eth |
| Network | CAIP-2 |
|---|---|
| Solana Mainnet | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Solana Devnet | solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 |
Policy is optional and managed by the user through the frontend. The agent can propose policy rules via wallet_propose_policy, but the user must approve before they take effect.
| Error | Meaning | Action |
|---|---|---|
| "Not running on a Fly Machine" | Wallet requires Fly deployment | Cannot use wallet locally |
| "Policy violation: ..." | Transfer rejected by Privy policy | Check whitelist and daily limits |
| "HTTP 404" | Wallet not found for this machine | Wallet may not be created yet |
| "HTTP 403" | OIDC token invalid or expired | Token will auto-refresh, retry |
Make data-driven prioritization decisions faster
Draft PRDs, status updates, and stakeholder presentations
Example
Create executive summary of Q3 roadmap, monthly progress report, feature launch announcement
Save 3-5 hours/week on communication overhead
Prerequisites
Time Estimate
30-60 minutes to see productivity improvements
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.
✗ Avoid when
Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.
mattpocock/skills
parcadei/continuous-claude-v3
cursor/plugins
ailabs-393/ai-labs-claude-skills
ailabs-393/ai-labs-claude-skills
pproenca/dot-skills
Useful defaults in wallet — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
We added wallet from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
wallet has been reliable in day-to-day use. Documentation quality is above average for community skills.
I recommend wallet for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
Useful defaults in wallet — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
Solid pick for teams standardizing on skills: wallet is focused, and the summary matches what you get after install.
We added wallet from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
wallet reduced setup friction for our internal harness; good balance of opinion and flexibility.
Registry listing for wallet matched our evaluation — installs cleanly and behaves as described in the markdown.
wallet is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
showing 1-10 of 31