超质量保证Skill ultraqa

超质量保证是一个自动化工具,用于在软件开发过程中执行迭代修复和验证循环。它通过运行测试、构建、代码检查或类型检查命令,诊断失败原因,自动应用修复,并重新验证,最多进行5个循环。它帮助开发人员快速识别和解决代码问题,提高软件质量,关键词包括迭代修复、验证循环、自动化测试、代码检查、软件开发、质量保证。

测试 0 次安装 0 次浏览 更新于 3/18/2026

name: ultraqa description: 针对测试、构建、代码检查或类型检查的迭代修复和验证循环。诊断失败原因,应用修复,重新验证 — 最多5个循环。 argument-hint: “[–tests|–build|–lint|–typecheck|–custom ‘<命令>’]” allowed-tools: 读取、写入、编辑、Bash、Grep、Glob、Task、TeamCreate、TeamDelete、SendMessage、AskUserQuestion disable-model-invocation: true

UltraQA — 迭代修复和验证循环

运行验证命令,诊断失败原因,修复它们,重复 — 直到通过或达到循环限制。从不提交。

参数

  • --tests — 运行项目测试套件(默认)
  • --build — 运行构建命令
  • --lint — 运行代码检查器
  • --typecheck — 运行类型检查器
  • --custom '<命令>' — 运行自定义验证命令

如果未提供参数,默认使用 --tests

硬性规则

  • 从不运行 git commit — UltraQA 修复代码但从不提交。用户决定何时提交。
  • 最大5个循环 — 无论结果如何,在5次修复-验证迭代后停止。
  • 重复失败时停止 — 如果同一失败连续出现3次,停止并报告。
  • 一次一个目标 — 每次调用针对单一验证目标。

工作流程

第一步:检测验证命令

基于参数,确定要运行的命令:

目标 检测方式 命令
--tests package.json → bun test; pyproject.toml → pytest; Cargo.toml → cargo test 自动检测
--build package.json → bun run build; Cargo.toml → cargo build 自动检测
--lint package.json → bun run lint; .eslintrc* → eslint 自动检测
--typecheck tsconfig.json → tsc --noEmit; pyproject.toml → mypy 自动检测
--custom 用户提供的命令 精确命令

如果自动检测失败,询问用户:

AskUserQuestion(
  questions: [{
    question: "我应该运行什么命令进行验证?",
    header: "QA 命令",
    options: [
      { label: "bun test", description: "JavaScript/TypeScript 测试" },
      { label: "pytest", description: "Python 测试" },
      { label: "cargo test", description: "Rust 测试" }
    ],
    multiSelect: false
  }]
)

第二步:初始运行

运行验证命令并捕获输出:

{command} 2>&1

保存状态:

// .maestro/handoff/ultraqa-state.json
{
  "goal": "--tests",
  "command": "bun test",
  "cycle": 1,
  "max_cycles": 5,
  "status": "运行中",
  "failures": [],
  "repeat_count": 0,
  "started": "{ISO 时间戳}"
}

如果命令在第一次运行时通过:

所有检查通过。无需修复。

立即退出。

第三步:诊断

创建诊断团队:

TeamCreate(team_name: "ultraqa-{goal}", description: "UltraQA {goal} 循环 {N}")

解析失败输出。生成工作器:

  • oracle — 用于复杂/不清晰的失败:“分析此失败输出并识别根本原因:{output}”
  • build-fixer — 用于带有清晰错误消息的构建/代码检查/类型检查错误
  • kraken — 用于需要新测试夹具或多文件更改的测试失败

工作器选择启发式方法:

  • 带有文件:行的清晰错误消息 → build-fixer
  • 测试断言失败 → kraken
  • 不清晰或级联失败 → 首先使用 oracle 进行诊断,然后使用 kraken/build-fixer 进行修复

第四步:修复

将修复委派给适当的工作器。提供:

  • 完整错误输出
  • 相关文件路径
  • 验证命令期望的内容

第五步:重新验证

再次运行相同的验证命令。更新状态:

{
  "cycle": 2,
  "status": "运行中",
  "failures": ["先前失败摘要"],
  "repeat_count": 0
}

第六步:循环或停止

继续 如果:

  • 新失败(不同于先前)且循环 < 5

停止 如果出现任何以下情况:

  • 所有检查通过 → 报告成功
  • 循环 >= 5 → 报告循环限制
  • 同一失败3次 → 报告卡住
  • 未识别出可操作的修复 → 报告阻塞

第七步:报告

## UltraQA 报告

### 结果:成功 | 循环限制 | 卡住 | 阻塞

### 运行循环数:N/5
### 目标:{goal}
### 命令:`{command}`

### 应用的修复
1. 循环1:[修复的内容] — [文件:行]
2. 循环2:[修复的内容] — [文件:行]

### 剩余失败(如有)
- [失败描述]

### 状态文件
`.maestro/handoff/ultraqa-state.json`

第八步:清理

TeamDelete(reason: "UltraQA 会话完成")

TeamDelete 清理:如果 TeamDelete 失败,回退到:rm -rf ~/.claude/teams/{team-name} ~/.claude/tasks/{team-name}

更新状态文件:

{
  "status": "已完成",
  "result": "成功",
  "cycles_used": 3,
  "completed": "{ISO 时间戳}"
}

状态管理

状态保存在 .maestro/handoff/ultraqa-state.json 中,以便:

  • /status 可以报告活动 UltraQA 会话
  • 中断的会话可以诊断
  • 结果可用于事后分析

反模式

不要 替代做法
提交修复 保持未提交 — 用户决定何时提交
运行多个目标 每次调用一个目标
超过5个循环后继续 停止并报告
重试同一修复 如果修复无效,尝试不同方法
修复无关问题 只修复来自验证命令的失败