$npx -y skills add basezh/agent-skills-on-base --skill send-usdcSend USDC to an Ethereum address or ENS name. Use when you or the user want to send money, pay someone, transfer USDC, tip, donate, or send funds to a wallet address or .eth name. Covers phrases like "send $5 to", "pay 0x...", or "transfer to vitalik.eth".
| 1 | # Sending USDC |
| 2 | |
| 3 | Use the `npx awal@2.0.3 send` command to transfer USDC from the wallet to any Ethereum address or ENS name on Base. |
| 4 | |
| 5 | ## Confirm wallet is initialized and authed |
| 6 | |
| 7 | ```bash |
| 8 | npx awal@2.0.3 status |
| 9 | ``` |
| 10 | |
| 11 | If the wallet is not authenticated, refer to the `authenticate-wallet` skill. |
| 12 | |
| 13 | ## Command Syntax |
| 14 | |
| 15 | ```bash |
| 16 | npx awal@2.0.3 send <amount> <recipient> [--chain <chain>] [--json] |
| 17 | ``` |
| 18 | |
| 19 | ## Arguments |
| 20 | |
| 21 | | Argument | Description | |
| 22 | | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |
| 23 | | `amount` | Amount to send: '$1.00', '1.00', or atomic units (1000000 = $1). Always single-quote amounts that use `$` to prevent bash variable expansion. If the number looks like atomic units (no decimal or > 100), treat as atomic units. Assume that people won't be sending more than 100 USDC the majority of the time | |
| 24 | | `recipient` | Ethereum address (0x...) or ENS name (vitalik.eth) | |
| 25 | |
| 26 | ## Options |
| 27 | |
| 28 | | Option | Description | |
| 29 | | ---------------- | ---------------------------------- | |
| 30 | | `--chain <name>` | Blockchain network (default: base) | |
| 31 | | `--json` | Output result as JSON | |
| 32 | |
| 33 | ## Input Validation |
| 34 | |
| 35 | Before constructing the command, validate all user-provided values to prevent shell injection: |
| 36 | |
| 37 | - **amount**: Must match `^\$?[\d.]+$` (digits, optional decimal point, optional `$` prefix). Reject if it contains spaces, semicolons, pipes, backticks, or other shell metacharacters. |
| 38 | - **recipient**: Must be a valid `0x` hex address (`^0x[0-9a-fA-F]{40}$`) or an ENS name (`^[a-zA-Z0-9.-]+\.eth$`). Reject any value containing spaces or shell metacharacters. |
| 39 | |
| 40 | Do not pass unvalidated user input into the command. |
| 41 | |
| 42 | ## Examples |
| 43 | |
| 44 | ```bash |
| 45 | # Send $1.00 USDC to an address |
| 46 | npx awal@2.0.3 send 1 0x1234...abcd |
| 47 | |
| 48 | # Send $0.50 USDC to an ENS name |
| 49 | npx awal@2.0.3 send 0.50 vitalik.eth |
| 50 | |
| 51 | # Send with dollar sign prefix (note the single quotes) |
| 52 | npx awal@2.0.3 send '$5.00' 0x1234...abcd |
| 53 | |
| 54 | # Get JSON output |
| 55 | npx awal@2.0.3 send 1 vitalik.eth --json |
| 56 | ``` |
| 57 | |
| 58 | ## ENS Resolution |
| 59 | |
| 60 | ENS names are automatically resolved to addresses via Ethereum mainnet. The command will: |
| 61 | |
| 62 | 1. Detect ENS names (any string containing a dot that isn't a hex address) |
| 63 | 2. Resolve the name to an address |
| 64 | 3. Display both the ENS name and resolved address in the output |
| 65 | |
| 66 | ## Prerequisites |
| 67 | |
| 68 | - Must be authenticated (`npx awal@2.0.3 status` to check, `npx awal@2.0.3 auth login` to sign in, see skill `authenticate-wallet` for more information) |
| 69 | - Wallet must have sufficient USDC balance (`npx awal balance` to check) |
| 70 | |
| 71 | ## Error Handling |
| 72 | |
| 73 | Common errors: |
| 74 | |
| 75 | - "Not authenticated" - Run `awal auth login <email>` first |
| 76 | - "Insufficient balance" - Check balance with `awal balance` |
| 77 | - "Could not resolve ENS name" - Verify the ENS name exists |
| 78 | - "Invalid recipient" - Must be valid 0x address or ENS name |