mcpField
M
modern-csharp

modern-csharp

github.com/managedcode开发509107 次安装1 天前更新
代码仓库

关于 modern-csharp

用于选择和应用现代 C# 功能的技能,同时遵循项目的目标框架、SDK 和语言版本。它通过规划、验证和结构化结果格式指导功能驱动的更改。

主要功能

  1. 01检查框架、SDK 和语言版本限制
  2. 02优先采用受支持的稳定语言功能
  3. 03避免未经要求的全局语法改写
  4. 04将预览功能视为显式选择
  5. 05规划、验证并报告具体更改

适用场景

  1. 01评估 C# 13 或 C# 14 的兼容性
  2. 02按项目约束现代化代码
  3. 03审查不同版本的语言功能使用
  4. 04为所需功能升级工具链

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/managedcode/dotnet-skills --skill modern-csharp

安装后在 Claude Code 中输入/modern-csharp确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

manifest.json
references/
csharp-modern-features.md
migration.md
patterns.md

详细介绍

面向 .NET 的现代 C#

适用场景

  • 仓库希望采用更现代、更符合惯用写法的 C# 代码
  • 某项更改取决于语言版本兼容性
  • 团队正在升级或审查不同版本中的 C# 功能用法
  • 你需要了解能否安全使用 C# 13 或 C# 14 功能

价值

  • 产出具体的项目变更:代码、文档、配置、测试、CI 或审查产物
  • 通过明确的规划、验证和最终确认技能减少歧义
  • 留下可复用的项目上下文,让后续任务更快、更安全

不适用场景

  • F# 或 VB 等非 C# 的 .NET 语言
  • 不涉及语言功能选择的纯分析器或格式化工具配置

输入

  • 目标 TFM 或 TFMs
  • 显式指定的 LangVersion(如有)
  • 当前 SDK 版本
  • .editorconfig 和 AGENTS.md 中的团队风格规则

快速开始

  1. 阅读最近的 AGENTS.md,并确认范围和约束。
  2. 持续执行此技能的 Workflow,通过 Ralph Loop 迭代,直到结果符合要求。
  3. 按照 Required Result Format 返回具体产物和验证证据。

工作流

  1. 根据仓库的目标框架和显式指定的 LangVersion,确定实际支持的最高语言版本。
  2. 优先使用当前仓库实际支持的稳定功能。
  3. 当现代语法能减少繁琐代码、提高正确性或更清楚地表达不变量时,优先使用。
  4. 除非仓库明确希望进行这类改动,否则不要将整个代码库大规模改写为较新的语法。
  5. 仅在明确选择启用时使用预览功能。不要因为当前机器安装了较新的 SDK,就默认使用预览功能。
  6. 特别关注 C# 13 和 C# 14:
    • C# 13 是 .NET 9 的稳定语言版本
    • C# 14 是 .NET 10 的稳定语言版本
  7. 如果功能选择会改变架构、风格规则或生成代码模式,请与以下技能协调:
    • dotnet
    • analyzer-config
    • architecture
  8. 由功能驱动的重构完成后,通过 dotnet 执行仓库的 .NET 质量检查。

当前上游说明

  • .NET runtime v10.0.11 正处于维护期。仅凭这一点不足以成为语言功能改写的理由。
  • .NET SDK v10.0.400 是当前的 10.0.4xx 功能带,并扩展了基于文件的应用程序行为,但语言功能仍取决于仓库所选用的编译器。除非仓库明确配置了兼容的编译器和 LangVersion,否则不要在固定使用旧工具链的仓库中使用 C# 13 或 C# 14 语法。

缺少所需支持时的引导

如果请求的 C# 功能依赖于仓库尚不具备的 SDK 或语言支持:

  1. 检测当前状态:
    • dotnet --list-sdks
    • rg -n "TargetFramework|LangVersion|TargetFrameworks" -g '*.csproj' -g 'Directory.Build.*' .
  2. 确认仓库是希望继续使用当前稳定语言版本,还是有意升级。
  3. 如果功能需要更新的受支持 SDK 或目标框架,请主动升级仓库工具链,而不要意外依赖本地机器上的配置。
  4. 如果仓库需要显式指定 LangVersion,请在项目或共享 MSBuild 配置中记录。
  5. 在功能或工具链更改后运行 dotnet build SOLUTION_OR_PROJECT,并返回 status: configured 或 status: improved。
  6. 如果仓库有意保持在所需语言版本以下,请返回 status: not_applicable。

交付内容

  • 符合仓库实际语言版本的现代 C# 代码
  • 在较新的稳定功能更清晰时,减少过时写法
  • 不意外使用预览功能或偏离受支持的语言版本

验证

  • 所选语法受仓库的 TFM 和 LangVersion 支持
  • 该功能能提升清晰度、正确性或可维护性
  • 仅在仓库明确选择启用时使用仅限预览的功能
  • 风格和分析器规则仍与新语法一致

Ralph 循环

所有任务都使用 Ralph 循环,包括文档、架构、测试和工具相关工作。

  1. 先制定计划(必须):
    • 分析当前状态
    • 明确目标结果、约束和风险
    • 编写详细的执行计划
    • 列出最后要运行的验证技能,并说明顺序和原因
  2. 执行一个计划步骤,并产出具体变更。
  3. 审查结果,记录发现的问题和可执行的后续修复项。
  4. 分批应用修复,并重新运行相关检查或审查步骤。
  5. 每次迭代后更新计划。
  6. 重复上述步骤,直到结果符合要求,或只剩下明确列出的例外。
  7. 如果缺少依赖项,请完成引导安装;或者返回 status: not_applicable,并明确说明原因和备用方案。
必需的结果格式
  • status:complete | clean | improved | configured | not_applicable | blocked
  • plan:简要说明计划和当前迭代步骤
  • actions_taken:已完成的具体变更
  • validation_skills:最后运行的技能;或说明跳过的原因
  • verification:命令、检查或审查证据摘要
  • remaining:尚未解决的主要事项,或 none

对于未执行任何操作的纯设置请求,返回 status: configured,并列出准确的后续命令。

加载参考资料

示例请求

  • “让这段 C# 代码更现代。”
  • “我们可以在 .NET 9 上使用哪些功能?”
  • “检查此仓库,找出 C# 13 或 C# 14 的应用机会。”

评论

支持 Markdown