[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GWF19RBYDRS4M3PPSYVHD3":3,"skill-same:01M6GWF19RBYDRS4M3PPSYVHD3":75},{"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":16,"sourceHtmlUrl":17,"categories":18,"keywords":19,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":44,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M6GWF19RBYDRS4M3PPSYVHD3","dexe-vote-execute",null,"Vote on and execute a DeXe proposal with `dexe_proposal_vote_and_execute`.\nCovers deposit-first, the canonical ProposalState ordering, and the\n\"tokens locked after execute — withdraw between proposals\" trap. Use when the\nuser says \"vote on proposal N\", \"execute proposal N\", \"pass this proposal\".","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",81,"MIT","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fedward-arinin-web-dev-dexe-vote-execute\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fedward-arinin-web-dev-dexe-vote-execute\u002FSKILL.md",[],[20,21,22,23,24,25,26,27,28,29,30,31,32],"execute","dexe vote execute","first","user","proposals","use","deposit","withdraw","tokens","proposal","with","canonical","when","2026-11-10 10:12:30",false,"---\nname: dexe-vote-execute\ndescription: |\n  Vote on and execute a DeXe proposal with `dexe_proposal_vote_and_execute`.\n  Covers deposit-first, the canonical ProposalState ordering, and the\n  \"tokens locked after execute — withdraw between proposals\" trap. Use when the\n  user says \"vote on proposal N\", \"execute proposal N\", \"pass this proposal\".\n---\n\n# dexe-vote-execute\n\n`dexe_proposal_vote_and_execute` reads proposal state, optionally deposits,\nvotes, and (when `autoExecute`) executes once the proposal succeeds. With a\nsigner (WalletConnect, keystore, or an unattended hot key) it broadcasts;\notherwise it returns ordered `TxPayload`s.\n\n## Recipe\n\nCall **`dexe_context`** first for the active chain and recent proposals, and\n**`dexe_write_context`** for the signer and its deposited power in the most\nrecent DAO.\n\n```jsonc\ndexe_proposal_vote_and_execute({\n  govPool: \"0x…\",\n  chainId: 97,\n  proposalId: 1,            \u002F\u002F 1-indexed\n  isVoteFor: true,\n  depositFirst: \"auto\",     \u002F\u002F the default — deposits the shortfall automatically\n  autoExecute: true         \u002F\u002F execute automatically once it passes\n})\n```\n\n- **`depositFirst` is `boolean | \"auto\"`, default `\"auto\"`:** when your deposited\n  power is short of `voteAmount`, the tool deposits **exactly the missing\n  amount** from your wallet (approve UserKeeper → deposit → vote). Pass `false`\n  to never deposit (the old behavior), `true` to force a deposit.\n- Already past voting (state `SucceededFor` \u002F `SucceededAgainst` \u002F `Locked`) →\n  the tool skips the vote and goes straight to execute. Any other non-`Voting`\n  state errors with a **per-state remedy** (execute \u002F wait \u002F new proposal).\n- `voteAmount` defaults to all available deposited power. Pass it to vote with\n  less — human units (`\"250.5\"`) or raw wei both work.\n\n## Validator round — driven automatically (`driveValidatorRound`, default true)\n\nDAOs with validators use **two-stage** voting: members first, then validators.\nAfter the member vote a proposal lands in `WaitingForVotingTransfer (1)` or\n`ValidatorVoting (2)` — NOT directly executable. With `autoExecute` +\n`driveValidatorRound` (both default true) the tool now drives that stage for you:\n\n1. `GovPool.moveProposalToValidators(id)` (member-passed → validator queue), then\n2. if the **configured signer is itself a validator** with a balance:\n   `GovValidators.voteExternalProposal(id, balance, isVoteFor)`\n   ⚠ arg order differs from `GovPool.vote` — **amount BEFORE isVoteFor**, then\n3. re-reads state; if `SucceededFor\u002FAgainst` → `execute`.\n\nIf the signer is **not** a validator, it moves the proposal and stops with a\nskipped-step note (the DAO's own validators must cast their votes). Set\n`driveValidatorRound: false` to stop after the member vote and drive the\nvalidator round manually (`dexe_vote_build_move_to_validators` →\n`dexe_vote_build_validator_vote` → `dexe_vote_build_execute`). A **re-run** of\n`vote_and_execute` on a proposal already sitting in state 1\u002F2 also advances it.\n\n## Partial failure → fix and re-run the SAME call\n\nA failed step returns `mode: \"failed\"` with a `failure` ledger:\n`failedStep`, an actionable `error`, `landedSteps` (txs that DID land — gas\nalready spent), and `resume` guidance. Fix the cause and re-run the same call —\ncompleted steps (approve\u002Fdeposit) are detected on-chain and skipped.\n\n## Canonical ProposalState ordering (failure mode 9)\n\nNever hardcode a different order — `Locked` comes **after** `SucceededFor`:\n\n```\n0 Voting  1 WaitingForVotingTransfer  2 ValidatorVoting  3 Defeated\n4 SucceededFor  5 SucceededAgainst  6 Locked  7 ExecutedFor  8 ExecutedAgainst  9 Undefined\n```\n\nExecutable states: **4, 5, 6**.\n\n## Tokens locked after vote\u002Fexecute (failure mode 5)\n\nAfter you vote\u002Fexecute, your deposited tokens stay **locked** until you withdraw\nthem. If you try to create or vote on the *next* proposal while locked, available\npower reads 0 and the action under-counts. Between proposals:\n\n```jsonc\ndexe_vote_build_withdraw({ govPool: \"0x…\", amount: \"…\" })   \u002F\u002F then broadcast\n```\n\nThen deposit again for the next proposal (or let `dexe_proposal_create` \u002F\n`depositFirst` re-deposit).\n\n**Locked power blocks delegation too.** A proposal that is not yet in a terminal\nstate (`Defeated\u002FExecutedFor\u002FExecutedAgainst`) keeps your **entire** deposited\nbalance locked. `GovPool.delegate` (and `withdraw`) then reverts\n`GovUK: overdelegation` even for a small amount. Before delegating, make sure\nevery proposal you voted on is terminal — e.g. move a leftover\n`WaitingForVotingTransfer` proposal to validators and let it resolve (pass or\nDefeat it). `delegate()` self-unlocks terminal proposals; only active ones hold\nthe lock.\n\n## Preview without broadcasting\n\nPass `dryRun: true` (or run with no signer) to get the ordered `TxPayload`s.\n\nPrerequisite: [[dexe-create-proposal]].\n\n## Canonical recipe (generated from src\u002Fknowledge\u002F — edit there, then `npm run gen:knowledge`)\n\n\u003C!-- BEGIN GENERATED: flow-recipe -->\n### Vote on \u002F pass \u002F execute a proposal (`vote_execute`)\n\nVote and execute in one dexe_proposal_vote_and_execute call — auto-deposits when power is short and auto-drives the validator round.\n\n**Ask the user:**\n- `govPool` — Which DAO (govPool address)?\n- `proposalId` — Which proposal id?\n- `support` (optional) — Vote FOR or AGAINST? · default `for`\n\n**Steps:**\n1. `dexe_proposal_state` — Read the current ProposalState first — the valid action depends on it.\n2. `dexe_proposal_vote_and_execute` — Vote with full available power (auto-deposit if needed), then — when quorum passes — move to validators, drive the validator round (if the signer is a validator), and execute.\n3. `dexe_vote_build_withdraw` — After execution, withdraw the voted tokens so they're free for the next proposal. _(skip when: the user will create\u002Fvote more proposals right away — otherwise skippable)_\n\n**Pitfalls (danger first):**\n- ⚠ DeXe expresses quorum in TWO units and mixing them is the classic error. (1) The SETTING — GovSettings.getDefaultSettings().quorum, the pools subgraph's Proposal.quorum, and the raw `quorum`\u002F`quorumSettingRaw` on dexe_read_settings and dexe_dao_report — is a PERCENTAGE scaled by 1e25 (5e26 = 50%); read it as `quorumPct`\u002F`quorumSettingPct`. (2) The TARGET — GovPool.getProposalRequiredQuorum(id), the `requiredQuorum` field on getProposals rows, dexe_proposal_state and dexe_proposal_list — is an ABSOLUTE vote weight in token wei, equal to GovUserKeeper.getTotalPower() × setting \u002F 1e27. Compare votes ONLY against the TARGET; against the SETTING you are off by totalPower\u002F1e27 — orders of magnitude, in either direction. Quorum is also per-SIDE: GovPoolVote._quorumReached is true when EITHER votesFor OR votesAgainst clears the target, never their sum. getProposalRequiredQuorum returns 0 for a proposal that does not exist or has not started — treat 0 as unknown, never as \"already reached\".\n- ⚠ Canonical ProposalState order: 0 Voting, 1 WaitingForVotingTransfer, 2 ValidatorVoting, 3 Defeated, 4 SucceededFor, 5 SucceededAgainst, 6 Locked, 7 ExecutedFor, 8 ExecutedAgainst, 9 Undefined. Execute is only valid from SucceededFor\u002FSucceededAgainst; use dexe_proposal_state to check, never guess from the number.\n- ⚠ DAOs with validators add a second voting chamber: Voting → (member quorum) WaitingForVotingTransfer → moveProposalToValidators → ValidatorVoting → (validator quorum) SucceededFor → execute. Voting in the validator chamber BEFORE the move reverts 'Validators: proposal does not exist'. dexe_proposal_vote_and_execute auto-drives the whole validator round when the signer is a validator; pass driveValidatorRound:false to stop after the member vote.\n- ⚠ Tokens you voted with stay LOCKED per-proposal even after the proposal executes, and votingPower() reads 0 while locked (it shows available, not deposited, power). Between proposals run dexe_vote_build_withdraw to unlock, or the next create\u002Fvote fails with 'No voting power available'.\n- ⚠ On fresh (SphereX-era) pools a cast VALIDATOR vote cannot be cancelled — GovValidators has no multicall, and raw cancelVote{Internal,External}Proposal is blocked in every shape. Top-up re-votes ARE allowed. Warn validators before they vote.\n- ⚠ Raw top-level vote()\u002Fdelegate() calls REVERT on fresh (SphereX-era) pools — the frontend always wraps them as GovPool.multicall([call]) even for a single call, and the dexe-mcp builders emit that shape since v0.24.1. If you hand-craft calldata, wrap it. Raw deposit\u002Fwithdraw\u002FcancelVote\u002Fundelegate\u002FcreateProposal(AndVote) remain allowed (undelegate with one exception — see undelegate-after-vote).\n- ℹ Delegation is ONE level: a delegator delegates only their OWN deposited balance; received delegations cannot be re-delegated (hub-and-spoke, never chains). Effective voting power = own deposited + incoming delegations — verify with dexe_vote_user_power (totalBalance).\n\n_For the machine-readable plan (interview questions with risk notes, step templates with `flowContext` chaining), call the `dexe_guide` tool with `flow:\"vote_execute\"`._\n\u003C!-- END GENERATED: flow-recipe -->\n","# dexe-vote-execute\n\n`dexe_proposal_vote_and_execute` reads proposal state, optionally deposits,\nvotes, and (when `autoExecute`) executes once the proposal succeeds. With a\nsigner (WalletConnect, keystore, or an unattended hot key) it broadcasts;\notherwise it returns ordered `TxPayload`s.\n\n## Recipe\n\nCall **`dexe_context`** first for the active chain and recent proposals, and\n**`dexe_write_context`** for the signer and its deposited power in the most\nrecent DAO.\n\n```jsonc\ndexe_proposal_vote_and_execute({\n  govPool: \"0x…\",\n  chainId: 97,\n  proposalId: 1,            \u002F\u002F 1-indexed\n  isVoteFor: true,\n  depositFirst: \"auto\",     \u002F\u002F the default — deposits the shortfall automatically\n  autoExecute: true         \u002F\u002F execute automatically once it passes\n})\n```\n\n- **`depositFirst` is `boolean | \"auto\"`, default `\"auto\"`:** when your deposited\n  power is short of `voteAmount`, the tool deposits **exactly the missing\n  amount** from your wallet (approve UserKeeper → deposit → vote). Pass `false`\n  to never deposit (the old behavior), `true` to force a deposit.\n- Already past voting (state `SucceededFor` \u002F `SucceededAgainst` \u002F `Locked`) →\n  the tool skips the vote and goes straight to execute. Any other non-`Voting`\n  state errors with a **per-state remedy** (execute \u002F wait \u002F new proposal).\n- `voteAmount` defaults to all available deposited power. Pass it to vote with\n  less — human units (`\"250.5\"`) or raw wei both work.\n\n## Validator round — driven automatically (`driveValidatorRound`, default true)\n\nDAOs with validators use **two-stage** voting: members first, then validators.\nAfter the member vote a proposal lands in `WaitingForVotingTransfer (1)` or\n`ValidatorVoting (2)` — NOT directly executable. With `autoExecute` +\n`driveValidatorRound` (both default true) the tool now drives that stage for you:\n\n1. `GovPool.moveProposalToValidators(id)` (member-passed → validator queue), then\n2. if the **configured signer is itself a validator** with a balance:\n   `GovValidators.voteExternalProposal(id, balance, isVoteFor)`\n   ⚠ arg order differs from `GovPool.vote` — **amount BEFORE isVoteFor**, then\n3. re-reads state; if `SucceededFor\u002FAgainst` → `execute`.\n\nIf the signer is **not** a validator, it moves the proposal and stops with a\nskipped-step note (the DAO's own validators must cast their votes). Set\n`driveValidatorRound: false` to stop after the member vote and drive the\nvalidator round manually (`dexe_vote_build_move_to_validators` →\n`dexe_vote_build_validator_vote` → `dexe_vote_build_execute`). A **re-run** of\n`vote_and_execute` on a proposal already sitting in state 1\u002F2 also advances it.\n\n## Partial failure → fix and re-run the SAME call\n\nA failed step returns `mode: \"failed\"` with a `failure` ledger:\n`failedStep`, an actionable `error`, `landedSteps` (txs that DID land — gas\nalready spent), and `resume` guidance. Fix the cause and re-run the same call —\ncompleted steps (approve\u002Fdeposit) are detected on-chain and skipped.\n\n## Canonical ProposalState ordering (failure mode 9)\n\nNever hardcode a different order — `Locked` comes **after** `SucceededFor`:\n\n```\n0 Voting  1 WaitingForVotingTransfer  2 ValidatorVoting  3 Defeated\n4 SucceededFor  5 SucceededAgainst  6 Locked  7 ExecutedFor  8 ExecutedAgainst  9 Undefined\n```\n\nExecutable states: **4, 5, 6**.\n\n## Tokens locked after vote\u002Fexecute (failure mode 5)\n\nAfter you vote\u002Fexecute, your deposited tokens stay **locked** until you withdraw\nthem. If you try to create or vote on the *next* proposal while locked, available\npower reads 0 and the action under-counts. Between proposals:\n\n```jsonc\ndexe_vote_build_withdraw({ govPool: \"0x…\", amount: \"…\" })   \u002F\u002F then broadcast\n```\n\nThen deposit again for the next proposal (or let `dexe_proposal_create` \u002F\n`depositFirst` re-deposit).\n\n**Locked power blocks delegation too.** A proposal that is not yet in a terminal\nstate (`Defeated\u002FExecutedFor\u002FExecutedAgainst`) keeps your **entire** deposited\nbalance locked. `GovPool.delegate` (and `withdraw`) then reverts\n`GovUK: overdelegation` even for a small amount. Before delegating, make sure\nevery proposal you voted on is terminal — e.g. move a leftover\n`WaitingForVotingTransfer` proposal to validators and let it resolve (pass or\nDefeat it). `delegate()` self-unlocks terminal proposals; only active ones hold\nthe lock.\n\n## Preview without broadcasting\n\nPass `dryRun: true` (or run with no signer) to get the ordered `TxPayload`s.\n\nPrerequisite: [[dexe-create-proposal]].\n\n## Canonical recipe (generated from src\u002Fknowledge\u002F — edit there, then `npm run gen:knowledge`)\n\n\u003C!-- BEGIN GENERATED: flow-recipe -->\n### Vote on \u002F pass \u002F execute a proposal (`vote_execute`)\n\nVote and execute in one dexe_proposal_vote_and_execute call — auto-deposits when power is short and auto-drives the validator round.\n\n**Ask the user:**\n- `govPool` — Which DAO (govPool address)?\n- `proposalId` — Which proposal id?\n- `support` (optional) — Vote FOR or AGAINST? · default `for`\n\n**Steps:**\n1. `dexe_proposal_state` — Read the current ProposalState first — the valid action depends on it.\n2. `dexe_proposal_vote_and_execute` — Vote with full available power (auto-deposit if needed), then — when quorum passes — move to validators, drive the validator round (if the signer is a validator), and execute.\n3. `dexe_vote_build_withdraw` — After execution, withdraw the voted tokens so they're free for the next proposal. _(skip when: the user will create\u002Fvote more proposals right away — otherwise skippable)_\n\n**Pitfalls (danger first):**\n- ⚠ DeXe expresses quorum in TWO units and mixing them is the classic error. (1) The SETTING — GovSettings.getDefaultSettings().quorum, the pools subgraph's Proposal.quorum, and the raw `quorum`\u002F`quorumSettingRaw` on dexe_read_settings and dexe_dao_report — is a PERCENTAGE scaled by 1e25 (5e26 = 50%); read it as `quorumPct`\u002F`quorumSettingPct`. (2) The TARGET — GovPool.getProposalRequiredQuorum(id), the `requiredQuorum` field on getProposals rows, dexe_proposal_state and dexe_proposal_list — is an ABSOLUTE vote weight in token wei, equal to GovUserKeeper.getTotalPower() × setting \u002F 1e27. Compare votes ONLY against the TARGET; against the SETTING you are off by totalPower\u002F1e27 — orders of magnitude, in either direction. Quorum is also per-SIDE: GovPoolVote._quorumReached is true when EITHER votesFor OR votesAgainst clears the target, never their sum. getProposalRequiredQuorum returns 0 for a proposal that does not exist or has not started — treat 0 as unknown, never as \"already reached\".\n- ⚠ Canonical ProposalState order: 0 Voting, 1 WaitingForVotingTransfer, 2 ValidatorVoting, 3 Defeated, 4 SucceededFor, 5 SucceededAgainst, 6 Locked, 7 ExecutedFor, 8 ExecutedAgainst, 9 Undefined. Execute is only valid from SucceededFor\u002FSucceededAgainst; use dexe_proposal_state to check, never guess from the number.\n- ⚠ DAOs with validators add a second voting chamber: Voting → (member quorum) WaitingForVotingTransfer → moveProposalToValidators → ValidatorVoting → (validator quorum) SucceededFor → execute. Voting in the validator chamber BEFORE the move reverts 'Validators: proposal does not exist'. dexe_proposal_vote_and_execute auto-drives the whole validator round when the signer is a validator; pass driveValidatorRound:false to stop after the member vote.\n- ⚠ Tokens you voted with stay LOCKED per-proposal even after the proposal executes, and votingPower() reads 0 while locked (it shows available, not deposited, power). Between proposals run dexe_vote_build_withdraw to unlock, or the next create\u002Fvote fails with 'No voting power available'.\n- ⚠ On fresh (SphereX-era) pools a cast VALIDATOR vote cannot be cancelled — GovValidators has no multicall, and raw cancelVote{Internal,External}Proposal is blocked in every shape. Top-up re-votes ARE allowed. Warn validators before they vote.\n- ⚠ Raw top-level vote()\u002Fdelegate() calls REVERT on fresh (SphereX-era) pools — the frontend always wraps them as GovPool.multicall([call]) even for a single call, and the dexe-mcp builders emit that shape since v0.24.1. If you hand-craft calldata, wrap it. Raw deposit\u002Fwithdraw\u002FcancelVote\u002Fundelegate\u002FcreateProposal(AndVote) remain allowed (undelegate with one exception — see undelegate-after-vote).\n- ℹ Delegation is ONE level: a delegator delegates only their OWN deposited balance; received delegations cannot be re-delegated (hub-and-spoke, never chains). Effective voting power = own deposited + incoming delegations — verify with dexe_vote_user_power (totalBalance).\n\n_For the machine-readable plan (interview questions with risk notes, step templates with `flowContext` chaining), call the `dexe_guide` tool with `flow:\"vote_execute\"`._\n\u003C!-- END GENERATED: flow-recipe -->\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fmcp-servers\u002Fedward-arinin-web-dev-dexe-vote-execute",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-12 02:28:42",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill dexe-vote-execute",{"tool":53,"command":54},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill dexe-vote-execute",{"tool":56,"command":57},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill dexe-vote-execute","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fedward-arinin-web-dev-dexe-vote-execute\u002FSKILL.md",true,[61,65,71],{"path":62,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":16},"LICENSE","许可证",1070,{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"SOURCE.md","REFERENCE","参考文档",390,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fedward-arinin-web-dev-dexe-vote-execute\u002FSOURCE.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"TRUST.auto.yaml",2175,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fedward-arinin-web-dev-dexe-vote-execute\u002FTRUST.auto.yaml",[76,104,127,145,158,168],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":80,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":33},"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.","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",[],[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":109,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":33},"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",[],[113,114,115,116,117,118,119,120,121,122,123,124,125,126],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":131,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":33},"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",[],[135,114,136,137,138,139,140,124,123,122,141,142,143,118,144,117,116],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":149,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":33},"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",[],[153,154,115,155,156,125,123,157,121,120,118,117],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":159,"name":160,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":161,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":33},"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",[],[165,166,167],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":172,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":33},"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",[],[176,177,178,179,180,181,182,25,183,184,185],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","code","share"]