不太懂 openspec ,最近了解了一下。自己在某个仓库使用 openspec 写了一次需求,也观察了一下 openspec 自身是怎么使用的,发现 openspec 的 spec 似乎就是在用自然语言描述代码逻辑行为的各种 case 。以 openspec 仓库自身的 spec 为例,发现 spec.md 文件本身是在描述代码的行为逻辑。比如 openspec 的某个 spec.md 对应行为就是这个文件: https://github.com/Fission-AI/OpenSpec/blob/8332a098118a6584a7104ccfe8e46669a1c24b7d/src/utils/change-utils.ts#L112 ,spec.md 本身贴在末尾
我的问题是:
有没有实践比较多的朋友能给一些输入,分享一些经验,或者思考?
附上的 spec.md
提供用于以编程方式创建和校验 OpenSpec change 目录的工具函数。
系统 必须( SHALL ) 提供一个函数,用于以编程方式创建新的 change 目录。
createChange(projectRoot, 'add-auth')openspec/changes/add-auth/ 目录createChange(projectRoot, 'add-auth'),且 openspec/changes/add-auth/ 已存在createChange(projectRoot, 'add-auth'),且 openspec/changes/ 不存在createChange(projectRoot, 'Add Auth')系统 必须( SHALL ) 校验 change 名称符合 kebab-case 规范。
add-user-auth 的名称{ valid: true }add-feature-2 的名称{ valid: true }refactor 的名称{ valid: true }Add-Auth 的名称{ valid: false, error: "..." }add auth 的名称{ valid: false, error: "..." }add_auth 的名称{ valid: false, error: "..." }add-auth! 的名称{ valid: false, error: "..." }-add-auth 的名称{ valid: false, error: "..." }add-auth- 的名称{ valid: false, error: "..." }add--auth 的名称{ valid: false, error: "..." }这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.