mcpField
R
review-dotnet

review-dotnet

github.com/nesnilnehcTesting & quality873 installsUpdated 2d ago
Repository

About review-dotnet

A language and runtime review skill for .NET (C# and F#), intended for code review workflows or focused .NET checks. It covers async patterns, nullability, resource handling, LINQ, and testability, and reports findings with file and line references.

Key features

  1. 01Reviews async/await and cancellation tokens
  2. 02Checks nullable references and null handling
  3. 03Assesses public APIs and versioning
  4. 04Checks IDisposable and resource cleanup
  5. 05Reviews collections, LINQ, and testability

Use cases

  1. 01Review newly added C# or F# files
  2. 02Check async and resource patterns in .NET code
  3. 03Run a .NET pre-review for a pull request

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/nesnilnehc/ai-cortex --skill review-dotnet

After installing, type/review-dotnetin Claude Code to confirm it loaded.

Bundled filesREADME.md

Details

From the project README

技能(Skill):审查 .NET

目的 (Purpose)

仅查看 .NET 生态系统(C#、F#)中的代码的语言和运行时约定。不要定义范围(差异与代码库)或执行安全/架构分析;这些是通过范围和cognitive技能来处理的。以标准格式发出结果列表以进行聚合。重点关注 async/await 和 ConfigureAwait、可空引用类型和 NRE 避免、API 和版本控制、资源和 IDisposable、集合和 LINQ 以及可测试性。


核心目标(Core Objective)

首要目标:生成 .NET 语言/运行时结果列表,涵盖异步/等待、可空类型、API 稳定性、资源管理、LINQ 使用以及给定代码范围的可测试性。

成功标准(必须满足所有要求):

  1. ✅ 仅限 .NET 范围:仅审查 .NET (C#/F#) 语言和运行时约定;未执行范围选择、安全性或架构分析
  2. ✅ 涵盖所有六个 .NET 维度:异步/等待、可空引用类型、API/版本控制、资源/IDisposable、集合/LINQ 和可测试性(如果相关)
  3. ✅ 结果格式兼容:每个结果包括位置、类别(language-dotnet)、严重性、标题、描述和可选建议
  4. ✅ 文件:行引用:所有发现都引用带有行号的特定文件位置
  5. ✅ 排除非 .NET 代码:除非明确在范围内,否则不会分析非 .NET 文件的 .NET 特定规则

验收测试:输出是否包含以 .NET 为中心的结果列表,其中文件:行引用涵盖所有相关语言/运行时维度,而无需执行安全性、体系结构或范围分析?


范围边界(范围边界)

本技能负责:

  • async/await 正确性和ConfigureAwait 用法(库与应用程序代码)
  • 可空引用类型和 NRE 避免
  • 公共API稳定性和版本控制策略
  • IDisposable、IAsyncDisposable 和 using 语句模式
  • 集合和 LINQ 效率(多重枚举、分配、跨度/内存)
  • 可测试性(DI、密封/可重写、静态使用)

本技能不负责:

  • 范围选择——范围由调用者提供
  • 安全分析(注入、身份验证、加密)——使用“review-security”
  • 架构分析——使用“review-architecture”
  • 性能深入研究——使用“review-performance”
  • 完整编排式审查——使用“审查代码”
  • 代码库状态审查 — 使用 review-codebase

转交点:当所有 .NET 发现结果发布后,将其移交给“orchestrate-code-review”进行聚合。对于 .NET 代码中发现的安全或体系结构问题,请记下它们并建议运行适当的cognitive技能。


使用场景(用例)

  • 精心安排的审查:当 orchestrate-code-review 运行 .NET 项目的范围 → 语言 → 框架 → 库 → cognitive时,用作语言步骤。
  • 仅.NET 审查:当用户只想检查语言/运行时约定时(例如,添加新的 C# 文件后)。
  • PR .NET 预检查清单:确保异步、可空和资源模式正确。

何时使用:当正在审查的代码是.NET (C#/F#) 并且任务包括语言/运行时质量时。范围(差异与路径)由调用者或用户确定。


行为(行为)

该技能的范围
  • 分析:给定代码范围(调用者提供的文件或 diff)中的 .NET 语言和运行时约定。不决定范围;接受代码范围作为输入。
  • 不要:执行范围选择(差异与代码库)、安全审查或架构审查;除非要求忽略语言,否则不要查看非 .NET 文件。
审核清单(仅限 .NET 维度)
  1. async/await和ConfigureAwait:async的正确使用;在适当的情况下配置Await(false)(库代码);取消令牌传播;避免 async void 除了事件处理程序。
  2. 可空引用类型和NRE:可空注释;在合理的情况下进行空值检查和空值宽容;避免不必要的 null-forgiving。
  3. API和版本控制:公共API表面稳定性;重大变更;库的版本控制或弃用策略。
  4. 资源和IDisposable:正确使用IDisposable、using语句、IAsyncDisposable;没有泄漏的手柄或流。
  5. 集合和LINQ:适当使用LINQ;分配和枚举;避免多重枚举;相关的跨度/内存。
  6. 可测试性:依赖注入和可测试性;静态使用;在影响测试的地方密封/可重写。
语气和参考
  • 专业和技术:参考具体位置(文件:行)。发出包含位置、类别、严重性、标题、描述、建议的结果。

输入与输出 (Input & Output)

输入(输入)
  • 代码范围:用户或范围技能已选择的文件或目录(或差异)。该技能不决定范围;它仅检查所提供的 .NET 代码的语言约定。
输出(输出)
  • 以附录:输出合同中定义的格式发出零个或多个结果。
  • 此技能的类别是 language-dotnet。

限制(限制)

硬边界(Hard Boundaries)
  • 不要执行安全、架构或范围选择。遵守 .NET 语言和运行时约定。
  • 不要在没有具体地点或可行建议的情况下给出结论。
  • 不要检查非 .NET 代码的 .NET 特定规则,除非用户明确包含它(例如嵌入脚本)。
技能边界 (Skill Boundaries)

不要做这些(其他技能可以处理它们):

  • 不要选择或定义代码范围 - 范围由调用者或“审查代码”确定
  • 不要执行安全分析——使用“review-security”
  • 不要执行架构分析——使用“review-architecture”
  • 不要审查 .NET 约定的非 .NET 代码

何时停止并交接:

  • 当所有 .NET 发现结果发布后,将其交给“orchestrate-code-review”进行聚合
  • 当用户需要全面审查(范围+语言+cognitive)时,重定向到“审查代码”
  • 当.NET代码中发现安全问题时,记下它们并建议“审查安全性”

自检(Self-Check)

核心成功标准
  • 仅限 .NET 范围:仅审查 .NET (C#/F#) 语言和运行时约定;未执行范围选择、安全性或架构分析
  • 涵盖所有六个 .NET 维度:异步/等待、可空引用类型、API/版本控制、资源/IDisposable、集合/LINQ 和可测试性(如果相关)
  • 符合调查结果格式:每个调查结果包括位置、类别(language-dotnet)、严重性、标题、描述和可选建议
  • 文件:行引用:所有结果都引用带有行号的特定文件位置
  • 排除非 .NET 代码:除非明确在范围内,否则不会分析非 .NET 文件的 .NET 特定规则
流程质量检查
  • 是否仅审查了 .NET 语言/运行时维度(无范围/安全/架构)?
  • 是否涵盖了相关的异步、可空、IDisposable、LINQ 和可测试性?
  • 每个发现是否都包含位置、类别=language-dotnet、严重性、标题、描述和可选建议?
  • file:line 是否引用了问题?
验收测试

输出是否包含以 .NET 为中心的结果列表,其中包含文件:行引用,涵盖所有相关语言/运行时维度,而无需执行安全性、体系结构或范围分析?


示例(示例)

示例 1:异步方法
  • 输入:异步的 C# 方法,无需传递 CancellationToken 即可调用其他异步方法。
  • 预期:发出 CancellationToken 传播的发现(例如次要/建议);参考方法和参数列表。类别 = language-dotnet.
示例 2:可空和处置
  • 输入:持有 IDisposable 且不实现 IDisposable 或使用 using 的 C# 类。
  • 预期:发出资源处置的结果,如果字段可以为空,则可能可以为空。类别 = language-dotnet.
边缘情况:混合 C# 和 SQL
  • 输入:包含 C# 和嵌入式 SQL 字符串的文件。
  • 预期:仅查看 .NET 约定的 C# 部分(例如异步、可空、处置)。不要发出 SQL 注入结果;这是用于 review-security 或 review-sql。

Comments

Markdown supported