[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CF9HCW5GEH9HXPRXJCC66H":3,"skill-same:01M6CF9HCW5GEH9HXPRXJCC66H":69},{"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":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":38,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M6CF9HCW5GEH9HXPRXJCC66H","domain-modeling",null,"Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a CONTEXT.md, or recording or editing an ADR.","HeathWang\u002Fhw-cc-plugin","HeathWang","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4961711?v=4","01M6CF9BZ3A0CSSG3QQGGDPFEH","Heath Wang","01M6CF9C3HT4NPM370Z8MYZW4G",1,"MIT","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fnotused\u002Fdomain-modeling\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27],"domain modeling","writing","sharpen","model","adr","editing","context","use","build","2026-11-10 10:12:30",false,"---\nname: domain-modeling\ndescription: Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a CONTEXT.md, or recording or editing an ADR.\n---\n\n# Domain Modeling\n\nActively build and sharpen the project's domain model as you design. This is the *active* discipline: challenging terms, inventing edge-case scenarios, and writing the glossary and decisions down the moment they crystallise. (Merely *reading* `CONTEXT.md` for vocabulary is not this skill: that's a one-line habit any skill can do. This skill is for when you're changing the model, not just consuming it.)\n\n## File structure\n\nMost repos have a single context:\n\n```\n\u002F\n├── CONTEXT.md\n├── docs\u002F\n│   └── adr\u002F\n│       ├── 0001-event-sourced-orders.md\n│       └── 0002-postgres-for-write-model.md\n└── src\u002F\n```\n\nIf a `CONTEXT-MAP.md` exists at the root, the repo has multiple contexts. The map points to where each one lives:\n\n```\n\u002F\n├── CONTEXT-MAP.md\n├── docs\u002F\n│   └── adr\u002F                          ← system-wide decisions\n├── src\u002F\n│   ├── ordering\u002F\n│   │   ├── CONTEXT.md\n│   │   └── docs\u002Fadr\u002F                 ← context-specific decisions\n│   └── billing\u002F\n│       ├── CONTEXT.md\n│       └── docs\u002Fadr\u002F\n```\n\nCreate files lazily: only when you have something to write. If no `CONTEXT.md` exists, create one when the first term is resolved. If no `docs\u002Fadr\u002F` exists, create it when the first ADR is needed.\n\n## During the session\n\n### Challenge against the glossary\n\nWhen the user uses a term that conflicts with the existing language in `CONTEXT.md`, call it out immediately. \"Your glossary defines 'cancellation' as X, but you seem to mean Y. Which is it?\"\n\n### Sharpen fuzzy language\n\nWhen the user uses vague or overloaded terms, propose a precise canonical term. \"You're saying 'account': do you mean the Customer or the User? Those are different things.\"\n\n### Discuss concrete scenarios\n\nWhen domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force the user to be precise about the boundaries between concepts.\n\n### Cross-reference with code\n\nWhen the user states how something works, check whether the code agrees. If you find a contradiction, surface it: \"Your code cancels entire Orders, but you just said partial cancellation is possible. Which is right?\"\n\n### Update CONTEXT.md inline\n\nWhen a term is resolved, update `CONTEXT.md` right there. Don't batch these up: capture them as they happen. Use the format in [CONTEXT-FORMAT.md](.\u002FCONTEXT-FORMAT.md).\n\n`CONTEXT.md` should be totally devoid of implementation details. Do not treat `CONTEXT.md` as a spec, a scratch pad, or a repository for implementation decisions. It is a glossary and nothing else.\n\n### Offer ADRs sparingly\n\nOnly offer to create an ADR when all three are true:\n\n1. **Hard to reverse**: the cost of changing your mind later is meaningful\n2. **Surprising without context**: a future reader will wonder \"why did they do it this way?\"\n3. **The result of a real trade-off**: there were genuine alternatives and you picked one for specific reasons\n\nIf any of the three is missing, skip the ADR. Use the format in [ADR-FORMAT.md](.\u002FADR-FORMAT.md).\n","# Domain Modeling\n\nActively build and sharpen the project's domain model as you design. This is the *active* discipline: challenging terms, inventing edge-case scenarios, and writing the glossary and decisions down the moment they crystallise. (Merely *reading* `CONTEXT.md` for vocabulary is not this skill: that's a one-line habit any skill can do. This skill is for when you're changing the model, not just consuming it.)\n\n## File structure\n\nMost repos have a single context:\n\n```\n\u002F\n├── CONTEXT.md\n├── docs\u002F\n│   └── adr\u002F\n│       ├── 0001-event-sourced-orders.md\n│       └── 0002-postgres-for-write-model.md\n└── src\u002F\n```\n\nIf a `CONTEXT-MAP.md` exists at the root, the repo has multiple contexts. The map points to where each one lives:\n\n```\n\u002F\n├── CONTEXT-MAP.md\n├── docs\u002F\n│   └── adr\u002F                          ← system-wide decisions\n├── src\u002F\n│   ├── ordering\u002F\n│   │   ├── CONTEXT.md\n│   │   └── docs\u002Fadr\u002F                 ← context-specific decisions\n│   └── billing\u002F\n│       ├── CONTEXT.md\n│       └── docs\u002Fadr\u002F\n```\n\nCreate files lazily: only when you have something to write. If no `CONTEXT.md` exists, create one when the first term is resolved. If no `docs\u002Fadr\u002F` exists, create it when the first ADR is needed.\n\n## During the session\n\n### Challenge against the glossary\n\nWhen the user uses a term that conflicts with the existing language in `CONTEXT.md`, call it out immediately. \"Your glossary defines 'cancellation' as X, but you seem to mean Y. Which is it?\"\n\n### Sharpen fuzzy language\n\nWhen the user uses vague or overloaded terms, propose a precise canonical term. \"You're saying 'account': do you mean the Customer or the User? Those are different things.\"\n\n### Discuss concrete scenarios\n\nWhen domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force the user to be precise about the boundaries between concepts.\n\n### Cross-reference with code\n\nWhen the user states how something works, check whether the code agrees. If you find a contradiction, surface it: \"Your code cancels entire Orders, but you just said partial cancellation is possible. Which is right?\"\n\n### Update CONTEXT.md inline\n\nWhen a term is resolved, update `CONTEXT.md` right there. Don't batch these up: capture them as they happen. Use the format in [CONTEXT-FORMAT.md](.\u002FCONTEXT-FORMAT.md).\n\n`CONTEXT.md` should be totally devoid of implementation details. Do not treat `CONTEXT.md` as a spec, a scratch pad, or a repository for implementation decisions. It is a glossary and nothing else.\n\n### Offer ADRs sparingly\n\nOnly offer to create an ADR when all three are true:\n\n1. **Hard to reverse**: the cost of changing your mind later is meaningful\n2. **Surprising without context**: a future reader will wonder \"why did they do it this way?\"\n3. **The result of a real trade-off**: there were genuine alternatives and you picked one for specific reasons\n\nIf any of the three is missing, skip the ADR. Use the format in [ADR-FORMAT.md](.\u002FADR-FORMAT.md).\n",{"name":5,"description":7},"master","a12b4ddfc807225744ed4ddecc493e87048dca69","notused\u002Fdomain-modeling",0,"https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin","https:\u002F\u002Fgithub.com\u002FHeathWang","iOS \u002F front end \u002F python develper","2026-11-03 17:20:23",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add HeathWang\u002Fhw-cc-plugin --skill domain-modeling",{"tool":47,"command":48},"bunx","bunx skills add HeathWang\u002Fhw-cc-plugin --skill domain-modeling",{"tool":50,"command":51},"pnpm","pnpm dlx skills add HeathWang\u002Fhw-cc-plugin --skill domain-modeling","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fnotused\u002Fdomain-modeling\u002FSKILL.md",true,[55,61,65],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"ADR-FORMAT.md","REFERENCE","参考文档",2733,"https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fnotused\u002Fdomain-modeling\u002FADR-FORMAT.md",{"path":62,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":63,"sourceHtmlUrl":64},"agents\u002Fopenai.yaml",101,"https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fnotused\u002Fdomain-modeling\u002Fagents\u002Fopenai.yaml",{"path":66,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":67,"sourceHtmlUrl":68},"CONTEXT-FORMAT.md",2290,"https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fnotused\u002Fdomain-modeling\u002FCONTEXT-FORMAT.md",[70,101,122,132,144,162],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":81,"publishedAt":28},"01M6CFBEFHMPFRFM9AQAJVVAR0","reconstructing-ui-from-screenshots","Use when implementing or correcting an app or web UI from a design image, screenshot, mockup, or reference PNG where accurate size, spacing, color, typography, assets, and alignment matter.","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Freconstructing-ui-from-screenshots\u002FSKILL.md",[76],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[82,83,84,85,86,87,26,88,89,90,91,92,93,94,95,96,97,98,99,100],"screenshots","ui","reconstructing ui from screenshots","mockup","alignment","design","image","web","assets","screenshot","reference","typography","png","app","color","implementing","web ui","size","spacing",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":28},"01M6CFBBT8EXTSBHXEFGRWRZ3C","question-answer","Use when the user wants a read-only explanation of existing code behavior, architecture, control flow, data flow, dependencies, or implementation decisions and has not requested project changes.","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Fquestion-answer\u002FSKILL.md",[],[108,109,110,111,112,113,114,115,116,117,118,119,120,26,121],"question","question answer","flow","grep","architecture","read","data","implementation","user","behavior","webfetch","code","only","decisions",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":28},"01M6CFB60X8Q9479W73SJCDEVJ","java-to-swift","Use when converting Java 1.8 classes to Swift 5.0+ Codable structs - handling type mapping, nullability, inheritance flattening, BaseReq exclusions, and property naming conventions.","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Fjava-to-swift\u002FSKILL.md",[],[129,130,131,113,111,26],"java","java to swift","swift",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":138,"publishedAt":28},"01M6CFB3DMRW02HSYWMMK3VDPM","java-to-nextjs","Use when converting Java 1.8 classes to Next.js TypeScript interface definitions - handling type mapping, nullability, inheritance, naming conventions, and BaseReq\u002FBaseResponse exclusions.","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Fjava-to-nextjs\u002FSKILL.md",[],[129,139,140,26,141,113,142,111,143],"java to nextjs","nextjs","Next.js","typescript","js",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":155,"publishedAt":28},"01M6CFB055EXKR72703ST6H3XW","ios-i18n-workflow","Use when iOS apps using SwiftGen L10n need localization work - adding keys, checking missing translations, or cleaning unused entries. Triggered by hardcoded strings, missing L10n references, incomplete translations across multiple languages, or unused localization cleanup requests.","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Fios-i18n-workflow\u002FSKILL.md",[150],{"categoryNo":151,"categoryName":152,"taxonomyType":153,"taxonomyTypeDesc":154},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[156,157,158,26,159,160,161],"ios","workflow","ios i18n workflow","cleanup","references","work",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":171,"publishedAt":28},"01M6CFAXJJZ59SWHZ1RAGQ461N","improve-codebase-architecture","Use when the user wants architectural deepening opportunities for a codebase or named files, shown as a visual HTML report, and when they then pick candidates from that report to implement in the code already reviewed.","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Fimprove-codebase-architecture\u002FSKILL.md",[168],{"categoryNo":169,"categoryName":170,"taxonomyType":153,"taxonomyTypeDesc":154},"01JBSEEDCAT000000000000009","前端开发",[172,173,112,174,175,176,177,178,179,180,181,182,26,183,119,184,116],"codebase","improve codebase architecture","improve","report","pick","html report","html","as","for","true","files","visual","implement"]