[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H340DXTMA77MXCJ4GYKAR2":3,"skill-same:01M6H340DXTMA77MXCJ4GYKAR2":94},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6H340DXTMA77MXCJ4GYKAR2","MetaMask Agent Wallet",null,"Control a sandboxed MetaMask browser extension wallet for autonomous blockchain transactions. Features configurable permission guardrails including spend limits, chain allowlists, protocol restrictions, and approval thresholds. MetaMask-only (other wallets not supported).","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",81,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-agent-wallet\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,5,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"Agent Wallet","Wallet","metamask","limits","automation","features","for","wallets","browser extension","thresholds","chain","permission","only","autonomous","transactions","Guardrails","web3","defi","blockchain","ethereum","browser","2026-11-10 10:12:30",false,"---\nname: MetaMask Agent Wallet\ndescription: Control a sandboxed MetaMask browser extension wallet for autonomous blockchain transactions. Features configurable permission guardrails including spend limits, chain allowlists, protocol restrictions, and approval thresholds. MetaMask-only (other wallets not supported).\ntags:\n  - crypto\n  - metamask\n  - wallet\n  - ethereum\n  - defi\n  - web3\n  - blockchain\n  - automation\n  - browser\n---\n\n# MetaMask Agent Wallet Skill\n\nControls a sandboxed MetaMask wallet for autonomous blockchain transactions with configurable permission guardrails.\n\n## Overview\n\nThis skill allows AI agents to interact with dapps and execute transactions through a dedicated MetaMask wallet. All operations are subject to user-defined constraints (spend limits, protocol allowlists, approval thresholds).\n\n**Security Model:** The agent controls a *separate* wallet in an isolated browser profile. Never use your main wallet.\n\n## Setup\n\n### 1. Install Dependencies\n\n```bash\ncd metamask-agent-skill\nnpm install\nnpx playwright install chromium\n```\n\n### 2. Create Agent Wallet Profile\n\n```bash\nnpm run setup\n```\n\nThis will:\n- Create a fresh Chrome profile at `~\u002F.agent-wallet\u002Fchrome-profile`\n- Install MetaMask extension\n- Guide you through wallet creation (use a NEW seed phrase)\n\n### 3. Fund the Wallet\n\nTransfer a small amount to your agent wallet:\n- ETH for gas (0.01-0.05 ETH recommended)\n- Tokens for operations (start small, e.g., $50 USDC)\n\n### 4. Configure Permissions\n\nEdit `permissions.json` to set your constraints:\n\n```json\n{\n  \"constraints\": {\n    \"spendLimit\": {\n      \"daily\": \"50000000\",    \u002F\u002F $50 in 6-decimal format\n      \"perTx\": \"10000000\"     \u002F\u002F $10 max per transaction\n    },\n    \"allowedChains\": [1, 137, 42161],\n    \"allowedProtocols\": [\"0x...uniswap\", \"0x...1inch\"]\n  }\n}\n```\n\n## Available Actions\n\n### Connect to Dapp\n```\nconnect \u003Cdapp-url>\n```\nNavigates to dapp and connects the agent wallet.\n\n**Example:** `connect https:\u002F\u002Fapp.uniswap.org`\n\n### Execute Swap\n```\nswap \u003Camount> \u003Ctoken-in> for \u003Ctoken-out> [on \u003Cdex>]\n```\nExecutes a token swap on an allowed DEX.\n\n**Example:** `swap 0.01 ETH for USDC on uniswap`\n\n### Send Tokens\n```\nsend \u003Camount> \u003Ctoken> to \u003Caddress>\n```\nSends tokens to an address (within spend limits).\n\n**Example:** `send 10 USDC to 0x1234...`\n\n### Sign Message\n```\nsign \u003Cmessage>\n```\nSigns an arbitrary message. Use with caution.\n\n### Check Balance\n```\nbalance [token]\n```\nReturns wallet balances.\n\n### View Transaction History\n```\nhistory [count]\n```\nShows recent agent transactions with outcomes.\n\n## Constraints\n\nAll operations check against `permissions.json` before execution:\n\n| Constraint | Description |\n|------------|-------------|\n| `spendLimit.daily` | Max USD value per 24h period |\n| `spendLimit.perTx` | Max USD value per transaction |\n| `allowedChains` | Whitelisted chain IDs |\n| `allowedProtocols` | Whitelisted contract addresses |\n| `blockedMethods` | Forbidden function selectors |\n| `requireApproval.above` | Threshold requiring user confirmation |\n\n### Approval Flow\n\nWhen a transaction exceeds `requireApproval.above`:\n1. Agent pauses execution\n2. Transaction details are logged\n3. Agent reports: \"Transaction requires approval: [details]\"\n4. User must explicitly approve before agent continues\n\n## Safety\n\n- **Isolated Profile:** Agent uses separate Chrome profile, never your main browser\n- **Separate Wallet:** Agent wallet is completely separate from your main wallet  \n- **Spend Caps:** Hard limits prevent runaway spending\n- **Protocol Allowlist:** Only whitelisted contracts can be called\n- **Full Logging:** Every transaction intent and outcome is logged\n- **Revocation:** Set `\"revoked\": true` in permissions.json to disable all actions\n\n## Logging\n\nAll transactions are logged to `~\u002F.agent-wallet\u002Flogs\u002F`:\n\n```json\n{\n  \"timestamp\": 1706900000000,\n  \"action\": \"swap\",\n  \"intent\": { \"to\": \"0x...\", \"value\": \"0\", \"data\": \"0x...\" },\n  \"guardResult\": { \"allowed\": true },\n  \"outcome\": \"confirmed\",\n  \"txHash\": \"0x...\"\n}\n```\n\nUse `history` command to view recent transactions.\n\n## Troubleshooting\n\n### \"Protocol not allowed\"\nAdd the contract address to `allowedProtocols` in permissions.json.\n\n### \"Exceeds daily limit\"\nWait 24h or increase `spendLimit.daily`.\n\n### MetaMask popup not detected\nEnsure the browser profile path is correct and MetaMask is installed.\n\n### Transaction simulation failed\nThe dapp may be trying to call a blocked method or unsupported chain.\n\n## Architecture\n\n```\nsrc\u002F\n├── index.ts          # Main entry point\n├── browser.ts        # Playwright browser management\n├── wallet.ts         # MetaMask interaction primitives\n├── guard.ts          # Permission enforcement\n├── logger.ts         # Transaction logging\n├── price.ts          # USD price estimation\n├── types.ts          # TypeScript types\n└── config.ts         # Configuration loading\n```\n\n## Integration with Gator\n\nWhen Gator accounts are available, permissions.json can be replaced with on-chain permission attestations. The guard will validate against Gator's permission registry instead of local config.\n","# MetaMask Agent Wallet Skill\n\nControls a sandboxed MetaMask wallet for autonomous blockchain transactions with configurable permission guardrails.\n\n## Overview\n\nThis skill allows AI agents to interact with dapps and execute transactions through a dedicated MetaMask wallet. All operations are subject to user-defined constraints (spend limits, protocol allowlists, approval thresholds).\n\n**Security Model:** The agent controls a *separate* wallet in an isolated browser profile. Never use your main wallet.\n\n## Setup\n\n### 1. Install Dependencies\n\n```bash\ncd metamask-agent-skill\nnpm install\nnpx playwright install chromium\n```\n\n### 2. Create Agent Wallet Profile\n\n```bash\nnpm run setup\n```\n\nThis will:\n- Create a fresh Chrome profile at `~\u002F.agent-wallet\u002Fchrome-profile`\n- Install MetaMask extension\n- Guide you through wallet creation (use a NEW seed phrase)\n\n### 3. Fund the Wallet\n\nTransfer a small amount to your agent wallet:\n- ETH for gas (0.01-0.05 ETH recommended)\n- Tokens for operations (start small, e.g., $50 USDC)\n\n### 4. Configure Permissions\n\nEdit `permissions.json` to set your constraints:\n\n```json\n{\n  \"constraints\": {\n    \"spendLimit\": {\n      \"daily\": \"50000000\",    \u002F\u002F $50 in 6-decimal format\n      \"perTx\": \"10000000\"     \u002F\u002F $10 max per transaction\n    },\n    \"allowedChains\": [1, 137, 42161],\n    \"allowedProtocols\": [\"0x...uniswap\", \"0x...1inch\"]\n  }\n}\n```\n\n## Available Actions\n\n### Connect to Dapp\n```\nconnect \u003Cdapp-url>\n```\nNavigates to dapp and connects the agent wallet.\n\n**Example:** `connect https:\u002F\u002Fapp.uniswap.org`\n\n### Execute Swap\n```\nswap \u003Camount> \u003Ctoken-in> for \u003Ctoken-out> [on \u003Cdex>]\n```\nExecutes a token swap on an allowed DEX.\n\n**Example:** `swap 0.01 ETH for USDC on uniswap`\n\n### Send Tokens\n```\nsend \u003Camount> \u003Ctoken> to \u003Caddress>\n```\nSends tokens to an address (within spend limits).\n\n**Example:** `send 10 USDC to 0x1234...`\n\n### Sign Message\n```\nsign \u003Cmessage>\n```\nSigns an arbitrary message. Use with caution.\n\n### Check Balance\n```\nbalance [token]\n```\nReturns wallet balances.\n\n### View Transaction History\n```\nhistory [count]\n```\nShows recent agent transactions with outcomes.\n\n## Constraints\n\nAll operations check against `permissions.json` before execution:\n\n| Constraint | Description |\n|------------|-------------|\n| `spendLimit.daily` | Max USD value per 24h period |\n| `spendLimit.perTx` | Max USD value per transaction |\n| `allowedChains` | Whitelisted chain IDs |\n| `allowedProtocols` | Whitelisted contract addresses |\n| `blockedMethods` | Forbidden function selectors |\n| `requireApproval.above` | Threshold requiring user confirmation |\n\n### Approval Flow\n\nWhen a transaction exceeds `requireApproval.above`:\n1. Agent pauses execution\n2. Transaction details are logged\n3. Agent reports: \"Transaction requires approval: [details]\"\n4. User must explicitly approve before agent continues\n\n## Safety\n\n- **Isolated Profile:** Agent uses separate Chrome profile, never your main browser\n- **Separate Wallet:** Agent wallet is completely separate from your main wallet  \n- **Spend Caps:** Hard limits prevent runaway spending\n- **Protocol Allowlist:** Only whitelisted contracts can be called\n- **Full Logging:** Every transaction intent and outcome is logged\n- **Revocation:** Set `\"revoked\": true` in permissions.json to disable all actions\n\n## Logging\n\nAll transactions are logged to `~\u002F.agent-wallet\u002Flogs\u002F`:\n\n```json\n{\n  \"timestamp\": 1706900000000,\n  \"action\": \"swap\",\n  \"intent\": { \"to\": \"0x...\", \"value\": \"0\", \"data\": \"0x...\" },\n  \"guardResult\": { \"allowed\": true },\n  \"outcome\": \"confirmed\",\n  \"txHash\": \"0x...\"\n}\n```\n\nUse `history` command to view recent transactions.\n\n## Troubleshooting\n\n### \"Protocol not allowed\"\nAdd the contract address to `allowedProtocols` in permissions.json.\n\n### \"Exceeds daily limit\"\nWait 24h or increase `spendLimit.daily`.\n\n### MetaMask popup not detected\nEnsure the browser profile path is correct and MetaMask is installed.\n\n### Transaction simulation failed\nThe dapp may be trying to call a blocked method or unsupported chain.\n\n## Architecture\n\n```\nsrc\u002F\n├── index.ts          # Main entry point\n├── browser.ts        # Playwright browser management\n├── wallet.ts         # MetaMask interaction primitives\n├── guard.ts          # Permission enforcement\n├── logger.ts         # Transaction logging\n├── price.ts          # USD price estimation\n├── types.ts          # TypeScript types\n└── config.ts         # Configuration loading\n```\n\n## Integration with Gator\n\nWhen Gator accounts are available, permissions.json can be replaced with on-chain permission attestations. The guard will validate against Gator's permission registry instead of local config.\n",{"name":5,"tags":50,"description":7},[51,26,52,43,41,40,42,28,44],"crypto","wallet","main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fwallets\u002Fmetamask-agent-wallet",17,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia","https:\u002F\u002Feth2030.com","Hardcore infra. Building @alt-research and applied cryptography.","2026-11-13 02:31:19",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill \"MetaMask Agent Wallet\"",{"tool":68,"command":69},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill \"MetaMask Agent Wallet\"",{"tool":71,"command":72},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill \"MetaMask Agent Wallet\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-agent-wallet\u002FSKILL.md",true,[76,82,86,90],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"_meta.json","REFERENCE","参考文档",146,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-agent-wallet\u002F_meta.json",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"skill-card.md",2238,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-agent-wallet\u002Fskill-card.md",{"path":87,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":88,"sourceHtmlUrl":89},"SOURCE.md",278,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-agent-wallet\u002FSOURCE.md",{"path":91,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":92,"sourceHtmlUrl":93},"TRUST.auto.yaml",2093,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-agent-wallet\u002FTRUST.auto.yaml",[95,122,144,161,174,184],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":99,"licenseFileUrl":100,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":45},"01M712C436EQYE43342Q4E7GG1","recipe-performance","Diagnose a specific MetaMask user flow's real-app performance and Sentry critical-user-flow telemetry with deterministic mm-harness recipes. Use for CUF boundaries, cold\u002Fwarm\u002Fbackground-resume behavior, latency regressions, lifecycle tags, duplicate or blocking network requests, long tasks, layout\u002Fpaint cost, screen redraws, React rerenders, or browser trace analysis where tests alone cannot prove the real app.","MIT","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FSKILL.md",[],[104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,44,119,120,121,26],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","layout","screen","network",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":126,"licenseFileUrl":127,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":45},"01M70XT2F8A5CQZ81JBP98KSW3","mexc-spot-websocket","MEXC Spot WebSocket workflows for public streams, protobuf handling, depth maintenance, listen keys, and private streams without exposing API keys.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FSKILL.md",[],[131,132,133,134,135,136,137,138,139,140,30,141,142,143],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","api keys","maintenance","protobuf",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":126,"licenseFileUrl":148,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":45},"01M70XT0MBXN3WZY1BKN0CPNKR","mexc-spot-rest","MEXC Spot REST workflows for public data, signed account requests, orders, wallet\u002Fadmin actions, and secure signing without exposing API keys.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FSKILL.md",[],[152,132,153,154,155,25,156,141,30,140,157,158,159,136,160,135,134],"mexc spot rest","REST","admin","signing","requests","actions","secure","data","orders",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":126,"licenseFileUrl":165,"sourceHtmlUrl":166,"categories":167,"keywords":168,"publishedAt":45},"01M70XSYSVZ2N0N91XCAR2CAK0","mexc-futures-websocket","MEXC Futures WebSocket workflows for public streams, private account\u002Forder\u002Fposition streams, ping\u002Fpong, subscriptions, and depth maintenance.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FSKILL.md",[],[169,170,133,171,172,142,30,173,139,138,136,135],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":175,"name":176,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":99,"licenseFileUrl":177,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":45},"01M6H0ZWHVE5W04WG2DKQE2SQC","0xklen-version-and-refresh-sanctions-lists","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FSKILL.md",[],[181,182,183],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":99,"licenseFileUrl":188,"sourceHtmlUrl":189,"categories":190,"keywords":191,"publishedAt":45},"01M6H0Z28Q3R8J0S799GJQWXM3","verify-tests-cover-changed-lines","Use when a PR adds code that the existing suite may not exercise. Measures patch coverage — the share of newly changed lines hit by tests — before approving.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FSKILL.md",[],[192,193,194,195,196,197,198,199,200,201,202],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","use","patch","code","share"]