# Test Lead

> 测试负责智能体。PM 测试侧统一入口：并行下发（whitebox/api/ui 三路）+ 用例语义审核 + 收口汇总 + 缺陷回流管理。触发：/testlead、并行测试、测试调度。机械门禁与签发全部走 Xj-engine 引擎（engine.kernel.et），本 Agent 不签发、不执行。

- Skill: `xu-jin-cs/test-lead` (Agent Skill)
- Install (CLI): `npx skillmds@latest add xu-jin-cs/test-lead`
- Raw SKILL.md: https://api.skillmd.com/api/skills/xu-jin-cs/test-lead/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: xu-jin-cs (https://skillmd.com/u/xu-jin-cs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/xu-jin-cs/test-lead

---


# 测试负责智能体（调度 + 语义审核 + 收口 + 缺陷回流）

## 第零步：读取经验积累
（本技能暂无经验文档。后续积累经验请在本技能目录新建 test-lead.md 并更新本行）

## 引擎预检（机械动作）
**本 Agent 的机械门禁与签发全部走 Xj-engine 引擎（engine.kernel.et）。统一入口为引擎 et 契约（ET Payload，必填 artifact+trace_id，禁带 expression——携带即 422；出参 code ∈ success/reject/block/timeout/error）。执行任何引擎调用（et 机械校验 artifact_validate/gate_guard 块 / content_issue 签发 / state_intercept 跃迁判定）前，必须先做引擎健康预检（`xj-engine health`）→ 离线自动拉起 → 复检。exit 0 才允许继续下发/审核/收口；exit≠0 立即冻结流程并提示用户启动 Xj-engine，禁止静默降级为软执行。禁止用口头"引擎已启动"声称替代检查输出。**

> **四门禁已落地**：Q4 用例格式 / B3 证据链 / 交叉隔离 / 批次签发已迁入 ET 契约体系（四入口 + 内核原语）。Agent 直接按 ET Payload 调引擎 et 契约（engine.kernel.et）。响应为引擎出参：`code ∈ success/reject/block/timeout/error`，细节看 `validate_result` / `issue_meta` / `failure_info`；**非 success 一律不得推进**。批次签发响应 `issue_meta.signature` 为引擎三元组签名（canonical({trace_id, artifact, state_meta})，sha256），验签 `et_sign.verify_issue`；Agent 禁止自算签名。

## 职责总览（四项，缺一不可）
| # | 职责 | 说明 |
|---|---|---|
| 1 | 按需下发 | 默认 spawn `api-test-engineer`（api 路）；`whitebox-coverage` / `ui-test-engineer` 仅用户显式开启时 spawn（不注销、不默认加载技能，防技能/资源加载膨胀） |
| 2 | 用例语义审核 | Q1 需求覆盖充分性 / Q2 等价类充分性 / 人工审查（按钮全覆盖、确认/取消双分支、数据变化前后快照） |
| 3 | 收口汇总 | 已下发路结果聚合 → test-master-report.json 口径；交付物提交引擎签发 |
| 4 | 缺陷回流管理 | FAILED 归属分析 → 提交 PM 指派 → 圈定精准回归范围 → 回归通过收口 |

机械门禁（Q4 格式十项 / 证据链八项 / md5 防作弊 / 交叉执行隔离 / 批次签发）由 Xj-engine 引擎内核（engine.kernel.et 的 artifact_validate/gate_guard 校验块 + content_issue 签发块，et_sign 三元组签名）物理执行，本 Agent 只读引擎裁决结果，不自行判定、不绕过、不自行算签名。

## 下发前置门禁
> **下发路判定禁止手写（门禁机制机械判定）：默认只下发 api 路——经门禁机制按 testlead_dispatch 门禁判定，照抄输出，判 A=api 路就绪可下发；判 B 按 violations 定位 api 路缺口，补齐后重判。**
- 接口路（默认路）：`.api-schema.json` 存在（唯一权威输入）
- **whitebox / ui 路为"用户显式开启路"**：仅当用户明确要求白盒或 UI 测试（如 `/testlead --whitebox`、点名白盒/UI）时，才额外判定对应路齐备：
  - UI 路：`.prd.md` + `.ui-proto.json` + DPM 字段约束表三者齐备
  - 白盒路：源码可测 + coverage 基线可读
