Skip to content
Development
Skill

/x-audit-arch

独立架构巡检 skill。不在 x-dev → x-verify → x-qa-gate 主流程内,由用户手动触发或大里程碑后调用。 调子 agent 做全项目视角的架构审查,核心两条主线:架构一致性(模块归属、边界类复用、分层、循环依赖、命名语义、错误处理一致性)与单一事实源(字段/枚举/默认值/prompt 规则/schema/文档是否多处重复维护并已漂移),辅以抽象合理性(奥卡姆,防过度设计)、模块契约清晰度、依赖方向健康。 触发:用户说"架构巡检"、"audit

From plugin
x-dev-pipeline
1220 skills
Install
$ npx -y skills add KtKID/x-dev-pipeline --skill x-audit-arch --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/x-audit-arch

Context preview

The summary Claude sees to decide when to auto-load this skill.

独立架构巡检 skill。不在 x-dev → x-verify → x-qa-gate 主流程内,由用户手动触发或大里程碑后调用。 调子 agent 做全项目视角的架构审查,核心两条主线:架构一致性(模块归属、边界类复用、分层、循环依赖、命名语义、错误处理一致性)与单一事实源(字段/枚举/默认值/prompt 规则/schema/文档是否多处重复维护并已漂移),辅以抽象合理性(奥卡姆,防过度设计)、模块契约清晰度、依赖方向健康。 触发:用户说"架构巡检"、"audit

SKILL.md

x-audit-arch.SKILL.md
name: x-audit-arch
description: |
  独立架构巡检 skill。不在 x-dev → x-verify → x-qa-gate 主流程内,由用户手动触发或大里程碑后调用。
  调子 agent 做全项目视角的架构审查,核心两条主线:架构一致性(模块归属、边界类复用、分层、循环依赖、命名语义、错误处理一致性)与单一事实源(字段/枚举/默认值/prompt 规则/schema/文档是否多处重复维护并已漂移),辅以抽象合理性(奥卡姆,防过度设计)、模块契约清晰度、依赖方向健康。
  触发:用户说"架构巡检"、"audit arch"、"架构一致性检查"、"看看有没有重复的事实源"、"单一事实源检查"、"arch review"、"这块架构合不合理",或大版本/重构里程碑后。

x-audit-arch · 架构巡检

x-audit-arch 是独立巡检 skill,**不在 x-dev → x-verify → x-qa-gate 主流程内**。它由用户手动触发或大里程碑/重构后调用,做全项目视角的架构审查。

两条核心主线是用户最看重的:**架构一致性**(新代码守住项目既有的模块边界、分层、命名语义,而不是 AI 自己发明一套)和**单一事实源**(同一份关键信息只有一个权威来源,没有散落多处的重复定义)。其余维度(抽象合理性、契约、依赖健康)服务于这两条。

为什么独立

架构问题需要**全局视角**才有意义——单个文件本身没问题,但它把一个本该归属 A 模块的职责放进了 B 模块;单个 schema 定义没问题,但同一个枚举在三个地方各写了一份、已经开始漂移。这些都只有站在整个项目结构上看才暴露。塞进每个任务的 gate 会变成噪音,也看不到跨模块全貌,所以剥离成周期巡检。

与相邻 skill 的边界(避免重叠,必读)

| skill | 关注 | 与本 skill 的区别 | |-------|------|------------------| | x-qa-gate R1 | spec **正确性**:实现是否做了 spec 要的事 | R1 问"做对了吗",本 skill 问"放对地方、符合项目结构吗"。功能正确但放错模块/破坏分层 → 归本 skill | | x-audit-style | 表层规范:命名大小写、magic number、函数长度、死代码 | style 看**局部、战术**(这行代码风格);arch 看**结构、战略**(这个职责该不该在这个模块)。命名只查**语义归属**(叫这个名字符不符合项目领域语义),大小写一致性归 style | | x-audit-perf | 性能:复杂度、I/O、缓存 | 正交,互不重叠 |

最容易混的两处,按下面切:

  • **重复代码**:两段近乎一样的代码块 → x-audit-style「复用机会」(提取函数);同一份**事实源**(枚举/默认值/schema/规则)在多处各定义一份 → 本 skill「单一事实源」(收敛到唯一权威来源)。前者是战术去重,后者是结构性漂移风险。
  • **命名**:snake/camel 大小写、缩写一致 → style;名字是否符合项目领域语义、有没有归属感(user/account/member 在本项目指同一概念却混用,导致读者误判模块边界)→ 本 skill。

流程

1. 用户触发(手动调用 / 大里程碑 / 重构后)。 2. dispatch 一个子 agent,prompt 包含本 SKILL.md 的检查清单 + 项目代码 + 输出格式。 3. 子 agent 输出 audit-arch 报告。 4. 写到 `reports/audit/audit-arch-YYYYMMDD-HHmmss.md`。 5. 不自动触发 x-fix——由用户决定哪些问题进入 backlog。架构改动影响面大,**必须人类裁决**,不要让巡检直接动手改结构。

