[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7B487S615PR46ZR5FJS5R9Y":3,"skill-same:01M7B487S615PR46ZR5FJS5R9Y":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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":28,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M7B487S615PR46ZR5FJS5R9Y","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.","Aqua-123\u002Fpstack-for-codex","Aqua-123","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F86239876?v=4","01M7B458HX3SN6PFMH26QACXHK","Aqua","01M7B458JP4A60EVJA4WEY7SFR",109,"MIT","https:\u002F\u002Fgithub.com\u002FAqua-123\u002Fpstack-for-codex\u002Fblob\u002Fmain\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# Fix Root Causes\n\nWhen debugging, do not paper over 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 (if you can't reproduce it, you can't verify your fix)\n- Ask \"why\" until you hit the root cause\n- Resist the urge to 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 (grep for the same pattern, fix all instances)\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\nCode doesn't change between runs. State does. When 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 paper over 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 (if you can't reproduce it, you can't verify your fix)\n- Ask \"why\" until you hit the root cause\n- Resist the urge to 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 (grep for the same pattern, fix all instances)\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\nCode doesn't change between runs. State does. When 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","d5b20bce6f0602e3155960b5ea46e47fa0692ad2","skills\u002Fprinciple-fix-root-causes",19,"https:\u002F\u002Fgithub.com\u002FAqua-123\u002Fpstack-for-codex","https:\u002F\u002Fgithub.com\u002FAqua-123","2026-11-14 06:14:34",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add Aqua-123\u002Fpstack-for-codex --skill principle-fix-root-causes",{"tool":37,"command":38},"bunx","bunx skills add Aqua-123\u002Fpstack-for-codex --skill principle-fix-root-causes",{"tool":40,"command":41},"pnpm","pnpm dlx skills add Aqua-123\u002Fpstack-for-codex --skill principle-fix-root-causes","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAqua-123\u002Fpstack-for-codex\u002Fblob\u002Fmain\u002Fskills\u002Fprinciple-fix-root-causes\u002FSKILL.md",true,[45],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"agents\u002Fopenai.yaml","REFERENCE","参考文档",311,"https:\u002F\u002Fgithub.com\u002FAqua-123\u002Fpstack-for-codex\u002Fblob\u002Fmain\u002Fskills\u002Fprinciple-fix-root-causes\u002Fagents\u002Fopenai.yaml",[52,59,66,73,80,87],{"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":58,"publishedAt":19},"01M7B4B801F05H7M25W5R1WPTC","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\u002FAqua-123\u002Fpstack-for-codex\u002Fblob\u002Fmain\u002Fskills\u002Fwhy\u002FSKILL.md",[],[],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":19},"01M7B4B6AX64TQTHQ6S1J724FA","unslop","Cut AI tells from any writing. Must always apply.","https:\u002F\u002Fgithub.com\u002FAqua-123\u002Fpstack-for-codex\u002Fblob\u002Fmain\u002Fskills\u002Funslop\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":19},"01M7B4B4H352GFCSGK6TW53CK1","typescript-best-practices","TypeScript best practices. Use when reading or editing any .ts or .tsx file.","https:\u002F\u002Fgithub.com\u002FAqua-123\u002Fpstack-for-codex\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-best-practices\u002FSKILL.md",[],[],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":19},"01M7B4B0S042R380EPHBDDWC37","technical-writing","Layered technical-writing standard: Diátaxis structure, Google developer style sentences, STE instruction rules, Global English syntax. Use for $technical-writing or when writing or reviewing docs, RFCs, readmes, PR descriptions, or commit messages.","https:\u002F\u002Fgithub.com\u002FAqua-123\u002Fpstack-for-codex\u002Fblob\u002Fmain\u002Fskills\u002Ftechnical-writing\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":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M7B4AXQTEMW7E7ZVV5SK3MPA","teach","Explain a body of work plainly so a person actually understands it. Runs the `how` and `why` skills and weaves what they find into one clear explanation. Use for 'teach me this', 'help me really understand X', 'explain this change or subsystem to me'.","https:\u002F\u002Fgithub.com\u002FAqua-123\u002Fpstack-for-codex\u002Fblob\u002Fmain\u002Fskills\u002Fteach\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":19},"01M7B4ATQP0JBSBYC0Z43J2FSE","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\u002FAqua-123\u002Fpstack-for-codex\u002Fblob\u002Fmain\u002Fskills\u002Ftdd\u002FSKILL.md",[],[]]