ralph
タスク完了まで自己参照ループを実行し、検証レビュアーを設定可能にします
description の原文を見る
Self-referential loop until task completion with configurable verification reviewer
SKILL.md 本文
[RALPH + ULTRAWORK - ITERATION {{ITERATION}}/{{MAX}}]
前回の試行は完了約束を出力しませんでした。タスクの処理を続行してください。
<Purpose> Ralph は PRD 駆動型の永続ループです。prd.json 内のすべてのユーザーストーリーが passes: true となり、レビュアーによる検証が完了するまでタスクに取り組み続けます。ultrawork の並列実行をセッション永続性、失敗時の自動再試行、構造化されたストーリー追跡、完了前の必須検証でラップします。 </Purpose><Use_When>
- タスクが検証付きの保証された完了を必要とする (単なる「できるだけやる」ではなく)
- ユーザーが「ralph」「止まるな」「完了させろ」「これを終わらせろ」または「完了までやり続ける」と言った
- 作業が複数のイテレーションにわたる可能性があり、再試行全体での永続性が必要
- タスクが構造化された PRD 駆動型の実行とレビュアーの承認から利益を得る </Use_When>
<Do_Not_Use_When>
- ユーザーがアイデアからコードまでの完全な自律型パイプラインを望んでいる -- 代わりに
autopilotを使用してください - ユーザーがコミットする前に探索や計画を望んでいる -- 代わりに
planスキルを使用してください - ユーザーが迅速なワンショット修正を望んでいる -- エグゼキューターエージェントに直接委譲してください
- ユーザーが完了に対する手動制御を望んでいる -- 代わりに
ultraworkを直接使用してください </Do_Not_Use_When>
<Why_This_Exists> 複雑なタスクはしばしば静かに失敗します。部分的な実装が「完了」と宣言されたり、テストがスキップされたり、エッジケースが忘れられたりします。Ralph はこれを防ぎます:
- 作業を検証可能な受け入れ基準を持つ離散的なユーザーストーリーに構造化 (prd.json)
- 各ストーリーがパスするまでストーリー単位で反復
- イテレーション全体での進捗と学習を追跡 (progress.txt)
- 完了前に具体的な受け入れ基準に対する新しいレビュアー検証を必須とする </Why_This_Exists>
<PRD_Mode>
デフォルトでは、ralph は PRD モードで動作します。ralph の開始時に存在しない場合、スキャフォルド prd.json が自動生成されます。アクティブな一時的な PRD 状態は、セッション ID が利用可能な場合、セッション スコープの .omc/state/sessions/{sessionId}/prd.json にあります。レガシープロジェクトレベルの prd.json / .omc/prd.json ファイルは、スタートアップマイグレーション入力として読み込まれます。
スタートアップゲート: Ralph は常にスタートアップ時に prd.json を初期化して検証します。レガシー --no-prd テキストは下位互換性のためプロンプトからサニタイズされますが、PRD 作成や検証をバイパスすることはできません。
Deslop オプトアウト: {{PROMPT}} に --no-deslop が含まれている場合、必須のレビュー後 deslop パスをスキップしてください。クリーンアップパスが意図的に実行スコープ外の場合にのみ使用してください。
レビュアー選択: Ralph プロンプトで --critic=architect、--critic=critic、または --critic=codex を渡して、その実行の完了レビュアーを選択してください。architect はデフォルトのままです。
</PRD_Mode>
<Execution_Policy>
- 独立したエージェント呼び出しを同時にファイア -- 独立した作業を順序良く待たない
- 長時間の操作にはは
run_in_background: trueを使用 (インストール、ビルド、テストスイート) - エージェントに委譲する際は常に
modelパラメータを明示的に渡す - 最初の委譲前に
docs/shared/agent-tiers.mdを読んで、正しいエージェントティアを選択する - 完全な実装を提供: スコープ削減なし、部分的完了なし、テストを通すためのテスト削除なし </Execution_Policy>
-
次のストーリーを選択: アクティブな PRD ファイルを読み、
passes: falseの最高優先度ストーリーを選択します。これが現在のフォーカスです。 -
現在のストーリーを実装:
- 適切なティアの専門家エージェントに委譲:
- シンプルな検索: LOW ティア (Haiku) -- 「この関数は何を返しますか?」
- 標準的な作業: MEDIUM ティア (Sonnet) -- 「このモジュールにエラーハンドリングを追加する」
- 複雑な分析: HIGH ティア (Opus) -- 「このレース条件をデバッグする」
- 実装中にサブタスクを発見した場合、それらをアクティブな PRD ファイルに新しいストーリーとして追加
- 長時間の操作をバックグラウンドで実行: ビルド、インストール、テストスイートは
run_in_background: trueを使用
- 適切なティアの専門家エージェントに委譲:
-
現在のストーリーの受け入れ基準を検証: a. ストーリー内の EACH 受け入れ基準に対して、それが新鮮な証拠で満たされていることを検証 b. 関連するチェック (テスト、ビルド、リント、タイプチェック) を実行して出力を読む c. すべての基準が満たされていない場合、作業を続行 -- ストーリーを完了としてマークしない
-
ストーリーを完了としてマーク: a. すべての受け入れ基準が検証されたら、アクティブな PRD ファイルでこのストーリーに対して
passes: trueを設定 b.progress.txtに進捗を記録: 実装したもの、変更ファイル、将来のイテレーションの学習 c. 発見したコードベース パターンをprogress.txtに追加 -
PRD 完了を確認: a. アクティブな PRD ファイルを読む -- すべてのストーリーが
passes: trueとしてマークされていますか? b. すべてが完了していない場合、ステップ 2 にループバック (次のストーリーを選択) c. すべてが完了した場合、ステップ 7 に進む (アーキテクト検証) -
レビュアー検証 (受け入れ基準に対するティア化):
- <5 ファイル、フルテスト付き <100 行: STANDARD ティア最小 (architect-medium / Sonnet)
- 標準的な変更: STANDARD ティア (architect-medium / Sonnet)
-
20 ファイルまたはセキュリティ/アーキテクチャ変更: THOROUGH ティア (architect / Opus)
--critic=criticの場合、承認パスに Claudecriticエージェントを使用--critic=codexの場合、omc ask codex --agent-prompt critic "..."を実行して承認パスを実行してください。Codex critic プロンプトは以下を含む必須です:- 検証用の prd.json からの全受け入れ基準リスト
- 実装が 最適 であるかを評価するディレクティブ -- 単に正しいだけでなく、実装が見落とした意味のある優れたアプローチ (よりシンプル、高速、保守性) が存在するかどうか
- 変更に関連するすべてのコードをレビューするディレクティブ (呼び出し元、呼び出し先、共有タイプ、隣接モジュール)。直接変更されたファイルだけでなく
- ralph セッション中に変更されたファイルのリスト (コンテキスト用)
- Ralph フロア: 小さな変更でも常に最低でも STANDARD
- 選択されたレビュアーは、曖昧な「完了したか?」ではなく、prd.json からの具体的な受け入れ基準に対して検証
- 承認時: 同じターン内で直ちにステップ 7.5 に進みます。ユーザーに評決を報告するために一時停止しないでください -- 報告はステップ 8 (
/oh-my-claudecode:cancel) またはステップ 9 (拒否) 時のみです。承認された評決を報告のチェックポイントとして扱うことは、ポライト-ストップのアンチパターンです。
7.5 必須 Deslop パス (ステップ 7 承認後に無条件に実行。{{PROMPT}} に --no-deslop が含まれていない場合):
- Skill ツール (
Skill("ai-slop-cleaner")) 経由でai-slop-cleanerスキルを呼び出します。 現在の Ralph セッション中に変更されたファイルのみで標準モード (非--review) で実行します。 - ai-slop-cleaner はスキルです。エージェントではありません。
Task(subagent_type="oh-my-claudecode:ai-slop-cleaner")経由で呼び出さないでください -- そのサブエージェント型は存在せず、呼び出しは「エージェント型が見つかりません」で失敗します。そのエラーが表示された場合、Skill ツールで再試行してください --code-simplifierなどの類似の名前のエージェントを「最も近い一致」として代替しないでください。 - スコープを Ralph の変更ファイルセットに限定; クリーンアップパスを無関係なファイルに広げない
- レビュアーが実装を承認しましたが、deslop パスが後続の編集を導入した場合、それらの編集を同じ変更ファイルスコープ内に保持してから進めます。
7.6 リグレッション再検証:
- deslop パスの後、Ralph セッション用のすべての関連テスト、ビルド、リントチェックを再実行します。
- 出力を読んで、deslop 後のリグレッション実行が実際に通ることを確認します。
- リグレッションが失敗した場合、クリーナーの変更をロールバックするか、リグレッションを修正して、通るまで検証ループを再実行します。
- deslop 後のリグレッション実行がパスした後、または
--no-deslopが明示的に指定された後、完了に進んでください。
-
承認時: ステップ 7.6 がパス後 (ステップ 7.5 完了、または
--no-deslop経由でスキップ)、/oh-my-claudecode:cancelを実行してクリーンに終了し、すべてのステートファイルをクリーンアップ -
拒否時: 提起された問題を修正し、同じレビュアーで再検証してから、ストーリーを不完全としてマークする必要があるかを確認するためにループバック
</Steps>
<Tool_Usage>
- 変更がセキュリティに敏感で、アーキテクチャ的で、または複雑なマルチシステム統合を含む場合、アーキテクト検証クロスチェック用に
Task(subagent_type="oh-my-claudecode:architect", ...)を使用 --critic=criticの場合はTask(subagent_type="oh-my-claudecode:critic", ...)を使用--critic=codexの場合はomc ask codex --agent-prompt critic "..."を使用してください。プロンプトを構成して以下を含めます: (a) prd.json 受け入れ基準、(b) 変更ファイル + 関連ファイル、(c) 明確な最適性の質問: 「同じ受け入れ基準を達成するシンプル、高速、またはより保守可能なアプローチが存在しますか?」- シンプルな機能追加、十分にテストされた変更、または時間が厳しい検証のためのアーキテクト相談をスキップ
- アーキテクトエージェント検証のみで進行 -- 利用不可のツールでブロックしない
- ralph モード ステート永続性のためにイテレーション間で
state_write/state_readを使用 - Skill 対 エージェント呼び出し:
ai-slop-cleanerはスキルです。Skill("ai-slop-cleaner")経由で呼び出してください。architect、critic、executorなど はエージェントです。Task(subagent_type="oh-my-claudecode:<name>")経由で呼び出してください。oh-my-claudecode:<name>識別子に対して「エージェント型...が見つかりません」が表示される場合、そのアイテムはスキルです -- Skill ツール で再試行してください。「最も近い一致」として類似の名前のエージェントを代替しないでください。 </Tool_Usage>
改善後: acceptanceCriteria: [ "レガシー --no-prd テキストは Ralph ワークプロンプトから削除される", "Ralph スタートアップは、レガシー --no-prd テキストが存在する場合、prd.json を作成またはまたは検証し続ける", "TypeScript はエラーなくコンパイル (npm run build)" ]
良い理由: 汎用基準が具体的で検証可能な基準に置き換えられた。
</Good>
<Good>
正しい並列委譲:
Task(subagent_type="oh-my-claudecode:executor", model="haiku", prompt="UserConfig の型エクスポートを追加") Task(subagent_type="oh-my-claudecode:executor", model="sonnet", prompt="API レスポンスのキャッシングレイヤーを実装") Task(subagent_type="oh-my-claudecode:executor", model="opus", prompt="OAuth2 フローをサポートするために auth モジュールをリファクタリング")
良い理由: 3 つの独立したタスクが同時に適切なティアでファイア。
</Good>
<Good>
ストーリー単位の検証:
- ストーリー US-001: 「フラグ検出ヘルパーを追加」
- 基準: 「レガシー --no-prd がワークプロンプトから削除される」 → テスト実行 → パス
- 基準: 「TypeScript がコンパイル」 → ビルド実行 → パス
- US-001 passes: true をマーク
- ストーリー US-002: 「PRD を bridge.ts にワイア」
- 次のストーリーに続行...
良い理由: 各ストーリーが完了とマークされる前に独自の受け入れ基準に対して検証。
</Good>
<Bad>
PRD 検証なしで完了を主張:
「すべての変更は良く見え、実装は正しく機能するはずです。タスク完了。」
悪い理由: 「すべき」と「見える」を使用 -- 新鮮な証拠なし、ストーリー単位の検証なし、アーキテクト検証なし。
</Bad>
<Bad>
独立したタスクの順序実行:
Task(executor, 「型エクスポートを追加」) → 待機 → Task(executor, 「キャッシングを実装」) → 待機 → Task(executor, 「auth をリファクタリング」)
悪い理由: これらは順序で実行されるべきではなく、並列で実行されるべき独立したタスク。
</Bad>
<Bad>
汎用受け入れ基準を保持:
「prd.json が作成されました。基準: 実装は完了、コードがコンパイル。コーディングに移動。」
悪い理由: スキャフォルド基準をタスク固有のものに改善しませんでした。これは PRD シアターです。
</Bad>
</Examples>
<Escalation_And_Stop_Conditions>
- ユーザーの入力を必要とする根本的なブロッカーがある場合は停止して報告 (認証情報がない、要件が不明確、外部サービスがダウン)
- ユーザーが「stop」「cancel」「abort」と言った場合、`/oh-my-claudecode:cancel` を実行し停止
- フックシステムが「The boulder never stops」を送信したら、イテレーション続行
- 選択されたレビュアーが検証を拒否した場合、問題を修正して再検証 (停止しない)
- 同じ問題が 3 回以上のイテレーション全体で繰り返される場合、根本的な問題として報告
- **ステップ 7 承認後に停止しないでください。** ボルダーはステップ 7 → 7.5 → 7.6 → 8 を同じターン内で単一チェーンとして続行します。ステップ 7 はループ内のチェックポイントであり、報告の瞬間ではありません。承認された評決を「ユーザーの承認を待つ時間」と扱うことは、ポライト-ストップのアンチパターンです -- Ralph の唯一の報告のモーメントはステップ 8 (成功したキャンセル) またはステップ 9 (拒否)。
</Escalation_And_Stop_Conditions>
<Final_Checklist>
- [ ] すべての prd.json ストーリーが `passes: true` (不完全なストーリーなし)
- [ ] prd.json 受け入れ基準はタスク固有 (汎用ボイラープレートではなく)
- [ ] 元のタスクからのすべての要件が満たされている (スコープ削減なし)
- [ ] 保留中または進行中の TODO アイテムがない
- [ ] 新鮮なテスト実行出力がすべてのテストがパスすることを示す
- [ ] 新鮮なビルド出力が成功を示す
- [ ] lsp_diagnostics が影響を受けたファイルで 0 エラーを示す
- [ ] progress.txt が実装の詳細と学習を記録
- [ ] 選択されたレビュアー検証が具体的な受け入れ基準に対してパス
- [ ] ai-slop-cleaner パスが変更ファイルで完了 (または `--no-deslop` 指定)
- [ ] deslop 後のリグレッションテストがパス
- [ ] `/oh-my-claudecode:cancel` が実行されてクリーンなステートクリーンアップ
</Final_Checklist>
<Advanced>
## バックグラウンド実行ルール
**バックグラウンドで実行** (`run_in_background: true`):
- パッケージインストール (npm install、pip install、cargo build)
- ビルドプロセス (make、プロジェクトビルドコマンド)
- テストスイート
- Docker 操作 (docker build、docker pull)
**ブロッキング実行** (フォアグラウンド):
- クイックステータスチェック (git status、ls、pwd)
- ファイル読み書き
- シンプルなコマンド
</Advanced>
元のタスク:
{{PROMPT}}
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- Yeachan-Heo
- ライセンス
- MIT
- 最終更新
- 2026/5/11
Source: https://github.com/Yeachan-Heo/oh-my-claudecode / ライセンス: MIT