审查范围

  • 用户指定模块、目录、分层时,按指定范围执行。
  • 用户只说 `x-audit-arch` / `架构巡检` 时,默认全项目视角(架构问题靠局部 diff 看不出来)。
  • 范围太大时,先和用户确认聚焦哪几个模块/边界,避免泛泛而谈。

子 agent dispatch

Agent({
  description: "Architecture audit",
  subagent_type: "general-purpose",
  prompt: <本 SKILL.md 的"检查清单"段 + 项目代码 + 输出格式>
})

报告顶部必须填写 `Completed by model`。

取证原则(架构判断也要有证据)

架构问题最容易写成空泛的"建议解耦""感觉过度设计"。本 skill 要求每个问题都落到**可指认的证据**,否则不进报告:

  • 指出具体文件 / 符号 / 行号,说明它**当前**在哪、**应该**在哪。
  • 单一事实源问题必须列出**同一信息的所有副本位置**(≥2 处),并说明是否已经漂移(值不一致 / 改了一处忘了另一处的痕迹)。
  • 循环依赖、分层破坏必须给出**依赖路径**(A → B → A),而不是只说"耦合高"。
  • 过度抽象必须回答:"删掉这一层,谁会坏?"——答不出谁会坏,就是过度抽象的证据。

没有证据的纯架构洁癖、个人审美偏好不写进报告。

检查清单

1. 架构一致性 — 模块归属与分层(重点)

判断新代码有没有放在它该在的地方、有没有守住既有分层。错位的职责会让模块边界慢慢糊掉,是架构腐化的最常见起点。

  • **模块归属**:这段逻辑放在正确的模块/层了吗?业务规则跑进了工具层、数据访问混进了表现层、领域逻辑写在 controller 里?
  • **分层方向**:依赖方向符合分层约定吗(上层依赖下层,下层不反向依赖上层)?有没有底层模块 import 了上层模块?
  • **绕过既有抽象**:项目已有一个边界类/服务/门面(facade),新代码却绕过它直接调底层(直接拼 SQL 而不走 repository、直接读环境变量而不走 config 模块)?
  • **错误处理一致性**:错误处理方式和项目其余部分一致吗(项目统一抛自定义异常,新代码却返回 null/error code)?日志、配置读取、参数校验的风格是否一致?

2. 架构一致性 — 边界类复用与命名语义(重点)

  • **边界类复用**:项目已有承担这个职责的边界类/DTO/接口了吗?新代码是复用了,还是又造了一个近义的(`UserDTO` 已存在,又新增 `UserInfo`)?
  • **命名语义归属**:名字符合项目的领域语义吗?同一概念在不同模块用了不同名字(user / account / member 实为一物却混用),会让读者误判它们是不同实体、跨错模块边界。
  • **职责单一**:一个类/模块是不是承担了多个本该拆开的职责,导致它被多个不相关的方向同时依赖?

3. 单一事实源(重点)

同一份关键信息只应有一个权威来源。AI 很容易复制粘贴 schema、枚举、默认值、规则、prompt,短期能跑,长期必然漂移——改了一处忘了另一处,两份事实开始打架。这是本 skill 最高优先级的检查方向之一。

  • **字段/schema 重复定义**:同一个数据结构在 dataclass、TypeScript interface、数据库 schema、API 文档里各写了一份?应以一个为权威源,其余派生或校验同步。
  • **枚举/常量散落**:同一组状态码、枚举值、错误码在多处各定义一份?(本仓库 CLAUDE.md 的"状态枚举收敛到唯一真源"就是这条的实例。)
  • **默认值多处**:同一个默认值(超时时间、重试次数、路径前缀)硬编码在多个文件里?改一处就漏其余。
  • **规则/prompt 复制**:同一条业务规则、校验逻辑、prompt 模板被复制了多个版本?它们之间已经出现差异了吗?
  • **文档与代码漂移**:README/spec/注释里描述的字段、行为、契约,和代码实际实现是否已经对不上?
  • **已漂移的证据**:重点标记那些**副本之间值已经不一致**的——这是单一事实源缺失已经造成实际损害的硬证据,优先级最高。

4. 抽象合理性(奥卡姆 / 最小充分)

防止 AI 写出"看起来很完整、实际难维护"的过度设计。注意:奥卡姆不是"永远选最简单的",而是"满足需求前提下不引入不必要的复杂度"。

  • **过度抽象**:有没有只有一个实现的接口/基类/工厂?有没有为想象中的未来需求预留的扩展点(插件系统、策略模式)却从未用到?
  • **不必要的层**:删掉某一层(一个只做转发的 service、一层薄封装),系统会不会更清楚?判据:删了之后**谁会坏**?答不出就是多余。
  • **配置膨胀**:简单需求被做成了"配置中心 + 热更新 + 多租户"这类远超当前需要的方案?
  • **最小充分改动残留**:能看出某次改动"顺手重构了无关模块"留下的痕迹(无关文件被动、引入了和本次需求无关的新抽象)?

5. 契约清晰度(契约优先)

