[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CWT6CHRVEBBWPS93RGHCFN":3,"skill-same:01M6CWT6CHRVEBBWPS93RGHCFN":56},{"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":22,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":36,"commitSha":37,"skillDirectory":5,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":6,"ownerHtmlUrl":40,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":41,"install":42,"resources":55},"01M6CWT6CHRVEBBWPS93RGHCFN","csharp",null,"C# programming language best practices and patterns","ffsshhttiikk\u002Fopencode-agents-skills","ffsshhttiikk","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F226346827?v=4","01M6CWD9RR3Y7VRQX3MXYC8FYH","01M6CWD9WVPYAZW0J82G1VKGHY",3,"MIT","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fcsharp\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[5,23,24,25,26,27,28],"best practices","programming language","programming","opencode","language","patterns","2026-11-10 10:12:30",false,"---\nname: csharp\ndescription: C# programming language best practices and patterns\nlicense: MIT\ncompatibility: opencode\nmetadata:\n  audience: developers\n  category: programming\n---\n## What I do\n- Write idiomatic C# code\n- Use .NET features effectively\n- Implement async\u002Fawait patterns\n- Use LINQ for queries\n- Apply SOLID principles\n- Handle exceptions properly\n- Use dependency injection\n- Write unit tests\n\n## When to use me\nWhen writing C# or .NET code.\n\n## C# Best Practices\n```csharp\n\u002F\u002F Async\u002Fawait patterns\npublic async Task\u003CUserDto> GetUserAsync(int id)\n{\n    return await _repository.GetByIdAsync(id)\n        .ConfigureAwait(false);\n}\n\n\u002F\u002F LINQ queries\nvar activeUsers = await _context.Users\n    .Where(u => u.IsActive)\n    .OrderBy(u => u.CreatedAt)\n    .Skip(page * pageSize)\n    .Take(pageSize)\n    .ToListAsync();\n\n\u002F\u002F Dependency injection\nservices.AddScoped\u003CIUserService, UserService>();\nservices.AddSingleton\u003CIConfiguration>(Configuration);\n\n\u002F\u002F Records for DTOs\npublic record UserDto(\n    int Id,\n    string Email,\n    string Name,\n    DateTime CreatedAt);\n\n\u002F\u002F Pattern matching\npublic decimal CalculateDiscount(Order order) => order switch\n{\n    { IsPremium: true } => 0.2m,\n    { Items.Count: > 10 } => 0.1m,\n    { Total: > 100 } => 0.05m,\n    _ => 0m\n};\n```\n","## What I do\n- Write idiomatic C# code\n- Use .NET features effectively\n- Implement async\u002Fawait patterns\n- Use LINQ for queries\n- Apply SOLID principles\n- Handle exceptions properly\n- Use dependency injection\n- Write unit tests\n\n## When to use me\nWhen writing C# or .NET code.\n\n## C# Best Practices\n```csharp\n\u002F\u002F Async\u002Fawait patterns\npublic async Task\u003CUserDto> GetUserAsync(int id)\n{\n    return await _repository.GetByIdAsync(id)\n        .ConfigureAwait(false);\n}\n\n\u002F\u002F LINQ queries\nvar activeUsers = await _context.Users\n    .Where(u => u.IsActive)\n    .OrderBy(u => u.CreatedAt)\n    .Skip(page * pageSize)\n    .Take(pageSize)\n    .ToListAsync();\n\n\u002F\u002F Dependency injection\nservices.AddScoped\u003CIUserService, UserService>();\nservices.AddSingleton\u003CIConfiguration>(Configuration);\n\n\u002F\u002F Records for DTOs\npublic record UserDto(\n    int Id,\n    string Email,\n    string Name,\n    DateTime CreatedAt);\n\n\u002F\u002F Pattern matching\npublic decimal CalculateDiscount(Order order) => order switch\n{\n    { IsPremium: true } => 0.2m,\n    { Items.Count: > 10 } => 0.1m,\n    { Total: > 100 } => 0.05m,\n    _ => 0m\n};\n```\n",{"name":5,"license":14,"metadata":34,"description":7,"compatibility":26},{"audience":35,"category":25},"developers","main","5f7a3e453c98261f93d19a6a7de44ad8f7b72d41",2,"https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk","2026-03-01 06:55:40",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill csharp",{"tool":48,"command":49},"bunx","bunx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill csharp",{"tool":51,"command":52},"pnpm","pnpm dlx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill csharp","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fcsharp\u002FSKILL.md",true,[],[57,68,78,87,97,106],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":29},"01M6CXT9TXDF79BWJTMQAPB49G","xamarin","Xamarin cross-platform development","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fxamarin\u002FSKILL.md",[],[59,64,65,66,26,67],"platform","cross-platform","mobile","development",{"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":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":29},"01M6CXT8AD04MFYDA32VW3FKAG","wrangling","Data wrangling fundamentals","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwrangling\u002FSKILL.md",[],[70,75,26,76,77],"data wrangling","science","data",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":29},"01M6CXT717GCN7SRRNPBDP4508","windows","Windows operating system administration and scripting","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwindows\u002FSKILL.md",[],[80,85,26,86],"system","scripting",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":29},"01M6CXT54K794NMEM3XAPZZDKT","wide-column","Wide-column data model","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column\u002FSKILL.md",[],[94,95,26,96,77],"wide column","databases","model",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":29},"01M6CXT28FMT2P4V9GZE67WA8E","wide-column-stores","Wide-column database stores","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column-stores\u002FSKILL.md",[],[104,95,26,105],"wide column stores","database",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":29},"01M6CXT0D0M0Q4T2N7C2RX7DSN","websockets","WebSocket implementation and best practices","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwebsockets\u002FSKILL.md",[],[108,113,114,115,26,23,116],"websocket","real-time","time","implementation"]