[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71RVP62WNNPX8KDDPVR3V26":3,"skill-same:01M71RVP62WNNPX8KDDPVR3V26":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":27,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":59,"install":60,"resources":72},"01M71RVP62WNNPX8KDDPVR3V26","pstack-principle-foundational-thinking",null,"Apply before writing logic: choosing core types and data structures, sequencing scaffold-vs-feature work, asking what concurrent actors share. Get the data structures right so downstream code becomes obvious.","dmae97\u002Fomk","dmae97","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F146327957?v=4","01M71RJRBWDNKEJ1A2DZVES8X1","01M71RJRCYHNT7E83M0Q42V6SJ",152,"MIT","https:\u002F\u002Fgithub.com\u002Fdmae97\u002Fomk\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Fresources\u002Fpstack\u002Fskills\u002Fprinciple-foundational-thinking\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"pstack principle foundational thinking","principle foundational thinking","pstack","thinking","get","apply","true","types","sequencing","feature","logic","data structures","writing","work","data","share","code","core","scaffold","2026-11-10 13:02:02",false,"---\nname: pstack-principle-foundational-thinking\ndescription: \"Apply before writing logic: choosing core types and data structures, sequencing scaffold-vs-feature work, asking what concurrent actors share. Get the data structures right so downstream code becomes obvious.\"\ndisable-model-invocation: true\n---\n\n# Foundational Thinking\n\n**Structural decisions** protect option value. **Code-level decisions** protect simplicity.\n\n**Data structures first.** Get the data shape right before writing logic. Define core types early, trace every access pattern, and choose structures that match the dominant paths.\n\nAt code level, DRY the structure, not every line. Types and data models should converge. Three similar statements still beat a premature abstraction. Prefer explicit over clever. Test behavior and edge cases, not line counts.\n\n**Concurrency corollary.** Before sharing state between actors, ask \"what happens if another actor modifies this concurrently?\" If not \"nothing\", isolate.\n\n**Scaffold first.** If something helps every later phase, do it first. Ask \"does every subsequent phase benefit from this existing?\" CI, linting, test infrastructure, and shared types are scaffold. Sequence for option value: setup before features, tests before fixes. Keep commits small and single-purpose.\n\nEach increment should land a coherent abstraction or deepen one that exists. Do not spread a new capability across callers as special-case coordination.\n\nSubtraction comes before scaffolding. Remove dead code first, then lay foundations.\n","# Foundational Thinking\n\n**Structural decisions** protect option value. **Code-level decisions** protect simplicity.\n\n**Data structures first.** Get the data shape right before writing logic. Define core types early, trace every access pattern, and choose structures that match the dominant paths.\n\nAt code level, DRY the structure, not every line. Types and data models should converge. Three similar statements still beat a premature abstraction. Prefer explicit over clever. Test behavior and edge cases, not line counts.\n\n**Concurrency corollary.** Before sharing state between actors, ask \"what happens if another actor modifies this concurrently?\" If not \"nothing\", isolate.\n\n**Scaffold first.** If something helps every later phase, do it first. Ask \"does every subsequent phase benefit from this existing?\" CI, linting, test infrastructure, and shared types are scaffold. Sequence for option value: setup before features, tests before fixes. Keep commits small and single-purpose.\n\nEach increment should land a coherent abstraction or deepen one that exists. Do not spread a new capability across callers as special-case coordination.\n\nSubtraction comes before scaffolding. Remove dead code first, then lay foundations.\n",{"name":5,"description":7,"disable-model-invocation":52},true,"main","ea03fcf76b438f12f0cebcd6b255d24d4cb52741","packages\u002Fcoding-agent\u002Fresources\u002Fpstack\u002Fskills\u002Fprinciple-foundational-thinking",29,"https:\u002F\u002Fgithub.com\u002Fdmae97\u002Fomk","https:\u002F\u002Fgithub.com\u002Fdmae97","2026-11-12 14:25:52",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":52},[62,65,68],{"tool":63,"command":64},"npx","npx skills add dmae97\u002Fomk --skill pstack-principle-foundational-thinking",{"tool":66,"command":67},"bunx","bunx skills add dmae97\u002Fomk --skill pstack-principle-foundational-thinking",{"tool":69,"command":70},"pnpm","pnpm dlx skills add dmae97\u002Fomk --skill pstack-principle-foundational-thinking","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdmae97\u002Fomk\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Fresources\u002Fpstack\u002Fskills\u002Fprinciple-foundational-thinking\u002FSKILL.md",[],[74,86,100,113,124,132],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":81,"publishedAt":47},"01M71RZKQCQ4G7MP08TE3QQ0PD","valid-skill","A valid skill for testing purposes.","https:\u002F\u002Fgithub.com\u002Fdmae97\u002Fomk\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Fvalid-skill\u002FSKILL.md",[80],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[82,83,84,85],"valid skill","valid","testing","for",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":93,"publishedAt":47},"01M71RZJ8YHH8GKADPTSZBCJ1T","unknown-field","A skill with an unknown frontmatter field.","https:\u002F\u002Fgithub.com\u002Fdmae97\u002Fomk\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Funknown-field\u002FSKILL.md",[92],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[94,95,96,97,98,99],"unknown","unknown field","a skill","frontmatter","with","unknown frontmatter field",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":107,"publishedAt":47},"01M71RZH4FVEENABTV8WTQ5HTS","nested-child","Nested skill should be ignored.","https:\u002F\u002Fgithub.com\u002Fdmae97\u002Fomk\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Froot-skill-preferred\u002Fnested-child\u002FSKILL.md",[106],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[108,109,110,111,112],"nested child","child","nested","ignored","nested skill",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":120,"publishedAt":47},"01M71RZFZYSXRRVY5M8HP05NJV","root-skill-preferred","Root skill should win.","https:\u002F\u002Fgithub.com\u002Fdmae97\u002Fomk\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Froot-skill-preferred\u002FSKILL.md",[119],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[121,122,123],"root","root skill preferred","root skill",{"skillNo":125,"name":126,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":130,"publishedAt":47},"01M71RZEQDH7RZ1PH36G7GPN9N","no-frontmatter","https:\u002F\u002Fgithub.com\u002Fdmae97\u002Fomk\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Fno-frontmatter\u002FSKILL.md",[129],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[97,131],"no frontmatter",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":139,"publishedAt":47},"01M71RZDC0QR3ZJQ549N3H94Y4","child-skill","A nested skill in a subdirectory.","https:\u002F\u002Fgithub.com\u002Fdmae97\u002Fomk\u002Fblob\u002Fmain\u002Fpackages\u002Fcoding-agent\u002Ftest\u002Ffixtures\u002Fskills\u002Fnested\u002Fchild-skill\u002FSKILL.md",[138],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[140,109,112,110],"child skill"]