关于 ultraqa
UltraQA 是用于重复执行质量检查、诊断和修复的自主 QA 循环技能,适合目标行为已明确、仍需确认质量门是否通过的任务。它按指定目标运行检查,失败时安排诊断与修复,并设有循环上限和提前停止条件。
主要功能
- 01支持测试、构建、lint 和类型检查目标
- 02运行 QA 检查并跟踪结果
- 03失败时安排诊断与修复
- 04最多循环五次并检测重复失败
- 05完成或退出时清理状态文件
适用场景
- 01反复运行测试直至通过或触及上限
- 02构建失败后的诊断与修复
- 03检查 lint 或 TypeScript 类型错误
- 04针对自定义输出模式验证命令
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ yeachan-heo/ oh-my-claudecode --skill ultraqa安装后在 Claude Code 中输入/ultraqa确认已加载。
详细介绍
UltraQA Skill
[ULTRAQA ACTIVATED - AUTONOMOUS QA CYCLING]
概述
你现在处于 ULTRAQA 模式 —— 一个自主 QA 循环工作流,会持续运行,直到满足你的质量目标。
循环:qa-tester → architect 验证 → 修复 → 重复
与 /goal、Ralph、Team 和 Ultragoal 的关系
UltraQA 只负责重复的质量门禁循环。请使用确定性冲突策略 refuse、adopt_existing 和 artifact_only,而不是非确定性的警告处理。请在目标行为已知、且剩余问题只是测试、构建、lint、typecheck 或其他显式 QA 条件是否通过时使用它。如果 Claude Code /goal 处于活动状态,UltraQA 可以为该目标产生可见的命令证据,但不得将 /goal 评估器描述为独立运行命令或读取文件。如果 Ralph 或 Team 处于活动状态,UltraQA 是该权威下的验证/修复子循环,而不是与之竞争的会话循环。如果没有安全的活动循环,请在仅产物的 Ultragoal 笔记中记录 QA 预期和证据,而不是声称会自动执行。
目标解析
从参数中解析目标。支持的格式:
| 调用方式 | 目标类型 | 检查内容 |
|---|---|---|
/oh-my-claudecode:ultraqa --tests | tests | 所有测试套件通过 |
/oh-my-claudecode:ultraqa --build | build | 构建成功并以退出码 0 结束 |
/oh-my-claudecode:ultraqa --lint | lint | 无 lint 错误 |
/oh-my-claudecode:ultraqa --typecheck | typecheck | 无 TypeScript 错误 |
/oh-my-claudecode:ultraqa --custom "pattern" | custom | 输出中匹配自定义成功模式 |
如果未提供结构化目标,则将参数解释为自定义目标。
循环工作流
第 N 轮循环(最多 5 轮)
-
运行 QA:根据目标类型执行验证
--tests:运行项目的测试命令--build:运行项目的构建命令--lint:运行项目的 lint 命令--typecheck:运行项目的类型检查命令--custom:运行相应命令并检查模式--interactive:使用 qa-tester 进行交互式 CLI/服务测试:Task(subagent_type="oh-my-claudecode:qa-tester", model="sonnet", prompt="TEST: Goal: [describe what to verify] Service: [how to start] Test cases: [specific scenarios to verify]")
-
检查结果:目标是否通过?
- 是 → 以成功消息退出
- 否 → 继续执行第 3 步
-
Architect 诊断:启动 architect 分析失败
Task(subagent_type="oh-my-claudecode:architect", model="opus", prompt="DIAGNOSE FAILURE: Goal: [goal type] Output: [test/build output] Provide root cause and specific fix recommendations.") -
修复问题:应用 architect 的建议
Task(subagent_type="oh-my-claudecode:executor", model="sonnet", prompt="FIX: Issue: [architect diagnosis] Files: [affected files] Apply the fix precisely as recommended.") -
重复:返回第 1 步
退出条件
| 条件 | 操作 |
|---|---|
| 目标达成 | 以成功消息退出:"ULTRAQA COMPLETE: Goal met after N cycles" |
| 达到第 5 轮 | 以诊断消息退出:"ULTRAQA STOPPED: Max cycles. Diagnosis: ..." |
| 同一失败出现 3 次 | 提前退出:"ULTRAQA STOPPED: Same failure detected 3 times. Root cause: ..." |
| 环境错误 | 退出:"ULTRAQA ERROR: [tmux/port/dependency issue]" |
可观测性
每轮循环输出进度:
[ULTRAQA Cycle 1/5] Running tests...
[ULTRAQA Cycle 1/5] FAILED - 3 tests failing
[ULTRAQA Cycle 1/5] Architect diagnosing...
[ULTRAQA Cycle 1/5] Fixing: auth.test.ts - missing mock
[ULTRAQA Cycle 2/5] Running tests...
[ULTRAQA Cycle 2/5] PASSED - All 47 tests pass
[ULTRAQA COMPLETE] Goal met after 2 cycles
状态跟踪
在 .omc/ultraqa-state.json 中跟踪状态:
{
"active": true,
"goal_type": "tests",
"goal_pattern": null,
"cycle": 1,
"max_cycles": 5,
"failures": ["3 tests failing: auth.test.ts"],
"started_at": "2024-01-18T12:00:00Z",
"session_id": "uuid"
}
取消
用户可以使用 /oh-my-claudecode:cancel 取消,该命令会清除状态文件。
重要规则
- 尽可能并行 - 在准备潜在修复的同时运行诊断
- 记录失败 - 记录每次失败以检测模式
- 发现模式时提前退出 - 3 次相同失败 = 停止并上报
- 清晰输出 - 用户应始终了解当前循环和状态
- 清理 - 在完成或取消时清除状态文件
完成时清理状态
重要:完成时删除状态文件 - 不要只是设置 active: false
当目标达成或达到最大循环次数或提前退出时:
# Delete ultraqa state file
rm -f .omc/state/ultraqa-state.json
这可确保为未来会话留下干净的状态。不应留下带有 active: false 的过期状态文件。
并行会话注意事项
- 多仓库工作区锚点: 在父目录放置一个
.omc-workspace标记,以便跨子仓库的多个会话共享一个.omc/。解析顺序:OMC_STATE_DIR > .omc-workspace > git > cwd。参见docs/REFERENCE.md。 - 会话 id 来源: 在命令行上下文中,OMC_SESSION_ID 环境变量优先;在 hook 上下文中,hook 负载数据 session_id 优先。
- 计划 id(如适用): UltraQA 状态是会话范围的。与 ralph 的互斥仅适用于同一会话内。
- 并行判定: 支持(会话范围状态)
立即开始 ULTRAQA 循环。解析目标并开始循环 1。