要验证 SuperPowers 的 subagent-driven-development (SDD) 技能是否按预期工作,最直接的方法是运行其集成测试。仓库在 tests/subagent-driven-dev/ 目录下提供了两个开箱即用的样例:go-fractals(一个命令行分形生成器)和 svelte-todo(一个带持久化的待办事项应用)。通过执行 run-test.sh 脚本,你可以一键完成项目脚手架搭建、调用 Claude Code 执行实施计划,并生成带有时间戳的日志,从而系统性地观察 AI 代理如何分解并完成一个多任务开发计划。

使用 SuperPowers 自带样例测试 subagent-driven-development:Go Fractals 与 Svelte Todo

SuperPowers 的核心价值之一是通过结构化的技能(skills)来规范 AI 编码代理的行为。其中,subagent-driven-development 技能定义了代理应如何将一个大型实施计划拆解为独立任务,并为每个任务启动子代理来执行,最后进行两阶段审查。为了确保这个复杂流程的可靠性,仓库内建了完整的集成测试。本文将指导你如何使用这些现成样例进行实际测试。

测试框架与运行脚本

所有测试由统一的入口脚本 tests/subagent-driven-dev/run-test.sh 管理。其工作原理清晰明了:

  1. 接受参数:脚本需要一个测试名称作为第一个参数(例如 go-fractalssvelte-todo)。你可以通过 --plugin-dir 指定 Superpowers 技能的路径,默认会使用脚本所在的仓库根目录。
  2. 创建带时间戳的输出目录:测试结果不会污染项目源文件,而是在 /tmp/superpowers-tests/<timestamp>/subagent-driven-development/<test-name> 下创建独立目录。
  3. 执行项目脚手架:调用对应测试目录下的 scaffold.sh,在输出目录中初始化一个干净的项目。
  4. 构造并执行提示:生成一个固定的 Claude Code 提示,该提示会命令代理使用 superpowers:subagent-driven-development 技能来执行位于脚手架项目根目录下的 plan.md 文件。
  5. 记录流式输出:使用 claude CLI 的 --output-format stream-json 参数运行,将详细的执行日志保存为 JSON 文件,便于后续分析 token 用量和执行过程。

运行命令示例:

# 进入 SuperPowers 仓库的测试目录
cd tests/subagent-driven-dev

# 运行 Go Fractals 样例测试
./run-test.sh go-fractals

# 或运行 Svelte Todo 样例测试(指定自定义插件路径)
./run-test.sh svelte-todo --plugin-dir /your/superpowers/path

脚本执行完毕后,会提示你项目目录、日志文件位置以及后续的验证命令(例如 go test ./...npx playwright test)。

样例一:Go Fractals CLI

这个样例模拟了一个从零开始构建命令行工具的过程,重点验证 SDD 在结构化后端项目中的表现。

设计与计划要点:

  • 目标:构建一个生成 ASCII 分形艺术的 CLI 工具,支持 sierpinskimandelbrot 两个子命令。
  • 技术栈:Go 语言,使用 Cobra 库处理命令行界面。
  • 任务分解:实施计划 (plan.md) 将整个项目清晰地拆分为 10 个任务,从项目初始化 (Task 1: Project Setup) 到编写文档 (Task 10: README)。每个任务都包含明确的 Do(执行)Verify(验证) 步骤。
  • 验证关键点:计划中嵌入了具体的验证命令,例如:
    • go build ./cmd/fractals 用于验证编译。
    • ./fractals --help 用于验证帮助文本。
    • go test ./internal/sierpinski/...go test ./internal/mandelbrot/... 用于验证算法单元测试。
    • 最终的集成验证要求 go test ./... 全部通过。

脚手架 (scaffold.sh) 的作用: 在运行主测试前,scaffold.sh 会:

  1. 初始化一个全新的 Git 仓库 (git init)。
  2. 复制设计文档 (design.md) 和实施计划 (plan.md) 到项目根目录。
  3. 创建 .claude/settings.local.json 配置文件,预先授权代理可以执行 go:*git:* 等命令。
  4. 完成一次初始提交 (git add . && git commit),确保代理在一个干净的、版本控制就绪的环境中开始工作。

