[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CGEBVXWBT9BVABNHG2JM4K":3,"skill-same:01M6CGEBVXWBT9BVABNHG2JM4K":77},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6CGEBVXWBT9BVABNHG2JM4K","planning-spec",null,"Use after mms-planning recommends a spec and the engineer confirms, and when the user asks for a planning spec. Ask one unblocked product or engineering question at a time, the one that most reduces uncertainty, then write one English file at .specs\u002Fspec-XXX-short-description.md in the MetaMask Mobile or MetaMask Extension checkout. Do not edit product code, and do not say that in chat.","MetaMask\u002Fskills","MetaMask","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F11744586?v=4","01M6CGATQAN8ZP8HWEZH2379WJ","01M6CGATVJDE1ZMSRM20CFJ5S8",25,"MIT","https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fskills\u002Fblob\u002Fmain\u002Fdomains\u002Fplanning\u002Fskills\u002Fplanning-spec\u002Fskill.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"spec","planning spec","planning","chat","english","when","uncertainty","time","for","checkout","code","file","ask","use","question","engineer","short","product","say","do","2026-11-10 10:12:30",false,"---\nname: planning-spec\ndescription: >-\n  Use after mms-planning recommends a spec and the engineer confirms, and\n  when the user asks for a planning spec. Ask one unblocked product or\n  engineering question at a time, the one that most reduces uncertainty,\n  then write one English file at\n  .specs\u002Fspec-XXX-short-description.md in the MetaMask Mobile or MetaMask\n  Extension checkout. Do not edit product code, and do not say that in chat.\nmaturity: experimental\n---\n\n# Planning spec\n\nInstalled name: `mms-planning-spec`. Use it only after `mms-planning` recommends a spec and the engineer confirms, or when the engineer asks for a planning spec. Do not edit product code in the turn that writes the file, and do not say that in chat.\n\n## When to use\n\n- The engineer confirmed a spec recommendation from `mms-planning`.\n- The engineer asked for a planning spec.\n\n## Workflow\n\n1. Ask one question at a time. Choose the unblocked question that most reduces uncertainty. A question is unblocked when it can be stated precisely without an answer that is still open. Cover product unknowns and engineering unknowns. Product includes who is affected, what they see, scope, and non-goals. Engineering includes where the change lives, compatibility, and how it will be tested.\n2. Ask when the question can be stated precisely now, even if the answer is unknown. When an in-scope area cannot be stated precisely because it depends on an open answer, keep it as not yet specified. Do not split that area into questions. When the blocking answer arrives, state any question that is now precise, then ask the unblocked one that most reduces uncertainty.\n3. Stop asking when every precise unknown is decided, explicitly deferred, or recorded as an open question, and every remaining in-scope area is not yet specified. State the direction.\n4. When the direction is ready, state it and wait. Write the file only after the engineer approves. If they do not approve, ask the next unblocked question.\n5. After approval, and before writing, use the same catalog rule as `mms-planning`. Read the installed `mms-*` catalog. Assess every installed `mms-*` skill by its description. Read the body of every skill whose area the spec touches, including a partial fit. Skip a skill only when the spec has no surface for it. Follow an installed `mms-*` skill over a skill outside that catalog when both fit. Name a matching skill that is unavailable. Do not pretend it was applied.\n6. Write one English file at `.specs\u002Fspec-XXX-short-description.md` in the checkout. `.specs\u002F` is local and not team-shared storage. Do not stage it. Sharing the file is a manual step outside this skill.\n\nNumbering is the highest existing `.specs\u002Fspec-*.md` plus one. If none exist, start at `001`. The slug is two to five kebab-case words. The H1 is `# spec-XXX: \u003Cshort name>`.\n\nSection order:\n\n1. `## Summary`\n2. `## Copy Prompt for Implementation`\n3. `## Context`\n4. `## Hypothesis`\n5. `## Decisions`\n6. `## Implementation Details`\n7. `## Development Flow`\n8. `## Performance`\n9. `## Security`\n10. `## UX`\n11. `## Open Questions`\n12. `## Not yet specified`\n13. `## Acceptance Criteria`\n14. `## How to Test`, with `### Agent`, `### Human — Android`, `### Human — iOS`, and `### Optional`\n15. `## Log`\n\nKeep every heading. When Performance, Security, or UX has no surface, the body of that section is `N\u002FA`. The chat brief from `mms-planning` still omits empty areas. This file does not.\n\n`## Open Questions` lists questions that can be stated precisely and are still open or deferred. When there are none, the body is `None`. \n\n`## Not yet specified` lists in-scope areas that cannot yet be stated as a question. When there are none, the body is `None`. An area lives in only one of those sections. Work ruled out of this spec is recorded under Decisions.\n\n`## Development Flow` is one Mermaid diagram of the change being specified: sequence, decisions, loops, and any path that does not reach implementation. The diagram describes that feature. It does not describe `mms-planning`, `mms-planning-spec`, or `mms-jira-brief`. If the diagram disagrees with Decisions or Implementation Details, the prose wins and the diagram is corrected before approval. Do not embed a diagram of this skill's own procedure.\n\nUX states who is affected and what they see. Include empty, error, and loading states when the change has them. State iOS versus Android when they differ.\n\nCopy Prompt for Implementation is one or more fenced `text` blocks. Labels, in order, omitting an empty optional label: `LOCK`, optional `BASELINE`, `CHANGE`, `VERIFY`, `CLOSEOUT`, `HARD STOPS`, `IF STUCK`. `LOCK` points at the `.specs\u002F` file inside the checkout. `IF STUCK` is exactly `Ask any questions needed if anything ambiguous.`\n\n`VERIFY` and `CLOSEOUT` name what the spec says to check. They do not run a quality pipeline and they do not set a retry policy. `VERIFY` points at `## How to Test`. `CLOSEOUT` points at `## Acceptance Criteria` and the evidence to record in `## Log`. `### Agent` under How to Test names the checks for this change. It does not name a runner.\n\nAfter the file is written, stop. Do not edit product code. Do not say that code will not change.","# Planning spec\n\nInstalled name: `mms-planning-spec`. Use it only after `mms-planning` recommends a spec and the engineer confirms, or when the engineer asks for a planning spec. Do not edit product code in the turn that writes the file, and do not say that in chat.\n\n## When to use\n\n- The engineer confirmed a spec recommendation from `mms-planning`.\n- The engineer asked for a planning spec.\n\n## Workflow\n\n1. Ask one question at a time. Choose the unblocked question that most reduces uncertainty. A question is unblocked when it can be stated precisely without an answer that is still open. Cover product unknowns and engineering unknowns. Product includes who is affected, what they see, scope, and non-goals. Engineering includes where the change lives, compatibility, and how it will be tested.\n2. Ask when the question can be stated precisely now, even if the answer is unknown. When an in-scope area cannot be stated precisely because it depends on an open answer, keep it as not yet specified. Do not split that area into questions. When the blocking answer arrives, state any question that is now precise, then ask the unblocked one that most reduces uncertainty.\n3. Stop asking when every precise unknown is decided, explicitly deferred, or recorded as an open question, and every remaining in-scope area is not yet specified. State the direction.\n4. When the direction is ready, state it and wait. Write the file only after the engineer approves. If they do not approve, ask the next unblocked question.\n5. After approval, and before writing, use the same catalog rule as `mms-planning`. Read the installed `mms-*` catalog. Assess every installed `mms-*` skill by its description. Read the body of every skill whose area the spec touches, including a partial fit. Skip a skill only when the spec has no surface for it. Follow an installed `mms-*` skill over a skill outside that catalog when both fit. Name a matching skill that is unavailable. Do not pretend it was applied.\n6. Write one English file at `.specs\u002Fspec-XXX-short-description.md` in the checkout. `.specs\u002F` is local and not team-shared storage. Do not stage it. Sharing the file is a manual step outside this skill.\n\nNumbering is the highest existing `.specs\u002Fspec-*.md` plus one. If none exist, start at `001`. The slug is two to five kebab-case words. The H1 is `# spec-XXX: \u003Cshort name>`.\n\nSection order:\n\n1. `## Summary`\n2. `## Copy Prompt for Implementation`\n3. `## Context`\n4. `## Hypothesis`\n5. `## Decisions`\n6. `## Implementation Details`\n7. `## Development Flow`\n8. `## Performance`\n9. `## Security`\n10. `## UX`\n11. `## Open Questions`\n12. `## Not yet specified`\n13. `## Acceptance Criteria`\n14. `## How to Test`, with `### Agent`, `### Human — Android`, `### Human — iOS`, and `### Optional`\n15. `## Log`\n\nKeep every heading. When Performance, Security, or UX has no surface, the body of that section is `N\u002FA`. The chat brief from `mms-planning` still omits empty areas. This file does not.\n\n`## Open Questions` lists questions that can be stated precisely and are still open or deferred. When there are none, the body is `None`. \n\n`## Not yet specified` lists in-scope areas that cannot yet be stated as a question. When there are none, the body is `None`. An area lives in only one of those sections. Work ruled out of this spec is recorded under Decisions.\n\n`## Development Flow` is one Mermaid diagram of the change being specified: sequence, decisions, loops, and any path that does not reach implementation. The diagram describes that feature. It does not describe `mms-planning`, `mms-planning-spec`, or `mms-jira-brief`. If the diagram disagrees with Decisions or Implementation Details, the prose wins and the diagram is corrected before approval. Do not embed a diagram of this skill's own procedure.\n\nUX states who is affected and what they see. Include empty, error, and loading states when the change has them. State iOS versus Android when they differ.\n\nCopy Prompt for Implementation is one or more fenced `text` blocks. Labels, in order, omitting an empty optional label: `LOCK`, optional `BASELINE`, `CHANGE`, `VERIFY`, `CLOSEOUT`, `HARD STOPS`, `IF STUCK`. `LOCK` points at the `.specs\u002F` file inside the checkout. `IF STUCK` is exactly `Ask any questions needed if anything ambiguous.`\n\n`VERIFY` and `CLOSEOUT` name what the spec says to check. They do not run a quality pipeline and they do not set a retry policy. `VERIFY` points at `## How to Test`. `CLOSEOUT` points at `## Acceptance Criteria` and the evidence to record in `## Log`. `### Agent` under How to Test names the checks for this change. It does not name a runner.\n\nAfter the file is written, stop. Do not edit product code. Do not say that code will not change.",{"name":5,"maturity":43,"description":7},"experimental","main","d1f7d69b18eea97c7252269f0e3d930765a6037d","domains\u002Fplanning\u002Fskills\u002Fplanning-spec",11,"https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fskills","https:\u002F\u002Fgithub.com\u002FMetaMask","https:\u002F\u002Fmetamask.io","MetaMask brings Ethereum to your web browser","2026-11-12 03:49:40",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add MetaMask\u002Fskills --skill planning-spec",{"tool":59,"command":60},"bunx","bunx skills add MetaMask\u002Fskills --skill planning-spec",{"tool":62,"command":63},"pnpm","pnpm dlx skills add MetaMask\u002Fskills --skill planning-spec","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fskills\u002Fblob\u002Fmain\u002Fdomains\u002Fplanning\u002Fskills\u002Fplanning-spec\u002Fskill.md",true,[67,73],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"repos\u002Fmetamask-extension.md","REFERENCE","参考文档",160,"https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fskills\u002Fblob\u002Fmain\u002Fdomains\u002Fplanning\u002Fskills\u002Fplanning-spec\u002Frepos\u002Fmetamask-extension.md",{"path":74,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":75,"sourceHtmlUrl":76},"repos\u002Fmetamask-mobile.md",154,"https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fskills\u002Fblob\u002Fmain\u002Fdomains\u002Fplanning\u002Fskills\u002Fplanning-spec\u002Frepos\u002Fmetamask-mobile.md",[78,105,125,132,166,191],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":38},"01M70PKJH3WSTFMSA8VYQWNDW9","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.","https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fskills\u002Fblob\u002Fmain\u002Fdomains\u002Fagentic\u002Fskills\u002Frecipe-performance\u002Fskill.md",[],[85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],"performance","recipe performance","recipe","app","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask","flow","recipes","deterministic","harness","mm","sentry",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":38},"01M6CGJ7AEJCZSRGF3PBE6EWBG","x402-payments","Build x402 payment flows using MetaMask Smart Accounts Kit, machine to machine payments over HTTP with ERC-7710 delegations and ERC-7715 Advanced Permissions","https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fskills\u002Fblob\u002Fmain\u002Fdomains\u002Fweb3-tools\u002Fskills\u002Fx402-payments\u002Fskill.md",[],[112,113,114,115,116,117,118,119,120,121,122,123,98,124],"payments","x402 payments","x402","permissions","smart accounts kit","http","build","with","payment","advanced","flows","machine","kit",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":38},"01M6CGJ4AEKJZJWJ704SZTWQ5T","smart-accounts-kit","Build dApps with MetaMask Smart Accounts Kit — ERC-4337 smart accounts, delegations, and Advanced Permissions (ERC-7715)","https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fskills\u002Fblob\u002Fmain\u002Fdomains\u002Fweb3-tools\u002Fskills\u002Fsmart-accounts-kit\u002Fskill.md",[],[116,124,115,118,119,121,98],{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":143,"publishedAt":38},"01M6CGJ11KGB6862Z1ADYTMKYZ","oh-my-opencode","Multi-agent orchestration plugin for OpenCode. Use when the user wants to install, configure, or operate oh-my-opencode — including agent delegation, ultrawork mode, Prometheus planning, background tasks, category-based task routing, model resolution, tmux integration, or any oh-my-opencode feature. Covers installation, configuration, all agents (Sisyphus, Oracle, Librarian, Explore, Atlas, Prometheus, Metis, Momus), all categories, slash commands, hooks, skills, MCPs, and troubleshooting.","https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fskills\u002Fblob\u002Fmain\u002Fdomains\u002Fweb3-tools\u002Fskills\u002Foh-my-opencode\u002Fskill.md",[138],{"categoryNo":139,"categoryName":140,"taxonomyType":141,"taxonomyTypeDesc":142},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[144,145,146,147,148,149,150,151,152,153,154,155,28,92,156,157,158,159,160,20,31,161,162,163,164,165,23],"opencode","oh my opencode","my","model","explore","hooks","delegation","librarian","agent orchestration","oracle","orchestration","configure","ultrawork","install","multi-agent","tmux","prometheus","categories","operate","mode","metis","momus",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":172,"publishedAt":38},"01M6CGHY9SVTXK2DK18H794EHE","gator-cli","Use when you need to operate the @metamask\u002Fgator-cli to initialize profiles, upgrade EOA to EIP-7702, grant, redeem, and revoke ERC-7710 delegations, or inspect balances and delegations. Covers commands, required flags, grant scopes, redeem action types, configuration locations, and common usage flows.","https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fskills\u002Fblob\u002Fmain\u002Fdomains\u002Fweb3-tools\u002Fskills\u002Fgator-cli\u002Fskill.md",[],[173,174,175,176,177,157,178,31,179,180,181,162,182,183,184,185,122,186,124,187,23,188,189,190],"cli","gator cli","initialize","https","node","flags","docs","configuration","common","usage","types","balances","inspect","profiles","upgrade","you","io","commands",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":202,"publishedAt":38},"01M6CGHVB2A8SMD9X84ZTH9RHV","ui-development","UI component development standards for MetaMask clients: the strict design-system-first component hierarchy, availability checks before building custom components, styling with design tokens, and required imports. Use when building, restyling, or reviewing any UI component, or when choosing between a design-system, component-library, or custom component.","https:\u002F\u002Fgithub.com\u002FMetaMask\u002Fskills\u002Fblob\u002Fmain\u002Fdomains\u002Fui\u002Fskills\u002Fui-development\u002Fskill.md",[197],{"categoryNo":198,"categoryName":199,"taxonomyType":200,"taxonomyTypeDesc":201},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[203,204,205,206,207,208,209,210,211,212,213,214,215,31,216,217,218,26,219,220,221,222,23,119,223,224],"development","ui development","ui","standards","component","first","system","before building","ui component","design","design tokens","design-system","styling","library","components","availability","component development","tokens","custom","true","hierarchy","imports"]