skills/code-quality/architecture-design/SKILL.md
用「正交分解」方法论做架构设计与评审。把系统正交分解为「最小核心 + 正交周边」, 用接口(而非架构图)做精确共识, 以「修改影响面」量化优劣, 区分稳定点/变化点。当用户要设计系统/服务/模块架构、拆解复杂系统、划分模块边界、设计接口契约、评审架构方案、判断是否过度设计时使用。触发词: 架构设计、系统设计、拆解系统、正交分解、模块边界、接口设计、架构评审、设计文档、是否过度设计
npx skillsauth add lazygophers/ccplugin architecture-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
架构的本质不是画框架图, 而是把业务系统正交分解为相互独立、互不耦合的模块。复杂度的唯一根本解是分解, 分解的质量标准是「正交」(改 A 不影响 B)。本 skill 把这套框架落地为可执行的设计/评审流程。
架构 = 对业务系统的正交分解。 产物 = 「一个尽可能小且稳定的核心系统 + N 个彼此正交、可插拔的周边系统」+ 组合它们的接口契约。
| 步 | 动作 | 关键问题 | 详见 |
| --- | --- | --- | --- |
| 1 | 需求去伪存真 | 「什么样的人 / 在什么场景 / 遇到什么问题」三要素; 剥到本质层, 区分真需求 vs 表层诉求 | references/mental-models.md 模型7 |
| 2 | 划稳定点 / 变化点 | 哪些需求维度一定不会变(→ 钉进核心), 哪些会变(→ 周边/接口暴露)。先判「什么不会发生」 | 模型6 |
| 3 | 正交分解 | 把业务拆成彼此独立的子业务; 判据是「改 A 不影响 B」, 而非按技术分层切 | 模型1 |
| 4 | 定最小核心 + 周边 | 分出业务最小功能集作核心(最小化、稳定), 其余一律下沉为正交周边/插件 | 模型2 |
| 5 | 设计接口契约 | 为每个模块定义接口(可用代码/伪代码精确表达)。接口 > 数据结构 > 架构图。过四准则: 最小完备 / 自然正交 / 易用 / 隐藏实现 | references/interface-design.md |
| 6 | 修改影响面自检 | 做思想实验: 「加一个典型新功能, 要碰几个文件、改几行核心代码?」理想 = 核心 0 改动(或 ≤1 行)+ 新增一个独立周边文件 | 模型3 |
🔴 CHECKPOINT(交付设计前): 步骤 5 必须产出精确的接口定义 + 核心数据结构(必要时直接写代码), 不接受只有架构图。架构图不精确、有歧义, 只能做辅助说明。接口才是团队共识的精确载体。
| # | 模型 | 一句话 | | --- | --- | --- | | 1 | 正交分解 | 架构即把业务正交分解为互不耦合的模块(改 A 不影响 B) | | 2 | 最小核心 + 正交周边 | 复杂度靠「往周边加功能」而非「改核心」来增长 | | 3 | 修改影响面量化 | 架构好坏 = 加一个功能要改的处数/行数; 越分散越差 | | 4 | 接口 > 数据结构 > 架构图 | 接口是业务的抽象 + 团队共识的精确载体 | | 5 | 开闭原则应对变化 | 软件工程是「关于变化的学问」; 与其改模块, 不如加新业务 | | 6 | 预判「什么一定不会发生」 | 防过度设计的唯一刹车; 比预测会发生什么更重要 | | 7 | 需求三要素 | 真需求 = 什么人 / 什么场景 / 什么问题 | | 8 | 信息世界全栈构建 | 从底层硬件地基到业务顶层, 架构师「在心中重建整个系统」 |
每个模型的应用方式与失效边界见 references/mental-models.md。
评一个架构方案好不好, 过四条准则: KISS(简单, 业务语义无歧义)/ Modularity(着眼模块而非框架)/ Testable(能方便测试 = 低耦合)/ Orthogonal Decomposition(正交分解到位)。
下表是从模型里抽出的「如何判断 / 如何度量」可操作判据, 评审时逐条对照:
| 判据 | 方法 |
| --- | --- |
| 核心系统纯洁度 | 伤害值 Σ log₂(修改行数+1); 处数越多越糟, 每处压到改 1 行 |
| 模块耦合度 | Σ log₂(符号出现次数+1) × 不成熟度系数; 只能对比相同功能的两个方案 |
| 是否过度设计 | 「不会发生的事你为它做足了准备」= 过度设计 |
| 何时才抽象依赖 | 仅「多选择 / 解除重依赖 / 可选组件」三种情况, 否则直接依赖 |
| 是否真需求 | 还原到不带任何技术假设的「根源需求」; 用户反馈常已带方案 |
| 需求是否该收敛 | 某子类需求发散无法收敛 → 团队必须重新推敲响应姿势 |
| 是否真·全局功能 | 能在统一入口处理 / 只给辅助函数 → 不算全局功能, 别特殊对待 |
| 接口是否够好 | 用真实代码把所有用户故事串一遍能否跑通(代码即文档) |
| 是否该局部重构 | 基于伤害值客观判断, 且已熟悉该块业务, 非主观厌恶 |
| 基础库是否可依赖 | 先评模块「规格成熟度」, 实现问题交给时间 |
⚠️ 伤害值/耦合度公式无物理含义、不可跨功能比较、只覆盖静态依赖(不含运行时调用次数), 用于同功能两方案的相对比较, 不是绝对评分。
需求: 「给一个画图程序加功能」。
DocumentDOM(遍历图形的只读接口)。导出器 Exporter.export(doc DocumentDOM, w io.Writer)——参数用 io.Writer 而非 *os.File(LKP, 顺带支持剪贴板/内存)。用真实代码把「导出 SVG」「复制到剪贴板」两个用户故事串通验证。Exporter 的周边文件, 核心 DocumentDOM 0 改动 → 伤害值 0, 设计合格。
if format==pdf → 核心被迫改动, 伤害值飙升, 重新分解。| 触发 | 一线修复 | 仍失败兜底 |
| --- | --- | --- |
| 子业务无法正交(强一致事务/共享状态本质耦合) | 用「全局性功能」处理横切关注点: 抽象核心接口让全局功能反向依赖(references/decomposition-and-refactoring.md §A), 而非塞进核心 | 承认此处有不可消除耦合, 显式标注为已知技术债, 不制造虚假边界 |
| 需求理解未收敛, 接口拿不准 | 接口本身是变化点 → 延后冻结, 先用最薄的探索性接口 | 标注「探索期接口, 待业务收敛再固化」, 不过早锁死错误抽象 |
| 「什么不会变」在新领域误判率高 | 保守留口或延后决策, 不赌 | 标注高不确定维度, 用迭代/重构应对而非一次设计到位 |
| 核心已老化, 改动处处掣肘 | 进入重构而非继续打补丁; 「不断重新审视边界」 | 边界非一次划定永久不变; 重新正交分解 |
本方法在成熟、约束清晰的领域最可靠。在新领域/快速演化领域(如早期探索性产品), 「预判什么一定不变」误判率高, 应保守留口或延后决策。方法的价值在判断逻辑与可操作判据(三要素 / 四准则 / 修改影响面度量), 不在套用固定结论。
| 文件 | 用途 |
| --- | --- |
| references/mental-models.md | 八个心智模型详解(应用/失效边界 + 影响面公式)+ 决策启发式 |
| references/interface-design.md | 两种接口语义(KISS / 最小依赖)+ 接口/数据结构/架构图优先级 + 接口反模式 |
| references/decomposition-and-refactoring.md | 进阶: 全局功能/横切、架构范式、边界审视、架构老化与重构(六步)、共识确认 |
tools
UI/UX 与布局设计——做界面布局/结构/导航/组件/交互的设计决策。触发:做UI/UX/布局/排版/导航/组件/交互/栅格/响应式/图表选型/字体配对。按媒介路由 HTML/Web、原生 App(iOS/Android/桌面)、CLI、TUI。需后端动态系统不适用;配色/主题/色板走姊妹 skill design-color。
tools
主题与配色设计——做颜色搭配/调色板/主题/品牌色阶/暗模式的设计决策。触发:选配色/调色/主题/色板/品牌色/暗模式/对比度/色盲/UI风格。按媒介路由 HTML/Web(CSS变量)、原生App(平台token)、CLI(ANSI)、TUI(真彩/256/16降级)。保证可访问性(对比度/色盲安全)。需后端动态系统不适用;UI/UX 布局/组件/交互走姊妹 skill design-uiux。
tools
跨任意组件(plugin/skill/agent/command)的验证驱动优化循环纪律 skill。当用户要优化某个已有组件却无明确方向、或要防止改了反而更差(自评乐观偏差 / 多维同改归因失效 / 为凑分加废话膨胀)、或要把一套通用「评分→单变量改→改后验证严格更好才留否则回滚→触顶停」的纪律套到任意组件上时使用。管优化过程本身的纪律(validation gate / ratchet / 独立验证 / 触顶停),不评单组件深度(交 skill-dev),不查插件接线(交 plugin-dev)。仅手动 /optimize-any 触发。
data-ai
两层规则记忆 (基于 .skein/spec)。planning 时 recall 召回相关规则、task finish 后 sediment 沉淀学习 + prune 自动精简过期/重复/断链规则。core 常驻硬规 + recall 按需召回, 经判定门自动写盘 (不逐次问用户)。产出 .skein/spec 下 core/recall 规则文件 + index。另支持空仓 bootstrap 播种规则基线、记忆大面积失效 (大重构/换栈) 时 reconstruct 可逆归档后按项目类型分型重建、maintain 手动体检 (超预算/stale/断链/重复/废弃, --apply 自动修复)、auto-fix (Stop hook 写 .pending-fix 标记 → main 派 skein-specer bg 跑 maintain --apply 全自动修, 断链只报告)。