关于 modern-csharp
用于选择和应用现代 C# 功能的技能,同时遵循项目的目标框架、SDK 和语言版本。它通过规划、验证和结构化结果格式指导功能驱动的更改。
主要功能
- 01检查框架、SDK 和语言版本限制
- 02优先采用受支持的稳定语言功能
- 03避免未经要求的全局语法改写
- 04将预览功能视为显式选择
- 05规划、验证并报告具体更改
适用场景
- 01评估 C# 13 或 C# 14 的兼容性
- 02按项目约束现代化代码
- 03审查不同版本的语言功能使用
- 04为所需功能升级工具链
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ managedcode/ dotnet-skills --skill modern-csharp安装后在 Claude Code 中输入/modern-csharp确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
manifest.jsonreferences/csharp-modern-features.mdmigration.mdpatterns.md详细介绍
面向 .NET 的现代 C#
适用场景
- 仓库希望采用更现代、更符合惯用写法的 C# 代码
- 某项更改取决于语言版本兼容性
- 团队正在升级或审查不同版本中的 C# 功能用法
- 你需要了解能否安全使用 C# 13 或 C# 14 功能
价值
- 产出具体的项目变更:代码、文档、配置、测试、CI 或审查产物
- 通过明确的规划、验证和最终确认技能减少歧义
- 留下可复用的项目上下文,让后续任务更快、更安全
不适用场景
- F# 或 VB 等非 C# 的 .NET 语言
- 不涉及语言功能选择的纯分析器或格式化工具配置
输入
- 目标
TFM或TFMs - 显式指定的
LangVersion(如有) - 当前 SDK 版本
.editorconfig和AGENTS.md中的团队风格规则
快速开始
- 阅读最近的
AGENTS.md,并确认范围和约束。 - 持续执行此技能的
Workflow,通过Ralph Loop迭代,直到结果符合要求。 - 按照
Required Result Format返回具体产物和验证证据。
工作流
- 根据仓库的目标框架和显式指定的
LangVersion,确定实际支持的最高语言版本。 - 优先使用当前仓库实际支持的稳定功能。
- 当现代语法能减少繁琐代码、提高正确性或更清楚地表达不变量时,优先使用。
- 除非仓库明确希望进行这类改动,否则不要将整个代码库大规模改写为较新的语法。
- 仅在明确选择启用时使用预览功能。不要因为当前机器安装了较新的 SDK,就默认使用预览功能。
- 特别关注 C# 13 和 C# 14:
- C# 13 是
.NET 9的稳定语言版本 - C# 14 是
.NET 10的稳定语言版本
- C# 13 是
- 如果功能选择会改变架构、风格规则或生成代码模式,请与以下技能协调:
dotnetanalyzer-configarchitecture
- 由功能驱动的重构完成后,通过
dotnet执行仓库的 .NET 质量检查。
当前上游说明
.NET runtimev10.0.11正处于维护期。仅凭这一点不足以成为语言功能改写的理由。.NET SDKv10.0.400是当前的 10.0.4xx 功能带,并扩展了基于文件的应用程序行为,但语言功能仍取决于仓库所选用的编译器。除非仓库明确配置了兼容的编译器和LangVersion,否则不要在固定使用旧工具链的仓库中使用 C# 13 或 C# 14 语法。
缺少所需支持时的引导
如果请求的 C# 功能依赖于仓库尚不具备的 SDK 或语言支持:
- 检测当前状态:
dotnet --list-sdksrg -n "TargetFramework|LangVersion|TargetFrameworks" -g '*.csproj' -g 'Directory.Build.*' .
- 确认仓库是希望继续使用当前稳定语言版本,还是有意升级。
- 如果功能需要更新的受支持 SDK 或目标框架,请主动升级仓库工具链,而不要意外依赖本地机器上的配置。
- 如果仓库需要显式指定
LangVersion,请在项目或共享 MSBuild 配置中记录。 - 在功能或工具链更改后运行
dotnet build SOLUTION_OR_PROJECT,并返回status: configured或status: improved。 - 如果仓库有意保持在所需语言版本以下,请返回
status: not_applicable。
交付内容
- 符合仓库实际语言版本的现代 C# 代码
- 在较新的稳定功能更清晰时,减少过时写法
- 不意外使用预览功能或偏离受支持的语言版本
验证
- 所选语法受仓库的
TFM和LangVersion支持 - 该功能能提升清晰度、正确性或可维护性
- 仅在仓库明确选择启用时使用仅限预览的功能
- 风格和分析器规则仍与新语法一致
Ralph 循环
所有任务都使用 Ralph 循环,包括文档、架构、测试和工具相关工作。
- 先制定计划(必须):
- 分析当前状态
- 明确目标结果、约束和风险
- 编写详细的执行计划
- 列出最后要运行的验证技能,并说明顺序和原因
- 执行一个计划步骤,并产出具体变更。
- 审查结果,记录发现的问题和可执行的后续修复项。
- 分批应用修复,并重新运行相关检查或审查步骤。
- 每次迭代后更新计划。
- 重复上述步骤,直到结果符合要求,或只剩下明确列出的例外。
- 如果缺少依赖项,请完成引导安装;或者返回
status: not_applicable,并明确说明原因和备用方案。
必需的结果格式
status:complete|clean|improved|configured|not_applicable|blockedplan:简要说明计划和当前迭代步骤actions_taken:已完成的具体变更validation_skills:最后运行的技能;或说明跳过的原因verification:命令、检查或审查证据摘要remaining:尚未解决的主要事项,或none
对于未执行任何操作的纯设置请求,返回 status: configured,并列出准确的后续命令。
加载参考资料
示例请求
- “让这段 C# 代码更现代。”
- “我们可以在 .NET 9 上使用哪些功能?”
- “检查此仓库,找出 C# 13 或 C# 14 的应用机会。”
评论
支持 Markdown