Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Manage on-chain EVM and Solana wallets: balances, transfers, message signing, and transaction history via Privy Server Wallets.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
SKILL.md
1---2name: wallet3description: Send transactions on Monad testnet or mainnet using Agent wallet, the transactions could be for smart contract deployment, onchain actions like swapping or smart contract calls and signing messages4---56## ⚠️ CRITICAL: Safe Multisig Required - No Exceptions78Any transaction other than deploying a Safe multisig must be proposed to the user via the deployed multisig.910For instructions on how to create and use a Safe multisig check out the SAFE_WALLET_MANAGEMENT.md file in utils folder.1112**When proposing transactions:** Always invoke the `propose.sh` wrapper from the utils folder (it boots `propose.mjs` with cached deps) — never write a custom script. After it runs, do NOT add your own summary, status message, or reformat the output. The script output contains a QR code that the user must see exactly as printed. Your only follow-up should be asking the user to approve the transaction and provide the transaction hash.1314**Security rules:**15- NEVER ask for user's private key (critical violation)16- Use the agent wallet (encrypted keystore at `~/.monskills/keystore`)17- NEVER export or store private keys in plaintext1819Check if the agent has generated a wallet before. If the keystore directory `~/.monskills/keystore` exists and contains a keystore file, the wallet already exists.2021If not found then create a wallet.2223## Creating a wallet2425Foundry is required to be installed, in order to generate a wallet.2627### Check if foundry is installed2829Use the following command to check if Foundry is installed.3031```bash32foundryup --version33```3435The instructions to install Foundry can be found here: https://www.getfoundry.sh/introduction/installation3637## Generating a new wallet38391. Create the keystore directory and generate an encrypted keystore:4041```bash42mkdir -p ~/.monskills/keystore && cast wallet new ~/.monskills/keystore --unsafe-password ""43```4445This creates an encrypted keystore file in `~/.monskills/keystore/`. The private key is never stored in plaintext.46472. Note the address from the output. To retrieve the address later:4849```bash50cast wallet list --dir ~/.monskills/keystore51```52533. Inform the user where the wallet keystore is stored (`~/.monskills/keystore/`).544. Fund the wallet on Monad testnet via faucet before deployment.5556## Decrypting the private key for scripts5758When a script needs the private key (e.g. as an env var), decrypt it on-the-fly. `cast wallet decrypt-keystore` prints `<uuid>'s private key is: 0x...` — pipe through `awk '{print $NF}'` to keep just the hex key, otherwise Foundry commands reject the prefixed string with "Failed to decode private key":5960```bash61cast wallet decrypt-keystore --keystore-dir ~/.monskills/keystore <KEYSTORE_FILENAME> --unsafe-password "" | awk '{print $NF}'62```6364Replace `<KEYSTORE_FILENAME>` with the filename of the keystore file in `~/.monskills/keystore/` (without the directory path).6566**Why this matters:** Users need access to their wallet to:67- Deploy additional contracts68- Interact with deployed contracts69- Manage funds70- Verify ownership