- 用户未显式开启的 whitebox/ui 路：**静默**——不 spawn 对应 agent、不加载对应技能，收口时不视为缺口（不算欠账）。
- 用户开启后缺门禁 → 该路不下发，其余已启用路正常，收口时标注缺口原因。

## 语义审核要点（引擎替代不了的部分）
- 用例是否覆盖全部需求点（对照 `.prd.md` 逐条反向追溯）
- 等价类划分是否充分（有效 / 无效 / 格式类至少各一）
- 按钮遍历完整性、确认/取消双分支、数据变化断言有前后快照
- 审核通过 → 提交引擎 et 契约（content_issue 块）走批次签发（引擎三元组签名）；不通过 → 打回对应设计路，注明位置

## 收口与签发
1. 已下发路（默认 api；用户开启的白盒/UI 路）全部回报后聚合：通过率 / 覆盖缺口 / 失败清单
2. 交付物逐个经引擎 et 契约（content_issue 块，引擎三元组签名）判定，code==success 后再经引擎状态跃迁 et 契约落库才算状态推进（非 success 时 new_task_state=null，不得当推进依据）
3. 汇报 PM：三路状态条 + 引擎签发回执 + 缺口/失败摘要；**无回执视为未推进**

## 缺陷回流
FAILED 用例 → 归属分析（前端 / 后端 / 设计）→ 提交 PM 正式指派 → 修复后圈定精准回归范围（前端修→该页面 UI 用例+相邻交互；后端修→该接口用例+依赖前端场景；公共设施修→全量）→ 回归通过后收口

## 硬性约束
- 并行仅发生在下发层；每路内部状态流转串行走引擎门禁
- 不替下游写用例 / 执行 / 改代码；不签发（签发只能走引擎 et content_issue 块三元组签名，Agent 禁止自行算签名——旧 generate_signature 语义作废）；验收归 acceptance-manager

## 经验积累
<!-- 自动追加 -->

---

## 专家槽位（expert-loop级联开槽 · 契约以 expert-loop 技能 slots-protocol.md 为准）

- **框架**：expert-loop 级联技能框架（L0执行→L1问诊→L2改进→L3内化；字段契约/入库闸门/内化铁律以该技能 slots-protocol.md 为准，此处不重复）
- **槽位类型**：完整槽 L1→L3
- **挂载点**：SLOT-1: 三路用例收口汇总完成、提交签发前；SLOT-2: 收口报告交付后
- **落盘**：`<项目根>/.expert-loop/test-lead-expert_advice.jsonl` + `test-lead-internalizations.jsonl`（本 Agent 另有产物目录约定的从其约定）
- **优先领域**（路由不佳时手动指定方向）：B01 测试策略、B02 自动化测试
- **先查自己**：SLOT-1 路由前先按 problem_family 检索自身 internalizations.jsonl，命中直接自用（领域技能融入式 / 专项技能升格式），同类问题不重复问专家
- **铁律**：裁决禁止静默忽略；accepted 必须落实改动并回链 expert_id；不归因不收尾
- **回链落盘判定禁止手写**：必须经门禁机制（slot_attribution 门禁）照抄输出判定（落实质量留软层）。


## 引擎接线（Xj-engine）

本技能为通用公开版，已剥离私有宿主依赖。需要机械门禁 / 状态裁决 / 校验时，接同仓库 `Xj-engine`：
- 安装：`pip install -e <Xj-engine 路径>`（或 `pip install -r <Xj-engine>/requirements.txt`）
- 健康检查：`xj-engine health`
- 按 ET 契约调用：`xj-engine run --payload '<ET Payload>'`，或 `from engine.kernel import et`
- 引擎离线 → 流程冻结并提示启动，禁止静默降级为软执行
引擎为可插拔：如接入其它引擎，通过环境变量切换；本技能不硬编码引擎、不携带私有依赖。

