日志记录: pnpm run dev 会自动记录日志到 logs/dev-logs/
logs/dev-logs/dev-current.log 是当前日志文件(追加模式)cat logs/dev-logs/dev-current.loglogs/README.md 了解更多日志管理说明use pnpm
数据库在同一容器组的另一个容器中,需要运行 psql -h 127.0.0.1 -U postgres 来访问
vitest中,只有console.debug会显示,其他的都屏蔽了
vitest中,用import 来配合 vi.mocked,而不是require
E2E测试:
browser_navigate、browser_click、browser_snapshot 等)探索页面结构browser_console_messages 工具获取控制台日志Failed to resolve import)、组件渲染错误、TypeScript/JavaScript 运行时错误渲染超时,终止请求)、页面 #root 元素为空、模块脚本加载失败browser_take_screenshotpnpm exec playwright test --config=tests/e2e/playwright.config.ts --project=chromium --grep \"测试名称\""pnpm test:e2e:chromiumpnpm test:e2e:chromium <测试文件名> (如: pnpm test:e2e:chromium disability-person-complete)timeout 命令限制总运行时间timeout 30 pnpm test:e2e:chromium (所有测试,30秒后中断)timeout 60 pnpm test:e2e:chromium disability-person-complete (单文件测试,60秒后中断)test-results/**/error-context.mdcd web && pnpm test:e2e:chromiumplaywright.config.ts 中已设置 timeout: 60000 (60秒,单个测试的默认超时)前端是 hono/client hc rpc 的,不是直接fetch
主对话 → Task 工具启动子代理 → 子代理内部调用 Skill 工具执行工作流
// 主对话中的操作
Task({
subagent_type: "general-purpose",
prompt: "调用 Skill 工具执行 bmad:bmm:workflows:dev-story,参数为 10.11"
})
| 工作流 | Skill 名称 | 说明 |
|---|---|---|
| 开发 Story | bmad:bmm:workflows:dev-story |
实现 Story 的任务和子任务 |
| 创建 Story | bmad:bmm:workflows:create-story |
从 Epic 创建下一个 Story |
| 代码审查 | bmad:bmm:workflows:code-review |
AI 代码审查 |
| Sprint 状态 | bmad:bmm:workflows:sprint-status |
查询当前 Sprint 状态 |
| Sprint 规划 | bmad:bmm:workflows:sprint-planning |
Sprint 规划 |
用户: "开发 Story 10.11"
主对话响应:
Task({
subagent_type: "general-purpose",
prompt: "调用 Skill 工具执行 bmad:bmm:workflows:dev-story,参数为 10.11"
})
→ 子代理启动,内部执行 Skill 工具调用 BMM 工作流
→ 工作流在子代理中完成,不消耗主对话 token
_bmad-output/implementation-artifacts/sprint-status.yaml_bmad-output/implementation-artifacts/*.md_bmad-output/planning-artifacts/epics.md当子代理在运行时遇到 API 并发报错(如 "您当前使用该API的并发数过高")时:
_bmad-output/project-context.mdrm -f /mnt/code/184-172-template-6/.git/index.lock && git add <文件> && git commit -m "提交信息"pnpm test --testNamePattern "测试名称" 来运行特定测试查看详细信息 (mini使用Jest,其他包使用Vitest)
-t 或 --testNamePattern--testNamePattern,mini是Jestpnpm test --testNamePattern "测试名称"form.handleSubmit(handleSubmit, (errors) => console.debug('表单验证错误:', errors))Bash 子代理运行 E2E 测试示例:
// 使用 Task 工具 + Bash 子代理
Task({
subagent_type: "Bash",
prompt: "在 web 目录下运行 pnpm exec playwright test --config=tests/e2e/playwright.config.ts --project=chromium --grep \"测试名称\""
})