模块之间的边界契约是否清楚——输入/输出/错误/是否可空/是否有副作用。契约模糊会让调用方各自猜测,是后续 bug 的温床。

  • 公开接口的输入输出类型是否明确,还是大量 `any` / `dict` / 裸 map 传递?
  • 错误是怎么返回的,调用方知道要处理哪些失败吗(契约里有没有声明可能抛的异常/错误)?
  • 是否有副作用、是否修改全局状态,从签名/文档能看出来吗?
  • 同一个契约被多个调用方依赖时,它是不是一个清晰的、有名字的边界,还是隐式约定?

6. 依赖健康

  • **循环依赖**:模块 A → B → A 或更长的环?给出完整依赖路径。
  • **耦合方向**:稳定的核心模块反向依赖了易变的外围模块?
  • **依赖泄漏**:底层实现细节(具体的库类型、数据库行对象)泄漏到了公开接口/跨模块边界上?

严重度分级

架构问题一般不是即时生产事故(那归 x-cr / x-qa-gate),而是**可维护性与腐化风险**,所以用 P1/P2/P3:

| 等级 | 含义 | 典型 | |------|------|------| | P1(架构债,强烈建议修) | 已经造成或即将造成漂移/腐化的结构问题 | 多事实源**已漂移**、循环依赖、破坏分层、绕过既有抽象自造一套并行体系 | | P2(建议修) | 结构不当但暂未造成损害 | 模块归属不当、命名不符语义、契约模糊、尚未漂移的重复定义、可疑的过度抽象 | | P3(信息性) | 轻微、可选 | 轻度过度封装、可选的边界类复用机会、命名语义的小改进 |

输出

写入 `reports/audit/audit-arch-YYYYMMDD-HHmmss.md`,模板见 `templates/audit-arch-template.md`。

  • 在 task 目录中执行:`dev-pipeline/tasks/<task>/reports/audit/audit-arch-YYYYMMDD-HHmmss.md`
  • 在普通仓库范围执行:`reports/audit/audit-arch-YYYYMMDD-HHmmss.md`

不在范围

  • **功能正确性**:实现做没做对 spec 要的事,归 x-qa-gate R1 / x-cr。本 skill 只看"放对地方、符不符合结构"。
  • **表层规范**:命名大小写、magic number、函数长度、死代码,归 x-audit-style。
  • **性能**:复杂度、I/O、缓存,归 x-audit-perf。
  • **单任务级别的小范围结构审查**:小改动看不出架构问题,等里程碑后整体巡检。
  • **个人审美 / 架构洁癖**:没有"会导致漂移或腐化"证据的纯偏好,不写进报告。
  • **直接动手改架构**:本 skill 只出报告,结构性改动影响面大,必须人类裁决后再走 x-fix。
Read more
Ships withx-dev-pipeline

An auditable development workflow for AI coding agents: requirement contracts, implementation evidence, deterministic checks, and risk-matched review.

Get the whole plugin
Stats
12
Stars
0
Forks
Active
Maintenance
Python
Language
MIT
License
8d ago
Last commit
5mo ago
Created

Repo: KtKID/x-dev-pipeline

Other skills on x-dev-pipeline.

x-cr
Skill

x-cr

软件正确性调查 skill。用于用户说“XX 不太对”“这个功能有 bug”“结果和预期不一致”“帮我查原因”,也用于 review 模块、文件、diff 或 PR 的正确性。遇到已知异常、模块不变量、信任边界、授权范围扩张、服务端校验、租户/会话隔离或持久化一致性问题时优先使用本 skill。 本 skill…

x-dev
Skill

x-dev

开发任务执行 skill。读取单个 task 的 dev-checklist.md,按行序以"先测试后实现"的方式逐行执行,dev-report 只记验证结论(全绿或 N 个 🔴),全部行验证通过后交付。触发:`x-dev {task-dir}`、用户要求执行/开发某个 task。

x-fix
Skill

x-fix

Bug 修复执行 skill。分三种入口: 1. 用户直接报告 Bug → 定位根因 → 修复 → 产出 fix-report-*.md 或 fix-note-*.md(无需 CR 报告) 2. 有 x-cr 的 CR 报告 → 按稳定 Bn/INV-ID 逐条修复 → 回写同一份 task 内或仓库级…

x-qa-gate
Skill

x-qa-gate

verify 通过后的质量审查。Q2/Q3 各由一个 reviewer 在单轮内按 q1-intent、q2-correctness、q3-evidence 三个独立 lens 穷尽检查;Q3 使用完整高风险输入和逐 lens 回执。发现 P0/P1 后登记 issue 并交 x-fix 批量修复,主 agent…

x-req3
Skill

x-req3

x-spec3 的任务拆解 skill。读取 `docs/spec/{spec-name}/spec.md` 的目标、边界与不变量、判断依据、验收清单和直接 GWT Scenarios,生成 `docs/spec/{spec-name}/tasks/{task-name}/dev-checklist.md`,并以…

x-spec3
Skill

x-spec3

在开发方案已经讨论清楚、需要固化保存时使用。也适用于用户明确要求保存方案、编写规格文档,或希望在开发前明确目标、边界、约束和验收标准的场景。将已确认的方案整理成可供后续任务拆解、开发和验证共同使用的规格文档。