这意味着 SDD 技能的执行代理拿到的是一个结构清晰、拥有完整设计输入和可执行计划的项目起点,这与其在实际工作流中的前置步骤(如头脑风暴编写计划)是一致的。

样例二:Svelte Todo List

这个前端应用样例则侧重于测试 SDD 技能处理包含状态管理、组件化和端到端测试的现代 Web 开发任务的能力。

设计与计划要点:

  • 目标:构建一个功能完整的待办事项应用,支持增删改查、过滤和本地持久化。
  • 组件结构:设计文档 (design.md) 明确定义了 App.svelteTodoInput.svelteTodoList.svelteTodoItem.svelteFilterBar.svelte 等组件,以及 store.tsstorage.ts 两个逻辑模块。
  • 数据模型:使用 TypeScript 接口 Todo 和类型 Filter 约束状态。
  • 任务分解:计划 (plan.md) 包含 12 个任务,覆盖了从脚手架创建到 Playwright 端到端测试的全过程。关键路径包括:
    • Task 2 & 3: 先建立状态管理 (store.ts) 和持久化层 (storage.ts),遵循关注点分离。
    • Task 4-7: 逐一构建独立的 UI 组件及其单元测试。
    • Task 8: 在 App.svelte 中集成所有组件。
    • Task 11: 编写 Playwright 测试,覆盖用户主要操作流程。
  • 验证关键点:除了 npm run buildnpm run test(单元测试),计划明确要求执行 npx playwright test 来运行端到端测试,确保应用在浏览器中的行为符合预期。

脚手架 (scaffold.sh) 的差异: 与 Go 样例类似,Svelte 的 scaffold.sh 同样执行 git init、复制设计计划、初始化 .claude/settings.local.json 并创建初始提交。其权限配置针对前端环境,预先允许了 npm:*npx:* 命令。

通过测试观察 SDD 工作流

运行测试后,真正的验证在于审视生成的 stream-json 日志文件。你可以从中看到 subagent-driven-development 技能的实际行为模式:

  1. 计划解析:代理首先读取并理解 plan.md 中的任务列表。
  2. 任务顺序执行:代理会按顺序(或根据依赖关系)执行任务。每个任务开始时,它可能会创建一个子代理上下文。
  3. 遵循 Do/Verify 步骤:对于每个任务,你会看到代理先执行计划中 “Do” 部分指定的创建文件、编写代码等操作。
  4. 运行验证命令:接着,代理会自动运行 “Verify” 部分的命令(如 go test, npm run build, npx playwright test)来验证任务是否成功完成。这是测试驱动开发精神在计划执行中的体现。
  5. 错误处理与调试:如果验证失败,日志将记录代理如何根据系统化调试技能尝试定位并修复问题。
  6. 任务完成与进度报告:成功完成一个任务后,代理会标记它并继续下一个,整个过程在日志中留下了完整的轨迹。

通过对比两个样例的日志,你可以评估 SDD 技能在不同类型项目(命令行 vs. 前端、无状态算法 vs. 有状态 UI)中的执行稳健性。日志中的 usage 字段(可通过 jq 提取)还能提供 token 消耗的量化数据。

总结

SuperPowers 自带的 go-fractalssvelte-todo 测试样例,是理解、验证和演示 subagent-driven-development 技能的最佳实践案例。它们提供了一个可控的、可重复的环境,让你能够观察 AI 代理如何将一个详细的实施计划逐步转化为通过测试的代码。无论是作为技能开发者的回归测试,还是作为学习者的工作流示例,运行这些测试都是掌握 SuperPowers SDD 流程不可或缺的一环。要深入了解该技能的内部机制,请参阅《subagent-driven-development 详解》

FAQ

Q: 运行测试时提示找不到 claude 命令怎么办? A: 你需要先安装 Claude Code CLI。请确保已按照官方文档完成安装,并将 claude 可执行文件添加到系统的 PATH 环境变量中。

Q: 测试中的 --dangerously-skip-permissions 参数安全吗? A: 这是一个专门用于自动化测试的参数。在测试脚手架环境中(由 scaffold.sh 创建并已通过 .claude/settings.local.json 进行了受限授权),该参数允许代理无需交互确认即可执行必要的文件操作和命令,从而完成完整的测试流程。切勿在生产开发或非受控环境中使用此参数。