[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C4JDW2PYV9STS2JXEVMAFA":3,"skill-same:01M6C4JDW2PYV9STS2JXEVMAFA":51},{"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":23,"linkOnly":24,"markdownContent":25,"markdownBody":26,"frontMatter":27,"refName":28,"commitSha":29,"skillDirectory":30,"forksCount":31,"repositoryHtmlUrl":32,"repositoryHomepageUrl":6,"ownerHtmlUrl":33,"ownerBlogUrl":34,"ownerDescription":35,"updatedAt":36,"install":37,"resources":50},"01M6C4JDW2PYV9STS2JXEVMAFA","principle-fix-root-causes",null,"WHEN debugging a reproducible defect or distinguishing competing causes; NOT for removing legitimate guards or widening authorized scope; repairs the evidenced cause and rechecks the failure.","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\u002Fprinciple\u002Fskills\u002Fprinciple-fix-root-causes\u002FSKILL.md",[],[19,20,21,22],"principle fix root causes","fix","debugging","Reproducible","2026-11-10 10:12:30",false,"---\nname: principle-fix-root-causes\ndescription: \"WHEN debugging a reproducible defect or distinguishing competing causes; NOT for removing legitimate guards or widening authorized scope; repairs the evidenced cause and rechecks the failure.\"\n---\n\n# Fix root causes\n\nFix the mechanism that produces the failure, not just the surface that exposes it.\n\n1. Reproduce the failure and capture the actual error, state and execution path. Separate observations from hypotheses; use bounded instrumentation when the decisive fact is missing.\n2. Trace the symptom to its owning state or contract. Compare plausible causes with an experiment that distinguishes them. A restart failure makes persisted state worth inspecting; clearing a disposable fixture is evidence, not proof or permission to delete user data.\n3. Apply the narrow repair within the authorized scope. Preserve guards that enforce valid contracts or handle legitimate absent\u002Ferror states. A guard that only hides a broken invariant needs a causal repair, not blanket removal of defensive code.\n4. Search for the same mechanism and affected callers. Fix owned instances when authorized; report broader findings separately. Preserve data and unrelated work.\n5. Leave a regression check that exposes the cause, then repeat the original failing sequence and relevant caller\u002Flifecycle cases. If diagnosis required a deep search, propose a cheap signal that would reveal this failure earlier.\n\nDistinct from: `principle-attack-the-premise` (two or more fixes sharing an assumption have failed), `principle-capture-the-baseline` (recording the pre-change state before a change), `principle-prove-it-works` (claiming a result is fixed or working).\n\nDone: evidence explains the failure and the repair survives the original check, or the unresolved cause and next discriminating observation are explicit. Never label a workaround or static check as runtime proof.\n","# Fix root causes\n\nFix the mechanism that produces the failure, not just the surface that exposes it.\n\n1. Reproduce the failure and capture the actual error, state and execution path. Separate observations from hypotheses; use bounded instrumentation when the decisive fact is missing.\n2. Trace the symptom to its owning state or contract. Compare plausible causes with an experiment that distinguishes them. A restart failure makes persisted state worth inspecting; clearing a disposable fixture is evidence, not proof or permission to delete user data.\n3. Apply the narrow repair within the authorized scope. Preserve guards that enforce valid contracts or handle legitimate absent\u002Ferror states. A guard that only hides a broken invariant needs a causal repair, not blanket removal of defensive code.\n4. Search for the same mechanism and affected callers. Fix owned instances when authorized; report broader findings separately. Preserve data and unrelated work.\n5. Leave a regression check that exposes the cause, then repeat the original failing sequence and relevant caller\u002Flifecycle cases. If diagnosis required a deep search, propose a cheap signal that would reveal this failure earlier.\n\nDistinct from: `principle-attack-the-premise` (two or more fixes sharing an assumption have failed), `principle-capture-the-baseline` (recording the pre-change state before a change), `principle-prove-it-works` (claiming a result is fixed or working).\n\nDone: evidence explains the failure and the repair survives the original check, or the unresolved cause and next discriminating observation are explicit. Never label a workaround or static check as runtime proof.\n",{"name":5,"description":7},"main","4e0a12b5048eac78a3ace4feee657873cdd530ef","src\u002Fprinciple\u002Fskills\u002Fprinciple-fix-root-causes",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-11 15:50:19",{"source":8,"skillName":5,"commands":38,"prompt":48,"zipAvailable":49},[39,42,45],{"tool":40,"command":41},"npx","npx skills add mintuz\u002Fskills --skill principle-fix-root-causes",{"tool":43,"command":44},"bunx","bunx skills add mintuz\u002Fskills --skill principle-fix-root-causes",{"tool":46,"command":47},"pnpm","pnpm dlx skills add mintuz\u002Fskills --skill principle-fix-root-causes","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fprinciple\u002Fskills\u002Fprinciple-fix-root-causes\u002FSKILL.md",true,[],[52,75,98,111,132,149],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":66,"publishedAt":23},"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",[58,63],{"categoryNo":59,"categoryName":60,"taxonomyType":61,"taxonomyTypeDesc":62},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":64,"categoryName":65,"taxonomyType":61,"taxonomyTypeDesc":62},"01JBSEEDCAT000000000000009","前端开发",[54,67,68,69,70,71,72,73,74],"integrations","react","text","open","Charts","state","mermaid","testing",{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":89,"publishedAt":23},"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",[81,84],{"categoryNo":82,"categoryName":83,"taxonomyType":61,"taxonomyTypeDesc":62},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[90,91,92,93,94,95,96,97],"design","web","web design","code","code implementation","ui","polish","typography",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":105,"publishedAt":23},"01M6C4P8D92GJDA49V7X1CZXEV","tailwind","WHEN building design systems or component libraries with Tailwind CSS; covers design tokens, CVA patterns and dark mode.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Ftailwind\u002FSKILL.md",[104],{"categoryNo":82,"categoryName":83,"taxonomyType":61,"taxonomyTypeDesc":62},[106,90,107,108,109,110],"Tailwind","css","component","libraries","design systems",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":120,"publishedAt":23},"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",[117],{"categoryNo":118,"categoryName":119,"taxonomyType":61,"taxonomyTypeDesc":62},"01JBSEEDCAT000000000000007","代码审查",[113,121,122,123,124,125,126,127,128,129,130,93,131],"baseline","SET","plan","behavior","new feature","up","Safety","test","change","feature delivery","refactor",{"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":23},"01M6C4P345APEFEX00J8T7QMXQ","WHEN building or changing React components, pages, hooks, effects, or apps, including edits to existing components; NOT for test code (react-testing) or styling (css, tailwind); enforces scalable architecture, state management, API layer, performance patterns.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Freact\u002FSKILL.md",[137,138],{"categoryNo":59,"categoryName":60,"taxonomyType":61,"taxonomyTypeDesc":62},{"categoryNo":64,"categoryName":65,"taxonomyType":61,"taxonomyTypeDesc":62},[68,140,74,107,141,128,142,143,144,93,72,145,106,146,147,148],"react components","performance","components","architecture","state management","api","management","hooks","styling",{"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":23},"01M6C4P0DK385QBG3B3S86TQV2","react-testing","WHEN testing React components\u002Fhooks\u002Fcontext with React Testing Library; NOT e2e; covers renderHook, providers, forms, and anti-patterns.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Freact-testing\u002FSKILL.md",[155,156],{"categoryNo":59,"categoryName":60,"taxonomyType":61,"taxonomyTypeDesc":62},{"categoryNo":64,"categoryName":65,"taxonomyType":61,"taxonomyTypeDesc":62},[74,158,68,142,140,159,160,161,162,163,164,147],"react testing","testing library","library","Providers","e2e","context","anti-patterns"]