[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7ES9BV4SWTNXCTDM49CXYXN":3,"skill-same:01M7ES9BV4SWTNXCTDM49CXYXN":55},{"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":20,"linkOnly":21,"markdownContent":22,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":14,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M7ES9BV4SWTNXCTDM49CXYXN","principle-fix-root-causes",null,"Apply when debugging. Trace each symptom to its root cause and fix it there; reproduce first, ask why until you reach it, resist nil-check guards that silence crashes.","vultuk\u002Fskills-plugins","vultuk","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F271838?v=4","01M7ES3YGAEPNBHP83DJ2947AC","Simon Skinner","01M7ES3YGX2PJTT1E2DXQWZ30H",0,"MIT","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Fprinciple-fix-root-causes\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Fprinciple-fix-root-causes\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: principle-fix-root-causes\ndescription: \"Apply when debugging. Trace each symptom to its root cause and fix it there; reproduce first, ask why until you reach it, resist nil-check guards that silence crashes.\"\n---\n\n\n# Fix Root Causes\n\nWhen debugging, do not fix symptoms. Trace every problem to its root cause and fix it there.\n\n**Why:** Symptom fixes accumulate. Each workaround makes the system harder to reason about, and the real bug remains. Root-cause fixes are slower upfront but reduce total debugging time.\n\n**Pattern:**\n- Reproduce first\n- Ask \"why\" until you hit the root cause\n- Do not add guards (adding a nil check to silence a crash is a symptom fix)\n- If a workaround needs a paragraph-long comment to justify it, the code is wrong (fix the code, not the comment)\n- Check for the pattern, not just the instance (search for the same pattern; fix instances only within authorized scope and report others)\n- When stuck, instrument. Don't guess (add logging, read the actual error)\n- If the deciding fact took a deep dig to find, propose the cheap, always-on signal that would have shown it at first look\n\n**Restart bugs: suspect state before code**\n\nWhen something \"fails after restart,\" suspect stale persistent state first: config files, caches, lock files, serialized state. If clearing a state file restores behavior, prioritize state validation as the fix.\n","# Fix Root Causes\n\nWhen debugging, do not fix symptoms. Trace every problem to its root cause and fix it there.\n\n**Why:** Symptom fixes accumulate. Each workaround makes the system harder to reason about, and the real bug remains. Root-cause fixes are slower upfront but reduce total debugging time.\n\n**Pattern:**\n- Reproduce first\n- Ask \"why\" until you hit the root cause\n- Do not add guards (adding a nil check to silence a crash is a symptom fix)\n- If a workaround needs a paragraph-long comment to justify it, the code is wrong (fix the code, not the comment)\n- Check for the pattern, not just the instance (search for the same pattern; fix instances only within authorized scope and report others)\n- When stuck, instrument. Don't guess (add logging, read the actual error)\n- If the deciding fact took a deep dig to find, propose the cheap, always-on signal that would have shown it at first look\n\n**Restart bugs: suspect state before code**\n\nWhen something \"fails after restart,\" suspect stale persistent state first: config files, caches, lock files, serialized state. If clearing a state file restores behavior, prioritize state validation as the fix.\n",{"name":5,"description":7},"main","70adcb793e5f48e0e95760801c06c2b4a1b884c4","plugins\u002Fpstack\u002Fskills\u002Fprinciple-fix-root-causes","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins","https:\u002F\u002Fgithub.com\u002Fvultuk","2026-10-15 16:01:08",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add vultuk\u002Fskills-plugins --skill principle-fix-root-causes",{"tool":37,"command":38},"bunx","bunx skills add vultuk\u002Fskills-plugins --skill principle-fix-root-causes",{"tool":40,"command":41},"pnpm","pnpm dlx skills add vultuk\u002Fskills-plugins --skill principle-fix-root-causes","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Fprinciple-fix-root-causes\u002FSKILL.md",true,[45,51],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"agents\u002Fopenai.yaml","REFERENCE","参考文档",43,"https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Fprinciple-fix-root-causes\u002Fagents\u002Fopenai.yaml",{"path":52,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":54,"sourceHtmlUrl":16},"LICENSE","许可证",1067,[56,64,72,80,88,96],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":60,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":20},"01M7ESXCFVAZ812CJE3B55Q2P9","why","Use for 'why does X work this way', 'why we picked Y', design rationale, regressions, postmortems, or data-backed thresholds. Discovers available MCPs and queries each evidence category (source control, issue tracker, long-form docs, real-time chat, infrastructure observability, error tracking, product analytics warehouse) in parallel, then returns a cited read on decisions and tradeoffs. Use how for runtime behavior.","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Fwhy\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Fwhy\u002FSKILL.md",[],[],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":68,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":20},"01M7ESX94ZH998NFEDYWWZ3KPB","verify-this","Verify a claim with fresh local evidence: restate it falsifiably, capture baseline and treatment, compare artifacts, and return VERIFIED, NOT VERIFIED, or INCONCLUSIVE.","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Fverify-this\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Fverify-this\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":76,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":20},"01M7ESWN09M3H3BXEW47JAWS54","unslop","Cut AI tells from any writing.","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Funslop\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Funslop\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":84,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":20},"01M7ESWJRXQQD64VXT86CSVDPY","typescript-best-practices","TypeScript best practices. Use when reading or editing any .ts or .tsx file.","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Ftypescript-best-practices\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Ftypescript-best-practices\u002FSKILL.md",[],[],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":92,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":20},"01M7ESW6JKSZKCT7W24WD39JG0","technical-writing","Layered technical-writing standard: Diátaxis structure, Google developer style sentences, STE instruction rules, Global English syntax. Use for \u002Ftechnical-writing or when writing or reviewing docs, RFCs, readmes, PR descriptions, or commit messages.","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Ftechnical-writing\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Ftechnical-writing\u002FSKILL.md",[],[],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":100,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":20},"01M7ESV5734KYK1R12T20KF8FC","tdd","Use only when the user explicitly asks for TDD, a failing test, or a regression test, OR when the bug has an obvious cheap local test target. Skip when the test path is unclear, expensive, integration-heavy, or not requested.","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Ftdd\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fvultuk\u002Fskills-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fpstack\u002Fskills\u002Ftdd\u002FSKILL.md",[],[]]