<Use_When>
- ユーザーが、複数の Claude セッションやワークツリーをまたいでウルトラゴールを追跡するための、リポジトリネイティブな耐久性のある方法を必要としている場合
- 作業が十分に大きく、試行回数とストーリーごとの証拠を伴う複数の順序付けられた「ストーリー」が必要な場合
- 最終的な完了が
ai-slop-cleaner+ 検証 +$code-reviewのゲートを通過する必要がある場合 - アクティブな Claude
/goalディレクティブを台帳と連携させ、セッション再起動時に進捗が失われないようにしたい場合 </Use_When>
<Do_Not_Use_When>
- タスクが単一の小さな変更である場合 — 代わりに直接委任または
ralphを使用してください - ユーザーがアシスタントにシェルから
/goalを直接呼び出させたい場合 — それは不可能です。omc ultragoalはアーティファクトを書き込み、ハンドオフテキストを表示するだけです - ユーザーが実行ループなしの計画専用アーティファクトを必要としている場合 — 代わりに
planを使用してください </Do_Not_Use_When>
<Why_This_Exists>
Claude Code の /goal はセッションスコープの Stop フックです。セッションが条件を満たすまで停止するのを防ぎ、成功時に自動的にクリアされます。これは優れた単一セッション実行プリミティブですが、セッションをまたいで状態を保持できず、最終レビューゲートを強制しません。omc ultragoal は耐久性のある計画、台帳、ゲーティング層を追加することで、長いマルチステップの取り組みがセッション再起動、新しいワークツリー、レビューの反復を耐え抜き、同時に Claude /goal を活用してアクティブなエージェントの集中力を維持できるようにします。
</Why_This_Exists>
<How_To_Use>
-
ブリーフから計画を作成する:
omc ultragoal create-goals --brief-file plan.mdまたは明示的なストーリーを使用:
omc ultragoal create-goals --brief "ship the migration" \ --goal "Schema::Add new columns" \ --goal "Backfill::Backfill rows in batches" \ --goal "Cutover::Drop old columns and switch reads"デフォルトモードは
aggregate(1つのClaude/goalが全体をカバー)です。 各ストーリーに個別の/goalが必要な場合は--claude-goal-mode per-storyを渡してください。マルチリポジトリワークスペース / 並列セッション: 同じワークスペース内の複数のClaudeセッションが同時に
/ultragoalを実行する必要がある場合、--plan-id <stable-id>または--auto-plan-idを渡して、計画が共有の単一計画パスではなく.omc/ultragoal/plans/{planId}/に書き込まれるようにします。このフラグがないと、2つのセッションがゴールを作成するときに互いに上書きする可能性があります。--auto-plan-idはブリーフのタイトルから{epochMs}-{slug}を導出します。その後、同じセッション内のすべての後続サブコマンドに同じ--plan-id <id>をスレッド化します。必要に応じてomc ultragoal list-plansを使用して利用可能な planId を列挙できます。 -
次のストーリーを開始(または再開)する:
omc ultragoal complete-goals [<goal-id>]ゴールIDなしの場合、アクティブなストーリーを再開するか、最初の保留中のストーリーを開始するデフォルトの動作を維持します。ゴールIDを指定すると、OMCはその名前の対象となるストーリー(保留中のストーリーは順序に関係なく開始可能)を正確にターゲットにします。他のアクティブなストーリー、不明なID、完了済みまたはレビューブロック中のストーリー、失敗したストーリー(
--retry-failedなし)は、状態を変更せずに拒否されます。進行中の名前付きストーリーは、試行回数を変更せずに再開されます。このコマンドはモデル向けハンドオフテキストを表示します。アクティブなClaudeエージェントはそれを読み、以下のことを行う必要があります:- このセッションのネイティブClaude
/goalを設定する — スタンドアロンのClaude Codeでは、シェルもエージェントもそれを実行できないため、ユーザーに/goal <集約目標>と入力するよう依頼し、待機します。--claude-goal-json(以下参照)は台帳のみを調整し、PreToolUse/goalガードを満たしません。このガードはアクティブな/goalが観測されるまでツール呼び出しをブロックします。 - ストーリーを実行する。
- ストーリーが完了したら(最終ストーリーの場合は、完全な品質ゲートの後)、アクティブな
/goal状態のスナップショットを共有し、checkpointを呼び出す。
- このセッションのネイティブClaude
-
ストーリーをチェックポイントする:
omc ultragoal checkpoint --goal-id G001-... --status complete \ --evidence "tests/files/PR の証拠" \ --claude-goal-json '{"goal":{"objective":"...","status":"active"}}'最終ストーリーの場合は、
--quality-gate-jsonも渡し、aiSlopCleaner、verification、codeReviewの証拠(すべてクリーン)を含めます。 -
最終レビューがクリーンでない場合、完了とマークしないでください。ブロッカーを記録します:
omc ultragoal record-review-blockers --goal-id G00X-... \ --title "コードレビューブロッカーを解決" \ --objective "指摘されたレビュー結果を修正し、最終ゲートを再実行" \ --evidence "<レビュー結果>" \ --claude-goal-json '{"goal":{"objective":"...","status":"active"}}'これにより、新しいブロッカーストーリーが追加され、Claude
/goalはアクティブのままになります。 -
いつでも状態を確認する:
omc ultragoal status
</How_To_Use>
<Important_Limitations>
- シェルは Claude Code の
/goal状態を呼び出したり変更したりできません。omc ultragoalは耐久性のあるアーティファクトを永続化し、アクティブな Claude エージェントがセッション内で読み取り、実行するための指示を表示するだけです。 --claude-goal-jsonを介して渡されるスナップショットは、アクティブな/goal状態のモデル提供による証明であり、OMC はそれらを計画の期待される目標と台帳イベントとテキスト的に一貫しているか検証しますが、Claude/goalの状態を独立して観測することはできません。これらは PreToolUse/goalガードを満たしません。このガードには実際のアクティブな/goalが必要です — ホストが挿入したスナップショットや、ユーザーがセッション内で設定したネイティブの/goalが必要です。- Claude
/goalスラッシュコマンドの名前や構造が変更された場合、ハンドオフの文言のみを変更する必要があります。調整ロジックは名前に依存しません。 </Important_Limitations>
並列セッションの注意点
- マルチリポジトリワークスペースアンカー: 親ディレクトリに
.omc-workspaceマーカーを配置すると、サブリポジトリをまたがる複数のセッションが1つの.omc/を共有できます。解決順序:OMC_STATE_DIR > .omc-workspace > git > cwd。docs/REFERENCE.mdを参照してください。 - セッションIDのソース: CLI コンテキストでは
OMC_SESSION_ID環境変数が優先され、フックコンテキストではフックペイロードのdata.session_idが優先されます。 - プランID(該当する場合): 同じワークスペース内の2つの実行は、共有の計画アーティファクトで競合します。個別のセッションIDを使用するか(フックペイロードの session_id はすでに Claude Code セッションごとに分離されています)、
--plan-idを渡して並列のウルトラゴール実行を別々の台帳に保持します。 - 並列判定: サポートされています(各セッションは独自のセッションスコープ状態を書き込みます)