Gemini CLI の Conductor 入門ガイド
KDnuggets は、Google の最新 CLI ツール「Gemini CLI」においてワークフロー自動化ツール「Conductor」を統合・活用するための具体的な導入手順と実装例を解説している。
キーポイント
Gemini CLI と Conductor の連携概要
Google が提供するコマンドラインインターフェースである Gemini CLI に、外部ワークフローオーケストレーターである Conductor を組み込むことで、単純なプロンプト実行を超えた自動化が可能になる。
具体的な導入ステップの解説
記事では、環境変数の設定や API キーの登録から始まり、Conductor のワークフロー定義ファイルを Gemini CLI 経由でトリガーするまでの段階的なセットアップ手順が詳述されている。
自動化ユースケースの実装例
単発のチャットではなく、データ処理やレポート生成など、複数のステップを必要とするタスクを Conductor で定義し、Gemini CLI をその実行エンジンとして利用する具体的なコード例が提示されている。
重要な引用
Getting Started with Conductor for Gemini CLI
leveraging Conductor to orchestrate complex workflows within the Gemini CLI environment
影響分析・編集コメントを表示
影響分析
この記事は、LLM ツールを単なるチャットボットの延長として扱うのではなく、既存のエンタープライズ自動化ツールと統合して業務プロセスに組み込むための実践的なガイドラインを提供しています。Gemini CLI の拡張性を示すことで、開発者がより複雑で信頼性の高い AI アプリケーションを構築する際のハードルを下げる効果が期待されます。
編集コメント
Gemini CLI の真価は、単なる対話機能ではなく、Conductor などのオーケストレーションツールとの連携によって発揮される自動化能力にあります。この導入ガイドは、実務レベルでの活用を望む開発者にとって即戦力となる内容です。

Gemini CLI を起動し、「この機能を実装したい」と指示するだけで、エージェントは即座にコードの記述を始めます。質問も確認もなく、計画すら立てません。10 分後には 4 つのファイルにまたがる 100 行以上の実装コードが完成しますが、それはあなたの実際のアーキテクチャとは合致していません。なぜなら、エージェントはあなたのアーキテクチャを知らないからです。ありそうな推測でコードを書き連ねただけで、当たったのは一部だけです。
今やあなたは AI が生成したコードの整理に追われながら、「自分で書いたほうが早かったのではないか」と後悔しているはずです。
これは Gemini 自体の問題ではありません。文脈(コンテキスト)が欠落していることが問題なのです。エージェントはあなたが何を作っているのか、どのライブラリを選んだのか、コーディング規約はどうなっているのか、その機能の本来の目的は何なのかを一切知りません。すべてのセッションはゼロから始まるのです。
Conductor**(2025 年 12 月 17 日にプレビュー版として公開)は、この課題を解決するために開発された Gemini CLI の拡張機能です。これが導入する「Context-Driven Development(CDD:文脈駆動型開発)」というワークフローでは、プロジェクトのコンテキスト、仕様、実装計画を、一時的なチャットウィンドウ内ではなく、リポジトリ内の Markdown ファイルに記述します。
エージェントはあなたのプロジェクトに触れるたびに、これらのファイルを読み込みます。スタイルガイド、技術スタックの決定、プロダクトの目標など、すべての情報がコードと共に永続し、引き継がれていくのです。
ローンチ以来、Conductor の GitHub リポジトリ は 3,600 以上のスターと 284 のフォークを記録しています。また、2026 年 4 月には、Conductor を使った新規プロジェクトの構築手順を解説する Google Codelab が公開されました。
この記事では、ゼロから始めて最初のインプリメンテーション・トラックを実行するまでに必要な知識をすべて解説します。
Conductor は実際になにをするのか
**
コマンドの詳細に入る前に、Conductor の基盤となるモデルの仕組みを理解しておくと、AI を活用した開発に対する考え方が変わります。
従来の AI によるコーディング・ワークフローは「ステートレス(状態を保持しない)」です。セッションを開いて要望を伝え、エージェントが作業し、セッションを終了します。次に同じツールを開いても、エージェントはあなたが何を作ったのか、なぜそれを作ったのか、そして次はどうすべきかといった情報を一切覚えていません。ある Google Cloud の開発者が評したように、このモデルは「一時的で、忘れっぽく、かつ無鉄砲なカウボーイ」のようなものです。
Conductor はこれを解決するために、「コンテキスト」を管理可能なアーティファクトとして扱います。毎回プロジェクトの状況を説明し直すのではなく、Markdown ファイルのセットを維持することで、その役割を永続的に果たさせます。エージェントは実行するたびにこれらのファイルを読み込みます。コーディング・スタンダードは常に読み込まれた状態になり、製品目標も常に視野に入ります。機能計画も常に表示されるため、文脈が失われることはありません。
Google の公式発表記事では、ベンジャミン・フランクリンの「計画を立てないことは、失敗する計画を立てることに他ならない」という言葉を引き合いに出し、この哲学の重要性を説いています。この考え方は Conductor のワークフローにも完璧に当てはまります。Conductor では、まずコンテキスト(文脈)を整え、次に機能の仕様を決め、実装方法を計画し、最後にコードを書くという順序で進めます。この手順は、毎回必ず守られます。
アーキテクチャ的には、Conductor は 3 つのレイヤーが連携して動作します。
- コマンド層:ユーザーが直接操作する部分で、Gemini CLI 内にある 6 つのスラッシュコマンドがこれに該当します。
- アーティファクト層:リポジトリ内の conductor ディレクトリを指し、プロジェクトの状態を保持するための Markdown ファイルや JSON ファイルが格納されます。
- バージョン管理層:Git がこれに該当し、Conductor はタスクごとのコミットを作成したり、ロールバック機能をサポートするために Git を活用します。

