这是一个面向编码工作的反过度工程技能,来源为 mikkelkrogsholm/dev-skills。核心用途是在制定计划前和实现过程中约束方案范围,构建满足当前需求、现在即可验证的最小清晰解法,将额外的结构、抽象与依赖视为必须证明其价值的成本。若工作涉及委派、目标循环、看板、DAG 或运行时限,资料建议在可用时同时加载 keep-agent-workflows-simple。
主要能力与使用方式:规划前先写简短任务契约,包含结果(一个可观察结果)、非目标(必须保持不变的相邻工作)、写入范围(最小文件或子系统)、验收(证明成功的命令、测试、产物或观察)以及停止条件(验收通过即完成;当所需改动超出范围,或涉及未解决的产品、架构、安全、依赖、生产或不可逆决策时停下并询问)。若仓库决定确切范围,应先检查。
优先级顺序为:保持正确性、安全性、兼容性与显式约束;做能解决已证明问题的最小改动;保持控制流与数据流易于本地追踪;已有模式适用时复用;仅当现有证据充分时才新增抽象;不得以简单为由省略必需的校验、错误处理、安全、迁移、无障碍或测试。实现阶梯依次为:移除当前不需要的工作、复用仓库既有实现或约定、使用语言/框架/平台原生能力、使用已安装依赖、添加最小的直接代码、仅在具备当下具体理由时新增依赖或抽象。
原则方面:KISS 与 YAGNI,偏好直接函数、显式数据、静态依赖与常规框架模式;DRY 视为知识的单一权威来源,允许保留提升独立性与清晰度的小范围本地重复,仅当重复代表同一规则且已造成漂移或维护成本时才提取;SOLID 中强调单一职责,只有在存在真实可替换性时才引入里氏替换相关层级,仅针对实际消费者拆分接口,依赖倒置只用于真实外部或易变边界,不用开闭原则预测未来变体。
抽象与依赖预算:新增接口、基类、工厂、包装器、服务、管理器、注册表、事件总线、依赖注入层、泛型、配置项、文件或包时,至少需满足当前需求明确需要、多个现有消费者需要同一边界、隔离真实外部或易变依赖、移除的复杂度多于引入的复杂度,或既有仓库/框架约定要求之一,并说明当下压力;不得仅以“可能”“以后”“面向未来”或“为可扩展性”为由。
面向智能体可读性:偏好内聚的垂直切片而非新增水平层,使用易于搜索的领域命名,偏好显式导入、直接调用、组合与类型化边界,避免魔法分发、深层继承、桶文件间接引用或隐藏全局状态;按仓库约定保持测试贴近行为,使时间、随机性、网络、环境等副作用可确定或可注入;当框架约定与通用偏好冲突时遵循仓库约定。
执行流程:检查最近的代码、测试与约定;确认任务契约并选择最小编辑面;实现一条直接路径;添加或更新最窄的有意义验证;运行指定的验收检查;仅针对结果、非目标与写入范围评审改动;移除未使用的灵活性、推测性分支、冗余注释、意外依赖、无关改动与无边界价值的一次性抽象;简化后重新验证。停止过度工程的信号包括:新增文件或概念多于行为所需、简单操作需要多次跳转、设计只服务于假设的消费者或变体、新抽象只有一个实现且无边界价值、任务不必要地扩展到相邻系统、验证反复失败而假设/输入/环境/工具未变,或解释架构比解释行为还费时。
报告结果时先说明已完成的行为与验证,提及关键简化决策及有正当理由的新依赖或抽象,除非被要求,不宣传假设性的可扩展性或可选未来阶段。关于这些长期规则的来源与日期化证据,仅在评审或演进该技能时阅读 references/research-basis.md。
限制:资料未提供收费、价格、平台、适用语言或具体安装命令等信息,也未给出可量化效果数据。