[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GRW5NBZ16ZKDFY5TZSJS0B":3,"skill-same:01M6GRW5NBZ16ZKDFY5TZSJS0B":91},{"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":53,"linkOnly":54,"markdownContent":55,"markdownBody":56,"frontMatter":57,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":6,"ownerHtmlUrl":63,"ownerBlogUrl":64,"ownerDescription":65,"updatedAt":66,"install":67,"resources":80},"01M6GRW5NBZ16ZKDFY5TZSJS0B","qa",null,"Use when a Scaffold-ETH 2 frontend is about to ship or needs a second look: \"is this ready\", \"check my dApp\", a teammate's patch. The checks people forget: wallet flow, wrong-network gating, contract registration, theme and loading states, branding, RPC posture, mobile wallets. Best from a fresh reviewer context. Not for how the frontend behaves for its users in general, such as approvals, decimals and address parsing (`\u002Ffrontend-ux`).","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\u002Fdev-tools\u002Faustintgriffith-official-qa\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],"when","frontend","gating","dapp","my","loading","states","theme","people","users","fresh","as","contract","registration","general","mobile","Wallet","patch","ready","use","check","reviewer","how","ship","parsing","flow","network","rpc","ux","2026-11-10 10:12:30",false,"---\nname: qa\ndescription: \"Use when a Scaffold-ETH 2 frontend is about to ship or needs a second look: \\\"is this ready\\\", \\\"check my dApp\\\", a teammate's patch. The checks people forget: wallet flow, wrong-network gating, contract registration, theme and loading states, branding, RPC posture, mobile wallets. Best from a fresh reviewer context. Not for how the frontend behaves for its users in general, such as approvals, decimals and address parsing (`\u002Ffrontend-ux`).\"\n---\n\n# dApp QA — pre-ship audit for Scaffold-ETH 2\n\nRead the code, then click through every flow — with no wallet, with a wallet on the wrong chain, and with a wallet on the target chain. Report each finding with severity, file, line, and the concrete fix. Only change code if the task asks you to fix rather than review.\n\n## Wallet and action flow\n\n- Disconnected state renders a **Connect Wallet button** (`RainbowKitCustomConnectButton`), never a paragraph telling the user to connect. This is the single most common miss.\n- Wrong network turns the **primary CTA itself** into a \"Switch to [chain]\" button. The header's `WrongNetworkDropdown` is not enough — without a branch in the action slot, the user clicks Approve on the wrong chain and eats a silent wagmi error.\n- One primary action at a time: Connect → Switch → Approve → Action. Approve and Action are never both live; which one renders is driven by the current allowance.\n- Writes go through `useScaffoldWriteContract`. Raw wagmi `useWriteContract` outside scaffold internals resolves at the wallet signature, not at confirmation.\n- Lock the button on `isMining` — the flag `useScaffoldWriteContract` sets around `writeContractAsync`, **not** the `isPending` it passes through from wagmi. (`isMining` tracks the async path only; the hook's synchronous `writeContract` never sets it, so a button gated on it there never locks.) `isMining` is held across `waitForTransactionReceipt` and clears in the hook's `finally` on both confirmation and rejection; `isPending` drops when the wallet returns the hash, re-enabling the button mid-flight. If the allowance or balance refetch needs its own hold after confirmation, keep it in local state and clear it in `finally` too — never on a fixed timer.\n- Failed and rejected transactions surface a human-readable message next to the action (`notification` + `getParsedError`). A `catch` that only calls `console.error` is a silent failure.\n\n## Contracts and addresses\n\n- External contracts (tokens, protocols) belong in `packages\u002Fnextjs\u002Fcontracts\u002FexternalContracts.ts`. Entries hand-added to `deployedContracts.ts` are wiped on the next deploy, and scaffold hooks silently return nothing for anything unregistered. Migrate rather than flag:\n\n  ```typescript\n  \u002F\u002F packages\u002Fnextjs\u002Fcontracts\u002FexternalContracts.ts\n  import { GenericContractsDeclaration } from \"~~\u002Futils\u002Fscaffold-eth\u002Fcontract\";\n\n  const externalContracts = {\n    8453: {\n      USDC: { address: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\", abi: [...] },\n    },\n  } as const;\n\n  export default externalContracts satisfies GenericContractsDeclaration;\n  ```\n\n  Then revert `deployedContracts.ts` to its generated state and confirm `yarn next:check-types` passes.\n\n- Every input that accepts an address uses `\u003CAddressInput\u002F>`, not `\u003Cinput type=\"text\">` — a raw input drops ENS resolution and validation, so `vitalik.eth` never reaches the contract.\n- Addresses render through `\u003CAddress\u002F>` (blockie, ENS, copy, explorer link), not a hand-rolled `shorten()`.\n- The contract the user transacts with is shown on the page. Agents display the connected wallet address and forget the contract itself.\n\n## Theme and loading states\n\n- No hardcoded dark wrapper (`bg-black`, `bg-[#0a0a0a]`, `bg-zinc-900`) on a page or layout root. It bypasses DaisyUI, gives light-mode users a black page, and breaks the header's `SwitchTheme`. Use `bg-base-200 text-base-content`. Forcing `data-theme=\"dark\"` is acceptable only if `\u003CSwitchTheme\u002F>` is also removed.\n- DaisyUI's `loading` **class on a `btn`** replaces the whole button with a spinner and swallows the label. Use an inline `\u003Cspan className=\"loading loading-spinner loading-sm\" \u002F>` inside the button, next to visible text.\n\n## Branding\n\nThe scaffold's defaults are template scaffolding, not product decisions. Check all five: tab title in `layout.tsx` (not \"Scaffold-ETH 2 App\"), the metadata description, the footer (BuidlGuidl \u002F fork-me \u002F support links), the README, and the default favicon. The OG image in `layout.tsx` metadata is an absolute URL (`https:\u002F\u002Fyourdomain.com\u002Fthumbnail.jpg`); a relative path breaks link previews everywhere.\n\n## Config\n\n- `pollingInterval` in `scaffold.config.ts` is 3000 in current SE-2. A raised value (older templates used 30000) makes an L2 app feel broken; keep ~3s, or use event-driven and post-confirmation refresh.\n- Production RPC: shipping on SE-2's default Alchemy key, or on the bare `http()` fallback transport in `wagmiConfig`, means silently hitting rate-limited public endpoints. Route through `rpcOverrides` with a `NEXT_PUBLIC_*` key. That key ships in the client bundle, so restrict it to your domain in the provider dashboard. Verify the variable is actually set on the host, not just referenced in code.\n\n## Mobile\n\n- On WalletConnect, tapping a transaction button must get the user to their wallet app with something to sign. Test it on a phone: if nothing happens and the user has to switch apps by hand, that is a finding. Any redirect fires the write first, since navigating away before the write call means the transaction never fires. It targets the wallet the user actually connected with, and it is skipped inside a wallet's in-app browser (`window.ethereum` present). wagmi's `connector.id` only says `\"walletConnect\"` — find the real wallet in the `wc@2:client` session in localStorage. Use bare schemes (`rainbow:\u002F\u002F`, `metamask:\u002F\u002F`); `rainbow:\u002F\u002Fdapp\u002F...` reloads the page.\n- Phantom is not in SE-2's default RainbowKit wallet list, so Phantom users cannot connect at all. Add `phantomWallet` to `wagmiConnectors.tsx`.\n\n## If it is deployed\n\nEvery deployed contract is verified on the block explorer (`yarn verify --network \u003Cchain>`). Unverified bytecode reads as something to hide. `yarn deploy` succeeding is not the finish line.\n\n## CROPS\n\nThe report includes a CROPS Review: the chosen default, accepted compromises, who can block users, what data leaks, who controls funds\u002Fupgrades\u002Frecovery, and the user's escape path. Missing, or a one-liner on an app holding funds or user data, is a finding. Use `crops\u002FSKILL.md` for the full template.\n\n## References\n\n- Docs: https:\u002F\u002Fdocs.scaffoldeth.io\u002F · Components: https:\u002F\u002Fui.scaffoldeth.io\u002F\n","# dApp QA — pre-ship audit for Scaffold-ETH 2\n\nRead the code, then click through every flow — with no wallet, with a wallet on the wrong chain, and with a wallet on the target chain. Report each finding with severity, file, line, and the concrete fix. Only change code if the task asks you to fix rather than review.\n\n## Wallet and action flow\n\n- Disconnected state renders a **Connect Wallet button** (`RainbowKitCustomConnectButton`), never a paragraph telling the user to connect. This is the single most common miss.\n- Wrong network turns the **primary CTA itself** into a \"Switch to [chain]\" button. The header's `WrongNetworkDropdown` is not enough — without a branch in the action slot, the user clicks Approve on the wrong chain and eats a silent wagmi error.\n- One primary action at a time: Connect → Switch → Approve → Action. Approve and Action are never both live; which one renders is driven by the current allowance.\n- Writes go through `useScaffoldWriteContract`. Raw wagmi `useWriteContract` outside scaffold internals resolves at the wallet signature, not at confirmation.\n- Lock the button on `isMining` — the flag `useScaffoldWriteContract` sets around `writeContractAsync`, **not** the `isPending` it passes through from wagmi. (`isMining` tracks the async path only; the hook's synchronous `writeContract` never sets it, so a button gated on it there never locks.) `isMining` is held across `waitForTransactionReceipt` and clears in the hook's `finally` on both confirmation and rejection; `isPending` drops when the wallet returns the hash, re-enabling the button mid-flight. If the allowance or balance refetch needs its own hold after confirmation, keep it in local state and clear it in `finally` too — never on a fixed timer.\n- Failed and rejected transactions surface a human-readable message next to the action (`notification` + `getParsedError`). A `catch` that only calls `console.error` is a silent failure.\n\n## Contracts and addresses\n\n- External contracts (tokens, protocols) belong in `packages\u002Fnextjs\u002Fcontracts\u002FexternalContracts.ts`. Entries hand-added to `deployedContracts.ts` are wiped on the next deploy, and scaffold hooks silently return nothing for anything unregistered. Migrate rather than flag:\n\n  ```typescript\n  \u002F\u002F packages\u002Fnextjs\u002Fcontracts\u002FexternalContracts.ts\n  import { GenericContractsDeclaration } from \"~~\u002Futils\u002Fscaffold-eth\u002Fcontract\";\n\n  const externalContracts = {\n    8453: {\n      USDC: { address: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\", abi: [...] },\n    },\n  } as const;\n\n  export default externalContracts satisfies GenericContractsDeclaration;\n  ```\n\n  Then revert `deployedContracts.ts` to its generated state and confirm `yarn next:check-types` passes.\n\n- Every input that accepts an address uses `\u003CAddressInput\u002F>`, not `\u003Cinput type=\"text\">` — a raw input drops ENS resolution and validation, so `vitalik.eth` never reaches the contract.\n- Addresses render through `\u003CAddress\u002F>` (blockie, ENS, copy, explorer link), not a hand-rolled `shorten()`.\n- The contract the user transacts with is shown on the page. Agents display the connected wallet address and forget the contract itself.\n\n## Theme and loading states\n\n- No hardcoded dark wrapper (`bg-black`, `bg-[#0a0a0a]`, `bg-zinc-900`) on a page or layout root. It bypasses DaisyUI, gives light-mode users a black page, and breaks the header's `SwitchTheme`. Use `bg-base-200 text-base-content`. Forcing `data-theme=\"dark\"` is acceptable only if `\u003CSwitchTheme\u002F>` is also removed.\n- DaisyUI's `loading` **class on a `btn`** replaces the whole button with a spinner and swallows the label. Use an inline `\u003Cspan className=\"loading loading-spinner loading-sm\" \u002F>` inside the button, next to visible text.\n\n## Branding\n\nThe scaffold's defaults are template scaffolding, not product decisions. Check all five: tab title in `layout.tsx` (not \"Scaffold-ETH 2 App\"), the metadata description, the footer (BuidlGuidl \u002F fork-me \u002F support links), the README, and the default favicon. The OG image in `layout.tsx` metadata is an absolute URL (`https:\u002F\u002Fyourdomain.com\u002Fthumbnail.jpg`); a relative path breaks link previews everywhere.\n\n## Config\n\n- `pollingInterval` in `scaffold.config.ts` is 3000 in current SE-2. A raised value (older templates used 30000) makes an L2 app feel broken; keep ~3s, or use event-driven and post-confirmation refresh.\n- Production RPC: shipping on SE-2's default Alchemy key, or on the bare `http()` fallback transport in `wagmiConfig`, means silently hitting rate-limited public endpoints. Route through `rpcOverrides` with a `NEXT_PUBLIC_*` key. That key ships in the client bundle, so restrict it to your domain in the provider dashboard. Verify the variable is actually set on the host, not just referenced in code.\n\n## Mobile\n\n- On WalletConnect, tapping a transaction button must get the user to their wallet app with something to sign. Test it on a phone: if nothing happens and the user has to switch apps by hand, that is a finding. Any redirect fires the write first, since navigating away before the write call means the transaction never fires. It targets the wallet the user actually connected with, and it is skipped inside a wallet's in-app browser (`window.ethereum` present). wagmi's `connector.id` only says `\"walletConnect\"` — find the real wallet in the `wc@2:client` session in localStorage. Use bare schemes (`rainbow:\u002F\u002F`, `metamask:\u002F\u002F`); `rainbow:\u002F\u002Fdapp\u002F...` reloads the page.\n- Phantom is not in SE-2's default RainbowKit wallet list, so Phantom users cannot connect at all. Add `phantomWallet` to `wagmiConnectors.tsx`.\n\n## If it is deployed\n\nEvery deployed contract is verified on the block explorer (`yarn verify --network \u003Cchain>`). Unverified bytecode reads as something to hide. `yarn deploy` succeeding is not the finish line.\n\n## CROPS\n\nThe report includes a CROPS Review: the chosen default, accepted compromises, who can block users, what data leaks, who controls funds\u002Fupgrades\u002Frecovery, and the user's escape path. Missing, or a one-liner on an app holding funds or user data, is a finding. Use `crops\u002FSKILL.md` for the full template.\n\n## References\n\n- Docs: https:\u002F\u002Fdocs.scaffoldeth.io\u002F · Components: https:\u002F\u002Fui.scaffoldeth.io\u002F\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fdev-tools\u002Faustintgriffith-official-qa",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-14 02:27:51",{"source":8,"skillName":5,"commands":68,"prompt":78,"zipAvailable":79},[69,72,75],{"tool":70,"command":71},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill qa",{"tool":73,"command":74},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill qa",{"tool":76,"command":77},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill qa","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Faustintgriffith-official-qa\u002FSKILL.md",true,[81,87],{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"SOURCE.md","REFERENCE","参考文档",339,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Faustintgriffith-official-qa\u002FSOURCE.md",{"path":88,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":89,"sourceHtmlUrl":90},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdev-tools\u002Faustintgriffith-official-qa\u002FTRUST.auto.yaml",[92,119,142,159,172,182],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":96,"licenseFileUrl":97,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":53},"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",[],[101,102,103,104,105,106,107,108,109,49,110,111,112,113,114,115,116,117,50,118],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","cold","critical","analysis","tasks","react","browser","layout","screen","metamask",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":123,"licenseFileUrl":124,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":53},"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",[],[128,129,130,131,132,133,134,135,136,137,138,139,140,141],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":123,"licenseFileUrl":146,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":53},"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",[],[150,129,151,152,153,40,154,139,138,137,155,156,157,133,158,132,131],"mexc spot rest","REST","admin","signing","requests","actions","secure","data","orders",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":123,"licenseFileUrl":163,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":53},"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",[],[167,168,130,169,170,140,138,171,136,135,133,132],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":173,"name":174,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":96,"licenseFileUrl":175,"sourceHtmlUrl":176,"categories":177,"keywords":178,"publishedAt":53},"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",[],[179,180,181],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":96,"licenseFileUrl":186,"sourceHtmlUrl":187,"categories":188,"keywords":189,"publishedAt":53},"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",[],[190,191,192,193,194,195,196,43,41,197,198],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","code","share"]