この仕組みは、ゼロから始めるグリーンフィールドプロジェクトにも、既存のコードベースを持つブラウンフィールドプロジェクトの両方に対応しています。特にブラウンフィールドへの対応は強調する価値があります。なぜなら、多くのチュートリアルでは新規作成したクリーンなプロジェクトしかデモしていないからです。既存のリポジトリで /conductor:setup を実行すると、Conductor は自動的にコードベースを分析し、.gitignore や .geminiignore の設定を尊重しながら、技術スタックやアーキテクチャを推測します。これにより、Conductor 自身で把握できる情報を手動で入力する必要がなくなります。
# 事前準備とインストール
Conductor をインストールする前に、以下の 3 つの準備が必要です。
Gemini CLI はインストール済みで動作している必要があります。npm を使ってグローバルにインストールしましょう。
Gemini CLI のグローバルインストール
npm install -g @google/gemini-cli
インストールの確認
gemini --version
もし権限エラーが発生した場合は、root として実行するのではなく、nvm などの Node バージョンマネージャーを使用してください。インストール後はターミナルを再起動し、gemini コマンドが PATH に追加されるようにします。
Gemini CLI の認証には、Google API キーまたは Vertex AI の設定が必要です。初めて gemini を実行すると、認証プロセスが始まります。Vertex AI を選択して GOOGLE_API_KEY 環境変数の設定ガイドに従うか、個人利用の場合はブラウザベースの OAuth フローを完了してください。
プロジェクトディレクトリには Git が初期化されている必要があります。Conductor はタスクごとにコミットを作成し、その機能の一部として Git のリバート機能を利用します。新規プロジェクトから始める場合は以下の手順を実行してください。
未初期化の場合は新しい Git リポジトリを生成
mkdir my-project && cd my-project
git init
git commit --allow-empty -m "Initial commit"
これらを設定したら、Conductor をインストールします。
Conductor 拡張機能のインストール
gemini extensions install https://github.com/gemini-cli-extensions/conductor
--auto-update フラグを指定すると、新しいリリースが自動的に適用されます。
多くのユーザーに推奨される設定です。
gemini extensions install https://github.com/gemini-cli-extensions/conductor --auto-update
インストールを実行すると、GitHub リポジトリから拡張機能がダウンロードされ、6 つの Conductor コマンドが登録されます。また、エントリーポイントとして GEMINI.md コンテキストファイルを設定し、プランディレクトリを /conductor として指定します。この一連のプロセスは数秒で完了します。
Gemini CLI を起動して「/conductor」と入力すれば、インストールが成功したか確認できます。
gemini
次に Gemini CLI のセッション内で以下を入力してください。
/conductor
setup, newTrack, implement, status, revert, review というサブコマンドのリストが表示されれば準備完了です。
# /conductor:setup でプロジェクトをセットアップする
このコマンドは、プロジェクトごとに 1 回だけ実行してください。他のすべての機能が依存する基盤となる処理を行います。Gemini CLI のセッション内で、プロジェクトディレクトリから以下を実行します。
/conductor:setup
Conductor は即座にプロジェクトの分析を開始します。既存のプロジェクト(ブラウンフィールド)の場合、.gitignore を尊重して node_modules や __pycache__ といったトークン消費の大きいディレクトリを除外しつつ、コードベースをスキャンして現状を把握します。一方、新規プロジェクトの場合は、何を作ろうとしているかを説明するよう求められます。
どちらのパターンでも、その後、新しい conductor/ ディレクトリ内に作成される 6 つのアートファクト(成果物)を埋めるためのガイダンス付き Q&A が始まります。
conductor/
├── product.md # プロダクトのビジョン、ユーザー、目標、主要機能、成功基準
├── product-guidelines.md # UI の標準、トーン&マナー、エラーハンドリングの振る舞い
├── tech-stack.md # 使用する言語、フレームワーク、データベース、インフラ
├── workflow.md # TDD(テスト駆動開発)への志向、コミット戦略、検証プロトコル
├── code_styleguides/ # 言語固有のコーディング規約(検出された言語ごとに自動生成)
│ ├── python.md
│ ├── typescript.md
│ └── ...
└── tracks.md # すべてのトラックを登録するマスターレジストリ(初期状態は空)
各ファイルには特定の役割が割り当てられています。product.md は「何を作り、誰のために作るのか」という問いに答えるものです。また、tech-stack.md を用意することで、エージェントがあなたのスタック範囲外のライブラリやパターンを提案するのを防げます。workflow.md では、テスト駆動開発(TDD)を採用するか、コミット戦略をどうするか、各フェーズを進める前に必要な手動検証ステップは何かといったルールを定義します。さらに code_styleguides/ ディレクトリには、Conductor が用意した言語別のガイドテンプレートが初期状態で含まれており、必要に応じてカスタマイズできます。
セットアップが完了すると、プロジェクト内に conductor/ ディレクトリが表示されます。これをリポジトリにコミットしましょう。
Conductor の文脈をリポジトリへ反映する
git add conductor/
git commit -m "chore: initialize Conductor context-driven development"
この先、リポジトリをクローンして Gemini CLI を起動するチームメンバーは、すぐにプロジェクトの全体コンテキストを利用できるようになります。オンボーディングのための会話も不要です。
# /conductor:newTrack で機能開発を開始する
**
Conductor において「トラック」は、作業の単位を表す概念です。新機能の開発、バグ修正、アーキテクチャの変更など、一つの仕事に対して一つのトラックを割り当てます。この仕組みにより、エージェントに明確な作業範囲が与えられ、目的外へ逸走するのを防ぐ核心的な役割を果たします。
開発したい内容を記述してトラックを開始しましょう:
/conductor:newTrack "設定ページにダークモードの切り替えボタンを追加し、その設定を localStorage に保存する"
引数なしで /conductor:newTrack を実行し、Conductor のプロンプトに応じて対話形式で機能の詳細を記述することも可能です。
Conductor はあなたの記述を受け取り、conductor/ ディレクトリ内のプロジェクト全体コンテキストを読み込んだ上で、新しい conductor/tracks/<track_id>/ディレクトリ内に以下の 3 つのファイルを生成します:
conductor/tracks/
└── dark_mode_20260614/
├── spec.md # 「何となぜ」を定義 -- 要件、目標、技術的制約、対象外項目
├── plan.md # フェーズ別・タスクレベルの実装チェックリスト
└── metadata.json # トラック ID、作成日、現在のステータス
トラック ID の形式は「短縮名_YYYYMMDD」です。例えば 2026 年 6 月 14 日に作成されたダークモード機能のトラックなら、dark_mode_20260614 となります。この命名規則により、ファイルシステム上でトラックを時系列順に整理できます。
spec.mdには、このプロジェクトが解決する課題や目標、技術要件、そして明確に範囲外とされる項目が記載されています。特に「範囲外」のセクションは見た目以上に重要で、実装すべき機能を過剰に作り込む(ゴールド・プレートする)のを防ぐ役割を果たします。
plan.mdは、フェーズごとに整理された実装チェックリストです。ダークモード機能の実装例を以下に示します。
実装計画 - ダークモード切り替え
フェーズ 1:基盤構築
- [ ] タスク:
themeキーを localStorage スキーマに追加し、プロジェクトの README に文書化する - [ ] タスク:システム設定をデフォルト値とする
useThemeフックを作成し、theme値の読み書きを行う - [ ] タスク:
useThemeのユニットテストを作成する(デフォルト動作、localStorage の読み込み・書き込みを検証) - [ ] タスク:Conductor - ユーザーマニュアル検証「基盤構築」(ワークフロー.md に記載のプロトコルに従う)
フェーズ 2:UI コンポーネント
- [ ] タスク:アクセシビリティを考慮した切り替えボタン(aria-label、キーボード対応)を持つ
ThemeToggleコンポーネントを実装する - [ ] タスク:
useThemeから取得した現在のテーマ値に基づき、条件付きで CSS クラスを適用する - [ ] タスク:
ThemeToggleのコンポーネントテストを作成する(正しくレンダリングされるか、クリック時に切り替えイベントが発火するかを検証) - [ ] タスク:Conductor - ユーザーマニュアル検証「UI コンポーネント」(ワークフロー.md に記載のプロトコルに従う)
フェーズ 3:設定ページへの統合
- [ ] タスク:
ThemeToggleを設定ページコンポーネントにインポートする - [ ] タスク:ページのリフレッシュや新しいブラウザタブを開いても、設定が保持されるか確認する
- [ ] タスク:ダークモード有効化を含む設定ページ全体の統合テストを作成する
- [ ] タスク:Conductor ユーザーマニュアルの「設定ページ統合」項目(ワークフロー.md に記載のプロトコル)を確認する
/conductor:implement を実行する前に、この計画を必ず確認してください。これは Conductor が設計思想として重視している「人間が介在する瞬間」です。もしフェーズの内容に誤りがある場合、タスクが抜けている場合、あるいは範囲が意図したよりも広すぎる場合は、ここで plan.md を編集してください。一度 implement コマンドを実行すると、Conductor はこの計画に基づいてコードをコミットします。実装の途中で方針を変えることも可能ですが、そのコストはここで修正するよりも高くなります。
# /conductor:implement で実装を進める
**
計画に満足したら、以下のコマンドを実行してください:
/conductor:implement
ここが Conductor の真価が発揮される瞬間です。Conductor は plan.md を読み込み、チェックされていない最初のタスクを見つけて実行を開始します。タスクの実行中、チェックボックスは [ ] から [~](進行中)に更新され、完了すると [x] に変わり、Git コミットが作成されます。コミットはフェーズ単位やセッション単位ではなく、タスクごとに 1 つずつ作成されるのが特徴です。
Conductor が作業を進めるにつれて、以下のようにコミット履歴が蓄積されていきます:
git log --oneline
出力例:
必ず JSON 形式で返してください。translation フィールドのみ。他のフィールドは一切追加しないこと — 余計なフィールドを書こうとして本文がトークン上限で打ち切られる事故を防ぐため:
{"translation": "リライト全文"}
a3f9c12 feat(theme): write integration test for settings page dark mode
b7e2d45 feat(theme): import ThemeToggle into Settings page
c1a8f90 feat(theme): add accessible toggle button with aria-label
d4b3e21 feat(theme): create ThemeToggle component with conditional CSS
e5c6d78 test(theme): write unit tests for useTheme hook
f7d9a34 feat(theme): create useTheme hook with localStorage persistence
各フェーズの終了時に、Conductor は手動確認のために一時停止します。現在のフェーズが正常に動作していることを確認するまで、次のフェーズへは進みません。これはワークフローにおける「約束よりも実証を優先する」という原則です。エージェントが単に「機能しています」と言うだけでなく、計画を進める前に実際に動作を確認する必要があります。
TDD(テスト駆動開発)ワークフロー(workflow.md で設定済み)を使用している場合、Conductor は自動的に次のサイクルに従います。まずテストを作成して失敗することを確認し、次にコードを実装してテストが合格することを確認します。その後、次のタスクへ進みます。これを手動で指示する必要はありません。ワークフローファイルが自動的に処理してくれます。
Conductor の状態は、各タスクの間にディスクに保存されます。そのため、いつでも中断してラップトップを閉じたり、マシンを切り替えたり、翌日になってから再度 /conductor:implement を実行したりできます。実行すると、未チェックの最初のタスクから再開します。実装内容はチャット履歴にあるのではなく、plan.md ファイルに保存されています。
実装中に方針を変更する必要がある場合は、plan.md を直接編集してください。タスクを追加・削除したり、フェーズの順序を並べ替えたりできます。Conductor は毎回実行時にファイルを読み直すため、変更は即座に反映されます。
すべてのフェーズの確認とタスクの完了チェックが終われば、Conductor はそのトラックのアーカイブ化を提案します。具体的には、conductor/tracks/dark_mode_20260614/ ディレクトリを conductor/tracks/archive/dark_mode_20260614/ へ移動させ、tracks.md ファイルに完了フラグを立てます。これにより、Git の履歴には実装の全記録が確実に残されます。
# サポートコマンド
setup、newTrack、implement の 3 つのコマンドがメインのワークフローを担いますが、以下の 4 つのコマンドで周辺処理もすべてカバーできます。
// /conductor:status
プロジェクトの全アクティブトラックにおける進捗状況を確認したいときは、いつでもこのコマンドを実行してください:
/conductor:status
Conductor は conductor/tracks.md と各アクティブトラック内の plan.md を読み取り、以下のようなサマリーを返します。
Current Date/Time: Saturday, June 14, 2026
Project Status: 🟡 Active
Active Tracks:
- dark_mode_20260614 -- Phase 2 of 3 | 7/12 tasks complete (58%)
- api_auth_20260610 -- Phase 1 of 4 | 3/5 tasks complete (60%)
Next Action Needed:
- Run /conductor:implement to continue dark_mode_20260614 (current track)
休憩後に作業を再開した際、どこまで進んだかを確認したいときに便利なコマンドです。
// /conductor:revert
何か問題が発生して作業を取り消す必要がある場合:
/conductor:revert
コンダクター(Conductor)は、単なる git revert とは異なり、Git の履歴を論理的に理解しています。コミットハッシュではなく、「トラック」「フェーズ」「個々のタスク」といった作業の単位を認識するのです。
例えば、あるトラックの最後のフェーズを元に戻したい場合でも、コンダクターはそのフェーズに属するコミット(タスクごとのコミット構造に基づいて)を特定し、きれいにリバージョンします。さらに、影響を受けたタスクのチェックボックスを外して plan.md を更新するため、/conductor:implement コマンドを実行すれば、作業をやり直すことができます。
これは実務において非常に重要です。エージェントが 3 つのフェーズにまたがる 14 のコミットで 11 ファイルに手を加えた後、コミットハッシュを使って巻き戻しを行うのは、手動では地獄のような作業になります。コンダクターは、その考古学的な調査を代行してくれるのです。
// /conductor:review
実装が完了し、プルリクエストを開く前に以下のコマンドを実行します。
/conductor:review
コンダクターは、完了した plan.md と conductor/product-guidelines.md を読み込み、品質チェックを行います。ここでは、「計画で指定された内容」と「実際に実装された内容」の乖離がないか、また製品ガイドラインに違反していないか(エラーハンドリングの一貫性不足、アクセシビリティ属性の欠落、スタイルガイド違反など)を確認します。
これは、製品の仕様書をすべて読み込み、機能が本来何を行うべきかを正確に理解している AI コードレビュアーのようなものです。マージ前に修正すべきレビューレポートが出力されます。
// トークン使用量の確認
Conductor は、コマンド実行ごとにプロジェクトファイルを読み込むコンテキスト駆動型のアプローチを採用しています。この仕組みにより、特に大規模なプロジェクトのセットアップや計画フェーズでは、トークン消費量が増加する傾向があります。
現在のセッションでの使用状況を確認するには、以下のコマンドを実行してください:
/stats model
チームにおける Conductor の活用方法
Conductor ワークフローの中で最も見落とされがちなのが、conductor/ ディレクトリをコミットした後に何が起こるかという点です。
Conductor が生成するすべてのファイル — product.md、tech-stack.md、workflow.md、スタイルガイド、各トラックの仕様書や計画書など — は、他のファイルと同様にリポジトリ内に保存されます。チームメンバーがリポジトリをプルすると、プロジェクト全体のコンテキストが即座に利用可能になります。その後、Gemini CLI を起動して /conductor:status を実行すれば、現在アクティブなすべてのトラックと、各トラックの実装計画における現在の位置を一目で把握できます。
これはオンボーディングのプロセスを大きく変えます。新規参画した開発者が、技術スタックの選定理由やコーディング規約、進行中の機能について理解するために 2 時間にも及ぶ説明を受ける必要はなくなります。conductor/product.md と conductor/tech-stack.md を読み、/conductor:status を実行するだけで、プロジェクトの全体像と運用状況が把握できるのです。
一貫性という点でも、Conductor の恩恵は大きいです。AI 支援によるプロジェクトへの貢献はすべて同じ基準に従うことになります。なぜなら、すべてのエージェント・セッションが同じコンテキストファイルを読み込むからです。
ある開発者の Conductor セッションで書かれたコードと、別の開発者のセッションで書かれたコードは、どちらも code_styleguides/ ディレクトリを共通のアンカー(拠り所)としているため、スタイルが統一されます。これはプロジェクトがスケールするほど維持が難しくなる「チーム調和」を実現する機能です。Conductor はこれを、開発者が手動で強制することに頼るのではなく、ワークフローに構造的に組み込むことで実現しています。
# ダークモード切り替え機能の追加:完全なウォークスルー
具体的な機能実装において、最初から最後まで Conductor ワークフローがどう動くかを見てみましょう。これが、実際のプロジェクトで最初のトラックを作成する際の参考になります。
// ステップ 1: プロジェクトディレクトリから Gemini CLI を起動
cd your-project
gemini
// ステップ 2: このプロジェクトで Conductor のセットアップがまだの場合、まず setup コマンドを実行
/conductor:setup
ガイド付きの質問に答えてください。完了したら、conductor/ ディレクトリをコミットします。
// ステップ 3: トラックを作成する
/conductor:newTrack "Add a dark mode toggle to the settings page, persisting the user preference to localStorage and defaulting to system preference on first visit"
Conductor が conductor/tracks/dark_mode_20260614/ ディレクトリ内に、spec.md と plan.md を生成します。
// ステップ 4: 実行前に必ずプラン(plan.md)を確認する
plan.md をエディタで開き、すべてのタスクを読み込みましょう。各フェーズの構成に問題がないか確認します。もし不足しているタスクや不要なフェーズ、範囲が広すぎる箇所があれば、その場でファイルを編集して保存してください。Conductor は実行するたびにこのファイルを再読み込みするため、編集内容は即座に反映されます。
// ステップ 5:実装を実行する
/conductor:implement
Conductor がタスクを一つずつ処理し、随時コミットを作成していく様子を見守りましょう。フェーズ 1 の完了時には一時停止して手動での検証を求めます。実際に動作を確認し、問題がなければ承認してください。そうすると Conductor は自動的にフェーズ 2 へ進みます。
// ステップ 6:いつでも進行状況を確認する
/conductor:status
// ステップ 7:完了した実装を見直す
/conductor:review
レビューで指摘された課題はすべて解消してください。その後、クリーンな実装と完全なテストスイート、機能ごとのタスク単位で整理された Git の履歴、そして「何を作り、なぜそのように設計したか」を明確に記した仕様書を含むプルリクエストを作成します。
この一連の流れ——セットアップからレビューまで——は、その後のすべての機能開発において繰り返し可能です。conductor/ディレクトリには、実装された内容や各決定の背景、プロジェクトが準拠する基準などが、生きた記録として蓄積されていきます。
- トークンの消費は現実的な問題です。Conductor は、すべてのコマンド実行時にプロジェクトのコンテキストファイルを読み込みます。小規模なプロジェクトではその影響は無視できるレベルですが、conductor ディレクトリに多くのトラックを持つ大規模な既存プロジェクト(ブラウンフィールド)では、コストが積み重なります。特にセットアップや計画フェーズにおいて顕著です。/stats モデルを使って利用状況を監視し、完了したトラックは定期的にアーカイブして、アクティブな tracks.md を軽量に保つことをお勧めします。
- --auto-update フラグの使用価値は十分にあります。Conductor はプレビュー版として 2025 年 12 月以降頻繁にリリースを続けており、このフラグを使えば手動で再インストールしなくても自動的に改善が適用されます。
- コンテキストの質が出力の質を決めます。これはコンテキスト駆動型開発の裏返しでもあります。曖昧な product.md は計画も曖昧なものにし、テストフレームワークを明記していない tech-stack.md は、推測に基づいた計画を生み出します。セットアップ用アートの作成に費やす時間は、その後のすべてのトラックにおいて大きなリターンをもたらします。
- Conductor がコードレビューを完全に代替するわけではありません。/conductor:review は明らかなズレやスタイルの問題を検出するための有用なチェックですが、マージ前の人間による最終確認の代わりにはなりません。これは最終的なゲートではなく、最初の通過点として捉えてください。
結論
Conductor がもたらす変化の本質は、速度の向上ではありません。コーディングに入る前に仕様書や計画を立てることは、最初の 1 時間においては、いきなり実装に着手するよりも確かに遅くなります。しかし、その後の成果こそがすべてです。セッションを跨いでも軌道から外れないエージェント、あなたが中断した場所からすぐに再開できるチームメイト、すべての貢献者が同じ文脈に基づいて作業することで一貫性のあるコードベースが生まれること——これらが Conductor がもたらす真の価値です。
Google は Conductor を「ドキュメントを唯一の信頼源(ソース・オブ・トゥルース)として扱う」ツールであり、「Gemini をエンジニアリングチームの真なる拡張機能として機能させる」と位置付けています。これは正しい記述ですが、より実用的な視点で捉えるならこう言えます。Conductor はエージェントの振る舞いを予測可能にするのです。実際にリリースされるコードを書く際、必要なのはまさにこの「予測可能性」です。
セットアップには 1 セッションで十分です。そして、そこで構築された文脈は、その後のすべてのセッションにわたって持続します。インストールコマンドを 1 つ実行するだけで試せるツールにとって、これは非常に優れたコストパフォーマンス比と言えるでしょう。
まずはインストールし、次のプロジェクトで /conductor:setup を実行して、コードの最初の行が書かれる前に計画がどのように見えるかを確認してみてください。
// Resources
- Conductor GitHub Repository
- Google Developers Blog — Conductor announcement
- Google Codelab — Plan and Build Apps with Gemini CLI Conductor
- Gemini CLI Extensions directory
シトゥ・オミデ(Shittu Olumide)氏は、ソフトウェアエンジニアであり技術ライターです。最先端のテクノロジーを活用して魅力的な物語を紡むことに情熱を注いでおり、細部へのこだわりと複雑な概念を平易に解説する才能を持っています。
Twitter では @Shittu_Olumide_ で活動しています。
原文を表示

