[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BVBW6ANGCESKATQJJDPZ3T":3,"skill-same:01M6BVBW6ANGCESKATQJJDPZ3T":58},{"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":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":14,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":44,"install":45,"resources":57},"01M6BVBW6ANGCESKATQJJDPZ3T","principle-attack-the-premise",null,"Apply when two or more fixes that share one premise have failed the same gate. Write the premise down and test it directly before you write another fix that assumes it.","bnferguson\u002Fdotfiles","bnferguson","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F47749?v=4","01M6BV4H2TJKK8P14W86V1ZCPP","Brandon Ferguson","01M6BV4H7GJWTZJ1BVHQ1TX11Y",0,"MIT","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002Fpstack\u002Fupstream\u002Fskills\u002Fprinciple-attack-the-premise\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"principle attack the premise","test","share","write","fix","gate","it","you","more","true","fixes","down","apply","when","2026-11-10 10:12:30",false,"---\nname: principle-attack-the-premise\ndescription: \"Apply when two or more fixes that share one premise have failed the same gate. Write the premise down and test it directly before you write another fix that assumes it.\"\ndisable-model-invocation: true\n---\n\n# Attack the Premise\n\nWhen two or more fixes that share one premise have failed the same gate, suspect the premise, not the fixes.\n\n**Why:** Each failed fix is evidence against the belief it assumed. A third fix on the same premise spends effort where the evidence already says the cause is not.\n\n**Pattern:**\n- **Write the premise down.** The premise is the one sentence that every failed fix assumed.\n- **Test the premise before the next fix.** Find an observation that would come out differently if the premise were false, and make it. Look at how the failures are distributed, not only at how large they are. Make the check rerunnable per [Build the Lever](..\u002Fprinciple-build-the-lever\u002FSKILL.md).\n- **Follow the evidence.** If it contradicts the premise, the cause is elsewhere. Look for what the failures have in common that the premise did not predict. If it confirms the premise, ask the next \"why\" per [Fix Root Causes](..\u002Fprinciple-fix-root-causes\u002FSKILL.md). The earlier fixes may have treated a consequence instead of the cause.\n- **Remove the condition instead of compensating for it**, per the [Laziness Protocol](..\u002Fprinciple-laziness-protocol\u002FSKILL.md). If the evidence shows that one part always lands on the losing side, change what puts it there. A mechanism that cleans up after it leaves the cause in place and adds work on every run.\n\n**Stop:** Do not start the next fix before the premise is written down and tested.\n\nThis principle is distinct from [Redesign from First Principles](..\u002Fprinciple-redesign-from-first-principles\u002FSKILL.md), which rebuilds a design around a new requirement. It questions a fact the current design assumes.\n","# Attack the Premise\n\nWhen two or more fixes that share one premise have failed the same gate, suspect the premise, not the fixes.\n\n**Why:** Each failed fix is evidence against the belief it assumed. A third fix on the same premise spends effort where the evidence already says the cause is not.\n\n**Pattern:**\n- **Write the premise down.** The premise is the one sentence that every failed fix assumed.\n- **Test the premise before the next fix.** Find an observation that would come out differently if the premise were false, and make it. Look at how the failures are distributed, not only at how large they are. Make the check rerunnable per [Build the Lever](..\u002Fprinciple-build-the-lever\u002FSKILL.md).\n- **Follow the evidence.** If it contradicts the premise, the cause is elsewhere. Look for what the failures have in common that the premise did not predict. If it confirms the premise, ask the next \"why\" per [Fix Root Causes](..\u002Fprinciple-fix-root-causes\u002FSKILL.md). The earlier fixes may have treated a consequence instead of the cause.\n- **Remove the condition instead of compensating for it**, per the [Laziness Protocol](..\u002Fprinciple-laziness-protocol\u002FSKILL.md). If the evidence shows that one part always lands on the losing side, change what puts it there. A mechanism that cleans up after it leaves the cause in place and adds work on every run.\n\n**Stop:** Do not start the next fix before the premise is written down and tested.\n\nThis principle is distinct from [Redesign from First Principles](..\u002Fprinciple-redesign-from-first-principles\u002FSKILL.md), which rebuilds a design around a new requirement. It questions a fact the current design assumes.\n",{"name":5,"description":7,"disable-model-invocation":38},true,"main","e63965e4644984470d4cc8b3014a8b001f0c2666","pstack\u002Fupstream\u002Fskills\u002Fprinciple-attack-the-premise","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles","https:\u002F\u002Fgithub.com\u002Fbnferguson","2026-11-11 03:04:59",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":38},[47,50,53],{"tool":48,"command":49},"npx","npx skills add bnferguson\u002Fdotfiles --skill principle-attack-the-premise",{"tool":51,"command":52},"bunx","bunx skills add bnferguson\u002Fdotfiles --skill principle-attack-the-premise",{"tool":54,"command":55},"pnpm","pnpm dlx skills add bnferguson\u002Fdotfiles --skill principle-attack-the-premise","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002Fpstack\u002Fupstream\u002Fskills\u002Fprinciple-attack-the-premise\u002FSKILL.md",[],[59,91,108,138,147,160],{"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":63,"licenseFileUrl":64,"sourceHtmlUrl":65,"categories":66,"keywords":72,"publishedAt":33},"01M6BVA3RS3M016FANZ6792F9H","skill-creator","Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002Fclaude\u002Fconfig\u002Fskills\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002Fclaude\u002Fconfig\u002Fskills\u002Fskill-creator\u002FSKILL.md",[67],{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,32,90],"creator","skill creator","specialized","workflows","create","update","capabilities","knowledge","tool","integrations","guide","new skill","existing skill","users","with","for","Existing","new",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":105,"publishedAt":33},"01M6BV94WN2RPYM8N6PN8TBNT8","writing-shape","Writing, exploit: shape raw material into an article, paragraph by paragraph.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwriting-shape\u002FSKILL.md",[97,100],{"categoryNo":98,"categoryName":99,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[106,107],"writing shape","writing",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":63,"licenseFileUrl":112,"sourceHtmlUrl":113,"categories":114,"keywords":121,"publishedAt":33},"01M6BV8QDFJ6PXBVK5NFBZT5M7","webapp-testing","Test local web applications using Playwright. Use when verifying frontend functionality, debugging UI behavior, capturing browser screenshots, or viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[115,118],{"categoryNo":116,"categoryName":117,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":119,"categoryName":120,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000009","前端开发",[122,123,124,125,126,127,128,20,129,130,131,132,133,134,135,136,137,32],"webapp","webapp testing","testing","browser","frontend","screenshots","playwright","web","debugging","ui","logs","applications","behavior","use","local","test local",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":33},"01M6BV8MDXKXNVHKS3QF3YDFTF","wait-what","Stop. That last message did not land: re-pitch it.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[145,146],"wait what","land",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":156,"publishedAt":33},"01M6BV756DJHT5BDA1HVRVHJJ7","prototype","Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fprototype\u002FSKILL.md",[153],{"categoryNo":154,"categoryName":155,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000032","设计师",[149,157,158,131,159],"design","explore","state",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":167,"publishedAt":33},"01M6BV6SBW166685KVBPWM2K4N","improve-codebase-architecture","Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fimprove-codebase-architecture\u002FSKILL.md",[166],{"categoryNo":119,"categoryName":120,"taxonomyType":70,"taxonomyTypeDesc":71},[168,169,170,171],"architecture","improve","improve codebase architecture","report"]