{"id":"54d4fee3-6160-4580-b236-0bc285dcf17b","shortId":"JK9kCm","kind":"skill","title":"Dotnet Design Pattern Review","tagline":"Awesome Copilot skill by Github","description":"# .NET/C# Design Pattern Review\n\nReview the C#/.NET code in ${selection} for design pattern implementation and suggest improvements for the solution/project. Do not make any changes to the code, just provide a review.\n\n## Required Design Patterns\n\n- **Command Pattern**: Generic base classes (`CommandHandler<TOptions>`), `ICommandHandler<TOptions>` interface, `CommandHandlerOptions` inheritance, static `SetupCommand(IHost host)` methods\n- **Factory Pattern**: Complex object creation service provider integration\n- **Dependency Injection**: Primary constructor syntax, `ArgumentNullException` null checks, interface abstractions, proper service lifetimes\n- **Repository Pattern**: Async data access interfaces provider abstractions for connections\n- **Provider Pattern**: External service abstractions (database, AI), clear contracts, configuration handling\n- **Resource Pattern**: ResourceManager for localized messages, separate .resx files (LogMessages, ErrorMessages)\n\n## Review Checklist\n\n- **Design Patterns**: Identify patterns used. Are Command Handler, Factory, Provider, and Repository patterns correctly implemented? Missing beneficial patterns?\n- **Architecture**: Follow namespace conventions (`{Core|Console|App|Service}.{Feature}`)? Proper separation between Core/Console projects? Modular and readable?\n- **.NET Best Practices**: Primary constructors, async/await with Task returns, ResourceManager usage, structured logging, strongly-typed configuration?\n- **GoF Patterns**: Command, Factory, Template Method, Strategy patterns correctly implemented?\n- **SOLID Principles**: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion violations?\n- **Performance**: Proper async/await, resource disposal, ConfigureAwait(false), parallel processing opportunities?\n- **Maintainability**: Clear separation of concerns, consistent error handling, proper configuration usage?\n- **Testability**: Dependencies abstracted via interfaces, mockable components, async testability, AAA pattern compatibility?\n- **Security**: Input validation, secure credential handling, parameterized queries, safe exception handling?\n- **Documentation**: XML docs for public APIs, parameter/return descriptions, resource file organization?\n- **Code Clarity**: Meaningful names reflecting domain concepts, clear intent through patterns, self-explanatory structure?\n- **Clean Code**: Consistent style, appropriate method/class size, minimal complexity, eliminated duplication?\n\n## Improvement Focus Areas\n\n- **Command Handlers**: Validation in base class, consistent error handling, proper resource management\n- **Factories**: Dependency configuration, service provider integration, disposal patterns\n- **Providers**: Connection management, async patterns, exception handling and logging\n- **Configuration**: Data annotations, validation attributes, secure sensitive value handling\n- **AI/ML Integration**: Semantic Kernel patterns, structured output handling, model configuration\n\nProvide specific, actionable recommendations for improvements aligned with the project's architecture and .NET best practices.","tags":["dotnet","design","pattern","review","awesome","copilot","github"],"capabilities":["skill","source-github","category-awesome-copilot"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/dotnet-design-pattern-review","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under github/awesome-copilot","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T17:40:17.489Z","embedding":null,"createdAt":"2026-04-18T20:25:29.948Z","updatedAt":"2026-04-22T17:40:17.489Z","lastSeenAt":"2026-04-22T17:40:17.489Z","tsv":"'/.net':17 'aaa':220 'abstract':78,89,96,213 'access':86 'action':324 'ai':98 'ai/ml':312 'align':328 'annot':305 'api':239 'app':140 'appropri':264 'architectur':134,333 'area':273 'argumentnullexcept':74 'async':84,218,297 'async/await':156,192 'attribut':307 'awesom':5 'base':49,278 'benefici':132 'best':152,336 'c':16 'category-awesome-copilot' 'chang':35 'check':76 'checklist':115 'clariti':246 'class':50,279 'clean':260 'clear':99,201,252 'code':18,38,245,261 'command':46,122,170,274 'commandhandl':51 'commandhandleropt':54 'compat':222 'complex':63,268 'compon':217 'concept':251 'concern':204 'configur':101,167,209,288,303,321 'configureawait':195 'connect':91,295 'consist':205,262,280 'consol':139 'constructor':72,155 'contract':100 'convent':137 'copilot':6 'core':138 'core/console':146 'correct':129,176 'creation':65 'credenti':227 'data':85,304 'databas':97 'depend':69,187,212,287 'descript':241 'design':2,11,22,44,116 'dispos':194,292 'doc':236 'document':234 'domain':250 'dotnet':1 'duplic':270 'elimin':269 'error':206,281 'errormessag':113 'except':232,299 'explanatori':258 'extern':94 'factori':61,124,171,286 'fals':196 'featur':142 'file':111,243 'focus':272 'follow':135 'generic':48 'github':9 'gof':168 'handl':102,207,228,233,282,300,311,319 'handler':123,275 'host':59 'icommandhandl':52 'identifi':118 'ihost':58 'implement':24,130,177 'improv':27,271,327 'inherit':55 'inject':70 'input':224 'integr':68,291,313 'intent':253 'interfac':53,77,87,185,215 'invers':188 'kernel':315 'lifetim':81 'liskov':183 'local':107 'log':163,302 'logmessag':112 'maintain':200 'make':33 'manag':285,296 'meaning':247 'messag':108 'method':60,173 'method/class':265 'minim':267 'miss':131 'mockabl':216 'model':320 'modular':148 'name':248 'namespac':136 'net':151,335 'net/c':10 'null':75 'object':64 'open/closed':182 'opportun':199 'organ':244 'output':318 'parallel':197 'parameter':229 'parameter/return':240 'pattern':3,12,23,45,47,62,83,93,104,117,119,128,133,169,175,221,255,293,298,316 'perform':190 'practic':153,337 'primari':71,154 'principl':179 'process':198 'project':147,331 'proper':79,143,191,208,283 'provid':40,67,88,92,125,290,294,322 'public':238 'queri':230 'readabl':150 'recommend':325 'reflect':249 'repositori':82,127 'requir':43 'resourc':103,193,242,284 'resourcemanag':105,160 'respons':181 'resx':110 'return':159 'review':4,13,14,42,114 'safe':231 'secur':223,226,308 'segreg':186 'select':20 'self':257 'self-explanatori':256 'semant':314 'sensit':309 'separ':109,144,202 'servic':66,80,95,141,289 'setupcommand':57 'singl':180 'size':266 'skill':7 'solid':178 'solution/project':30 'source-github' 'specif':323 'static':56 'strategi':174 'strong':165 'strongly-typ':164 'structur':162,259,317 'style':263 'substitut':184 'suggest':26 'syntax':73 'task':158 'templat':172 'testabl':211,219 'type':166 'usag':161,210 'use':120 'valid':225,276,306 'valu':310 'via':214 'violat':189 'xml':235","prices":[{"id":"7ad21788-b4c9-4f80-868c-1bf18a855311","listingId":"54d4fee3-6160-4580-b236-0bc285dcf17b","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:25:29.948Z"}],"sources":[{"listingId":"54d4fee3-6160-4580-b236-0bc285dcf17b","source":"github","sourceId":"github/awesome-copilot/dotnet-design-pattern-review","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/dotnet-design-pattern-review","isPrimary":false,"firstSeenAt":"2026-04-18T21:49:11.556Z","lastSeenAt":"2026-04-22T12:52:11.429Z"},{"listingId":"54d4fee3-6160-4580-b236-0bc285dcf17b","source":"skills_sh","sourceId":"github/awesome-copilot/dotnet-design-pattern-review","sourceUrl":"https://skills.sh/github/awesome-copilot/dotnet-design-pattern-review","isPrimary":true,"firstSeenAt":"2026-04-18T20:25:29.948Z","lastSeenAt":"2026-04-22T17:40:17.489Z"}],"details":{"listingId":"54d4fee3-6160-4580-b236-0bc285dcf17b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"dotnet-design-pattern-review","source":"skills_sh","category":"awesome-copilot","skills_sh_url":"https://skills.sh/github/awesome-copilot/dotnet-design-pattern-review"},"updatedAt":"2026-04-22T17:40:17.489Z"}}