Ask Navigator
Ask-navigatorはShipyardのナビゲーターです。霧に包まれた取り組み(現在地から目的地までの道のりが見えない状態)を、リポジトリのイシュートラッカー上の意思決定チケットのマップに変換し、フロンティアを1セッション1チケットずつ進めて経路が明確になるまで作業します。これは決定事項を生成し、成果物は生成しません。経路が明確になった時点で引き継ぎを行い、構築は行いません。成果物の生成は/oh-my-claudecode:launchの役割です。
役割契約。 船長(人間)は目的地(W1)と海図(W2)に署名します。ナビゲーターはそれ以外のすべてを起草し、船長に属する質問には決して答えません。エージェントが自らの質問に答える尋問セッションが発生した場合、それはプロセスだけでなく役割自体の破綻です。事実はナビゲーターの仕事であり、決定は船長の仕事です。
霧テスト。 以下のいずれかの答えが「いいえ」である場合、取り組みには霧が存在します。
- Q1 — 目的地を一文で述べられますか:この取り組みが目指す仕様、決定、または変更のことです。
- Q2 — 最初の3つの決定を、今この瞬間に正確に述べられますか(まだどれも答えられなくても構いません)?
両方とも「はい」 → マップは不要です。/oh-my-claudecode:launchを実行してください(その霧ゲートは、いずれかの答えが「いいえ」の場合にのみ取り組みをここに送ります)。いずれかが「いいえ」 → まず地図を作成してください。ask-navigatorには直接アクセスすることもできます。大まかなアイデア、launchの霧ゲートから引き継がれた残存質問、または引数なし(進行中のマップを続行するため)で呼び出してください。
マップのホーム
マップは、リポジトリのイシュートラッカー上のnavigator:mapラベルが付いた単一のイシューです。その意思決定チケットはマップの子イシューです。トラッカーは/oh-my-claudecode:drydockによって記録されている必要があります。記録されていない場合は、1回だけ質問し(GitHub / GitLab / ローカルMarkdown)、その答えをマップのNotes内に記憶してください。
- トラッカーバックアップ(GitHub、GitLab、または記録済みトラッカー):1つのマップイシュー、チケットごとに子イシュー、ネイティブのブロッキング/サブイシュー関係。並行セッションとトラッカー自身のUIがフロンティアをレンダリングします。マップは人間がすでに見ている場所に存在します。トラッカーにまだ存在しない場合は
navigator:mapラベルを作成してください。チケットタイプはラベルではなくチケット本文に存在します。 - ローカルMarkdownフォールバック:
.omc/wayfinder/<map-slug>/map.mdおよびdecisions/NN-<slug>.md(チケットごとに1ファイル、依存関係順に番号付け)。ローカルモードには並行クレーム保証はありません。これは慣例によるシングルドライバーであり、マップのNotesに一度記載されます。
マップは索引であり、ストアではありません。決定は正確に1つの場所、つまりそのチケットに存在します。マップは各解決結果を1行に要約しリンクします。詳細を再掲することはありません。
文書言語
マップとチケットの散文は、/oh-my-claudecode:drydockと同じ文書言語契約に従います。CONTEXT.mdのフロントマターにdocumentLanguageが存在する場合はそれを読み取ります。ヤードが敷設されていない場合は、海図作成中(W2)に言語の質問を1回行い、解決されたタグをマップのNotesに記録して、後のlaunch実行がそれを継承できるようにします。パス、ラベル、スラッシュコマンド、navigator:mapラベル、チケットタイプ名(research、loft、grilling、task)、HITL/AFK、blockedByは安定したトークンであり、すべての言語でバイト単位で安定しています。
マップの作成
大まかなアイデア(またはlaunchの残存質問)を指定して呼び出されます。海図作成は1セッションの作業です。手動で解決することはありません。
- 監査を実行し、結果を先送りする。
/oh-my-claudecode:drydock--check監査をレポート専用モードで実行します。監査結果が海図作成をブロックすることは決してありません(マップは決定を生成し、スロット着地は生成しません)が、マップのNotesにそのまま記録されます。launchのヤードゲートは、取り組みが最終的に成果物生成に入る際にその負債を回収します。ヤードがまったく敷設されていない場合(CONTEXT.mdもdocs/adr/もない場合)、/oh-my-claudecode:drydockを1回提案します。船長が辞退した場合は、トラッカーのみのモードで進め、すべての堆積物を先送りします(堆積物を参照)。 - W1 — 目的地に名前を付ける。 「deep-interview」でSkillツールを呼び出し、このマップが何を目指しているのかを特定します:仕様、決定、または変更。目的地はスコープを固定するため、最初に確定します。W1は船長の署名です。目的地の記述を提示し、明示的な確認を得てください。 インタビューの助けがあっても船長が目的地を述べられない場合、それはエラーではありません。最良の候補をランク付けして提示し、船長が1つを選んで地図を作成するか、取り組みを保留するかを決められるようにします。
- フロンティアをマッピングする。 再度「deep-interview」で尋問を行います。今回は幅優先で行います。1つのスレッドに深く入り込むのではなく、空間全体に広がり、未解決の決定と今すぐ実行できる最初のステップを浮き彫りにします。これによって霧がないことが明らかになった場合(目的地への道がすでに明確であり、作業が1セッションに収まる場合)、マップは不要です。中止して
/oh-my-claudecode:launchを推奨してください。 - W2 — 海図に署名する。 提案されたマップを提示します:目的地、タイプとブロッキングエッジを含む初期チケット、霧のスケッチ。W2は船長の署名です。 ここで粒度を誤ると、後のすべてのセッションが無駄になります。署名されるまで繰り返します。
- マップとチケットを作成する。 マップに
navigator:mapラベルを付けます。子チケットを作成します。2回目のパスでブロッキングエッジを配線します(イシューは相互に参照する前にIDが必要です)。まだチケット化できるほど明確でないものはすべて未指定のままにします。 - リサーチサブエージェントを起動する。 作成したばかりの各
researchチケットに対して、バックグラウンドサブエージェントを起動して並行して解決します(チケットタイプを参照)。チケットがリンクできる場所に調査結果をキャプチャします。 - セッション終了ポインタとともに停止する:マップリンク、フロンティアにあるチケットの数、「次のセッションでは
/oh-my-claudecode:ask-navigatorを実行して次の決定を処理してください。」
マップを進める
マップ(リンクまたは番号)を指定して、または引数なし(進行中のマップを取得)で呼び出されます。チケットはオプションです。チケットがない場合、船長が選択する必要のあるチケットではなく、次のフロンティアチケットを取得します。
- マップを読み込む:低解像度ビュー。すべてのチケット本文を読むことはありません。必要に応じてチケットの全文にズームインします。
- 作業前にクレームする:チケットを船長に割り当てる(トラッカー)、または
Claimed-byを設定する(ローカル)ことを最初に行い、並行セッションがスキップできるようにします。オープンで未クレームのチケットは未クレームです。割り当てが不可能な場合(権限がない、ハンドルがない)、代わりにチケットコメントにクレームを記録します。 - タイプに従って解決する(チケットタイプを参照)。必要に応じてズームインします。解決に船長の入力が必要な場合は、Skillツールを「deep-interview」で呼び出します。
- 解決結果を記録する:回答を解決コメント/セクションとして投稿し、チケットをクローズします(完了として。目的地の範囲外と判断されたチケットは「未計画」としてクローズ)。マップのこれまでの決定に1行を追加します —
[<チケットタイトル>](リンク): <1行の要旨>。 - フロンティアを進める:回答によって指定可能になった霧を卒業させます(未指定から削除し、新しいチケットを作成し、エッジを配線します)。回答によってチケットが目的地の範囲外であることが明らかになった場合は、それをクローズし、対象外に1行を残します。決定によって無効になったチケットを更新または削除します。
- 堆積物(堆積物を参照)。
- 1チケット処理後に停止する。 1セッションあたり1解決がペースです。これはコンテキストウィンドウの予算であり、ポリシーではありません。セッション終了ポインタは、何が解決され、現在フロンティアに何があるかを示します。
チケットタイプ
すべてのチケットはHITL(船長と一緒に作業し、船長は自分のために発言する)またはAFK(ナビゲーターが単独で駆動する)のいずれかです。HITLチケットはライブのやり取りを通じてのみ解決されます。エージェントが船長の代わりを務めることは決してありません。
| タイプ | モード | 解決方法 | 使用タイミング |
|---|---|---|---|
research | AFK | バックグラウンドサブエージェント:一次情報源(公式ドキュメント、ソースコード、仕様)を調査し、引用付きのMarkdownファイルをdocs/research/<ticket-slug>.md(またはリポジトリの既存のノート規則が存在する場合はそれに従う)に残し、チケットからリンクする | 現在のワーキングディレクトリの外部にある知識に決定が依存している場合 |
loft | HITL | Skillツールを「loft」で呼び出す:使い捨てのアーティファクトがチケットの質問に答える — クリック可能なシェル内の純粋なロジックモジュール、または1つのルートの背後にある構造的に異なるUIバリアント。船長が反応し、回答は解決結果に組み込まれ、アーティファクトはloft/<name>ブランチに残る | 質問は正確だが、散文では解決できない — 説明ではなく、見たりクリックしたりする必要がある場合 |
grilling | HITL | Skillツールを「deep-interview」で呼び出す。船長が各ラウンドで決定する | 会話自体が解決策である場合 — デフォルトのケース |
task | HITL または AFK | ナビゲーターが可能な範囲で単独で駆動する。それ以外の場合は、船長に正確なチェックリストを渡す | 決定の妨げとなる手動作業(サービスのサインアップ、アクセスのプロビジョニング、データの移動による形状確認など)。決定の妨げを取り除くことによってのみ存在価値があり、目的地そのものを届けることではない |
回答は決してチケット本文の一部ではありません。解決時に記録されます。解決中に作成された資産はチケットからリンクされ、貼り付けられることはありません。
マップ本文
## 目的地
<このマップの終着点がどのようなものかの説明:この取り組みが目指す仕様、決定、または変更。1〜2行。すべてのセッションはチケットを選ぶ前にこれに方向づけられます。>
## ノート
<ドメイン、すべてのセッションが参照すべきスキル、固定の好み、先送りされたdrydock --checkの調査結果(そのまま)、解決されたdocumentLanguageタグ、ローカルモードのトラッカーモード注意事項>
## これまでの決定
<!-- 索引:クローズされたチケットごとに1行。関連性を判断するのに十分な内容。その後、詳細を知りたければリンクをズームイン。 -->
- [<クローズされたチケットタイトル>](リンク): <回答の1行要旨>
## 未指定
<!-- 範囲内だがまだチケット化できない霧。フロンティアが進むにつれて卒業します。 -->
## 対象外
<!-- 目的地の範囲外と判断された作業。クローズされ、卒業することはありません。 -->
霧かチケットか? 判断基準は、質問を今この瞬間に正確に述べられるかどうかであり、答えられるかどうかではありません。ブロックされていても、質問がすでに明確であればチケット化します。そのように明確に表現できない場合は未指定のままにします。霧をチケットサイズに事前に分割しないでください。1つの霧の塊が複数のチケットに卒業することも、0個になることもあります。対象外はスコープ設定の行為であり、経路上のステップではありません。スコープ(明確さではない)によって作業がそこに配置され、目的地が書き換えられた場合にのみ戻ってきます。
堆積物
解決結果は、確定した瞬間にShipyardの証跡に着地します。launchのフェーズ1が使用するのと同じスロットです。
- 解決結果によって確定または明確化された用語 →
CONTEXT.md用語集(1エントリ:定義、境界、解決されたあいまいさ) - ADRテストに合格した決定(元に戻すのが難しい、コンテキストなしでは驚くべき、真のトレードオフがある) →
docs/adr/NNNN-<slug>.md - ビジネスルールまたは背景事実 →
docs/business/(ビジネス質問ごとに1記事)
ヤードが敷設されていない場合(海図作成時に船長がdrydockを辞退した場合)、スキップせずに先送りします。各保留中の着地を、マップのNotes内のDeferred sediment見出しの下に1行として記録します。後の/oh-my-claudecode:launch実行のヤードゲートは、未敷設のサーフェスを調査結果として扱い、先送りされた行は何を最初に着地すべきかを正確に示します。
出口 — 引き継ぎ、構築しない
未解決のチケットがなく、未指定が空の場合、マップは完了です。その後:
- これまでの決定をミッションブリーフに圧縮します:目的、スコープ境界、非目標。経路が明確になったため、今すぐ記述可能です。
.omc/wayfinder/<map-slug>/brief.mdに書き込み、引き継ぎがコンテンツではなくポインタを渡すようにします。 - 推奨:「経路は明確です。
.omc/wayfinder/<map-slug>/brief.mdのブリーフを使用して/oh-my-claudecode:launchを実行してください。」マップは取り組みのログブックとして残ります。launchのヤードゲートがそこからのすべてのチェックを所有します。 - デフォルトのエントリはlaunchフェーズ1です(証跡はすでに半分埋まっており、そのフロンティアはすぐにクリアされます)。決定がすでに仕様のように読める場合にのみ、仕様を起草し、仕様パスでlaunchフェーズ2に入ることができます。
スコープと非目標
- デーモン、モード、常時稼働動作、ランタイムステートマシンはありません。マップは通常のトラッカーイシューまたはリポジトリファイルです。
- 霧として到着する受信リクエストは、ハーバーがルーティングする役割を担います。
/oh-my-claudecode:harborによって引き渡されたあいまいなイシューは、元のスレッドと署名済みの決定リンクを素材として、他の大まかなアイデアと同様に海図作成されます。 - Teamライフサイクル、タスクステータス、ランタイム状態を決して変更しません。成果物チケットを決して公開しません。垂直スライスのビルドチケットはlaunchのC3に属し、ナビゲーターはそれらに霧を事前にスライスしてはなりません。
- 記録以外の目的で決定を実行することは決してありません。唯一の例外は
taskチケットであり、決定の妨げを取り除くためにのみ実行されます。 - マップの「これまでの決定」は索引です。決定は正確に1つの場所、つまりそのチケットに存在します。
完了の定義
海図作成セッションは、船長が署名したマップと起動されたリサーチチケットをもって終了します。ワーキングセッションは、正確に1つの解決結果が記録され、フロンティアが進められ、セッション終了ポインタが発行された時点で終了します。取り組みは、経路が明確になり、ミッションブリーフが/oh-my-claudecode:launchの推奨とともに船長の手に渡った時点で終了します。ナビゲーターが船長に代わって行ったすべての決定は、記録された場所への1つのポインタで回答可能です。