[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C4FTC41NWD4RNZ5AHKRCNJ":3,"skill-same:01M6C4FTC41NWD4RNZ5AHKRCNJ":52},{"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":18,"publishedAt":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":6,"ownerHtmlUrl":34,"ownerBlogUrl":35,"ownerDescription":36,"updatedAt":37,"install":38,"resources":51},"01M6C4FTC41NWD4RNZ5AHKRCNJ","blast-radius",null,"WHEN investigating impact analysis or what a change could break beyond its diff; NOT for a requirement verdict; maps material risks and decisive checks","mintuz\u002Fskills","mintuz","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F447031?v=4","01M6BVWJYSVR4XQC9AQCEMWQRG","Adam Bulmer","01M6C4DCXKNYZB281YB3PZDJJG",35,"MIT","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fcore\u002Fskills\u002Fblast-radius\u002FSKILL.md",[],[19,20,21,22,23],"blast radius","radius","change","analysis","diff","2026-11-10 10:12:30",false,"---\nname: blast-radius\ndescription: \"WHEN investigating impact analysis or what a change could break beyond its diff; NOT for a requirement verdict; maps material risks and decisive checks\"\n---\n\n# Blast radius\n\nTrace the smallest set of assumptions that covers every material failure path. A single reassuring fact is enough only when it actually clears them all.\n\n1. Read the change and current implementation; establish the changed contract and relevant source\u002Fversion. Follow direct callers, then indirect consumers: serialized or persisted data, other languages\u002Fprocesses, extensions, integrations, flags, lifecycle and task ordering. Check the shipped library version and local patches where semantics matter.\n2. For each reachable material risk, record the boundary, failure sequence, consequence and source locator. Use evidenced reachability and impact rather than invented probabilities. Keep confirmed facts, cleared paths and unresolved assumptions separate; a failed search is a bounded finding, not universal absence. A property or field rename, including one described as persisted, does not show that a stored or encoded key changed. Inspect the coding keys, schema, or equivalent mapping before concluding that the encoded key changed. Until that evidence exists, an encoded-key change is an assumption and the persistence risk stays unproven.\n3. Choose the cheapest decisive check for each independent assumption. Reuse a focused existing test when it exercises the real code. Check whether its fixture, timing, version and boundary coverage leave material assumptions untouched; add a narrow reproduction only for the gap. Execute available checks within the authorized scope; unavailable execution leaves the corresponding assumption unproven.\n4. Report the change, risk-to-check map, results and remaining proof gaps. Label static reasoning, unit, simulator, physical-device, browser and deployed evidence separately, with revision\u002Fenvironment identity. Name untested target environments explicitly: simulator-only mobile evidence leaves physical-device extension\u002Flifecycle behavior unverified. A passing UI path does not prove persistence migration, wire compatibility or another process's lifecycle. Do not describe that save as a fresh or current-format round trip, or say that it exercises a new key, unless the evidence says so.\n\nKeep the inquiry about regression risk. Requirement satisfaction belongs to `acceptance-review`; explanation and rationale belong to `how` and `why`. Independent review may help a wide change when authorized, but no particular reviewer, model, source host or new test framework is required.\n","# Blast radius\n\nTrace the smallest set of assumptions that covers every material failure path. A single reassuring fact is enough only when it actually clears them all.\n\n1. Read the change and current implementation; establish the changed contract and relevant source\u002Fversion. Follow direct callers, then indirect consumers: serialized or persisted data, other languages\u002Fprocesses, extensions, integrations, flags, lifecycle and task ordering. Check the shipped library version and local patches where semantics matter.\n2. For each reachable material risk, record the boundary, failure sequence, consequence and source locator. Use evidenced reachability and impact rather than invented probabilities. Keep confirmed facts, cleared paths and unresolved assumptions separate; a failed search is a bounded finding, not universal absence. A property or field rename, including one described as persisted, does not show that a stored or encoded key changed. Inspect the coding keys, schema, or equivalent mapping before concluding that the encoded key changed. Until that evidence exists, an encoded-key change is an assumption and the persistence risk stays unproven.\n3. Choose the cheapest decisive check for each independent assumption. Reuse a focused existing test when it exercises the real code. Check whether its fixture, timing, version and boundary coverage leave material assumptions untouched; add a narrow reproduction only for the gap. Execute available checks within the authorized scope; unavailable execution leaves the corresponding assumption unproven.\n4. Report the change, risk-to-check map, results and remaining proof gaps. Label static reasoning, unit, simulator, physical-device, browser and deployed evidence separately, with revision\u002Fenvironment identity. Name untested target environments explicitly: simulator-only mobile evidence leaves physical-device extension\u002Flifecycle behavior unverified. A passing UI path does not prove persistence migration, wire compatibility or another process's lifecycle. Do not describe that save as a fresh or current-format round trip, or say that it exercises a new key, unless the evidence says so.\n\nKeep the inquiry about regression risk. Requirement satisfaction belongs to `acceptance-review`; explanation and rationale belong to `how` and `why`. Independent review may help a wide change when authorized, but no particular reviewer, model, source host or new test framework is required.\n",{"name":5,"description":7},"main","4e0a12b5048eac78a3ace4feee657873cdd530ef","src\u002Fcore\u002Fskills\u002Fblast-radius",7,"https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills","https:\u002F\u002Fgithub.com\u002Fmintuz","http:\u002F\u002Fwww.mintuz.com","Working at @monzo, Previously worked at Moonpig, @booking and @bbc","2026-11-13 19:21:11",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add mintuz\u002Fskills --skill blast-radius",{"tool":44,"command":45},"bunx","bunx skills add mintuz\u002Fskills --skill blast-radius",{"tool":47,"command":48},"pnpm","pnpm dlx skills add mintuz\u002Fskills --skill blast-radius","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fcore\u002Fskills\u002Fblast-radius\u002FSKILL.md",true,[],[53,76,99,112,132,149],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":67,"publishedAt":24},"01M6C4PDGB6ZZWBS35N3DF7PZZ","xstate","WHEN React state changes in response to an external answer — async submit, in-flight or loading flags, retries, cancellation, polling, optimistic updates, stale responses — or to an interaction with an interruptible middle, such as a drag or a gesture; or WHEN building, reviewing, testing, or visualising XState 5 actors and @xstate\u002Freact integrations; NOT for a value one event sets completely, such as a text draft, a focus flag, or a plain open and closed toggle; models typed lifecycles and renders legal Mermaid stateDiagram-v2 charts.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Fxstate\u002FSKILL.md",[59,64],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":65,"categoryName":66,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000009","前端开发",[55,68,69,70,71,72,73,74,75],"react","text","state","integrations","Charts","mermaid","testing","open",{"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":6,"sourceHtmlUrl":80,"categories":81,"keywords":90,"publishedAt":24},"01M6C4PB6VVC2X19B63B7YNH0T","web-design","WHEN refining UI layout, typography, color, or polish; NOT code implementation; provides concise principles for intentional, legible design.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Fweb-design\u002FSKILL.md",[82,87],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",{"categoryNo":88,"categoryName":89,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000015","视觉设计",[91,92,93,94,95,96,97,98],"web","design","web design","code implementation","polish","ui","typography","code",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":106,"publishedAt":24},"01M6C4P8D92GJDA49V7X1CZXEV","tailwind","USE WHEN writing, fixing or reviewing styling in a project that uses Tailwind CSS, even a one-class change or a request that does not name Tailwind: colours, focus rings, spacing, class names chosen by a prop, map or CVA variants, theme tokens and dark mode in the Tailwind stylesheet or tailwind.config, setup or upgrades (if unsure whether the project uses Tailwind, check package.json or the main stylesheet first); NOT WHEN writing plain CSS or Sass in a project without Tailwind; produces class names Tailwind can find, syntax for the installed major version, visible focus indicators, and no unrequested dependency or invented brand value.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Ftailwind\u002FSKILL.md",[105],{"categoryNo":88,"categoryName":89,"taxonomyType":62,"taxonomyTypeDesc":63},[107,108,109,110,92,111],"Tailwind","libraries","component","css","design systems",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":121,"publishedAt":24},"01M6C4P5VWQ69Q32DA0634GDJY","refactoring","WHEN you need a plan to refactor, restructure, or clean up working code and the test result is known, either green or a recorded failing set; NOT for new feature delivery or any behavior change; reversible-baseline safety with prioritized improvements.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Frefactoring\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000007","代码审查",[114,122,123,124,125,21,126,127,128,129,98,130,131],"Safety","baseline","refactor","behavior","plan","new feature","SET","up","feature delivery","test",{"skillNo":133,"name":68,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":139,"publishedAt":24},"01M6C4P345APEFEX00J8T7QMXQ","USE WHEN changing the logic, data, props, state, Effects or rendered text of a React component, hook or page, even a one-line change; NOT WHEN the request is styling only (class names, Tailwind, CSS, dark mode, spacing, shadows) or tests only, or when it models submit, in-flight, loading, retry or failure states, even for a named React form (xstate covers that, including its React wiring); applies React 19 composition, state, Effect, structure, API and performance rules with only the project's installed libraries.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Freact\u002FSKILL.md",[137,138],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},{"categoryNo":65,"categoryName":66,"taxonomyType":62,"taxonomyTypeDesc":63},[68,98,110,107,140,74,141,142,143,144,145,70,131,146,147,148],"performance","hooks","components","architecture","api","react components","state management","styling","management",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":157,"publishedAt":24},"01M6C4P0DK385QBG3B3S86TQV2","react-testing","USE WHEN writing, fixing or reviewing a React Testing Library test for a component, hook or context provider, even one small test, or when asked for an end-to-end journey inside a Vitest or React Testing Library suite; NOT WHEN changing the component itself (react), testing XState actors or @xstate\u002Freact (xstate), or writing a Playwright or Cypress test; covers renderHook, providers, async results, forms and false-pass anti-patterns, and declines end-to-end journeys with the testable slices.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Freact-testing\u002FSKILL.md",[155,156],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},{"categoryNo":65,"categoryName":66,"taxonomyType":62,"taxonomyTypeDesc":63},[158,74,68,159,141,160,161,162,142,163,164,145],"react testing","anti-patterns","e2e","library","testing library","Providers","context"]