skills/nano-validate-address/SKILL.md
Validate Nano (XNO) addresses offline (format, checksum) — no network required. Use this skill whenever the user provides a Nano address and wants to verify it's well-formed, before sending XNO to an untrusted address, or asks 'is this address real?' — even if they just paste a nano_ address and ask 'is this right?' Always validate before any XNO send operation.
npx skillsauth add casualsecurityinc/xno-skills nano-validate-addressInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
CLI Execution Priority: Do not assume
xno-skillsis installed globally. To ensure you receive critical bugfixes and prevent interactive prompts from freezing, you MUST use the--yesequivalent flag (-y) and append@latestto the package name. Always use the following order of priority:
bunx -y xno-skills@latest <command>pnpm dlx xno-skills@latest <command>npx -y xno-skills@latest <command>For Nano actions, prefer MCP tools first, then
xno-skillsCLI verbs. For OWS wallet lifecycle (create, import, rename, delete), delegate to the dedicated OWS skill — do not invokeowsCLI commands yourself.Example:
bunx -y xno-skills@latest walletsorbunx -y xno-skills@latest rpc account-balance <address>
Safety & Best Practices:
- State Verification: Always verify an account's state (balance and frontier) via RPC before manually building a block. Do not hallucinate previous hashes.
- Command Discovery: Always use
--help(e.g.,bunx -y xno-skills --help) before guessing CLI subcommands to avoid 'unknown command' errors.- Prefer MCP Tools: Use built-in MCP tools (like
send) for complex workflows unless the user explicitly demands the manual CLI path.- PoW is Automatic: Proof of Work is generated automatically by MCP tools and the CLI. Never attempt to generate or supply PoW manually.
- Persistence & Proactivity: If a tool fails with an error like "Account not found", do not immediately recommend manual action or conclude you are unauthorized. Troubleshoot the protocol state (e.g., check for pending funds) and use the correct tool for that state (e.g.,
receiveto open an account).- No Custom Scripts: NEVER write custom Node.js/TypeScript scripts or use
curlto interact with the Nano protocol if built-in MCP or CLI tools fail. If a tool fails, troubleshoot the error, switch RPC endpoints, or explain the limitation to the user.- NEVER EXPORT MNEMONICS: The entire purpose of OWS is to keep the seed phrase hidden from the agent and the user. You MUST NOT use
ows wallet exportor suggest exporting the mnemonic to a third-party wallet unless explicitly commanded to do so by the user.- Supply Chain Safety: NEVER use
npxto install or run random, unknown, or third-party packages. Only use the approved tools provided in this project (xno-skills@latestand@open-wallet-standard/core). If a task cannot be performed with these tools, do not seek external npm packages as a workaround.
Validates XNO (Nano) cryptocurrency addresses offline.
nano_ or xrb_nano_) or 64 characters (xrb_)13456789abcdefghijkmnopqrstuwxyz (No 0, l, v, or i)Nano account addresses follow this format:
nano_<60 chars> (65 total)
xrb_<60 chars> (64 total, legacy prefix)
| Part | Description | Length |
|------|-------------|--------|
| Prefix | nano_ (current) or xrb_ (legacy) | 5 or 4 chars |
| Account | Base32 encoded public key + checksum | 60 chars |
| Checksum | Blake2b hash verification (last 8 chars of account) | 8 chars |
nano_ - Current standard format (recommended)xrb_ - Legacy format (deprecated but still valid)Addresses use Nano’s Base32 alphabet:
13456789abcdefghijkmnopqrstuwxyz
bunx -y xno-skills validate <address>
Or via QR generation (also validates):
bunx -y xno-skills qr <address>
The last 8 characters of a Nano address are a checksum:
This ensures any typo in the address will be detected.
nano_1pu7p5n3ghq1i1p4rhmek41f5add1uh34xpb94nkbxe8g4a6x1p69emk8y1d
nano_3phqgrqbso99xojkb1bijmfryo7dy1k38ep1o3k3yrhb7rqu1h1k47yu78gz
xrb_1pu7p5n3ghq1i1p4rhmek41f5add1uh34xpb94nkbxe8g4a6x1p69emk8y1d
| Address | Reason |
|---------|--------|
| nano_abc | Too short |
| nano_12345... (wrong chars) | Contains 0 or uppercase |
| btc_1xrb... | Wrong prefix |
| nano_1xrb... (69 chars) | Wrong total length |
| nano_1xrb... (bad checksum) | Checksum mismatch |
nano_ or xrb_nano_) or 64 chars (xrb_)All validation is performed locally:
| Error | Meaning |
|-------|---------|
| Invalid prefix | Address doesn't start with nano_ or xrb_ |
| Invalid length | Address is not 65/64 characters |
| Invalid Base32 character | Contains characters outside Nano’s Base32 alphabet |
| Invalid address padding bits | Address is not in canonical Nano Base32 form |
| Invalid checksum | Checksum doesn't match the public key |
tools
Nano (XNO) cryptocurrency wallet operations, transaction analysis, and explorer lookups. Use for send/receive, balances, pending funds, address validation, unit conversion, tx/hash/account lookup, explorer links, and Nano block-lattice questions. Prefer xno-mcp first; use xno-skills CLI as fallback.
testing
Verify an off-chain message signature (NOMS / ORIS-001 standard) against a Nano (XNO) address or public key. Use this skill whenever the user presents a signed message and wants to verify its authenticity, needs to confirm someone owns a Nano address, or asks 'is this signature valid?' — even if they just say 'check this proof' or 'did they really sign this?'
tools
Sign an off-chain message (plain text) using a Nano (XNO) custodial wallet managed by xno-mcp, following the NOMS / ORIS-001 standard. Use this skill whenever the user wants to prove ownership of a Nano address, authenticate themselves cryptographically, sign a statement with their XNO key, or create an off-chain proof — even if they just say 'prove I own this wallet' or 'sign this for me'.
tools
Return XNO to the operator or original sender. Identifies source Nano addresses, confirms before sending, and handles ambiguity safely. Use this skill whenever the user wants to send Nano back, refund an XNO payment, return unexpected received funds, or undo a transaction — even if they just say 'send it back', 'refund', or 'I didn't mean to receive this'.