[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M749DDRPXT7CXDAXCS1CSBME":3,"skill-same:01M749DDRPXT7CXDAXCS1CSBME":59},{"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":15,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":13,"repositoryHtmlUrl":27,"repositoryHomepageUrl":28,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M749DDRPXT7CXDAXCS1CSBME","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.","schola-cantorum\u002Fcantus","schola-cantorum","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F283400993?v=4","01M72671Q6RSVYYFN4JQ8QRSWT","01M72671QTZWY2WZ34AZF9AC3T",0,"MIT","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdomain-modeling\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdomain-modeling\u002FSKILL.md",[],[],"2026-11-11 15:11:14",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},"main","3adbc786c457728f54420f3e73a321bb7e36bc15",".claude\u002Fskills\u002Fdomain-modeling","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus","https:\u002F\u002Fcantus.rtfm.diy\u002F","https:\u002F\u002Fgithub.com\u002Fschola-cantorum","2026-11-12 21:57:12",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add schola-cantorum\u002Fcantus --skill domain-modeling",{"tool":37,"command":38},"bunx","bunx skills add schola-cantorum\u002Fcantus --skill domain-modeling",{"tool":40,"command":41},"pnpm","pnpm dlx skills add schola-cantorum\u002Fcantus --skill domain-modeling","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdomain-modeling\u002FSKILL.md",true,[45,51,55],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"ADR-FORMAT.md","REFERENCE","参考文档",3104,"https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdomain-modeling\u002FADR-FORMAT.md",{"path":52,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":53,"sourceHtmlUrl":54},"CONTEXT-FORMAT.md",2290,"https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdomain-modeling\u002FCONTEXT-FORMAT.md",{"path":56,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":58,"sourceHtmlUrl":15},"LICENSE","许可证",1068,[60,68,76,84,92,100],{"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":64,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":19},"01M749FSZ1CYNNSNXWVK8EGMTV","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwriting-for-agents\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":72,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":19},"01M749FPQ8PE36Y9TBJ7KJES81","wizard","Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwizard\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwizard\u002FSKILL.md",[],[],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":80,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":19},"01M749FM7AEMTHHC0VY7QTZRAR","wayfinder","Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwayfinder\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwayfinder\u002FSKILL.md",[],[],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":88,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":19},"01M749FJE84F5E51DEQZZJZWV1","wait-what","Stop. That last message did not land: re-pitch it.","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwait-what\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":96,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":19},"01M749F6YBDZPACWPC4JGSFSNH","to-tickets","Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker (edges as text in one file per ticket locally, or native blocking links on a real tracker).","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fto-tickets\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fto-tickets\u002FSKILL.md",[],[],{"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":104,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":19},"01M749F4SYDPQ8NRMWM0RG5HAN","to-spec","Turn the current conversation into a spec and publish it to the project issue tracker: no interview, just synthesis of what you've already discussed.","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fto-spec\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fschola-cantorum\u002Fcantus\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fto-spec\u002FSKILL.md",[],[]]