review-dotnet
技能(Skill):回顾.NET
目的 (Purpose)
仅查看 .NET 生态系统(C#、F#)中的代码的语言和运行时约定。不要定义范围(差异与代码库)或执行安全/架构分析;这些是通过范围和cognitive技能来处理的。以标准格式发出结果列表以进行聚合。重点关注 async/await 和 ConfigureAwait、可空引用类型和 NRE 避免、API 和版本控制、资源和 IDisposable、集合和 LINQ 以及可测试性。
核心目标(Core Objective)
首要目标:生成 .NET 语言/运行时结果列表,涵盖异步/等待、可空类型、API 稳定性、资源管理、LINQ 使用以及给定代码范围的可测试性。
成功标准(必须满足所有要求):
- ✅ 仅限 .NET 范围:仅审查 .NET (C#/F#) 语言和运行时约定;未执行范围选择、安全性或架构分析
- ✅ 涵盖所有六个 .NET 维度:异步/等待、可空引用类型、API/版本控制、资源/IDisposable、集合/LINQ 和可测试性(如果相关)
- ✅ 结果格式兼容:每个结果包括位置、类别(
language-dotnet)、严重性、标题、描述和可选建议 - ✅ 文件:行引用:所有发现都引用带有行号的特定文件位置
- ✅ 排除非 .NET 代码:除非明确在范围内,否则不会分析非 .NET 文件的 .NET 特定规则
验收测试:输出是否包含以 .NET 为中心的结果列表,其中文件:行引用涵盖所有相关语言/运行时维度,而无需执行安全性、体系结构或范围分析?
范围边界(范围边界)
本技能负责:
- async/await 正确性和ConfigureAwait 用法(库与应用程序代码)
- 可空引用类型和 NRE 避免
- 公共API稳定性和版本控制策略
- IDisposable、IAsyncDisposable 和 using 语句模式
- 集合和 LINQ 效率(多重枚举、分配、跨度/内存)
- 可测试性(DI、密封/可重写、静态使用)
本技能不负责:
- 范围选择——范围由调用者提供
- 安全分析(注入、身份验证、加密)——使用“review-security”
- 架构分析——使用“review-architecture”
- 性能深入研究——使用“review-performance”
- 全面精心策划的审核——使用“审核代码”
- 代码库状态审查 — 使用
review-codebase
转交点:当所有 .NET 发现结果发布后,将其移交给“review-code”进行聚合。对于 .NET 代码中发现的安全或体系结构问题,请记下它们并建议运行适当的cognitive技能。
使用场景(用例)
- 精心安排的审查:当 review-code 运行 .NET 项目的范围 → 语言 → 框架 → 库 → cognitive时,用作语言步骤。
- 仅.NET 审查:当用户只想检查语言/运行时约定时(例如,添加新的 C# 文件后)。
- PR .NET 预检查清单:确保异步、可空和资源模式正确。
何时使用:当正在审查的代码是.NET (C#/F#) 并且任务包括语言/运行时质量时。范围(差异与路径)由调用者或用户确定。
行为(行为)
该技能的范围
- 分析:给定代码范围(调用者提供的文件或 diff)中的 .NET 语言和运行时约定。不决定范围;接受代码范围作为输入。
- 不要:执行范围选择(差异与代码库)、安全审查或架构审查;除非要求忽略语言,否则不要查看非 .NET 文件。
审核清单(仅限 .NET 维度)
- async/await和ConfigureAwait:async的正确使用;在适当的情况下配置Await(false)(库代码);取消令牌传播;避免 async void 除了事件处理程序。
- 可空引用类型和NRE:可空注释;在合理的情况下进行空值检查和空值宽容;避免不必要的 null-forgiving。
- API和版本控制:公共API表面稳定性;重大变更;库的版本控制或弃用策略。
- 资源和IDisposable:正确使用IDisposable、using语句、IAsyncDisposable;没有泄漏的手柄或流。
- 集合和LINQ:适当使用LINQ;分配和枚举;避免多重枚举;相关的跨度/内存。
- 可测试性:依赖注入和可测试性;静态使用;在影响测试的地方密封/可重写。
语气和参考
- 专业和技术:参考具体位置(文件:行)。发出包含位置、类别、严重性、标题、描述、建议的结果。
输入与输出 (Input & Output)
输入(输入)
- 代码范围:用户或范围技能已选择的文件或目录(或差异)。该技能不决定范围;它仅检查所提供的 .NET 代码的语言约定。
输出(输出)
- 以附录:输出合同中定义的格式发出零个或多个结果。
- 此技能的类别是 语言-dotnet。
限制(限制)
硬边界(Hard Boundaries)
- 不要执行安全、架构或范围选择。遵守 .NET 语言和运行时约定。
- 不要在没有具体地点或可行建议的情况下给出结论。
- 不要检查非 .NET 代码的 .NET 特定规则,除非用户明确包含它(例如嵌入脚本)。
技能边界 (Skill Boundaries)
不要做这些(其他技能可以处理它们):
- 不要选择或定义代码范围 - 范围由调用者或“审查代码”确定
- 不要执行安全分析——使用“review-security”
- 不要执行架构分析——使用“review-architecture”
- 不要审查 .NET 约定的非 .NET 代码
何时停止并交接:
- 当所有 .NET 发现结果发布后,将其交给“review-code”进行聚合
- 当用户需要全面审查(范围+语言+cognitive)时,重定向到“审查代码”
- 当.NET代码中发现安全问题时,记下它们并建议“审查安全性”
自检(Self-Check)
核心成功标准
- 仅限 .NET 范围:仅审查 .NET (C#/F#) 语言和运行时约定;未执行范围选择、安全性或架构分析
- 涵盖所有六个 .NET 维度:异步/等待、可空引用类型、API/版本控制、资源/IDisposable、集合/LINQ 和可测试性(如果相关)
- 符合调查结果格式:每个调查结果包括位置、类别(
language-dotnet)、严重性、标题、描述和可选建议 - 文件:行引用:所有结果都引用带有行号的特定文件位置
- 排除非 .NET 代码:除非明确在范围内,否则不会分析非 .NET 文件的 .NET 特定规则
流程质量检查
- 是否仅审查了 .NET 语言/运行时维度(无范围/安全/架构)?
- 是否涵盖了相关的异步、可空、IDisposable、LINQ 和可测试性?
- 每个发现是否都包含位置、类别=语言-dotnet、严重性、标题、描述和可选建议?
- file:line 是否引用了问题?
验收测试
输出是否包含以 .NET 为中心的结果列表,其中包含文件:行引用,涵盖所有相关语言/运行时维度,而无需执行安全性、体系结构或范围分析?
示例(示例)
示例 1:异步方法
- 输入:异步的 C# 方法,无需传递 CancellationToken 即可调用其他异步方法。
- 预期:发出 CancellationToken 传播的发现(例如次要/建议);参考方法和参数列表。类别 = 语言-dotnet.
示例 2:可空和处置
- Input:持有 IDisposable 且不实现 IDisposable 或使用 using 的 C# 类。
- 预期:发出资源处置的结果,如果字段可以为空,则可能可以为空。类别 = 语言-dotnet.
边缘情况:混合 C# 和 SQL
- 输入:包含 C# 和嵌入式 SQL 字符串的文件。
- 预期:仅查看 .NET 约定的 C# 部分(例如异步、可空、处置)。不要发出 SQL 注入结果;这是用于 review-security 或 review-sql。
附录:输出合约
每项调查结果必须遵循标准调查结果格式:
| 元素 | 要求 |
|---|---|
| 位置 | path/to/file.ext(可选行或范围)。 |
| 类别 | 语言-dotnet。 |
| 严重性 | 关键 | 主要 | 次要 | 建议。 |
| 标题 | 简短的一行摘要。 |
| 描述 | 1-3 句话。 |
| 建议 | 具体修复或改进(可选)。 |
示例:
- **Location**: `src/Services/DataLoader.cs:22`
- **Category**: language-dotnet
- **Severity**: minor
- **Title**: Async method does not accept or forward CancellationToken
- **Description**: Long-running or cancellable operations should support cancellation.
- **Suggestion**: Add CancellationToken parameter and pass it to underlying async calls.
More from nesnilnehc/ai-cortex
review-codebase
Architecture and design review for specified files/dirs/repo. Covers tech debt, patterns, quality. Diff-only review use review-diff. Complements review-code (orchestrated).
101review-vue
Review Vue 3 code for Composition API, reactivity, components, state (Pinia), routing, and performance. Framework-only atomic skill; output is a findings list.
88review-diff
Review only git diff for impact, regression, correctness, compatibility, and side effects. Scope-only atomic skill; output is a findings list for aggregation.
88review-java
Review Java code for language and runtime conventions: concurrency, exceptions, try-with-resources, API versioning, collections and Streams, NIO, and testability. Language-only atomic skill; output is a findings list.
80review-architecture
Review code for architecture: module and layer boundaries, dependency direction, single responsibility, cyclic dependencies, interface stability, and coupling. Cognitive-only atomic skill; output is a findings list.
78review-code
Orchestrate comprehensive code reviews by running scope, language, framework, library, and cognitive review skills in sequence, then aggregate findings into a unified report.
71