ネイティブワークスペース(推奨)
サブディレクトリごとに個別のブループリントを作成します。各ワークスペースにはそれぞれ専用の initialize、maintenance、Knowledge セクションがあり、作業ディレクトリは自動的にそのサブディレクトリに設定されます。
サブシェル
1 つのブループリント内で
(cd dir && command) を使ってサブディレクトリでコマンドを実行します。パッケージ数が少ない小規模なモノレポでは、こちらのほうがシンプルです。ネイティブワークスペース
ほとんどのモノレポに推奨されます。 ネイティブワークスペースでは、各サブディレクトリに、セットアップ、Knowledge、作業ディレクトリが分離された専用のブループリントが用意されます。パッケージ数が増えても、サブシェルを使うより整理しやすく、保守も簡単です。
cd やサブシェルは不要です。
ルートブループリント
ワークスペースの作成
- Settings > Environment > Blueprints に移動します
- リポジトリをクリックします
- Add workspace をクリックします
- サブディレクトリのパス (例:
packages/frontend) を入力します - そのワークスペース用のブループリントを記述します
例
- ルート
- packages/frontend
- packages/backend
knowledge エントリは、そのサブディレクトリにスコープされています。Devin が packages/frontend で作業しているときは、バックエンド用ではなく、フロントエンドの lint/test/dev コマンドを参照します。
ネイティブワークスペースを利用する場面
- サブディレクトリごとに使用する言語やパッケージマネージャーが異なる
- 各パッケージごとに専用のKnowledge エントリ (lint、テスト、ビルドコマンド) が必要
- セットアップを分離したい — 1 つのワークスペースのブループリントが壊れていても、ほかのワークスペースには影響しない
- パッケージ数が増えており、単一のブループリントでは管理しづらくなっている
サブシェル
(cd ... && ...) はサブシェルを作成します。サブシェルを終了すると、作業ディレクトリは次のステップに向けてリポジトリのルートに戻ります。
サブシェル が重要な理由
- 正しい例(サブシェル あり)
- 誤った例(サブシェル なし)
packages/ サブディレクトリを参照できます。subshellsを利用するケース
- モノレポ内のパッケージ数が少なく、セットアップがシンプル
- すべてのパッケージで同じ言語とパッケージマネージャーを使っている
- パッケージごとのKnowledgeエントリは不要
モノレポ向けのKnowledgeエントリ
使用例
Turborepo / Nx ワークスペース
複数のJDKバージョン
ベストプラクティス
複雑なモノレポではネイティブワークスペースを優先する
複雑なモノレポではネイティブワークスペースを優先する
各サブディレクトリで使用する言語、パッケージマネージャー、ビルドプロセスが異なる場合は、ネイティブワークスペースを使うことで各ブループリントを明確に切り分け、独立性を保てます。サブシェルは、少数のパッケージだけを扱うシンプルなケースに限って使用してください。
ディレクトリ変更には常にサブシェルを使用する
ディレクトリ変更には常にサブシェルを使用する
サブシェル方式を使う場合は、
cd コマンドを括弧で囲んでください: (cd dir && command)。これにより、あるステップでのディレクトリ変更が次のステップに影響するのを防げます。共有ツールは org ブループリントに置く
共有ツールは org ブループリントに置く
複数のリポジトリで使用する language runtimes や package managers は、org-wide ブループリントに含めるべきです。これにより重複を避けられ、repo ブループリントをプロジェクト固有のセットアップに集中させられます。
maintenance のステップは依存関係順に並べる
maintenance のステップは依存関係順に並べる
パッケージ A が、先にビルドされたパッケージ B に依存する場合は、
maintenance で A のインストールステップより前に B のビルドステップを記載してください。Blueprint のステップは、記載された順に順次実行されます。構造を示すナレッジエントリを追加する
構造を示すナレッジエントリを追加する
ディレクトリと使用する言語・ツールの対応を示す
structure という名前のナレッジエントリがあると、Devin がコードベースを把握しやすくなります。各サブディレクトリで使用する package manager と、パッケージ間の依存関係も含めてください。パッケージごとのKnowledge エントリを使う
パッケージごとのKnowledge エントリを使う
1 つの大きなKnowledge エントリにする代わりに、各パッケージごとに個別のエントリ (例:
frontend、backend、ml-pipeline) を作成してください。ネイティブワークスペースでは、各ワークスペースに専用の knowledge セクションが組み込まれています。maintenance は増分的に保つ
maintenance は増分的に保つ
pnpm install --force ではなく pnpm install を、rm -rf .venv && uv sync ではなく uv sync を使ってください。増分更新のコマンドの方が、定期的な rebuild 時に高速です。- 宣言型環境設定
- ブループリント リファレンス
- テンプレート ライブラリ — すぐに使えるモノレポテンプレートを収録

