关于 ln-404-test-executor
ln-404-test-executor 用于执行单个 Story 测试任务,从 Todo 推进至 To Review。它聚焦业务行为、基于风险的覆盖和严格断言,并将更改留待评审,不会提交。
主要功能
- 01执行一个标记为 tests 的任务
- 02检查优先级与覆盖约束
- 03编写测试并运行
- 04更新任务状态与结果
- 05保留未提交更改
适用场景
- 01验证 Story 中的业务流程
- 02添加或更新计划中的测试
- 03运行测试并分析新出现的失败
- 04将测试结果交给评审者
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-404-test-executor安装后在 Claude Code 中输入/ln-404-test-executor确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/agent_skill_roots_contract.mdaudit_scoring.mdaudit_summary_contract.mdaudit_worker_core_contract.mdci_tool_detection.mdcode_efficiency_criterion.mdcoordinator_summary_contract.mdenvironment_state_contract.mdepistemic_protocol.mdgoal_articulation_gate.mdinput_resolution_pattern.mdmcp_tool_preferences.mdprovider_file.mdprovider_github.mdprovider_linear.mdresearch_tool_fallback.mdreferences/scripts/coordinator-runtime/lib/artifacts.mjscli-helpers.mjscore.mjsloop-health.mjsruntime-constants.mjsschemas.mjsvalidate.mjsworker-guards.mjsworker-runtime.mjsreferences/scripts/planning-worker-runtime/cli.mjsreferences/scripts/planning-worker-runtime/lib/guards.mjsphases.mjsstore.mjsreferences/scripts/task-plan-worker-runtime/cli.mjs详细介绍
**路径:**文件路径(
references/、../ln-*)均相对于此技能目录。
测试任务执行器
**类型:**L3 Worker
通过实现和执行,将单个 Story 最终测试任务(标签为“tests”)推进至待审核状态。
用途与范围
- 仅处理标记为“tests”的任务;其他任务交由 ln-401 处理。
- 遵循 11 节测试任务计划(E2E/集成/单元测试、基础设施/文档/清理)。
- 执行基于风险的约束:覆盖优先级 ≥15 的场景;每项测试均须满足有用性标准;不得进行框架/数据库/库/性能测试。
- 仅更新此任务的跟踪器/看板:待办 → 进行中 → 待审核。
**Hex-line 加速(如可用):**读取测试目标前,先使用 outline(file_path)。使用范围较窄的 inspect_path(path=<relevant test dir>) 了解测试结构;如果确实需要完整盘点 tests/,请将 max_entries=0 作为明确选择,而不要假定默认模式上限会显示所有内容。
先使用 grep_search(output_mode="summary") 查找测试/辅助程序/夹具;只有在后续编辑需要规范代码块时,才升级为 output_mode="content", edit_ready=true;仅在明确需要覆盖限制时使用 allow_large_output=true。对测试/代码/配置文件,主要使用 read_file() 和 edit_file()。常规检查时,让 read_file() 保持在发现模式;对于需要遵循修订/校验和协议的编辑,先使用 read_file(edit_ready=true, verbosity="full")。交接前使用 verify() 和 changes()。仅当 hex-line 不可用时,才使用内置 Read/Edit 作为后备方案。
输入
| 输入 | 必需 | 来源 | 描述 |
|---|---|---|---|
taskId | 是 | args、父级 Story、看板、用户 | 要执行的测试任务 |
**解析:**任务解析链。 **状态筛选:**待办(标签:tests)
任务存储模式
**必须读取:**加载 references/environment_state_contract.md、references/storage_mode_detection.md、references/tracker_provider_contract.md 和 references/input_resolution_pattern.md
**必须读取:**加载 references/ci_tool_detection.md——测试命令执行所需的紧凑输出标志、pipefail,以及截断前先规范化的策略。
提取:task_provider = 任务管理 → 提供方(linear | github | file)。此技能中的操作与提供方无关——规范操作集请参见 references/tracker_provider_contract.md,传输绑定请参见 provider_*.md。
此技能使用的跟踪器操作:getTask、getStory、updateStatus(待办 → 进行中 → 待审核)、addComment(测试结果)。各提供方的传输方式见 references/provider_file.md, references/provider_github.md, references/provider_linear.md。
**必须读取:**加载 references/mcp_tool_preferences.md——只要 hex-line MCP 可用,代码文件就始终使用它。除非 hex-line 停止运行,否则不得回退到标准 Read/Edit。
工作流(简洁版)
- 解析 taskId: 按指南运行任务解析链(状态筛选器:[Todo,标签:tests])。
- 加载任务: 通过已配置的跟踪器提供方(
getTask)获取完整的测试任务描述;阅读关联的指南、手册、ADR 和研究资料;查看父级 Story(getStory)及提供的手动测试结果。 2b) 目标门槛: 必须阅读: 加载references/goal_articulation_gate.md— 陈述这些测试的真实目标(必须验证哪种业务行为,而不是“编写测试”)。目标不是:测试基础设施或框架行为,而非业务逻辑。隐藏约束:哪些现有测试可能因实现变更而失败。 - 阅读环境文档: 阅读
docs/project/infrastructure.md— 获取服务器 IP、端口和服务端点。阅读docs/project/runbook.md— 了解测试环境设置、Docker 命令和测试执行的前置条件。使用 runbook 中的准确命令。 - 验证计划: 检查优先级 ≥15 的覆盖范围和实用性标准;确保重点放在业务流程上(不只测试基础设施)。
- 开始工作: 通过已配置的跟踪器提供方(
updateStatus)将任务设为 In Progress;在看板中移动任务。 - 实现并运行: 必须阅读: 加载
references/code_efficiency_criterion.md— 按计划编写或更新测试;复用现有 fixture 和辅助函数;运行测试;修复已有测试中的失败;按需更新基础设施和文档部分。交接前,完成 3 项效率自检(尤其是:复用 fixture,而不是重复设置)。 - 完成: 确保数量和优先级仍在限制范围内;将任务设为 To Review;在看板中移动任务;添加评论,总结覆盖范围、运行的命令及任何偏差。
关键规则
- 仅处理单个任务;不得批量更新。
- 不要标记为 Done;由审核者批准。任务最终必须处于 To Review。
- 与任务使用的语言(EN/RU)保持一致。
- 不得进行框架、库、数据库、性能或负载测试;重点验证业务逻辑正确性(而非基础设施吞吐量)。
- 遵守限制和优先级;若违反,停止并汇报发现。
- 不要提交。 保留所有未提交的更改 — 由审核者审核并提交。
运行时摘要制品
必须阅读: 加载 references/coordinator_summary_contract.md、references/worker_runtime_contract.md、references/task_worker_runtime_contract.md
共享约定:
- 输出
summary_kind=task-status - 独立模式下省略
runId和summaryArtifactPath - 受管模式下,在 worker 写入经过验证的摘要之前传入
runId和确切的summaryArtifactPath
监控(2.1.98+): 对预计超过 30 秒的测试或覆盖率命令,使用 Monitor。备用方案:Bash(run_in_background=true)。
完成定义
- 已识别为测试任务并设为 In Progress;已更新看板
- 已验证计划(优先级/限制)并阅读指南
- 已实现或更新并执行测试;已修复已有测试中的失败
- 已按任务计划更新文档/基础设施
- 已将任务设为 To Review;已在看板中移动任务;已添加包含命令和覆盖范围的摘要评论
- 已将运行时摘要制品写入共享的 task-status 位置。
测试失败分析流程
重要: 当一个新编写的测试失败时,应先停止并进行分析,再做任何更改(新测试失败往往表明实现存在错误,而不是测试有问题——盲目修复会掩盖根本原因)。
步骤 1:验证测试是否正确
- 测试是否与 AC 要求完全一致?(Story 中的 Given/When/Then)
- 根据业务逻辑,预期值是否正确?
- 如果不确定:查询
ref_search_documentation(query="[domain] expected behavior")
步骤 2:作出判断
| 测试符合 AC? | 操作 |
|---|---|
| 是 | 代码存在错误 → 修复实现,而不是测试 |
| 否 | 测试有误 → 修复测试断言 |
| 不确定 | 必须执行: 查询 MCP Ref,并在更改前询问用户 |
步骤 3:在跟踪器评论中记录(addComment)
"测试 [name] 失败。分析:[测试正确 / 测试有误]。操作:[已修复代码 / 已修复测试]。原因:[justification]"
警示信号(需要用户确认):
- ⚠️ 更改断言以匹配实际输出(“让测试变绿”)
- ⚠️ 删除“不起作用”的测试用例
- ⚠️ 放宽预期(例如,使用
toContain而不是toEqual)
可以继续处理:
- ✅ 修复测试设置/mock 数据中的拼写错误
- ✅ 修复代码,使其符合 AC 要求
- ✅ 添加缺失的测试设置步骤
编写测试的原则
1. 严格断言——任何不匹配都应失败
默认使用精确匹配断言:
| 严格(优先) | 宽松(避免,除非有正当理由) |
|---|---|
| 精确相等检查 | 部分匹配/子字符串匹配 |
| 精确长度检查 | “任意长度”检查 |
| 完整对象比较 | 部分对象匹配 |
| 精确类型检查 | 真值/假值检查 |
禁止使用 WARN 级别断言——测试要么通过,要么失败,不应产生警告。
2. 对确定性输出进行基于预期值的测试
对于确定性响应(API、转换):
- 对复杂的确定性输出使用快照/黄金文件测试
- 将实际输出与预期参考文件进行比较
- 比较前对动态数据进行规范化处理(时间戳 → 固定值,UUID → 占位符)
3. 黄金法则
“如果你知道预期值,就断言精确值。”
禁止: 当精确值已知时,使用宽松断言来“让测试通过”。
参考文件
- 环境状态:
references/environment_state_contract.md - 存储模式操作:
references/storage_mode_detection.md - Kanban 格式:
docs/tasks/kanban_board.md - 必须阅读: 加载
references/research_tool_fallback.md
版本: 3.2.0 最后更新: 2026-01-15