Builder Smoke Test 是 Mastra 的 Agent Builder 功能分支端到端冒烟测试技能。它在技能自行搭建的隔离项目中对 Agent Builder 功能集进行端到端验证,项目默认位于 ~/mastra-builder-smoke-tests/builder-smoke(可配置)。项目通过 pnpm link: 覆盖与当前工作树链接,因此对 packages/、stores/、auth/、channels/、observability/、browser/ 和 client-sdks/ 下包的修改会在下次 mastra dev 重启时生效。
用途:该技能面向分支 QA,与发布期的 mastra-smoke-test 互补。它使用最小、可预测的项目(而非 kitchen-sink 示例 examples/agent)来检验 Builder EE 表面,包括存储实体、RBAC、注册表、基础设施与渠道。
主要能力与测试范围:提供一份必测清单,共 15 个部分,需用 task_write 跟踪进度,除非 --test 或 --scope 收窄范围,否则应运行所有部分。各部分为:1 Setup(始终)、2 Workspace、3 Reconciliation(仅步骤 1+5,步骤 2/3/4/6 超出冒烟测试范围)、4 Defaults、5 Model Policy、6 Skills、7 Registry、8 Agents、9 Picker Allowlists、10 Favorites(原 stars)、11 Permissions/RBAC、12 Infrastructure、13 Channels、14 UI、15 Auth。技能强调不要跳过分节,除非遇到实际阻塞;“看起来复杂”或“稍后再处理”不是有效理由。
执行流程:确认项目目录(除非已传 --dir 或导出 $BUILDER_SMOKE_TEST_DIR,否则先询问);读取每个要运行部分对应的参考文件;在 --auth on 下,运行其他部分前先提取会话 cookie(WorkOS cookie 为 httpOnly,curl 无法生成、document.cookie 无法读取,脚手架附带由 SMOKE_TEST_COOKIE_LEAK=1 门控的 GET /smoke-test/cookie 调试路由);服务器至少启动一次后再播种非拥有者数据,运行 bash .claude/skills/builder-smoke-test/scripts/seed-multi-user.sh(在第 6、7、10 部分之前),脚本幂等且绕过 RBAC 直接写入 libsql;执行步骤时用 curl 做 API 检查(--auth on 下加 -H "Cookie: $COOKIE"),UI 检查使用 harness 接入的浏览器工具(Stagehand、Chrome MCP 等);在汇总表中记录结果,并用 task_write 标记完成。
使用方式:支持 /builder-smoke-test 交互式完整运行,也支持 --test workspace,skills 等指定部分、--scope rbac|skills|agents|infra|ui|quick 范围快捷方式(可组合,取并集)、--auth on|off|auto、--role owner|admin|member|viewer、--clean、--skip-browser、--dir、--reuse、--openai-key、--workos-api-key/--workos-client-id/--workos-organization-id 等参数。--auth auto 时若无 WORKOS_* 环境变量则自动跳过 Auth 部分并报告 ⏭️ Skipped。多部分运行时应按 1→15 的规范顺序执行:Setup 必须最先(前置检查与就绪探测门控后续部分);Workspace/Reconciliation/Defaults/Model Policy 确立服务器对项目的视图;Skills → Registry → Agents → Pickers → Stars 是构建递进;Permissions/Infrastructure/Channels/UI 是偏只读检查;Auth 最后运行,因为它需要用不同的 .env 重启 mastra dev。
参考文件分三层:必需(每次运行)setup.md,失败即阻塞后续;标准(full、quick、scope 快捷方式默认层)workspace.md、skills.md、agents.md、favorites.md、ui.md(核心),--auth on 时加 auth.md;扩展(仅当 --test/--scope 显式选择或对应代码表面变更时)reconciliation.md、defaults.md、model-policy.md、registry.md、picker-allowlist.md、permissions.md、infrastructure.md、channels.md、ui.md 扩展层。跳过的扩展部分应标记 ⏭️ Skipped(not in scope),不能静默省略。
清理:脚手架是 $PROJECT_DIR 下的自包含一次性目录,所有夹具状态(workspaces、agents、skills、libsql DB、.mastra/workspace 文件)都在其中,冒烟测试不会写入 $PROJECT_DIR 之外的任何内容(除其运行的开发服务器外)。每次运行结束时需停止开发服务器(kill $(lsof -i :4111 -sTCP:LISTEN -t) 或前台 Ctrl-C),并选择处置方式:复用则保留 $PROJECT_DIR,下次可传 --reuse;重置则 rm -rf "$PROJECT_DIR"(或不用 --reuse 重新运行 scaffold.sh)。仅当某部分明确测试 DELETE 行为时才需要逐实体 DELETE。切勿在提交报告后让开发服务器在 :4111 上继续运行。
适用场景:Agent Builder 功能分支的 QA、按部分或范围验证 Builder EE 表面、在无浏览器工具时以 --skip-browser 仅做 API 检查。
限制与前提:工作树需在 agent-builder 功能分支(或任何要 QA 的分支);需 $PATH 中有 pnpm(10.x)和 node(脚手架在项目目录内使用 pnpm install --ignore-workspace);需要 OPENAI_API_KEY(通过 --openai-key、shell 导出或脚手架提示提供);--auth on 需 WorkOS 凭据(--workos-api-key、--workos-client-id、--workos-organization-id,三者需同时提供);UI 检查需 harness 有可用的浏览器 MCP/工具,否则用 --skip-browser 并将 UI 报告为 ⏭️ Skipped(no browser tool)。注意 mastra dev 会通过 dotenv 加载 $PROJECT_DIR/.env 并无条件覆盖 process.env,因此 .env 是运行中服务器的唯一事实来源,AUTH_PROVIDER= pnpm mastra:dev 这类内联覆盖会被静默清除,切换模式应重新运行带或不带 --workos-* 的脚手架。auth off 指 .env 中 AUTH_PROVIDER 缺失或为空;auth on 指 .env 中同时存在 AUTH_PROVIDER=workos 及三个 WorkOS 键。FGA 通过 WorkOS auth provider 接入,无法独立禁用。