[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6J6TASK0RW7PCN5012881D2":3,"skill-same:01M6J6TASK0RW7PCN5012881D2":71},{"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":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M6J6TASK0RW7PCN5012881D2","ddd-tactical-patterns",null,"Apply DDD tactical patterns in code using entities, value objects, aggregates, repositories, and domain events with explicit invariants.","caobingsheng\u002Fskills","caobingsheng","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F18641728?v=4","01M6J6H1N0RR38WEA1KVM9V4GB","01M6J6H1SB287CPJQARKE9FXS0",1,"MIT","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Fddd\u002Fddd-tactical-patterns\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"ddd","patterns","ddd tactical patterns","tactical","safe","code","[ddd, tactical, aggregates, value-objects, domain-events]","objects","aggregates","value-objects","domain-events","domain","self","events","with","invariants","2026-11-10 10:12:30",false,"---\nname: ddd-tactical-patterns\ndescription: \"Apply DDD tactical patterns in code using entities, value objects, aggregates, repositories, and domain events with explicit invariants.\"\nrisk: safe\nsource: self\ntags: \"[ddd, tactical, aggregates, value-objects, domain-events]\"\ndate_added: \"2026-02-27\"\n---\n\n# DDD Tactical Patterns\n\n## Use this skill when\n\n- Translating domain rules into code structures.\n- Designing aggregate boundaries and invariants.\n- Refactoring an anemic model into behavior-rich domain objects.\n- Defining repository contracts and domain event boundaries.\n\n## Do not use this skill when\n\n- You are still defining strategic boundaries.\n- The task is only API documentation or UI layout.\n- Full DDD complexity is not justified.\n\n## Instructions\n\n1. Identify invariants first and design aggregates around them.\n2. Model immutable value objects for validated concepts.\n3. Keep domain behavior in domain objects, not controllers.\n4. Emit domain events for meaningful state transitions.\n5. Keep repositories at aggregate root boundaries.\n\nIf detailed checklists are needed, open `references\u002Ftactical-checklist.md`.\n\n## Example\n\n```typescript\nclass Order {\n  private status: \"draft\" | \"submitted\" = \"draft\";\n\n  submit(itemsCount: number): void {\n    if (itemsCount === 0) throw new Error(\"Order cannot be submitted empty\");\n    if (this.status !== \"draft\") throw new Error(\"Order already submitted\");\n    this.status = \"submitted\";\n  }\n}\n```\n\n## Limitations\n\n- This skill does not define deployment architecture.\n- It does not choose databases or transport protocols.\n- It should be paired with testing patterns for invariant coverage.\n","# DDD Tactical Patterns\n\n## Use this skill when\n\n- Translating domain rules into code structures.\n- Designing aggregate boundaries and invariants.\n- Refactoring an anemic model into behavior-rich domain objects.\n- Defining repository contracts and domain event boundaries.\n\n## Do not use this skill when\n\n- You are still defining strategic boundaries.\n- The task is only API documentation or UI layout.\n- Full DDD complexity is not justified.\n\n## Instructions\n\n1. Identify invariants first and design aggregates around them.\n2. Model immutable value objects for validated concepts.\n3. Keep domain behavior in domain objects, not controllers.\n4. Emit domain events for meaningful state transitions.\n5. Keep repositories at aggregate root boundaries.\n\nIf detailed checklists are needed, open `references\u002Ftactical-checklist.md`.\n\n## Example\n\n```typescript\nclass Order {\n  private status: \"draft\" | \"submitted\" = \"draft\";\n\n  submit(itemsCount: number): void {\n    if (itemsCount === 0) throw new Error(\"Order cannot be submitted empty\");\n    if (this.status !== \"draft\") throw new Error(\"Order already submitted\");\n    this.status = \"submitted\";\n  }\n}\n```\n\n## Limitations\n\n- This skill does not define deployment architecture.\n- It does not choose databases or transport protocols.\n- It should be paired with testing patterns for invariant coverage.\n",{"name":5,"risk":22,"tags":24,"source":30,"date_added":39,"description":7},"2026-02-27","main","309495d95536f4a5e4db1a251f246589229e13e8","ddd\u002Fddd-tactical-patterns",0,"https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills","https:\u002F\u002Fgithub.com\u002Fcaobingsheng","2026-04-11 12:21:07",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add caobingsheng\u002Fskills --skill ddd-tactical-patterns",{"tool":53,"command":54},"bunx","bunx skills add caobingsheng\u002Fskills --skill ddd-tactical-patterns",{"tool":56,"command":57},"pnpm","pnpm dlx skills add caobingsheng\u002Fskills --skill ddd-tactical-patterns","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Fddd\u002Fddd-tactical-patterns\u002FSKILL.md",true,[61,67],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},".openskills.json","REFERENCE","参考文档",273,"https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Fddd\u002Fddd-tactical-patterns\u002F.openskills.json",{"path":68,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Ftactical-checklist.md",611,"https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Fddd\u002Fddd-tactical-patterns\u002Freferences\u002Ftactical-checklist.md",[72,92,108,120,131,163],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":83,"publishedAt":34},"01M6J72F9FX5W05JHBQQW9EHS5","tdd-workflows-tdd-refactor","Use when working with tdd workflows tdd refactor","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Ftdd\u002Ftdd-workflows-tdd-refactor\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",[84,85,86,87,88,89,90,32,91],"tdd","workflows","refactor","tdd workflows","tdd workflows tdd refactor","use","community","unknown",{"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":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":34},"01M6J72BQ4NV5HEX94RQJ8B4J2","tdd-workflows-tdd-red","Generate failing tests for the TDD red phase to define expected behavior and edge cases.","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Ftdd\u002Ftdd-workflows-tdd-red\u002FSKILL.md",[],[99,84,85,100,87,101,102,103,90,104,105,106,107,91],"red","tdd workflows tdd red","edge","generate","behavior","define","tests","for","expected",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":34},"01M6J727C8Q52EG3RTQWMC2X61","tdd-workflows-tdd-green","Implement the minimal code needed to make failing tests pass in the TDD green phase.","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Ftdd\u002Ftdd-workflows-tdd-green\u002FSKILL.md",[],[115,87,116,85,84,117,90,118,23,105,119,91],"green","tdd workflows tdd green","implement","minimal","make",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":127,"publishedAt":34},"01M6J723JYFES8D9PHGY81QBHZ","tdd-workflows-tdd-cycle","Use when working with tdd workflows tdd cycle","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Ftdd\u002Ftdd-workflows-tdd-cycle\u002FSKILL.md",[126],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},[84,85,128,129,130,87,90,32,89,91],"cycle","tdd cycle","tdd workflows tdd cycle",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":148,"publishedAt":34},"01M6J71ZC3W0FE9CKQGYRCSRCA","tdd-workflow","Use this skill when writing new features, fixing bugs, or refactoring code. Enforces test-driven development with 80%+ coverage including unit, integration, and E2E tests.","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Ftdd\u002Ftdd-workflow\u002FSKILL.md",[137,140,143],{"categoryNo":138,"categoryName":139,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":141,"categoryName":142,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":144,"categoryName":145,"taxonomyType":146,"taxonomyTypeDesc":147},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[149,150,84,151,152,89,153,154,32,155,156,105,157,158,159,160,23,161,162],"tdd workflow","workflow","writing","test","features","bugs","unit","driven","coverage","refactoring","e2e","integration","development","e2e tests",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":171,"publishedAt":34},"01M6J71VTWV5GP7AQ08G4CDWFG","tdd-orchestrator","Master TDD orchestrator specializing in red-green-refactor discipline, multi-agent workflow coordination, and comprehensive test-driven development practices.","https:\u002F\u002Fgithub.com\u002Fcaobingsheng\u002Fskills\u002Fblob\u002Fmain\u002Ftdd\u002Ftdd-orchestrator\u002FSKILL.md",[169,170],{"categoryNo":138,"categoryName":139,"taxonomyType":81,"taxonomyTypeDesc":82},{"categoryNo":141,"categoryName":142,"taxonomyType":81,"taxonomyTypeDesc":82},[84,172,173,174,91,175,99,156,115,176,90,177,178,179,180,86,161,152,150],"orchestrator","tdd orchestrator","master","multi","agent workflow","red-green-refactor","discipline","multi-agent","coordination"]