SKILL.md 2.34 KB

name: fe-feature-verify description: 前端功能循环第 4 步。把 FE 的组件测试 + E2E 派发到子会话执行,按模板渲染证据。无证据不声称完成。 user-invocable: false

allowed-tools: Skill Read Agent

所有输出必须使用中文。

fe-feature-verify

把当前 FE 的测试派发到 Agent 子会话执行,按模板把结构化结果渲染成证据。主会话从不直接跑测试,也不自由编写证据。

执行步骤

  1. 从 plan 文件确定本 FE 的测试目标:

    • 单测目标:plan § 二中所有 测试先行类型 = jsdom 的 test_file 列表 → 拼成 vitest/jest 过滤模式
    • E2E 目标:所有 测试先行类型 = e2e 的 test_file 列表 → 拼成 Playwright spec 过滤模式
  2. 派发 Agent 子会话(general-purpose)依次运行两个目标,子会话只返回结构化 JSON(不输出描述文字):

   {
     "unit": {
       "command": "<vitest/jest 命令>",
       "exit_code": <int>,
       "passed": <int>,
       "failed": <int>,
       "failed_list": ["<test>", ...],
       "stdout_excerpt": "<最后 30 行或最相关的失败片段>"
     },
     "e2e": {
       "command": "<playwright 命令>",
       "exit_code": <int>,
       "passed": <int>,
       "failed": <int>,
       "failed_list": ["<spec>", ...],
       "stdout_excerpt": "<最后 30 行或最相关的失败片段>"
     }
   }

命令从 docs/04-技术规范.md § 零 frontend.test_command / frontend.e2e_command 取,缺失则用默认 pnpm test:ci / pnpm e2e:ci

  1. ${CLAUDE_SKILL_DIR}/templates/fe-feature-verify-evidence-template.md 渲染证据并打印到会话。

  2. 任一目标 exit_code != 0failed > 0 → 停止,不进入 review。

  3. 全部通过 → 同一 turn 内立即 Skill(fe-feature-review)(直接调用,不要先输出"已完成 / 接下来 / 请检查 / 等你确认"之类桥接叙述——会被解读为 turn 结束信号、害用户手敲 continue)。

护栏

  • 绝不在主会话直接跑测试,必须通过子会话
  • 绝不自由编写证据正文,必须从模板渲染
  • 不要把原始 stdout 全文塞进主会话(stdout_excerpt ≤ 30 行)

参考

  • ${CLAUDE_SKILL_DIR}/templates/fe-feature-verify-evidence-template.md
  • 上游:fe-feature-tdd
  • 下游:fe-feature-review