[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DMGA2FXRVC2Q3AFQ58Z1H6":3,"skill-same:01M7DMGA2FXRVC2Q3AFQ58Z1H6":45},{"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":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":29,"ownerHtmlUrl":30,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":31,"install":32,"resources":44},"01M7DMGA2FXRVC2Q3AFQ58Z1H6","principle-model-the-domain",null,"编写有状态逻辑，或代码大量分支、跨文件重复形状假设时应用。","fenfenxu\u002Fpstack-zh","fenfenxu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2194243?v=4","01M7DMDSWBASX3NXC18FPHDJ8G","01M7DMDSWV8ASCZ4PH6YFXHPSJ",3,"MIT","https:\u002F\u002Fgithub.com\u002Ffenfenxu\u002Fpstack-zh\u002Fblob\u002Fmain\u002Fskills\u002Fprinciple-model-the-domain\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: principle-model-the-domain\ndescription: \"编写有状态逻辑，或代码大量分支、跨文件重复形状假设时应用。\"\ndisable-model-invocation: true\n---\n\n# 建模领域\n\n用数据结构编码真实领域，而非把领域散在条件判断里。匹配领域的结构使非法状态无法表示并删除分支。写时选择便宜。事后恢复像 refactor，会被推迟。\n\n优先考虑：\n\n- 状态机，替代散落的布尔、阶段或生命周期检查。\n- 类型化模型，替代松散参数或重复形状假设。\n- map、registry、查找表或可区分联合，替代跨文件分支。\n- reducer 或 command\u002Fevent 模型，替代随意状态变更。\n- 围绕一块领域知识组织的模块，而非 load、validate、transform、save 这类序列。执行顺序不是所有权。\n- 小模块边界，汇聚重复行为、所有权或 invariant。\n- queue、cache、index、图、树或规范化集合，当访问模式需要时。\n- 任何合适的其他结构。都不合适时，弄清代码绝不允许什么、数据如何被读，再找恰好编码该点的结构。\n\n不要强造抽象。当前形状已清晰、局部且不太可能继续膨胀时，优先简单直接的代码。对增加间接却不删分支、重复规则、非法状态或生命周期风险的抽象保持怀疑。\n\n跳过本原则的信号：新功能让现有 if\u002Felse 链又长一支，或第二个布尔须与第一个同步。按时间分解是另一信号。阶段命名模块会在多步重复同一领域规则。\n","# 建模领域\n\n用数据结构编码真实领域，而非把领域散在条件判断里。匹配领域的结构使非法状态无法表示并删除分支。写时选择便宜。事后恢复像 refactor，会被推迟。\n\n优先考虑：\n\n- 状态机，替代散落的布尔、阶段或生命周期检查。\n- 类型化模型，替代松散参数或重复形状假设。\n- map、registry、查找表或可区分联合，替代跨文件分支。\n- reducer 或 command\u002Fevent 模型，替代随意状态变更。\n- 围绕一块领域知识组织的模块，而非 load、validate、transform、save 这类序列。执行顺序不是所有权。\n- 小模块边界，汇聚重复行为、所有权或 invariant。\n- queue、cache、index、图、树或规范化集合，当访问模式需要时。\n- 任何合适的其他结构。都不合适时，弄清代码绝不允许什么、数据如何被读，再找恰好编码该点的结构。\n\n不要强造抽象。当前形状已清晰、局部且不太可能继续膨胀时，优先简单直接的代码。对增加间接却不删分支、重复规则、非法状态或生命周期风险的抽象保持怀疑。\n\n跳过本原则的信号：新功能让现有 if\u002Felse 链又长一支，或第二个布尔须与第一个同步。按时间分解是另一信号。阶段命名模块会在多步重复同一领域规则。\n",{"name":5,"description":7,"disable-model-invocation":23},true,"main","e4477188d43269545432a83e4ac5d0733a812d09","skills\u002Fprinciple-model-the-domain",0,"https:\u002F\u002Fgithub.com\u002Ffenfenxu\u002Fpstack-zh","http:\u002F\u002Fpstack.ganhai.cloud","https:\u002F\u002Fgithub.com\u002Ffenfenxu","2026-10-21 12:14:41",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":23},[34,37,40],{"tool":35,"command":36},"npx","npx skills add fenfenxu\u002Fpstack-zh --skill principle-model-the-domain",{"tool":38,"command":39},"bunx","bunx skills add fenfenxu\u002Fpstack-zh --skill principle-model-the-domain",{"tool":41,"command":42},"pnpm","pnpm dlx skills add fenfenxu\u002Fpstack-zh --skill principle-model-the-domain","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ffenfenxu\u002Fpstack-zh\u002Fblob\u002Fmain\u002Fskills\u002Fprinciple-model-the-domain\u002FSKILL.md",[],[46,53,60,67,74,81],{"skillNo":47,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":50,"categories":51,"keywords":52,"publishedAt":18},"01M7DMHJV7QMEE1F43FFW98FV8","why","用于「为什么 X 是这样实现的」「为什么选了 Y」、设计理由、回归、事后复盘，或数据支撑的阈值问题。发现可用 MCP 并并行查询各证据类别（源码控制、工单跟踪、长文文档、实时聊天、基础设施可观测性、错误跟踪、产品分析数仓），然后返回带引用的决策与权衡解读。运行时行为请用 how。","https:\u002F\u002Fgithub.com\u002Ffenfenxu\u002Fpstack-zh\u002Fblob\u002Fmain\u002Fskills\u002Fwhy\u002FSKILL.md",[],[],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":59,"publishedAt":18},"01M7DMHHRSS2SCZN6HWSANBJ35","unslop","从任意写作中剔除 AI 痕迹。","https:\u002F\u002Fgithub.com\u002Ffenfenxu\u002Fpstack-zh\u002Fblob\u002Fmain\u002Fskills\u002Funslop\u002FSKILL.md",[],[],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":18},"01M7DMHGFGH2YT86WQ6A53693W","typescript-best-practices","TypeScript 最佳实践。读取或编辑任意 .ts 或 .tsx 文件时使用。","https:\u002F\u002Fgithub.com\u002Ffenfenxu\u002Fpstack-zh\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-best-practices\u002FSKILL.md",[],[],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":18},"01M7DMHEA1EGG2D9XQ33N66GDS","technical-writing","分层技术写作标准：Diátaxis 结构、Google 开发者风格句子、STE 指令规则、Global English 句法。用于 \u002Ftechnical-writing，或撰写\u002F审查文档、RFC、README、PR 描述、commit message 时。","https:\u002F\u002Fgithub.com\u002Ffenfenxu\u002Fpstack-zh\u002Fblob\u002Fmain\u002Fskills\u002Ftechnical-writing\u002FSKILL.md",[],[],{"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":80,"publishedAt":18},"01M7DMHCEXE1YRDR6XC1RXBG76","teach","用平实语言解释一段工作，让人真正理解。运行 how 与 why skill，把发现织成一份清晰说明。用于「teach me this」「help me really understand X」「explain this change or subsystem to me」。","https:\u002F\u002Fgithub.com\u002Ffenfenxu\u002Fpstack-zh\u002Fblob\u002Fmain\u002Fskills\u002Fteach\u002FSKILL.md",[],[],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":18},"01M7DMH9KNBP83SHAW4TGZ4713","tdd","仅当用户明确要求 TDD、失败测试或回归测试时使用，或 bug 有明显且廉价的本地测试目标时使用。测试路径不清、昂贵、偏集成或未要求时跳过。","https:\u002F\u002Fgithub.com\u002Ffenfenxu\u002Fpstack-zh\u002Fblob\u002Fmain\u002Fskills\u002Ftdd\u002FSKILL.md",[],[]]