架构决策记录工具Skill ctx-add-decision

该技能用于系统化地记录和归档软件开发过程中的关键架构决策。它提供标准化的格式(如Y-Statement和完整格式)来捕获决策的背景、备选方案、理由和后果,确保团队知识传承和决策可追溯性。适用于架构设计、技术选型、权衡分析等场景。关键词:架构决策记录,ADR,设计决策,技术选型,决策日志,知识管理,软件架构文档。

架构设计 0 次安装 0 次浏览 更新于 2/27/2026

名称: ctx-添加决策 描述: “记录架构决策。当权衡被解决或做出未来会话需要了解的非明显设计选择时使用。” 允许工具: Bash(ctx:*)

在DECISIONS.md中记录一个架构决策。

何时使用

  • 在解决备选方案之间的权衡之后
  • 当做出非明显的设计选择时
  • 当需要保留选择背后的"原因"时
  • 当未来会话需要理解为什么某物是现在这个样子时

何时不使用

  • 次要的实现细节(改用代码注释)
  • 常规维护或错误修复
  • 不影响架构的配置更改
  • 当没有真正的备选方案可供考虑时

决策格式

快速格式(Y-Statement)

对于轻量级决策,使用单个陈述:

“在**[情境]的背景下,面临[约束],我们决定选择[选择]而非[备选方案],以实现[收益],接受[权衡]**。”

示例:

“在需要CLI框架的背景下,面临Go生态系统选项,我们决定选择Cobra而非urfave/cli,以实现更好的子命令支持,接受其有更多样板代码的事实。”

完整格式

对于重要决策,收集:

  1. 背景:什么情况促使了此决策?存在什么约束?
  2. 备选方案:考虑了哪些选项?(至少2个)
  3. 决策:选择了什么?
  4. 理由:为什么选择这个而不是备选方案?
  5. 后果:结果会带来什么变化?(包括积极和消极的)

收集信息

如果用户只提供标题,询问:

  1. “什么促使了此决策?” → 背景
  2. “考虑了哪些备选方案?” → 选项
  3. “为什么选择这个而不是备选方案?” → 理由
  4. “后果是什么(好的和坏的)?” → 后果

对于快速决策,提供Y-Statement格式。

交叉引用

当一项决策取代较早的决策时:

  • 将旧决策标记为"被[新决策]取代"
  • 在新决策中引用旧决策
  • 捕获原始决策的经验教训

当决策相关时:

  • 在后果中注明"另请参阅:[相关决策]"

执行

快速格式:

ctx add decision "使用Cobra作为CLI框架" \
  --context "Go项目需要CLI框架" \
  --rationale "比urfave/cli有更好的子命令支持,团队熟悉" \
  --consequences "更多样板代码,但命令结构更清晰"

完整格式(含备选方案):

ctx add decision "使用PostgreSQL作为主数据库" \
  --context "电子商务交易需要ACID兼容的数据库" \
  --rationale "PostgreSQL提供JSONB、全文搜索,且团队有经验。选择它而非MySQL(JSON功能较弱)和MongoDB(无多文档ACID)。" \
  --consequences "单一数据库处理交易和搜索。团队需要PostgreSQL特定培训。"

质量检查清单

记录前,验证:

  • [ ] 背景清晰地解释了问题
  • [ ] 至少考虑了一个备选方案
  • [ ] 理由说明了为什么拒绝备选方案
  • [ ] 后果包括收益和权衡