mcpField
D
design-invariants

design-invariants

github.com/lvlup-sw测试与质量22132 次安装1 天前更新
代码仓库

关于 design-invariants

design-invariants 是一项审查技能,用于检查设计提案或差异是否符合 Exarchos 特定的架构不变量。它引导审查者逐项检查五条不变量及其子项,并按严重性和位置记录发现。

主要功能

  1. 01按顺序审查 INV-1 至 INV-5
  2. 02覆盖 INV-5 的四个子项
  3. 03按严重性记录问题
  4. 04交叉关联 axiom 发现

适用场景

  1. 01提交设计前检查架构约束
  2. 02审查涉及事件存储的变更
  3. 03检查 MCP 表面或工具注册表改动

安装

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

$npx skills add https://github.com/lvlup-sw/exarchos --skill design-invariants

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

包含的文件

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

references/
INV-1-event-sourcing.md
INV-2-facade-equivalence.md
INV-3-basileus-forward.md
INV-4-platform-agnosticity.md
INV-5a-input-ergonomics.md
INV-5b-output-contract.md
INV-5c-aspire-verbs.md
INV-5d-action-discriminator.md
deterministic-checks.md

详细介绍

设计不变量技能

根据 Exarchos 特有的架构不变量审查设计提案或差异。此技能仅适用于项目本身——这些不变量约束的是 Exarchos 本身,而不是 Exarchos 插件的使用者。

此技能是问题 #1118(将原则编纂成文)和 #1109(跨领域约束)的实践补充。参考内容也可作为 v2.11.0 #1275(MCP 资源)接口和 #1260 机器可读不变量生成器的基础——每个不变量都有一个稳定 ID 和结构化形式。

适用场景

  • 在 /exarchos:ideate 或 /exarchos:plan 期间,在确定设计之前。
  • 在 /exarchos:review 期间,与 /axiom:audit 一起使用。
  • 审查涉及事件存储、MCP 接口、运行时 YAML 或复合工具注册表的 PR 时。

不适用场景

  • 通用后端质量审查——使用 /axiom:* 技能(见下方的互补性矩阵)。
  • TDD / 规范合规性审查——使用 /exarchos:review 或 spec-review 技能。
  • 文案 / AI 写作痕迹审查——使用 /axiom:humanize。

调用方式

  1. 指明要审查的对象(设计路径、差异范围或 PR URL)。
  2. 按顺序检查 INV-1..INV-5,并为每个不变量记录 HIGH / MEDIUM / LOW 级别的问题。
  3. 对于 INV-5,检查所有四个子领域(5a 输入易用性、5b 输出契约、5c Aspire 动词、5d 操作判别符)。
  4. 交叉关联有重叠的 axiom 问题(例如,INV-1 下的拓扑问题也可能属于 DIM-1)。
  5. 使用与 axiom 相同的问题格式输出(严重级别 + 维度 + 文件:行号 + 描述 + required_fix)。

不变量参考

问题格式

使用 axiom 的词汇(HIGH / MEDIUM / LOW),避免审查者切换语境:

{
  "verdict": "pass | conditional | fail",
  "findings": [
    {
      "invariant": "INV-1",
      "severity": "HIGH",
      "file": "servers/exarchos-mcp/src/projections/foo.ts",
      "line": 42,
      "description": "Reducer mutates state in place inside the apply switch",
      "required_fix": "Return a new state object via spread; deep-freeze input via assertReducerImmutable in tests",
      "axiom_overlap": "DIM-1"
    }
  ]
}

与 axiom 配合——互补性矩阵

分界在于:axiom 会问 “这段代码是否经过良好工程设计?”;此技能会问 “此设计是否遵循 Exarchos 的承载性不变量?” 设计可以符合 axiom 的要求,却仍违反事件溯源完整性(例如,一个类型完全正确的处理程序就地修改状态,而不是发出事件)。

发现Axiom 维度设计不变量
创建降级 EventStore 的惰性回退DIM-1 拓扑INV-1(事件完整性发生静默丢失)
skills-src 中硬编码的 Skill({...})—INV-4
投影应用中的 catch 仅调用 console.logDIM-2 可观测性INV-1(fold 抛出异常 → 必须触发 reducer-throw 降级路径)
新增 CLI 动词,但没有对应的 MCP 实现—INV-2
适配器本地用于投影状态的可变缓存DIM-1 拓扑INV-1 + INV-2(TaskStore-as-side-database 反模式)
运行时读取 runtimes/claude.yaml 字段—INV-3
工具描述未提供“请勿用于”指导—INV-5a
成功的 ToolResult 缺少 next_actions—INV-5b
v2.11.0 之后使用 NDJSON 的长时间运行操作—INV-5b(应使用 Tasks SEP-1686)
新增了本应作为 exarchos_workflow 操作的顶层工具—INV-5d
已移除的 Schema 字段仍被读取DIM-3 契约如果是事件字段,则为 INV-1

以下问题由 axiom 负责,此技能不予处理:

问题负责人
通用 SOLID、耦合、依赖方向(DIM-6)axiom:critique
通用错误处理、静默回退(DIM-2、DIM-7)axiom:harden
通用 Schema 与运行时漂移、类型断言安全性(DIM-3)axiom:scan、axiom:critique
通用测试真实性、过度使用 mock(DIM-4)axiom:verify
通用死代码、遗留模式(DIM-5)axiom:distill
AI 文风痕迹(DIM-8)axiom:humanize

来源

调研报告:docs/research/2026-05-07-design-invariants-skill.md。待 #1118 中的原则文档落地至 docs/architecture/principles.md 后,请修订此技能——届时此技能将成为该文档的操作化投影,而不再重复陈述原则。

评论

支持 Markdown