**
When you open Gemini CLI, describe a feature you need to build, and the agent immediately starts writing code. No questions, no clarifications, no plan. Ten minutes later, you have a hundred lines of implementation across four files and none of it matches your actual architecture because the agent never knew your architecture. It made plausible guesses. Some were right. Most weren't. Now you're untangling AI-generated code while wondering if it would have been faster to just write it yourself.
That's not a Gemini problem. That's a context problem. The agent doesn't know what you're building, what libraries you've chosen, what your coding standards are, or what the feature is actually supposed to do. Every session starts from zero.
Conductor**, released in preview on December 17, 2025, is a Gemini CLI extension built to fix this. It introduces a workflow called Context-Driven Development (CDD), a structured approach where your project context, specs, and implementation plans live in Markdown files inside your repository, not inside an ephemeral chat window. The agent reads those files every time it touches your project. Your style guides, your tech stack decisions, your product goals — all of it persists and travels with the code.
Since launch, the Conductor GitHub repository has accumulated over 3,600 stars and 284 forks. A Google Codelab walking through a full greenfield project with Conductor went live in April 2026. This article covers everything you need to go from zero to running your first implementation track.
# What Conductor Actually Is
**
Before getting into the commands, it helps to understand the model Conductor is built on, because it changes how you think about AI-assisted development.
Standard AI coding workflows are stateless. You open a session, describe what you want, the agent works, you close the session. Next time you open it, the agent remembers nothing about what you built, why you built it, or what comes next. As one Google Cloud developer put it, the model is *"transient, forgetful, and a bit of a cowboy."*
Conductor solves this by making context a managed artifact. Instead of describing your project fresh every session, you maintain a set of Markdown files that do that job permanently. The agent reads them on every run. Your coding standards are always loaded. Your product goals are always in scope. The feature plan is always visible.
Google's announcement post invokes Benjamin Franklin's "failing to plan is planning to fail" to describe the philosophy, and the framing holds. The Conductor workflow is: build context first, spec the feature, plan the implementation, then write code. In that order, every time.
Architecturally, Conductor operates as three layers working together.
- The Command Layer is what you interact with — six slash commands inside Gemini CLI
- The Artifact Layer is a conductor/ directory in your repo containing Markdown and JSON files that hold project state
- The Version Control Layer is Git, which Conductor uses to create per-task commits and support its rollback functionality

