[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7E73Z0QGSBWVCBV9SC2B8WS":3,"skill-same:01M7E73Z0QGSBWVCBV9SC2B8WS":46},{"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":30,"ownerDescription":31,"updatedAt":32,"install":33,"resources":45},"01M7E73Z0QGSBWVCBV9SC2B8WS","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.","YunosukeYoshino\u002Fpstack-devin","YunosukeYoshino","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F26004836?v=4","01M6KMF4SG2J509712G20SECG6","YOSHINO","01M7E71V5R99WHS6SVEF43F0YB",0,"MIT","https:\u002F\u002Fgithub.com\u002FYunosukeYoshino\u002Fpstack-devin\u002Fblob\u002Fmain\u002Flib\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 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 (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\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 (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\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,"disable-model-invocation":24},true,"main","981ba1d05c1c7b711015fd0b3ebba5ac3cc1ef25","lib\u002Fprinciple-fix-root-causes","https:\u002F\u002Fgithub.com\u002FYunosukeYoshino\u002Fpstack-devin","https:\u002F\u002Fgithub.com\u002FYunosukeYoshino","https:\u002F\u002Fyunosukeyoshino.com\u002F","Switch2が欲しい\r\n\r\n","2026-11-01 12:57:56",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":24},[35,38,41],{"tool":36,"command":37},"npx","npx skills add YunosukeYoshino\u002Fpstack-devin --skill principle-fix-root-causes",{"tool":39,"command":40},"bunx","bunx skills add YunosukeYoshino\u002Fpstack-devin --skill principle-fix-root-causes",{"tool":42,"command":43},"pnpm","pnpm dlx skills add YunosukeYoshino\u002Fpstack-devin --skill principle-fix-root-causes","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FYunosukeYoshino\u002Fpstack-devin\u002Fblob\u002Fmain\u002Flib\u002Fprinciple-fix-root-causes\u002FSKILL.md",[],[47,54,61,68,75,82],{"skillNo":48,"name":49,"nameZh":6,"description":50,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":51,"categories":52,"keywords":53,"publishedAt":19},"01M7E76PXDNP9MXPTYJ6SVCQK2","pstack","poteto-mode for Devin: deliberate, verified, concise engineering mode that routes to the bundled pstack library (how, why, architect, swarm, arena, interrogate, tdd, unslop, principles, playbooks). Invoke explicitly via @skills:pstack or when the user asks for poteto \u002F pstack mode.","https:\u002F\u002Fgithub.com\u002FYunosukeYoshino\u002Fpstack-devin\u002Fblob\u002Fmain\u002Fskills\u002Fpstack\u002FSKILL.md",[],[],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M7E76GW88YDE0JVYEFFG8PVQ","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\u002FYunosukeYoshino\u002Fpstack-devin\u002Fblob\u002Fmain\u002Flib\u002Fwhy\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":19},"01M7E76FB5DBYMRAS70P9PV1ZH","unslop","Cut AI tells from any writing. Must always apply.","https:\u002F\u002Fgithub.com\u002FYunosukeYoshino\u002Fpstack-devin\u002Fblob\u002Fmain\u002Flib\u002Funslop\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":19},"01M7E76DKS5VBNG72KEBZNXQJV","typescript-best-practices","TypeScript best practices. Use when reading or editing any .ts or .tsx file.","https:\u002F\u002Fgithub.com\u002FYunosukeYoshino\u002Fpstack-devin\u002Fblob\u002Fmain\u002Flib\u002Ftypescript-best-practices\u002FSKILL.md",[],[],{"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":81,"publishedAt":19},"01M7E769BM5JKZPH3QSCHE3HNZ","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\u002FYunosukeYoshino\u002Fpstack-devin\u002Fblob\u002Fmain\u002Flib\u002Ftechnical-writing\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":19},"01M7E765Y4K0CB17J2S7QZ4F59","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\u002FYunosukeYoshino\u002Fpstack-devin\u002Fblob\u002Fmain\u002Flib\u002Fteach\u002FSKILL.md",[],[]]