写作与公文
用规范驱动开发创建结构化变更提案(含规格增量)
在规划新功能、破坏性变更或架构更新时,生成包含 proposal.md、tasks.md 和 spec-delta.md 的完整变更提案。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用规范驱动开发创建结构化变更提案(含规格通用
解决思路
- 先审查现有规格:用 `find spec/specs -name "spec.md" -type f` 列出所有现有规格,用 `find spec/changes -maxdepth 1 -type d -not -path "*/archive"` 列出活跃变更以避免冲突,用 `grep -r "### Requirement:" spec/specs/` 搜索相关需求。
- 生成唯一变更 ID:采用 `add-<feature>`、`fix-<issue>`、`update-<component>`、`remove-<feature>` 格式(如 add-user-authentication),并用 `ls spec/changes/ | grep -i "<proposed-id>"` 检查冲突。
- 搭建目录结构:执行 `mkdir -p spec/changes/{change-id}/specs/{capability-name}`(例如 `mkdir -p spec/changes/add-user-auth/specs/authentication`)。
- 起草 proposal.md:以 templates/proposal.md 为起点,必须包含 Why(驱动变更的问题或机会)、What Changes(修改项列表)、Impact(受影响的规格、代码、API、用户)三部分,语气清晰、简洁、以决策为中心。
- 创建 tasks.md 实现清单:以 templates/tasks.md 为模板,用编号列表列出具体可测试的任务,每个任务可独立完成,包含测试与验证任务,按依赖排序(如数据库先于 API),通常 5-15 项,超出则拆分。
- 用 EARS 格式编写 spec deltas:使用 `## ADDED Requirements`(新增能力)、`## MODIFIED Requirements`(变更行为,需含完整更新后文本)、`## REMOVED Requirements`(废弃功能);每条需求用 `### Requirement: <name>` 格式,场景用 `#### Scenario:`(4 个井号)格式,包含 WHEN/THEN/AND 与 GIVEN/WHEN/THEN 结构。
- 验证提案结构:检查目录存在、proposal.md 含 Why/What/Impact、tasks.md 有 5-15 项编号任务、spec deltas 有 ADDED/MODIFIED/REMOVED 操作头、需求为 `### Requirement: <name>` 格式、场景为 `#### Scenario:` 格式;并用 `grep -c "## ADDED\|MODIFIED\|REMOVED"`、`grep -n "#### Scenario:"`、`grep -n "### Requirement:"` 做自动化检查。
- 提交用户审批:输出提案摘要,包含 Change ID、Scope、创建的文件列表(proposal.md、tasks.md、spec-delta.md)以及下一步操作(如 "openspec implement" 或 "apply the change")。
- 按模式处理不同提案:新功能用 ADDED Requirements 并包含正向场景与错误处理;破坏性变更用 MODIFIED Requirements 并含完整更新文本、在 proposal.md 说明变更原因、在 tasks.md 加入迁移任务;废弃功能用 REMOVED Requirements 并说明理由、加入清理任务、在 Impact 中考虑用户迁移。
- 避免反模式:不要跳过验证检查、不要在未审查现有规格时创建提案、不要用模糊任务描述、不要写无场景的需求、不要遗漏错误处理场景、不要在一个提案中混合多个不相关变更;要检查冲突、写具体可测试任务、包含正负场景、一个提案只关注一件事、提交前验证结构。
- 按需查阅参考材料:EARS 格式细节见 reference/EARS_FORMAT.md,验证模式见 reference/VALIDATION_PATTERNS.md,完整示例见 reference/EXAMPLES.md,模板见 templates/ 目录。
适用边界 · 注意事项
- 尚未审查现有规格和活跃变更时,不要直接创建提案,以免冲突或重复。
- 不要在一个提案中混合多个不相关的变更,应保持一个提案只关注一件事。
- 不要跳过结构验证(grep 检查)就直接提交给用户审批。