[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7BYMTHM0D6D3NET1ZKAFWZ0":3,"skill-same:01M7BYMTHM0D6D3NET1ZKAFWZ0":44},{"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":25,"commitSha":26,"skillDirectory":27,"forksCount":14,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":43},"01M7BYMTHM0D6D3NET1ZKAFWZ0","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.","korallis\u002FK-pi","korallis","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7937632?v=4","01M7BYCA2A031YRNJVNW3760BJ","Korallis","01M7BYCA2XQW5FFDZDQRGQ2BDR",0,"MIT","https:\u002F\u002Fgithub.com\u002Fkorallis\u002FK-pi\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Fsrc\u002Fkpi\u002Fkstack\u002Fupstream\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.\"\ndisable-model-invocation: true\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\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\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,"disable-model-invocation":24},true,"main","c2b3920acd43de24482584c7e70571b082720407","packages\u002Fcoding-agent\u002Fsrc\u002Fkpi\u002Fkstack\u002Fupstream\u002Fskills\u002Fprinciple-fix-root-causes","https:\u002F\u002Fgithub.com\u002Fkorallis\u002FK-pi","https:\u002F\u002Fgithub.com\u002Fkorallis","2026-11-11 19:10:27",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":24},[33,36,39],{"tool":34,"command":35},"npx","npx skills add korallis\u002FK-pi --skill principle-fix-root-causes",{"tool":37,"command":38},"bunx","bunx skills add korallis\u002FK-pi --skill principle-fix-root-causes",{"tool":40,"command":41},"pnpm","pnpm dlx skills add korallis\u002FK-pi --skill principle-fix-root-causes","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkorallis\u002FK-pi\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Fsrc\u002Fkpi\u002Fkstack\u002Fupstream\u002Fskills\u002Fprinciple-fix-root-causes\u002FSKILL.md",[],[45,52,59,66,73,79],{"skillNo":46,"name":47,"nameZh":6,"description":48,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":49,"categories":50,"keywords":51,"publishedAt":19},"01M7BYR99ZGEPDY6FK87N4PGS5","valid-skill","A valid skill for testing purposes.","https:\u002F\u002Fgithub.com\u002Fkorallis\u002FK-pi\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Fvalid-skill\u002FSKILL.md",[],[],{"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},"01M7BYR85Z82CBHA5EB58T3XYA","unknown-field","A skill with an unknown frontmatter field.","https:\u002F\u002Fgithub.com\u002Fkorallis\u002FK-pi\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Funknown-field\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},"01M7BYR788DFN7CN04F2DGA5DA","nested-child","Nested skill should be ignored.","https:\u002F\u002Fgithub.com\u002Fkorallis\u002FK-pi\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Froot-skill-preferred\u002Fnested-child\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},"01M7BYR6BYWYNTZ7YV267N0R1M","root-skill-preferred","Root skill should win.","https:\u002F\u002Fgithub.com\u002Fkorallis\u002FK-pi\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Froot-skill-preferred\u002FSKILL.md",[],[],{"skillNo":74,"name":75,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":19},"01M7BYR5HW3RWVR3YF59QNDBNR","no-frontmatter","https:\u002F\u002Fgithub.com\u002Fkorallis\u002FK-pi\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Fno-frontmatter\u002FSKILL.md",[],[],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":19},"01M7BYR4JV0YAT0AMG8MRAK1VM","child-skill","A nested skill in a subdirectory.","https:\u002F\u002Fgithub.com\u002Fkorallis\u002FK-pi\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Fnested\u002Fchild-skill\u002FSKILL.md",[],[]]