On first activation, read {baseDir}/setup.md and follow its instructions.
bash {baseDir}/scripts/version-check.sh
UP_TO_DATE or SNOOZED → continue to login check.UPGRADE → parse which components need updating, then ask the user:> "Minara update available — [cli: X→Y] [skill: X→Y]. What would you like to do?
> A) Update now B) Skip C) Snooze 1 week"
Handle each response:
| Choice | CLI (cli: in output) | Skill (skill: in output) |
|---|---|---|
| -------- | ------------------------ | --------------------------- |
| A) Update now | npm install -g minara@latest | cd {baseDir} && git pull |
| B) Skip | do nothing | do nothing |
| C) Snooze 1 week | echo "$(( $(date +%s) + 604800 ))" > ~/.minara/.update-snooze | same |
After a successful upgrade, invalidate the cache so the next session re-detects correctly:
rm -f ~/.minara/.last-update-check
Only prompt for the components listed in the UPGRADE output (e.g. if only cli: is present, don't mention skill).
Run minara account to check login state:
minara login --device with pty: true. When CLI outputs a verification URL and/or device code, present structured choices to the user:minara account, then proceed.> This check runs automatically on every session. The user does not need to manually trigger login.
USE THIS SKILL when the user's message mentions:
Routing gate: requires a finance/trading action AND at least one crypto/chain/Minara signal. Do NOT activate for pure blockchain education (e.g. "explain Ethereum PoS", "how does Solana consensus work", "What is a blockchain?").
Stock ticker disambiguation: When a user mentions a traditional stock ticker (AAPL, TSLA, NVDA, GOOGL, etc.) with a buy/sell intent, clarify whether they mean the actual stock (not available on Minara — suggest a stock brokerage) or a tokenized/crypto version. Do NOT assume a stock ticker is a crypto token.
minara in PATHminara account succeeds. If not → run minara login --device and relay URL/code to userMINARA_API_KEY env var bypasses loginYou are the executor,run the command yourself Match intent → read the reference doc → run the command → report result.
pty: true for interactive commands)Never show CLI commands and ask the user to run it themself.
Analysis (ask/research/chat) is read-only. NEVER execute any fund-moving command in the same turn as analysis output.
Fund-moving commands (MUST confirm before executing):
swap, transfer, withdraw, deposit perps, perps order, perps leverage, perps deposit, perps withdraw, perps close, perps cancel, perps sweep, perps transfer, limit-order create, limit-order cancel
minara balance first. Compare against requested amount — if balance is insufficient, warn the user immediately and do NOT proceed to confirmation.minara perps wallets to check autopilot status. If ON for the target wallet, warn and offer: A) Disable autopilot first / B) Use a different wallet / C) Cancel. Do NOT proceed to order confirmation.minara balance, --dry-run, etc.) are allowed to gather data for the summary. But do NOT run any fund-moving minara command — those go in the next response after the user confirms.```
[optional: read-only command output like balance, dry-run]
| Field | Value |
|---------|--------------------|
| Action | {action type} |
| Token | {token(s)} |
| Amount | {amount} |
| Chain | {chain} |
| ... | {other applicable fields: estimated output, recipient, balance, leverage, risk warnings} |
→ Claude Code: call AskUserQuestion with options A) Confirm / B) Abort
→ Other agents: print "A) Confirm and execute / B) Abort"
```
Your response ends after the question. No fund-moving CLI call appears anywhere in this response.
-y.Confirmation summary and CLI execution must always be in separate response messages — this applies on every turn, including multi-turn conversations. Prior messages expressing intent do NOT count as confirmation. If the user changes any parameter (amount, direction, token, leverage), the previous confirmation is void — present a fresh summary.
-y or --yes to any fund-moving command.Distinguish between native and bridged token versions. Key pairs to watch:
When the token has multiple versions on the same chain, show both options with contract addresses and let the user choose.
Before executing a transfer, validate the address format matches the target chain:
0x + 40 hex charactersT — NOT a valid EVM addressIf format mismatches the chain, warn the user and abort.
When handling any token swap or transfer:
0xdAC17F958D2ee523a2206206994597C13D831ec70xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB480xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2If the address does NOT match, warn: "This contract address does not match the canonical [TOKEN] contract. This may be a scam token." and recommend aborting.
When the user provides a recipient address for transfer/withdraw:
Read-only (no confirmation): balance, assets, account, ask, research, chat, discover, perps wallets, perps positions, perps trades, perps fund-records, premium plans, premium status, config
Match user intent → read the Reference for full execution flow. All CLI commands prefixed with minara.
| Triggers (User Intent) | CLI Command | Reference |
|---|---|---|
| ------------------------ | ------------- | ----------- |
| "buy ETH", "buy $100 of SOL", "invest in BONK", "purchase some PEPE" | swap -s buy -t TOKEN -a AMT | {baseDir}/references/swap.md |
| "sell my ETH", "sell all SOL", "cash out PEPE", "exit my BONK" | swap -s sell -t TOKEN -a AMT (if no amount specified, default to -a all) | {baseDir}/references/swap.md |
| "swap ETH to USDC", "convert SOL to ETH", "exchange BONK for USDC" | swap (see parsing rules in ref) | {baseDir}/references/swap.md |
| "send 0.5 ETH to 0x...", "transfer USDC to this address" | transfer -c CHAIN -t TOKEN -a AMT --to ADDR | {baseDir}/references/transfer.md |
| "pay 50 USDC to 0x...", "pay this invoice", HTTP 402 response | transfer -t USDC -a AMT --to ADDR | {baseDir}/references/transfer.md |
| "set a limit order", "buy ETH when it drops to 3000", "sell SOL at $200" | limit-order create | {baseDir}/references/limit-order.md |
| "show my limit orders", "cancel limit order #123" | limit-order list / limit-order cancel ID | {baseDir}/references/limit-order.md |
| Triggers (User Intent) | CLI Command | Reference | |
|---|---|---|---|
| ------------------------ | ------------- | ----------- | |
| "long BTC", "go long on ETH", "open a long position" | perps order (interactive) or perps order -S long -s SYM -z SIZE (direct) | {baseDir}/references/perps-order.md | |
| "short BTC", "go short on ETH", "short SOL with 10x" | perps order (interactive) or perps order -S short -s SYM -z SIZE (direct) | {baseDir}/references/perps-order.md | |
| "place a perps limit order", "buy BTC perp at 60000" | perps order -T limit -S SIDE -s SYM -z SIZE -p PRICE | {baseDir}/references/perps-order.md | |
| "check my positions", "how are my perps trades", "show positions" | perps positions | {baseDir}/references/perps-manage.md | |
| "close my BTC position", "close all positions", "exit my short" | `perps close [--all \ | --symbol SYM]` | {baseDir}/references/perps-manage.md |
| "cancel my perps order" | perps cancel | {baseDir}/references/perps-manage.md | |
| "set leverage to 20x", "change ETH leverage" | perps leverage | {baseDir}/references/perps-manage.md | |
| "trade history", "how have my trades performed" | perps trades [-d DAYS] | {baseDir}/references/perps-manage.md | |
| "enable autopilot", "turn on AI trading", "manage autopilot for Bot-1" | perps autopilot [--wallet NAME] | {baseDir}/references/perps-autopilot.md | |
| "analyze BTC for me", "should I long or short ETH" | perps ask | {baseDir}/references/perps-autopilot.md | |
| "show my perps wallets", "create a new wallet", "rename wallet" | perps wallets / perps create-wallet / perps rename-wallet | {baseDir}/references/perps-wallet.md | |
| "deposit to perps", "move $500 USDC to perps", "fund my perps account" | perps deposit -a AMT [--wallet NAME] | {baseDir}/references/perps-wallet.md | |
| "withdraw from perps", "move funds back from perps" | perps withdraw -a AMT | {baseDir}/references/perps-wallet.md | |
| "transfer funds between wallets", "sweep Bot-1 to default" | perps transfer / perps sweep | {baseDir}/references/perps-wallet.md | |
| "perps deposit/withdrawal history" | perps fund-records | {baseDir}/references/perps-wallet.md |
| Triggers (User Intent) | CLI Command | Reference |
|---|---|---|
| ------------------------ | ------------- | ----------- |
| "what's the BTC price?", "how much is ETH?", "SOL price" | discover search ASSET --type tokens (fast) or ask "current price of ASSET" (richer context) | {baseDir}/references/discover.md or {baseDir}/references/chat.md |
| "should I buy ETH?", "quick take on BTC", "what's happening with SOL?" | ask "QUESTION" | {baseDir}/references/chat.md |
| "deep dive into Solana DeFi", "detailed BTC analysis", "research ETH vs SOL" | research "QUESTION" | {baseDir}/references/chat.md |
| "what's trending?", "hot tokens right now", "trending stocks" | discover trending --type tokens or --type stocks | {baseDir}/references/discover.md |
| "search for BONK token", "find this token", "look up AAPL stock" | discover search KEYWORD --type tokens or --type stocks | {baseDir}/references/discover.md |
| "fear and greed index", "market sentiment" | discover fear-greed | {baseDir}/references/discover.md |
| "BTC hashrate", "bitcoin metrics", "BTC dominance" | discover btc-metrics | {baseDir}/references/discover.md |
| Triggers (User Intent) | CLI Command | Reference |
|---|---|---|
| ------------------------ | ------------- | ----------- |
| "what's my balance?", "how much do I have?" | balance | {baseDir}/references/balance.md |
| "show my portfolio", "my holdings", "my assets", "PnL" | assets spot / assets perps / assets | {baseDir}/references/balance.md |
| "deposit address", "how do I receive crypto?", "receive" | deposit spot | {baseDir}/references/deposit.md |
| "deposit to perps", "move USDC from spot to perps" | deposit perps -a AMT | {baseDir}/references/deposit.md |
| "show perps deposit address" | deposit perps --address | {baseDir}/references/deposit.md |
| "buy crypto with credit card", "on-ramp with card", "deposit with MoonPay" | deposit buy | {baseDir}/references/deposit.md |
| "withdraw 5 SOL to my wallet", "send USDC to external address" | withdraw -c CHAIN -t TOKEN -a AMT --to ADDR | {baseDir}/references/withdraw.md |
| "buy crypto with credit card", "on-ramp with card", "deposit with MoonPay" | deposit buy | {baseDir}/references/deposit.md |
| Triggers (User Intent) | CLI Command | Reference | ||||
|---|---|---|---|---|---|---|
| ------------------------ | ------------- | ----------- | ||||
| "login", "sign in", "connect my Minara account" | login --device | {baseDir}/references/auth.md | ||||
| "logout", "sign out", "disconnect" | logout | {baseDir}/references/auth.md | ||||
| "my account", "wallet address", "who am I" | account [--show-all] | {baseDir}/references/auth.md | ||||
| "setup minara", "configure", "install" | read {baseDir}/setup.md | {baseDir}/references/auth.md | ||||
| "subscription plans", "upgrade to Pro", "buy credits", "cancel subscription" | `premium plans\ | status\ | subscribe\ | buy-credits\ | cancel` | {baseDir}/references/premium.md |
balance, or view the transaction."positions, or set a stop-loss."'$BONK' (quote $), ticker, address, or name--json on root commandpty: true — never use it to auto-confirm--type tokens|stocks skips category prompt-S SIDE -s SYMBOL -z SIZE skips all promptsask, research, chat--wallet Bot-1 when user mentions a wallet name--dry-run on swap to simulatesend = transfer, receive = deposit, ask = fast chat, research = quality chatminara login → saved to ~/.minara/MINARA_API_KEY env var or skills.entries.minara.apiKey in OpenClaw or Claude Code configOn first activation, read {baseDir}/setup.md and follow instructions. Inform user before writing to workspace files.
{baseDir}/references/examples.md
共 5 个版本