This works for both greenfield projects (starting from scratch) and brownfield projects (existing codebases). The brownfield support is worth highlighting because most tutorials only demo clean-slate projects. When you run /conductor:setup on an existing repo, Conductor analyzes your codebase, respects your .gitignore and .geminiignore patterns, and infers your tech stack and architecture — so you're not manually filling in context Conductor can figure out itself.
# Prerequisites and Installation
You need three things before installing Conductor.
Gemini CLI** must be installed and working. Install it globally with npm:
# Install Gemini CLI globally
npm install -g @google/gemini-cli
# Verify installation
gemini --versionIf you run into permission errors, use a Node version manager like nvm rather than running as root. After installing, restart your terminal so the gemini binary is in your PATH.
A Google API key or Vertex AI setup is required for Gemini CLI authentication. When you first run gemini, it will prompt you to authenticate. Select Vertex AI and follow the guide to set your GOOGLE_API_KEY environment variable, or complete the browser-based OAuth flow for personal use.
Git must be initialized in your project directory. Conductor creates per-task commits and relies on Git for its revert functionality. If you're starting a new project:
# Initialize a new git repository if you haven't already
mkdir my-project && cd my-project
git init
git commit --allow-empty -m "Initial commit"With those in place, install Conductor:
# Install the Conductor extension
gemini extensions install https://github.com/gemini-cli-extensions/conductor
# The --auto-update flag keeps Conductor updated to new releases automatically.
# Recommended for most users.
gemini extensions install https://github.com/gemini-cli-extensions/conductor --auto-updateThe installation downloads the extension from the GitHub repository, registers the six Conductor commands, configures a GEMINI.md context file as the entry point, and sets /conductor as the plan directory. The whole process takes a few seconds.
Verify it worked by launching Gemini CLI and typing /conductor:
geminiThen inside the Gemini CLI session:
/conductorYou should see the full list of sub-commands: setup, newTrack, implement, status, revert, and review. If you see those, you're ready.
# Setting Up Your Project with /conductor:setup
**
Run this once per project. It's the command that builds the foundation everything else depends on. Inside your Gemini CLI session, from your project directory:
/conductor:setupConductor will immediately start analyzing your project. For a brownfield project, it scans your codebase to infer what it's working with — respecting .gitignore to avoid token-heavy directories like node_modules or __pycache__. For a new project, it asks you to describe what you're building.
Either way, it then walks you through a guided Q&A to populate six artifacts it creates inside a new conductor/ directory:
conductor/
├── product.md # Product vision, users, goals, key features, success criteria
├── product-guidelines.md # UI standards, voice and tone, error handling behavior
├── tech-stack.md # Languages, frameworks, databases, infrastructure
├── workflow.md # TDD preferences, commit strategy, verification protocol
├── code_styleguides/ # Language-specific style guides (auto-generated per language found)
│ ├── python.md
│ ├── typescript.md
│ └── ...
└── tracks.md # Master registry of all tracks (starts empty)Each artifact plays a specific role. product.md answers the "what are we building and for whom" question. tech-stack.md ensures the agent never suggests a library or pattern outside your stack. workflow.md** is where you define whether you want test-driven development (TDD), what your commit strategy looks like, and what manual verification steps you require before phases proceed. code_styleguides/ contains per-language guides that Conductor ships with pre-populated templates for, which you can then customize.
Once setup completes, you'll see the conductor/ directory in your project. Commit it:
# Commit the conductor context to your repo
git add conductor/
git commit -m "chore: initialize Conductor context-driven development"From this point on, any teammate who clones the repo and opens Gemini CLI has the full project context available immediately — no onboarding conversation needed.
# Starting a Feature with /conductor:newTrack
**
A track is how Conductor represents a unit of work. One feature, one bug fix, one architectural change — one track. Tracks give the agent a defined scope to work within, which is the core mechanism that prevents it from wandering.
Start a track by describing what you want to build:
/conductor:newTrack "Add a dark mode toggle to the settings page, persisting the preference to localStorage"You can also call /conductor:newTrack without an argument and describe the feature interactively when Conductor prompts you.
Conductor takes your description, reads the full project context from conductor/, and generates three files inside a new conductor/tracks/<track_id>/ directory:
conductor/tracks/
└── dark_mode_20260614/
├── spec.md # The "what and why" -- requirements, goals, technical constraints, out of scope
├── plan.md # The phased, task-level implementation checklist
└── metadata.json # Track ID, creation date, current statusThe track ID format is shortname_YYYYMMDD, so dark_mode_20260614 for a dark mode track created on June 14, 2026. This keeps tracks sorted chronologically in your file system.
spec.md** contains the specification: what problem this solves, what the goals are, the technical requirements, and explicitly what is out of scope. The out-of-scope section matters more than it looks — it prevents the agent from gold-plating a feature when it should be shipping it.
plan.md is the implementation checklist, organized into phases. A dark mode feature might look like this:
# Implementation Plan - Dark Mode Toggle
## Phase 1: Foundation
- [ ] Task: Add `theme` key to the localStorage schema and document it in the project README
- [ ] Task: Create a `useTheme` hook that reads/writes the `theme` value and defaults to system preference
- [ ] Task: Write unit tests for `useTheme` -- verify default behavior, localStorage read, localStorage write
- [ ] Task: Conductor - User Manual Verification 'Foundation' (Protocol in workflow.md)
## Phase 2: UI Component
- [ ] Task: Build `ThemeToggle` component with accessible toggle button (aria-label, keyboard support)
- [ ] Task: Apply conditional CSS classes based on the current theme value from `useTheme`
- [ ] Task: Write component tests for `ThemeToggle` -- renders correctly, fires toggle on click
- [ ] Task: Conductor - User Manual Verification 'UI Component' (Protocol in workflow.md)
## Phase 3: Settings Page Integration
- [ ] Task: Import `ThemeToggle` into the Settings page component
- [ ] Task: Verify that preference persists across page refreshes and new browser tabs
- [ ] Task: Write integration test for the full settings page with dark mode enabled
- [ ] Task: Conductor - User Manual Verification 'Settings Page Integration' (Protocol in workflow.md)Read this plan before you run /conductor:implement. This is the human-in-the-loop moment Conductor is designed around. If the phases are wrong, if a task is missing, or if the scope is wider than you intended, edit plan.md now. Once you run implement, Conductor commits code against this plan. Changing course mid-implementation is possible but more expensive than catching it here.
# Implementing with /conductor:implement
**
Once you're satisfied with the plan:
/conductor:implementThis is where Conductor earns its place. It reads plan.md**, picks up the first unchecked task, and starts working through the list. As it starts a task, it updates the checkbox from [ ] to [~] (in progress). When it completes the task, it updates it to [x] and creates a Git commit — one commit per completed task. Not per phase, not per session, per task.
You'll see commits accumulating as Conductor works:
git log --onelineOutput example:
a3f9c12 feat(theme): write integration test for settings page dark mode
b7e2d45 feat(theme): import ThemeToggle into Settings page
c1a8f90 feat(theme): add accessible toggle button with aria-label
d4b3e21 feat(theme): create ThemeToggle component with conditional CSS
e5c6d78 test(theme): write unit tests for useTheme hook
f7d9a34 feat(theme): create useTheme hook with localStorage persistenceAt the end of each phase, Conductor pauses for manual verification. You don't proceed to the next phase until you confirm the current one is working. This is the "proof over promise" principle from the workflow — the agent doesn't just say it works, you verify it works before the plan advances.
If you're in a TDD workflow (configured in workflow.md), Conductor follows the cycle automatically: write the test first, confirm it fails, implement the code, confirm the test passes, then move to the next task. You don't have to tell it to do this; the workflow file handles it.
Conductor's state is saved to disk between tasks, which means you can stop at any point, close your laptop, switch machines, come back the next day, and run /conductor:implement again. It picks up from the first unchecked task. The implementation doesn't live in your chat history. It lives in plan.md.
If you need to change course mid-implementation, you can edit plan.md directly. Add a task, remove one, re-order phases. Conductor reads the file fresh on each run, so your changes are picked up immediately.
Once all phases are verified and all tasks are checked off, Conductor offers to archive the track — moving conductor/tracks/dark_mode_20260614/ to conductor/tracks/archive/dark_mode_20260614/ and updating tracks.md to mark it complete. Your Git history retains the full implementation record.
# The Supporting Commands
**
The three core commands — setup, newTrack, implement** — cover the main workflow. These four handle everything around it.
// /conductor:status
Run this at any time to see where your project stands across all active tracks:
/conductor:statusConductor reads conductor/tracks.md and each active track's plan.md and returns a summary:
Current Date/Time: Saturday, June 14, 2026
Project Status: 🟡 Active
Active Tracks:
* dark_mode_20260614 -- Phase 2 of 3 | 7/12 tasks complete (58%)
* api_auth_20260610 -- Phase 1 of 4 | 3/5 tasks complete (60%)
Next Action Needed:
* Run /conductor:implement to continue dark_mode_20260614 (current track)This is the command to run when you sit down after a break and need to remember where you were.
// /conductor:revert
When something goes wrong and you need to undo work:
/conductor:revertConductor is Git-aware in a way that raw git revert isn't. It understands logical units of work — tracks, phases, individual tasks — rather than commit hashes. If you want to revert the last phase of a track, Conductor identifies the commits that belong to that phase (using its per-task commit structure) and reverts them cleanly. It also updates plan.md to uncheck the affected tasks, so you can re-run /conductor:implement to redo the work.
This matters practically because rolling back by commit hash when an agent has touched 11 files across 14 commits over three phases is a manual exercise in misery. Conductor handles the archaeology for you.
// /conductor:review
After implementation completes, before you open a pull request:
/conductor:reviewConductor reads your completed plan.md alongside conductor/product-guidelines.md and performs a quality check. It's looking for drift between what the plan specified and what was implemented, and for violations of your product guidelines — inconsistent error handling, missing accessibility attributes, style guide violations.
Think of it as an AI code reviewer who has read your entire product spec and knows exactly what the feature was supposed to do. The output is a review report you can address before the code merges.
// Checking Token Usage
Conductor's context-driven approach reads your project files on every command, which increases token consumption — especially for larger projects during setup and planning phases. Check current session usage with:
/stats model# How Conductor Works for Teams
**
One of the most underappreciated parts of the Conductor workflow is what happens when you commit the conductor/ directory.
Every file Conductor creates — product.md, tech-stack.md, workflow.md**, the style guides, every track spec and plan — lives in your repository like any other file. When a teammate pulls the repo, they have the entire project context immediately. When they open Gemini CLI and run /conductor:status, they can see every active track and exactly where each one is in the implementation plan.
This changes what onboarding looks like. A new developer joining the project doesn't need a two-hour walkthrough to understand the tech stack choices, the coding standards, or what features are in flight. They read conductor/product.md and conductor/tech-stack.md, run /conductor:status, and they have the operational picture.
The consistency benefit is equally significant. Every AI-assisted contribution to the project follows the same standards, because every agent session reads the same context files. One developer's Conductor session writes code in the same style as another developer's, because both sessions are anchored to the same code_styleguides/ directory. This is the "team harmony" property that gets harder to maintain as projects scale — Conductor builds it into the workflow structurally rather than relying on developers to enforce it manually.
# A Full Walkthrough: Adding a Dark Mode Toggle
**
Here's what the complete Conductor workflow looks like from start to finish on a concrete feature. Use this as the reference for your first track on a real project.
// Step 1: Open Gemini CLI from your project directory
cd your-project
gemini// Step 2: If you haven't set up Conductor for this project, run setup first
/conductor:setupAnswer the guided questions. When you're done, commit the conductor/ directory.
// Step 3: Create the track
/conductor:newTrack "Add a dark mode toggle to the settings page, persisting the user preference to localStorage and defaulting to system preference on first visit"Conductor generates spec.md and plan.md** in conductor/tracks/dark_mode_20260614/.
// Step 4: Read the plan before running anything
Open plan.md in your editor. Read every task. Check that the phases make sense. If anything is wrong — a missing task, a phase that shouldn't exist, a scope that's too wide — edit the file now and save it. Conductor reads the file fresh on every run, so your edits take effect immediately.
// Step 5: Run the implementation
/conductor:implementWatch Conductor work through the tasks, creating commits as it goes. When it reaches the end of Phase 1, it will pause and ask you to verify manually. Test the work. When you confirm it passes, Conductor moves to Phase 2.
// Step 6: Check progress at any point
/conductor:status// Step 7: Review the completed implementation
/conductor:reviewAddress any issues surfaced by the review. Then open your pull request with a clean implementation, a full test suite, a Git history organized by feature task, and a spec that documents exactly what was built and why.
The entire flow — setup through review — is repeatable for every feature that follows. The conductor/ directory grows as a living record of what was built, why each decision was made, and what standards the project follows.
# A Few Things Worth Knowing Before You Start
- Token consumption is real. Conductor reads your project context files on every command. For a small project, this is negligible. For a large brownfield project with many tracks in the conductor/ directory, it adds up — especially during setup and planning phases. Use /stats model to monitor usage and consider archiving completed tracks regularly to keep the active tracks.md lean.
- The --auto-update flag is worth using. Conductor is in preview and has been releasing frequently since December 2025. The --auto-update flag means you get improvements automatically without having to reinstall manually.
- The quality of your context determines the quality of the output. This is the flip side of context-driven development. A vague product.md produces vague planning. A tech-stack.md that doesn't specify your testing framework produces plans that guess at it. The time you spend on the setup artifacts pays dividends on every track that follows.
- Conductor does not replace code review. /conductor:review is a useful catch for obvious drift and style issues, but it's not a substitute for human review of the code before it merges. Treat it as a first pass, not a final gate.
# Conclusion
**
The shift Conductor represents is not primarily about speed. Writing a spec and a plan before coding is slower in the first hour than diving straight into implementation. The payoff is everything that happens after that first hour — the agent that stays on track across sessions, the teammate who can pick up where you left off, the codebase that looks coherent because every contributor worked from the same context.
Google's framing for Conductor is that it "treats your documentation as the source of truth" and "empowers Gemini to act as a true extension of your engineering team." That's accurate, but the more practical way to think about it is this: Conductor makes the agent's behavior predictable. Predictable is what you need when the agent is writing code that ships.
The setup takes one session. The context it creates outlasts every session that follows. For a tool that costs one install command to try, that's a very good ratio.
Install it, run /conductor:setup on your next project, and see what a plan looks like before the first line of code gets written.
// Resources
- Conductor GitHub Repository
- Google Developers Blog — Conductor announcement
- Google Codelab — Plan and Build Apps with Gemini CLI Conductor
- Gemini CLI Extensions directory
Shittu Olumide** is a software engineer and technical writer passionate about leveraging cutting-edge technologies to craft compelling narratives, with a keen eye for detail and a knack for simplifying complex concepts. You can also find Shittu on Twitter.
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み