SuperAPI AI 工具集

sdlc-apply

编程与开发

查看项目

更新于 10-15 09:57

技能介绍

sdlc-apply 是 acourtiol/ai-sdlc 项目中的一项技能,用于把已被接受的意图(intent)逐步实现、证明其可用,并交由用户接受,最后关闭该意图。它的定位不是自由开发,而是围绕一份已接受的意图文档执行受控的落地流程。

用途

该技能用于“构建已接受意图所描述的内容”,展示其确实工作,并让用户接受。除非被要求,否则不推送也不部署。其前置条件是:必须存在 intent/<slug>/intent.md 且状态为 accepted;对于 tier 为 critical 的意图,接受还需包含其 ## Spec。如果仍有一个会改变架构、安全性或验收方式的选择未定,则向用户提一个问题;否则说明假设并继续。

主要能力与工作约定

  • Lane(工作通道):默认为当前检出,一次只处理一个意图。相互独立的意图(文件不相交、无共享契约或迁移顺序依赖)可以并行,每个在 $(git rev-parse --show-toplevel)/.worktrees/<slug> 下使用独立 worktree,须位于仓库内、不能放在存放项目的文件夹中;若未忽略需加入 .git/info/exclude;根目录只锚定一次,不得嵌套;验证后以 fast-forward 或 rebase 合入主分支。不使用集成分支。worktree 不构成隔离:并发服务需要各自的数据库、compose 项目和端口,通过产品现有的 worktree 设置实现。
  • 子代理:仅在能节省墙钟时间或主上下文大小时,用于只读研究或互不相交的并行工作,且每个目标有界。不要扇形扩散成群体,协调是有成本的。
  • 中断恢复:在重启或中断后,继续前重新阅读 intent.md、git status 和已勾选的步骤。过去的派发不构成工作已运行的证据。
  • 归属:写入前记录 git status --short。他人的脏文件属于他人,绝不要重置、暂存或 stash 它们。
  • YAGNI:优先复用现有代码与模式,其次是已安装依赖或平台能力。只有出现已证明的缺口才添加依赖或抽象。保留验证、错误处理、安全性和可访问性。
  • 不做未请求的范围:不新增用户未要求的界面、必填输入或关卡。若认为必要,停下并呈现权衡。
  • 提交:每个连贯步骤一次提交,并在同一次提交中勾选该步骤的 checkbox。使用 Conventional Commits:type(scope): 祈使式摘要,空行,一句话说明原因。不要只为记录验证而提交。

使用方式

步骤依次为:

  1. 阅读 intent.md,并在其 frontmatter 中记录 base: <HEAD hash>(随第一个步骤一起提交)。如果 ## Steps 为空或含糊,现在就写出步骤:几个连贯的切片,每个带一个 check:。排序时应让风险最高的边界最先被检验。
  2. 对每个步骤:实现、运行其 check、仅在亲眼看到通过后才勾选方框、提交。

证明必须走真实路径,而非替代品:

  • 管道中新增或变更的输入要在其被消费之处(发出的请求或消费者)断言,而不仅是在其被存储之处。
  • 有状态或异步流程:检查失败后、重试后和重新加载后的持久化状态,而不仅是即时响应。
  • Schema 变更:在一次性数据库上从先前已应用的迁移状态证明升级可行,且既有行得到保留。全新数据库通过是不够的。绝不修改已应用的迁移。
  • 确认测试运行器确实发现了你所依赖的测试(组件测试、其他扩展)。
  • 绝不要对生产或共享默认数据库运行检查。在任何会变更数据的操作前确认连接目标。

当最后一步完成时,运行 typecheck、lint 与受影响的测试。对于 UI,在本地运行的应用中走通主路径与一条错误路径,并保留截图或 DOM 片段路径。

填写 intent.md 中的 ## Result:每个 Acceptance 条目一行,带 PASS 或 FAIL 及证据,另加任何未检查的内容。FAIL 或未检查的必需条目必须上报,绝不隐藏。

提交完成的候选,并交给 sdlc-verify(两个 tier 都交)。用新的提交修复其发现的问题,然后重新评审。

向用户呈现 Result 与报告。由用户接受。

关闭(仅在 verify 通过且用户接受后)

顺序是固定的:apply、sdlc-verify(report.md 带 verdict: pass)、用户接受,然后关闭。绝不能在最后一步后直接关闭。关闭是记录接受,不是声称发布。

检查项:步骤已勾选,## Result 没有未解释的 FAIL,report.md 通过,且被评审的文件自评审后未变更(git diff --quiet <reviewed_head> HEAD -- $(git diff --name-only <base> <reviewed_head> -- . ':(exclude)intent');期间落地的其他提交不影响),除非用户放弃评审,或对于无独立路径的 tier 变更,接受“未独立评审”。然后删除该文件夹并在历史中保留故事:rm -rf intent/<slug> && git add -A intent/<slug>,提交 chore(<slug>): close intent,正文中写入 Result 各行(每个 Acceptance 条目一行)及任何未解决的评审发现。意图在其文件夹存在期间即为开启;已完成的意图可用 git log --diff-filter=D --format='%h %s' -- intent/ 列出,并用 git show <commit>^:intent/<slug>/intent.md 阅读。如果项目有知识包且该工作取代了某条持久说明,则通过该流程更新。不要推送。

同类失败发生两次后,停止重复完整关卡,改为窄范围复现失败。如果工作实际上需要不同的结果,与用户一起更新意图,而不是偏离它。

适用场景与限制

适用场景:需要按照已接受意图的验收标准逐项落地开发任务,并要求每一步可验证、可追溯、可交由评审与用户接受的软件交付流程。

限制与边界:必须有已接受的 intent.md 才能开始;不推送、不部署;不添加未请求的范围;不使用集成分支;并行仅限互不相交的意图;不得修改已应用的迁移;不得对生产或共享默认数据库运行检查。关于具体收费、价格、平台支持范围及性能效果,资料未提供。