ultraqa について
UltraQAは、目標となる動作が定まった後に、品質チェック、診断、修正を繰り返す自律型QAサイクルスキルです。指定されたチェックを実行し、失敗時は診断と修正を行い、回数上限と早期停止条件を適用します。
主な機能
- 01テスト、ビルド、lint、型チェックを指定
- 02QA結果の実行と追跡
- 03失敗時の診断と修正を調整
- 04最大5サイクルで反復失敗を検出
- 05完了または終了時に状態ファイルを削除
活用シーン
- 01テストを成功または上限まで再実行
- 02ビルド失敗の診断と修正
- 03lintやTypeScriptエラーの確認
- 04カスタムパターンによるコマンド出力の検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ yeachan-heo/ oh-my-claudecode --skill ultraqaインストール後、Claude Code で/ultraqaを入力して読み込まれたか確認します。
詳細
UltraQA スキル
[ULTRAQA ACTIVATED - AUTONOMOUS QA CYCLING]
概要
ULTRAQA モードになりました。品質目標を達成するまで実行される、自律的な QA サイクルワークフローです。
サイクル:qa-tester → architect による検証 → 修正 → 繰り返し
/goal、Ralph、Team、Ultragoal との関係
UltraQA が担当するのは、品質ゲートのサイクルを繰り返すことだけです。非決定的な警告処理ではなく、決定的な競合ポリシー refuse、adopt_existing、artifact_only を使用してください。対象の動作が明確になり、残る確認事項がテスト、ビルド、lint、型チェック、またはその他の明示的な QA 条件に合格するかどうかだけになった段階で使用します。Claude Code の /goal が有効な場合、UltraQA はその目標に対する可視のコマンド実行エビデンスを作成できますが、/goal の評価器が独自にコマンドを実行したり、ファイルを読み取ったりすると説明してはなりません。Ralph または Team が有効な場合、UltraQA はその権限下での検証・修正サブループであり、競合するセッションループではありません。安全に実行できるアクティブループがない場合は、自動実行を行ったと主張せず、artifact-only の 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:対話型の CLI/サービスのテストには qa-tester を使用します: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マーカーを配置すると、複数のサブリポジトリにまたがるセッションで1つの.omc/を共有できます。解決順序:OMC_STATE_DIR > .omc-workspace > git > cwd。docs/REFERENCE.mdを参照してください。 - セッション ID の取得元: CLI コンテキストでは OMC_SESSION_ID 環境変数が優先され、フックコンテキストでは hook payload の data.session_id が優先されます。
- プラン ID(該当する場合): UltraQA の状態はセッション単位です。ralph との相互排他は同一セッション内に限り適用されます。
- 並行実行の判定: サポートされています(セッション単位の状態)
今すぐ ULTRAQA のサイクルを開始してください。目標を解析し、サイクル1を開始してください。