codebase-design
设计深层模块的共享词汇。适用于用户想要设计或改进模块接口、寻找深化机会、决定接缝位置、使代码更可测试或对 AI 更可导航,或其他技能需要深层模块词汇的场景。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
设计深层模块的共享词汇。适用于用户想要设计或改进模块接口、寻找深化机会、决定接缝位置、使代码更可测试或对 AI 更可导航,或其他技能需要深层模块词汇的场景。
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Manage git submodules for the learning-open-code mono-repo. Use when the user wants to: (1) Add a new git submodule — auto-detect or specify the category (open-ai-skills/open-sdd/open-ai-agent/open-ai-desktop/open-knowledge/open-productivity/open-java/open-trading/open-data), record the tracking branch in .gitmodules, clone the repo, and update README.md index. (2) Sync all existing submodules to their configured branches (git fetch + checkout branch + pull). (3) Update the root README.md with an up-to-date index of all synced projects grouped by category. (4) Initialize submodules after git clone — when open-*/ directories are empty or git submodule status returns nothing, guide through the full SOP (git submodule update --init --recursive [--remote]). Trigger keywords: submodule, git submodule, 子模块, add submodule, sync submodule, update submodule, submodule branch, README index, 更新索引, clone, init, 初始化子模块, submodule init, 拉取子模块.
对开源项目进行穷尽式教学文档生成——从宏观架构到微观实现的五层分级讲解,使用 Goal Loop 算法自主驱动完整代码覆盖。所有具体教学内容生成必须激活 `.agents/skills/teach/SKILL.md`。触发条件:用户要求"完整学习某个项目"、"生成项目架构文档"、"从入口到落地讲清楚每个功能"、"代码考古"、"源码分析"、或指定一个项目目录/仓库要求全面教学。
使用并行子 agent 为模块生成多个截然不同的接口设计。当用户想要设计 API、探索接口选项、比较模块形态,或提到 "设计两次" 时使用。
交互式 QA 会话,用户以对话方式报告 bug 或问题,agent 将其录入 GitHub Issue。在后台探索代码库以获取上下文和领域语言。当用户想要报告 bug、做 QA、以对话方式录入 issue,或提及 "QA session" 时使用。
通过用户访谈创建包含微小提交的详细重构计划,并将其录入 GitHub Issue。当用户想要规划重构、创建重构 RFC,或将重构分解为安全的渐进步骤时使用。
从当前对话中提取 DDD 风格的通用语言词汇表,标记歧义并提出规范术语。保存到 UBIQUITOUS_LANGUAGE.md。当用户想要定义领域术语、构建词汇表、固化术语、创建通用语言,或提到 "领域模型" 或 "DDD" 时使用。
| name | codebase-design |
| description | 设计深层模块的共享词汇。适用于用户想要设计或改进模块接口、寻找深化机会、决定接缝位置、使代码更可测试或对 AI 更可导航,或其他技能需要深层模块词汇的场景。 |
设计深层模块:大量行为隐藏在小型接口之后,放置在清晰的接缝处,通过该接口可测试。在任何设计或重构代码的地方使用这套语言和原则。目标是为调用者提供杠杆,为维护者提供局部性,为所有人提供可测试性。
严格使用这些术语——不要替换为"组件"、"服务"、"API"或"边界"。一致的语言是全部要点。
模块——任何有接口和实现的东西。刻意与规模无关:一个函数、类、包或跨层切片。避免:单元、组件、服务。
接口——调用者正确使用模块必须知道的一切:类型签名,还有不变量、排序约束、错误模式、所需配置和性能特征。避免:API、签名(太窄——它们仅指向类型层面的表面)。
实现——模块内部的内容,其代码体。区别于适配器:一个东西可以是一个小适配器带大实现(一个 Postgres 仓库)或一个大适配器带小实现(一个内存假对象)。当接缝是主题时用"适配器";否则用"实现"。
深度——接口处的杠杆:调用者(或测试)每学习单位接口能运用的行为量。一个模块是深的,当大量行为隐藏在小型接口之后;是浅的,当接口几乎和实现一样复杂。
接缝 (Michael Feathers)——一个可以在不编辑该处的情况下改变行为的地方;模块接口所在的位置。接缝放在哪里是其自身的设计决策,区别于接缝后面是什么。避免:边界(被 DDD 的有界上下文过载)。
适配器——在接缝处满足接口的具体事物。描述角色(它填补哪个槽位),而非实质(里面是什么)。
杠杆——调用者从深度中获得的东西:每学习单位接口获得更多能力。一个实现付出,在 N 个调用点和 M 个测试中获得回报。
局部性——维护者从深度中获得的东西:变更、bug、知识和验证集中在一处,而不是分散在调用者中。一处修复,处处修复。
深层模块 = 小接口 + 大量实现:
┌─────────────────────┐
│ 小型接口 │ ← 少数方法,简单参数
├─────────────────────┤
│ │
│ 深层实现 │ ← 复杂逻辑隐藏
│ │
└─────────────────────┘
浅层模块 = 大接口 + 少量实现(应避免):
┌─────────────────────────────────┐
│ 大型接口 │ ← 许多方法,复杂参数
├─────────────────────────────────┤
│ 薄实现 │ ← 只是传递
└─────────────────────────────────┘
设计接口时,问:
好的接口使测试变得自然:
接受依赖,而非创建依赖。
// 可测试
function processOrder(order, paymentGateway) {}
// 难以测试
function processOrder(order) {
const gateway = new StripeGateway();
}
返回结果,而非产生副作用。
// 可测试
function calculateDiscount(cart): Discount {}
// 难以测试
function applyDiscount(cart): void {
cart.total -= discount;
}
小表面积。 更少的方法 = 需要更少的测试。更少的参数 = 更简单的测试设置。
interface 关键字或类的公共方法:太窄——这里的接口包括调用者必须知道的每个事实。