mcpField
K
keeping-one-source-of-truth

keeping-one-source-of-truth

github.com/riekelt开发618.8k 次安装7 周前更新
代码仓库

关于 keeping-one-source-of-truth

面向工程开发的技能,要求每项系统事实只保存在一个权威位置。它指导开发者按需推导数据、消除重复,并明确呈现冲突,而非默默选取某个值。

主要功能

  1. 01扩展已有数据所有者
  2. 02推导值而非复制存储
  3. 03修改代码时合并重复项
  4. 04缺少条目时明确报错
  5. 05区分生成文件与手动编辑文件
  6. 06使用类型化词汇并报告冲突

适用场景

  1. 01规划新增系统数据的归属
  2. 02移除配置的硬编码副本
  3. 03解决多个数据源之间的值冲突

安装

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

$npx skills add https://github.com/riekelt/principal-engineer --skill keeping-one-source-of-truth

安装后在 Claude Code 中输入/keeping-one-source-of-truth确认已加载。

详细介绍

保持唯一事实来源

必需背景:principal-engineering 技能。

概述

系统中的每项事实都只存在于一个地方,系统的其他部分都从那里读取。这一原则优先于便利性。

原则

  1. **添加数据前,先找出已有的归属方。**扩展已有归属方;不要另起炉灶。
  2. **推导,而非存储。**如果平台或现有来源能在读取时给出答案,就从那里读取;不要把答案复制到第二个来源,否则副本可能过时。
  3. **顺手整合发现的重复项。**如果你接触的代码硬编码了文件中已有的信息(或反过来),就把两者整合起来,而不是留下第三种变体。
  4. 缺少条目时必须明确报错(参见 handling-failures):只有在缺少条目会报错,而不是静默使用默认值时,唯一来源才具有权威性。
  5. **标明内容是生成的还是手动编辑的,绝不编辑生成内容。**每项产物都要注明这一点。
  6. **词汇必须有类型,而不是随意使用字符串。**代码分支所依据的标识符、种类、状态和名称,都应是常量、枚举、密封类型或注册表条目;同一个自由字符串拼写两次,就形成了两个事实来源,中间还可能出现拼写错误。
  7. **两个来源不一致时,要明确指出。**揭示矛盾是修复的第一步。彻底修复要确定哪个值实际生效,将其归并为唯一来源,并删除另一个。绝不能静默采用其中任意一个;那会把矛盾掩盖起来,最终只留下你恰好先读取的那个答案。在已声明的关键路径上,出现实际的不一致时,应直接通知负责人,而不能只创建跟踪事项;无人查看的工单无法揭示问题。

边界

  • 缓存和读取模型属于合理的派生副本,前提是它们由自动流程生成,且其过时程度有界并可观测。此规则禁止的是需要人工保持同步的副本。
  • 测试固件可以有意冻结现实的副本;“固件”这个词就是说明。
  • 文档也遵循同一规则(索引负责引导,不负责决策);安装了技术写作者插件的项目,可通过该插件的 technical-writing 技能处理这部分。

常见错误

  • “暂时”复制阈值、URL 或映射。“临时”副本的存续时间,往往和它上方的 TODO 一样长。
  • 在 thing 旁边创建 thing-v2,而不是直接修改原有内容。
  • 在代码中设置一个默认值,覆盖配置文件中的值。有人修改配置却发现毫无变化,原因就在这里。
  • 两个服务中有两个枚举,拼写着相同的状态。其中一个新增状态的那一天,它们之间的边界就会变成一个静默过滤器。

评论

支持 Markdown