让AI帮你写.NET代码:这个GitHub项目太香了
最近在GitHub上发现一个宝藏项目——dotnet/skills,专门教AI编程助手写.NET和C#代码。目前已经2338颗星,而且今天还涨了。如果你平时用Copilot、Cursor、Claude这类工具写C#,这个项目能直接让你少踩很多坑。
它解决什么问题?
你有没有这种经历:让AI帮你写个C#的API,结果它生成了一堆过时的语法,或者用错了命名空间,甚至推荐了已经不推荐的库。
问题不在于AI不行,而是它缺少**.NET生态的上下文**。比如它不知道.NET 8才刚出,或者不知道System.Text.Json已经比Newtonsoft.Json更推荐。

dotnet/skills 就是把这些“潜规则”打包成提示词,让AI每次调用时都带上正确的上下文。你不需要自己写一堆prompt,直接引用它的技能库就行。
核心思路:给AI喂“正确答案”
项目里每个技能其实就是一段结构化的提示词,告诉AI:
- 写代码时要遵循哪些最佳实践(比如用异步、避免
Task.Result) - 用哪个库版本(比如.NET 8用
Microsoft.Extensions.DependencyInjection) - 避免哪些坑(比如不要手动管理线程池)
举个例子,项目里有个技能叫csharp-best-practices,里面明确写了:
“对于IO操作,始终使用async/await,不要用
Task.Wait()”
当你用Copilot时,如果激活了这个技能,AI生成的代码就会自动带上async关键字,而不是给你一个同步阻塞的版本。
完整提示词模板(可直接复制)
项目里每个技能都是一个YAML文件,但你可以直接复制核心内容到你的提示词里。这里是一个简化版,适合贴在ChatGPT或Claude的系统提示里:
你是一个精通.NET 8和C# 12的编程助手。请遵循以下规则:
1. **使用异步模式**:所有IO操作(文件、网络、数据库)必须用async/await。
2. **首选System.Text.Json**:除非有特殊需求,否则不要用Newtonsoft.Json。
3. **使用依赖注入**:在ASP.NET Core项目中,始终通过构造函数注入服务。
4. **避免过时API**:不要使用`[Obsolete]`标记的方法,比如`HttpClient.PostAsync`没问题,但不要用`WebClient`。
5. **命名规范**:遵循微软官方规范,PascalCase用于类/方法,camelCase用于参数/局部变量。
当用户给出需求时,先思考是否符合以上规则,再生成代码。
如果你想更精确,可以直接从项目里复制某个技能文件的内容,比如skills/csharp-best-practices/skill.json(实际路径可能不同,但原理一样)。
效果演示:输入→输出对比
场景:让AI写一个从数据库读取用户列表的API。
没加技能时的输出:
public List<User> GetUsers() {
var db = new SqlConnection("connection string");
var cmd = new SqlCommand("SELECT * FROM Users", db);
db.Open();
var reader = cmd.ExecuteReader();
// ... 同步代码,且没有using
}
问题:同步阻塞、没释放资源、硬编码连接字符串。
加了技能后的输出:
public async Task<List<User>> GetUsersAsync(string connectionString) {
var users = new List<User>();
await using var db = new SqlConnection(connectionString);
var cmd = new SqlCommand("SELECT * FROM Users", db);
await db.OpenAsync();
await using var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync()) {
users.Add(new User { Name = reader.GetString(0) });
}
return users;
}
整洁、异步、资源管理到位,还用了await using。

变体和注意事项
不同AI工具用法不同:
- 如果你用GitHub Copilot,可以在
.github/copilot-instructions.md里写这些规则。 - 如果你用Cursor,可以把它加到
rules.md文件里。 - 如果你用ChatGPT/Claude,直接粘贴到系统提示里就行。
- 如果你用GitHub Copilot,可以在
不要一股脑全加:项目里有几十个技能,比如
aspnet-core,entity-framework,blazor等。建议只激活你当前项目相关的,避免AI被过多规则搞糊涂。定期更新:.NET每年更新,技能库也会跟进。比如.NET 9马上要出了,到时候记得拉取最新版。
自定义你的规则:如果你的团队有自己的代码风格(比如禁止用
var),直接改提示词里的对应行即可。
总结
dotnet/skills 不是让你学新东西,而是让AI帮你写得更规范。你只需要花5分钟把规则塞给AI,之后它生成的代码就基本不用改。
试试把上面的模板复制到你常用的AI工具里,然后让它写个File.ReadAllTextAsync的示例,你会发现效果立竿见影。
如果你有更好的.NET提示词技巧,欢迎在评论区分享。