关于 arch-check
arch-check 是用于检查代码库是否遵循既定架构的技能,适合需要验证依赖和端点边界的团队。它支持四种架构基线,并提供带证据和修复建议的违规报告。
主要功能
- 01检查四种架构基线
- 02审计项目依赖方向
- 03检测依赖循环与泄漏
- 04检查端点边界
- 05报告严重级别、证据和修复建议
适用场景
- 01发布前检查架构
- 02大型功能完成后复核结构
- 03评估继承而来的代码库
- 04查找共享模块中的边界违规
MCP 相关
使用 MCP 工具检查项目引用、依赖图、符号引用、端点和结构反模式。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ codewithmukesh/ dotnet-claude-kit --skill arch-check安装后在 Claude Code 中输入/arch-check确认已加载。
详细介绍
/arch-check
内容
验证代码是否仍然符合其所声明的架构。 架构会因一些单独看来都合理的小改动而逐渐腐化——例如 Domain 项目新增了 EF Core 引用、某个模块访问了同级模块的内部实现,或某个端点定义在宿主之外。此工作流通过项目图和依赖关系分析来捕捉这些问题,而非逐个文件阅读。
输出:包含严重级别、文件:行号证据和具体修复方案的违规报告,或通过检查的结果。
适用时机
- “检查我的架构”“是否存在分层违规”“依赖方向”
- 发布前,或大型功能合并后
- 加入一个声称采用了某种架构、但自己并不熟悉的代码库后
- 多人向共享模块合并代码的团队定期检查
- 不适用于选择架构——这属于
architecture-advisor的职责
工作方式
步骤 1:确认已声明的架构
按权威性从高到低依次为:项目的 CLAUDE.md、docs/decisions/ 中的 ADR,或询问用户。绝不默默推断——基准错误会导致报告错误。支持以下四种基准及其规则:
| 架构 | 检查规则 |
|---|---|
| 垂直切片 | 功能之间不得相互引用;共享代码只能通过明确的共享文件夹或项目使用 |
| 整洁架构 | Domain → 无;Application → 仅 Domain;Infrastructure → Application;Api → Application(不得引用 Api → Infrastructure 类型,仅允许接线) |
| DDD + 整洁架构 | 整洁架构规则 + 只能通过聚合根引用聚合;跨聚合效应使用领域事件 |
| 模块化单体 | 模块之间不得有项目引用,*.Contracts 除外;跨模块调用通过集成事件或契约实现 |
步骤 2:项目级依赖方向(成本最低,能捕捉大多数问题)
get_project_graph()
根据基准中允许的依赖箭头,检查每个项目引用。此处单个错误引用(Domain → Infrastructure)即为 CRITICAL 级别的问题——它会导致所有下游违规都成为可能。
步骤 3:循环依赖
detect_circular_dependencies()
循环依赖在所有基准中都属于违规。报告完整链路。
步骤 4:命名空间级泄漏(抽样检查)
项目引用可能没有问题,但代码仍然可能泄漏。检查风险较高的边界:
get_dependency_graph(symbolName: <a Domain entity>, depth: 2)
-- Domain types pulling in EF Core, HttpClient, or Infrastructure namespaces?
find_references(symbolName: <a module-internal type>)
-- referenced from outside its module?
detect_antipatterns()
-- known structural smells as supporting evidence
根据基准选择抽查对象:整洁架构 → 抽查 3-5 个 Domain 实体和 Application 处理程序;模块化单体 → 抽查每个模块的内部类型;VSA → 抽查两个或三个功能文件夹中的类型。
步骤 5:表示层边界
get_endpoint_map()
端点必须仅位于宿主/Api 层(整洁架构),或其所属模块内(模块化单体、VSA 功能文件夹)。在 Application 或共享项目中定义端点属于边界违规。任何端点缺少标注的身份验证都会作为附带问题报告(如需深入检查,请转到 /security-scan)。
步骤 6:报告
| 严重级别 | 含义 |
|---|---|
| CRITICAL | 项目引用方向错误、模块间引用、循环依赖 |
| HIGH | 命名空间泄漏(Domain 使用 Infrastructure/EF 类型)、端点位于其所属层之外 |
| MEDIUM | 共享内核逻辑蔓延、通过直接访问成员绕过聚合 |
| INFO | 端点身份验证未标注、值得关注的反模式命中 |
每项发现均包含:证据(文件:行号)、违反基准的原因,以及修复方案(移动代码、通过接口反转依赖、引入契约项目、触发集成事件)。主动提出立即修复 CRITICAL 级别的问题。
使用的 MCP 工具
get_project_graph— 引用方向审计(核心工具)detect_circular_dependencies— 检测循环依赖get_dependency_graph/find_references— 探查命名空间级泄漏get_endpoint_map— 检查表示层边界和身份验证状况detect_antipatterns— 提供辅助结构证据
示例
User: /arch-check
Claude: Baseline from CLAUDE.md: Clean Architecture (4 projects).
Project graph (get_project_graph)...
CRITICAL Domain → Infrastructure reference (Domain.csproj:14)
Breaks the dependency rule; makes Domain untestable in isolation.
Fix: invert — define IEmailSender in Application, implement in
Infrastructure.
Cycles (detect_circular_dependencies)... none.
Leak probes on 4 Domain entities...
HIGH Order.cs:8 uses Microsoft.EntityFrameworkCore (Domain must stay
persistence-ignorant). Fix: move the [Index] config to
OrderConfiguration in Infrastructure.
Endpoint map... 23 endpoints, all in Api. 2 unmarked auth (side-finding —
run /security-scan).
Verdict: NOT conformant — 1 critical, 1 high. Fix the reference first;
want me to do it now?
相关
architecture-advisor— 选择基线(在此技能发挥作用之前)clean-architecture、vertical-slice、ddd、modular-monolith模板 — 正在执行的规则/security-scan— 深入检查 auth 方面的发现/health-check— 更全面的评估报告;arch-check 是其中深入检查架构的维度