19. codebase-design 技能

为设计深层模块提供共享、精确的词汇

快速开始

npx skills add mattpocock/skills --skill=codebase-design
npx skills update codebase-design

源代码

功能说明

codebase-design 为你提供了一套用于设计深层模块的共享、精确的词汇——将大量行为隐藏在一个小型接口后面,放置在一个干净的接缝处,并通过该接口进行测试。

它是一种语言,而非流程。它不会重构你的代码,也不会给你一份重构计划——它固定了词汇(模块、接口、深度、接缝、适配器、杠杆效应、局部性),这样每个设计对话和每个涉及设计的其他技能都以相同的方式表达。一致的语言才是关键所在;"组件"、"服务"、"API"和"边界"被有意禁用,因为它们模糊了重要的区分。

何时使用

输入 /codebase-design,或者当任务匹配时智能体会自动调用它。

当你正在设计或改进一个模块的接口、寻找深化机会、决定接缝的位置、或使代码更可测试且更易于 AI 导航时使用它。其他技能在需要深度模块词汇时都会调用它。如果你想精炼项目的领域术语而不是模块设计,请使用 domain-modeling;如果想对现有代码库进行完整的架构扫描,请使用 improve-codebase-architecture

深层,而非浅层

当一个模块将大量行为隐藏在一个小型接口后面时,它是深层的;当接口几乎和实现一样复杂时,它是浅层的。深度以杠杆效应来衡量——调用者(或测试)每学习一单位接口能执行多少功能。关键在于,深度是接口的属性,而非实现:一个深层模块内部可以由小的、可互换的部件组成,但这些部件从不暴露给调用者。

两个检查完成了大部分工作。删除测试:想象删除这个模块——如果复杂性消失了,它只是一个透传;如果复杂性重新出现在 N 个调用者中,那它就值得存在。一个适配器意味着假设性接缝;两个适配器意味着真实的接缝——在真正有变化跨越它之前,不要切开一个接缝。

接口就是测试面

调用者和测试跨越的是同一个接缝,所以一个放置得当的接口为测试提供了一个持久的目标,而底层的代码可以自由变动。这就是为什么词汇坚持使用接缝(Feathers 的术语——一个你可以在不编辑该处代码的情况下改变行为的地方),而不是被滥用的"边界",以及为什么这里的"接口"指的是调用者必须知道的每一个事实:签名当然是,还包括不变量、顺序、错误模式和性能——而不仅仅是类型层面的表面。

有意独立出来

codebase-design 是深度模块词汇的单一事实来源,作为一个独立的模型主动调用技能拆分出来,以便任何东西都可以调用它。其他技能指向它而不是复述这些词汇:tdd 借用它在编写测试之前放置接缝,improve-codebase-architecture 在重构现有代码时依赖它,to-spec 在编写规格说明之前勾勒接缝和深化机会时使用它的语言。

保持它独立的意义在于,你也可以单独调用它——作为思考模块设计的参考——而无需触发这些技能所要求的更大流程。在一个地方、一次性固定好词汇,每个设计对话都会继承它们。

在整个流程中的位置

codebase-design 是一个随时可调用的独立技能——位于工程技能之下的共享词汇层。它最接近的相邻技能是 domain-modeling,它是针对问题领域而非模块结构的平行词汇技能。当你不确定哪个技能或流程适合时,可以找 ask-matt 帮你导航。

标签:LLMSkillsAI编程