{"id":"13e9a4d5-da49-46ec-b6f4-e51bffe3764e","shortId":"tye49c","kind":"skill","title":"dotnet-architect","tagline":"Expert .NET backend architect specializing in C#, ASP.NET Core, Entity Framework, Dapper, and enterprise application patterns.","description":"## Use this skill when\n\n- Working on dotnet architect tasks or workflows\n- Needing guidance, best practices, or checklists for dotnet architect\n\n## Do not use this skill when\n\n- The task is unrelated to dotnet architect\n- You need a different domain or tool outside this scope\n\n## Instructions\n\n- Clarify goals, constraints, and required inputs.\n- Apply relevant best practices and validate outcomes.\n- Provide actionable steps and verification.\n- If detailed examples are required, open `resources/implementation-playbook.md`.\n\nYou are an expert .NET backend architect with deep knowledge of C#, ASP.NET Core, and enterprise application patterns.\n\n## Purpose\n\nSenior .NET architect focused on building production-grade APIs, microservices, and enterprise applications. Combines deep expertise in C# language features, ASP.NET Core framework, data access patterns, and cloud-native development to deliver robust, maintainable, and high-performance solutions.\n\n## Capabilities\n\n### C# Language Mastery\n- Modern C# features (12/13): required members, primary constructors, collection expressions\n- Async/await patterns: ValueTask, IAsyncEnumerable, ConfigureAwait\n- LINQ optimization: deferred execution, expression trees, avoiding materializations\n- Memory management: Span<T>, Memory<T>, ArrayPool, stackalloc\n- Pattern matching: switch expressions, property patterns, list patterns\n- Records and immutability: record types, init-only setters, with expressions\n- Nullable reference types: proper annotation and handling\n\n### ASP.NET Core Expertise\n- Minimal APIs and controller-based APIs\n- Middleware pipeline and request processing\n- Dependency injection: lifetimes, keyed services, factory patterns\n- Configuration: IOptions, IOptionsSnapshot, IOptionsMonitor\n- Authentication/Authorization: JWT, OAuth, policy-based auth\n- Health checks and readiness/liveness probes\n- Background services and hosted services\n- Rate limiting and output caching\n\n### Data Access Patterns\n- Entity Framework Core: DbContext, configurations, migrations\n- EF Core optimization: AsNoTracking, split queries, compiled queries\n- Dapper: high-performance queries, multi-mapping, TVPs\n- Repository and Unit of Work patterns\n- CQRS: command/query separation\n- Database-first vs code-first approaches\n- Connection pooling and transaction management\n\n### Caching Strategies\n- IMemoryCache for in-process caching\n- IDistributedCache with Redis\n- Multi-level caching (L1/L2)\n- Stale-while-revalidate patterns\n- Cache invalidation strategies\n- Distributed locking with Redis\n\n### Performance Optimization\n- Profiling and benchmarking with BenchmarkDotNet\n- Memory allocation analysis\n- HTTP client optimization with IHttpClientFactory\n- Response compression and streaming\n- Database query optimization\n- Reducing GC pressure\n\n### Testing Practices\n- xUnit test framework\n- Moq for mocking dependencies\n- FluentAssertions for readable assertions\n- Integration tests with WebApplicationFactory\n- Test containers for database tests\n- Code coverage with Coverlet\n\n### Architecture Patterns\n- Clean Architecture / Onion Architecture\n- Domain-Driven Design (DDD) tactical patterns\n- CQRS with MediatR\n- Event sourcing basics\n- Microservices patterns: API Gateway, Circuit Breaker\n- Vertical slice architecture\n\n### DevOps & Deployment\n- Docker containerization for .NET\n- Kubernetes deployment patterns\n- CI/CD with GitHub Actions / Azure DevOps\n- Health monitoring with Application Insights\n- Structured logging with Serilog\n- OpenTelemetry integration\n\n## Behavioral Traits\n\n- Writes idiomatic, modern C# code following Microsoft guidelines\n- Favors composition over inheritance\n- Applies SOLID principles pragmatically\n- Prefers explicit over implicit (nullable annotations, explicit types when clearer)\n- Values testability and designs for dependency injection\n- Considers performance implications but avoids premature optimization\n- Uses async/await correctly throughout the call stack\n- Prefers records for DTOs and immutable data structures\n- Documents public APIs with XML comments\n- Handles errors gracefully with Result types or exceptions as appropriate\n\n## Knowledge Base\n\n- Microsoft .NET documentation and best practices\n- ASP.NET Core fundamentals and advanced topics\n- Entity Framework Core and Dapper patterns\n- Redis caching and distributed systems\n- xUnit, Moq, and testing strategies\n- Clean Architecture and DDD patterns\n- Performance optimization techniques\n- Security best practices for .NET applications\n\n## Response Approach\n\n1. **Understand requirements** including performance, scale, and maintainability needs\n2. **Design architecture** with appropriate patterns for the problem\n3. **Implement with best practices** using modern C# and .NET features\n4. **Optimize for performance** where it matters (hot paths, data access)\n5. **Ensure testability** with proper abstractions and DI\n6. **Document decisions** with clear code comments and README\n7. **Consider edge cases** including error handling and concurrency\n8. **Review for security** applying OWASP guidelines\n\n## Example Interactions\n\n- \"Design a caching strategy for product catalog with 100K items\"\n- \"Review this async code for potential deadlocks and performance issues\"\n- \"Implement a repository pattern with both EF Core and Dapper\"\n- \"Optimize this LINQ query that's causing N+1 problems\"\n- \"Create a background service for processing order queue\"\n- \"Design authentication flow with JWT and refresh tokens\"\n- \"Set up health checks for API and database dependencies\"\n- \"Implement rate limiting for public API endpoints\"\n\n## Code Style Preferences\n\n```csharp\n// ✅ Preferred: Modern C# with clear intent\npublic sealed class ProductService(\n    IProductRepository repository,\n    ICacheService cache,\n    ILogger<ProductService> logger) : IProductService\n{\n    public async Task<Result<Product>> GetByIdAsync(\n        string id, \n        CancellationToken ct = default)\n    {\n        ArgumentException.ThrowIfNullOrWhiteSpace(id);\n        \n        var cached = await cache.GetAsync<Product>($\"product:{id}\", ct);\n        if (cached is not null)\n            return Result.Success(cached);\n        \n        var product = await repository.GetByIdAsync(id, ct);\n        \n        return product is not null\n            ? Result.Success(product)\n            : Result.Failure<Product>(\"Product not found\", \"NOT_FOUND\");\n    }\n}\n\n// ✅ Preferred: Record types for DTOs\npublic sealed record CreateProductRequest(\n    string Name,\n    string Sku,\n    decimal Price,\n    int CategoryId);\n\n// ✅ Preferred: Expression-bodied members when simple\npublic string FullName => $\"{FirstName} {LastName}\";\n\n// ✅ Preferred: Pattern matching\nvar status = order.State switch\n{\n    OrderState.Pending => \"Awaiting payment\",\n    OrderState.Confirmed => \"Order confirmed\",\n    OrderState.Shipped => \"In transit\",\n    OrderState.Delivered => \"Delivered\",\n    _ => \"Unknown\"\n};\n```\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["dotnet","architect","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-dotnet-architect","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/dotnet-architect","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34831 github stars · SKILL.md body (7,223 chars)","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-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T06:51:05.905Z","embedding":null,"createdAt":"2026-04-18T21:36:20.467Z","updatedAt":"2026-04-24T06:51:05.905Z","lastSeenAt":"2026-04-24T06:51:05.905Z","tsv":"'+1':669 '1':556 '100k':639 '12/13':156 '2':565 '3':574 '4':585 '5':596 '6':604 '7':613 '8':622 'abstract':601 'access':133,257,595 'action':78,423 'advanc':522 'alloc':340 'analysi':341 'annot':205,460 'api':117,212,217,404,496,692,701 'appli':70,451,626 'applic':18,105,121,429,553 'approach':298,555 'appropri':509,569 'architect':3,7,27,39,52,95,110 'architectur':383,386,388,410,541,567 'argumentexception.throwifnullorwhitespace':734 'arraypool':180 'ask':851 'asnotrack':268 'asp.net':11,101,129,208,518 'assert':369 'async':643,725 'async/await':163,480 'auth':240 'authent':680 'authentication/authorization':234 'avoid':174,476 'await':738,753,807 'azur':424 'backend':6,94 'background':246,673 'base':216,239,511 'basic':401 'behavior':437 'benchmark':336 'benchmarkdotnet':338 'best':33,72,516,549,577 'bodi':790 'boundari':859 'breaker':407 'build':113 'c':10,100,126,150,154,442,581,709 'cach':255,304,311,318,325,531,633,720,737,744,750 'cache.getasync':739 'call':484 'cancellationtoken':731 'capabl':149 'case':616 'catalog':637 'categoryid':786 'caus':667 'check':242,690 'checklist':36 'ci/cd':420 'circuit':406 'clarif':853 'clarifi':64 'class':715 'clean':385,540 'clear':608,711,826 'clearer':464 'client':343 'cloud':137 'cloud-nat':136 'code':296,379,443,609,644,703 'code-first':295 'collect':161 'combin':122 'command/query':289 'comment':499,610 'compil':271 'composit':448 'compress':348 'concurr':621 'configur':230,263 'configureawait':167 'confirm':811 'connect':299 'consid':472,614 'constraint':66 'constructor':160 'contain':375 'container':414 'control':215 'controller-bas':214 'core':12,102,130,209,261,266,519,526,658 'correct':481 'coverag':380 'coverlet':382 'cqrs':288,396 'creat':671 'createproductrequest':778 'criteria':862 'csharp':706 'ct':732,742,756 'dapper':15,273,528,660 'data':132,256,492,594 'databas':292,351,377,694 'database-first':291 'dbcontext':262 'ddd':393,543 'deadlock':647 'decim':783 'decis':606 'deep':97,123 'default':733 'defer':170 'deliv':141,816 'depend':223,365,470,695 'deploy':412,418 'describ':830 'design':392,468,566,631,679 'detail':83 'develop':139 'devop':411,425 'di':603 'differ':56 'distribut':328,533 'docker':413 'document':494,514,605 'domain':57,390 'domain-driven':389 'dotnet':2,26,38,51 'dotnet-architect':1 'driven':391 'dtos':489,774 'edg':615 'ef':265,657 'endpoint':702 'ensur':597 'enterpris':17,104,120 'entiti':13,259,524 'environ':842 'environment-specif':841 'error':501,618 'event':399 'exampl':84,629 'except':507 'execut':171 'expert':4,92,847 'expertis':124,210 'explicit':456,461 'express':162,172,185,200,789 'expression-bodi':788 'factori':228 'favor':447 'featur':128,155,584 'first':293,297 'firstnam':797 'flow':681 'fluentassert':366 'focus':111 'follow':444 'found':767,769 'framework':14,131,260,361,525 'fullnam':796 'fundament':520 'gateway':405 'gc':355 'getbyidasync':728 'github':422 'goal':65 'grace':502 'grade':116 'guidanc':32 'guidelin':446,628 'handl':207,500,619 'health':241,426,689 'high':146,275 'high-perform':145,274 'host':249 'hot':592 'http':342 'iasyncenumer':166 'icacheservic':719 'id':730,735,741,755 'idiomat':440 'idistributedcach':312 'ihttpclientfactori':346 'ilogg':721 'imemorycach':306 'immut':192,491 'implement':575,651,696 'implic':474 'implicit':458 'in-process':308 'includ':559,617 'inherit':450 'init':196 'init-on':195 'inject':224,471 'input':69,856 'insight':430 'instruct':63 'int':785 'integr':370,436 'intent':712 'interact':630 'invalid':326 'ioption':231 'ioptionsmonitor':233 'ioptionssnapshot':232 'iproductrepositori':717 'iproductservic':723 'issu':650 'item':640 'jwt':235,683 'key':226 'knowledg':98,510 'kubernet':417 'l1/l2':319 'languag':127,151 'lastnam':798 'level':317 'lifetim':225 'limit':252,698,818 'linq':168,663 'list':188 'lock':329 'log':432 'logger':722 'maintain':143,563 'manag':177,303 'map':280 'masteri':152 'match':183,801,827 'materi':175 'matter':591 'mediatr':398 'member':158,791 'memori':176,179,339 'microservic':118,402 'microsoft':445,512 'middlewar':218 'migrat':264 'minim':211 'miss':864 'mock':364 'modern':153,441,580,708 'monitor':427 'moq':362,536 'multi':279,316 'multi-level':315 'multi-map':278 'n':668 'name':780 'nativ':138 'need':31,54,564 'net':5,93,109,416,513,552,583 'null':747,761 'nullabl':201,459 'oauth':236 'onion':387 'open':87 'opentelemetri':435 'optim':169,267,333,344,353,478,546,586,661 'order':677,810 'order.state':804 'orderstate.confirmed':809 'orderstate.delivered':815 'orderstate.pending':806 'orderstate.shipped':812 'outcom':76 'output':254,836 'outsid':60 'owasp':627 'path':593 'pattern':19,106,134,164,182,187,189,229,258,287,324,384,395,403,419,529,544,570,654,800 'payment':808 'perform':147,276,332,473,545,560,588,649 'permiss':857 'pipelin':219 'polici':238 'policy-bas':237 'pool':300 'potenti':646 'practic':34,73,358,517,550,578 'pragmat':454 'prefer':455,486,705,707,770,787,799 'prematur':477 'pressur':356 'price':784 'primari':159 'principl':453 'probe':245 'problem':573,670 'process':222,310,676 'product':115,636,740,752,758,763,765 'production-grad':114 'productservic':716 'profil':334 'proper':204,600 'properti':186 'provid':77 'public':495,700,713,724,775,794 'purpos':107 'queri':270,272,277,352,664 'queue':678 'rate':251,697 'readabl':368 'readiness/liveness':244 'readm':612 'record':190,193,487,771,777 'redi':314,331,530 'reduc':354 'refer':202 'refresh':685 'relev':71 'repositori':282,653,718 'repository.getbyidasync':754 'request':221 'requir':68,86,157,558,855 'resources/implementation-playbook.md':88 'respons':347,554 'result':504,727 'result.failure':764 'result.success':749,762 'return':748,757 'revalid':323 'review':623,641,848 'robust':142 'safeti':858 'scale':561 'scope':62,829 'seal':714,776 'secur':548,625 'senior':108 'separ':290 'serilog':434 'servic':227,247,250,674 'set':687 'setter':198 'simpl':793 'skill':22,44,821 'skill-dotnet-architect' 'sku':782 'slice':409 'solid':452 'solut':148 'sourc':400 'source-sickn33' 'span':178 'special':8 'specif':843 'split':269 'stack':485 'stackalloc':181 'stale':321 'stale-while-revalid':320 'status':803 'step':79 'stop':849 'strategi':305,327,539,634 'stream':350 'string':729,779,781,795 'structur':431,493 'style':704 'substitut':839 'success':861 'switch':184,805 'system':534 'tactic':394 'task':28,47,726,825 'techniqu':547 'test':357,360,371,374,378,538,845 'testabl':466,598 'throughout':482 'token':686 'tool':59 'topic':523 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'trait':438 'transact':302 'transit':814 'treat':834 'tree':173 'tvps':281 'type':194,203,462,505,772 'understand':557 'unit':284 'unknown':817 'unrel':49 'use':20,42,479,579,819 'valid':75,844 'valu':465 'valuetask':165 'var':736,751,802 'verif':81 'vertic':408 'vs':294 'webapplicationfactori':373 'work':24,286 'workflow':30 'write':439 'xml':498 'xunit':359,535","prices":[{"id":"49c566ac-4e88-4cd0-be1f-b4b36bfa505d","listingId":"13e9a4d5-da49-46ec-b6f4-e51bffe3764e","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:36:20.467Z"}],"sources":[{"listingId":"13e9a4d5-da49-46ec-b6f4-e51bffe3764e","source":"github","sourceId":"sickn33/antigravity-awesome-skills/dotnet-architect","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/dotnet-architect","isPrimary":false,"firstSeenAt":"2026-04-18T21:36:20.467Z","lastSeenAt":"2026-04-24T06:51:05.905Z"}],"details":{"listingId":"13e9a4d5-da49-46ec-b6f4-e51bffe3764e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"dotnet-architect","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34831,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"0ece3538fc3eb3f2b9b4a63a34acc1ccf8cfceeb","skill_md_path":"skills/dotnet-architect/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/dotnet-architect"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"dotnet-architect","description":"Expert .NET backend architect specializing in C#, ASP.NET Core, Entity Framework, Dapper, and enterprise application patterns."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/dotnet-architect"},"updatedAt":"2026-04-24T06:51:05.905Z"}}