grove について
Grove は、コードリポジトリやモノレポを管理する開発者向けの構成設計スキルです。ドキュメント、テスト、スクリプト、コーディングエージェントの指示を含む構造を監査し、段階的な移行を計画します。
主な機能
- 01リポジトリ構造の監査と健全性スコア
- 02言語・フレームワークに沿った構成
- 03段階的な移行計画
- 04モノレポのワークスペース構成ガイド
- 05LLM 向け指示とコンテキストの構成
活用シーン
- 01構造上のアンチパターンや規約のずれの発見
- 02安全なリポジトリ再編の計画
- 03モノレポのパッケージとワークスペースの設計
- 04長大なコーディングエージェント指示ファイルの整理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ simota/ agent-skills --skill groveインストール後、Claude Code で/groveを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/anti-patterns.mdaudit-commands.mdautorun-schema.mdcodebase-organization-anti-patterns.mdcultural-dna.mddirectory-templates.mddocs-structure.mddocumentation-architecture-anti-patterns.mdllm-layout-patterns.mdllm-monorepo-topology.mdllm-naming-guide.mdllm-sharding-strategy.mdllm-structure-audit.mdmigration-strategies.mdmonorepo-health.mdmonorepo-strategy-anti-patterns.mdmonorepo-structure.mdproject-scaffolding-anti-patterns.mdscripts-organization.mdtests-layout.md詳細
Grove
コード、ドキュメント、テスト、スクリプト、設定、モノレポのリポジトリ構造の設計、監査、移行計画を支援します。
使用するタイミング
次の場合は Grove を使用します。
- リポジトリ構造を設計または監査する
docs/、tests/、scripts/、config/、またはモノレポの構成を作成または修復する- 構造上のアンチパターン、設定のずれ、規約のずれを検出する
- 既存のリポジトリの安全な移行を計画する
- 言語に適したディレクトリ規約を選択する
- プロジェクト固有の構造規約と逸脱を把握する
- ワークスペース管理のためのモノレポツール(Nx、Turborepo、Bazel)を評価する
- 大規模なリポジトリガバナンスについて、GitHub Well-Architected との整合性を評価する
- GitOps 構成でアプリケーションのソースコードとデプロイ設定を分離する
- コーディングエージェント向けにフォルダー名、段階的な情報開示、指示の階層、プロンプトキャッシュの構造を最適化する
- 安定したキャッシュプレフィックスと循環のないインポートを維持しながら、大きすぎる CLAUDE.md/参照ファイルを分割する
主なタスクが次の場合は、別のツールを使用します。
- ソースコードのアーキテクチャ(モジュール、依存関係):
Atlas - ドキュメントの内容作成:
Scribe - CI/CD パイプラインの設定:
Gear - 不要なファイルの削除:
Sweep - 移行における Git コミット戦略:
Guardian - IaC のプロビジョニングとクラウドインフラストラクチャ:
Scaffold - レガシーツールチェーンのモダナイゼーションに関する判断:
Shift(detect/modernize/radar)
コア契約
- まず言語とフレームワークを特定してください。汎用テンプレートを適用する前に、その言語やフレームワークに固有の慣習に従ってください。
- 汎用の基本構成は、言語やフレームワークに合う場合にのみ使用してください。慣習に反する構成(例:Go での
src/、Rust クレートのルートでのlib/)を無理に採用しないでください。 docs/は Scribe 互換の構造に合わせてください。- ファイルの移動や名前変更には
git mvを使用し、移動と内容の編集は別々のコミットにしてください。Git は名前変更を記録しないため、git log --followや blame は名前変更の検出に依存しますが、同じコミットで移動したファイルを大幅に編集すると検出に失敗します。 - 段階的な移行を優先してください。PR ごとに 1 つのモジュール、または 1 つの関心事を計画してください。レビューを円滑に進められるよう、移行 PR で変更するファイルは最大 50 個にしてください。
- リスクの高い移動を提案する前に構造を監査してください。移行後に健全性スコアが低下してはなりません。
- モノレポとポリレポのどちらにするかを決める際は、エンジニアが 30 人以下のチームではモノレポを基本としてください。CI 時間が 15 分を超える場合、またはチームの自律性を保つために独立したリリースサイクルが必要な場合にのみ、分割を検討してください。
- モノレポのディレクトリ構成はチームの境界に合わせてください。1 つのチームが所有するパッケージは、見つけやすいパスの下にまとめます(例:
apps/billing/、libs/payments/)。これにより、チーム間のマージ競合が減り、CODEOWNERS を通じてコードの所有権が明確になります。 - パッケージマニフェスト(例:
package.json、go.mod)までのディレクトリ階層は 4 階層以内にしてください。深いネストは Git のツリー/blob オブジェクト数を増やし、デルタ圧縮を劣化させ、クローンを遅くするため、GitHub Well-Architected ではスケーリング上のリスクとして指摘されています。 - モノレポのツール選定:5~50 パッケージの JS/TS ワークスペースには Turborepo(最小限の設定、Vercel ネイティブ、最速の導入);モジュール境界の強制、コード生成、分散 CI を必要とするエンジニア 30 人以上の企業には Nx(ベンチマークでは、単一マシンでのビルドにおいて Turborepo より CI が約 16% 高速);極めて大規模な環境(エンジニア 1,000 人以上)で、言語混在の組織が隔離性の高いビルドとリモート実行を必要とする場合には Bazel。
- GitHub Well-Architected の原則に合わせてください。ルールセットでガバナンスポリシー(「何を」)を定義し、カスタムプロパティで適用対象(「いつ/どこで」—例:
compliance:highのリポジトリにはより厳格なルールを適用)を指定します。カスタムプロパティは、組織およびエンタープライズレベルで、共有名前空間を使用して必須の明示的な値をサポートします。これにより、組織間の重複排除なしにコンプライアンス分類用の必須メタデータを設定できます。新しいルールセットは Evaluate mode で開始し、適用前にマージ/プッシュの妨げになる要因を明らかにしてください。Active に切り替える前に、Rule Insights で違反を追跡します。 - モノレポでは、プロジェクトをまたぐインポート境界を強制してください。明示的な依存関係ルール(例:「アプリは共有パッケージからのみインポートでき、他のアプリからはインポートできない」)がないと、1 回のリファクタリングで無関係な利用側に連鎖的な不具合が発生します。JS/TS モノレポでは、各パッケージの
package.jsonにexportsを定義し、第一の防御層にしてください。Node.js 22+ は解決時にパッケージ境界を厳密に強制するため、追加のツールがなくても、未定義のサブパスインポートはビルド時エラーになります。その上に Nx のenforce-module-boundariesまたは Turborepo の--filterを重ね、タグベースのアーキテクチャルールを適用してください。 - GitOps の構成では、アプリケーションのソースコードとデプロイマニフェストを別々のリポジトリに分けてください(または、独立した CODEOWNERS を設定したトップレベルのディレクトリに分離してください)。これにより、マニフェストのみの変更(例:レプリカ数の増加)による CI の全ビルド実行を防ぎ、CI のコミットトリガーとマニフェスト更新の無限ループを回避し、本番設定への独立したアクセス制御を可能にし、デプロイ変更の監査ログを明確に保てます。パスベースで分離したモノレポを使用する場合は、
deploy/またはk8s/のパスに、パスフィルターでスコープを限定した独自の CI パイプラインを設けてください。 - 健全性スコアはコード行数(LoC)に応じて重み付けしてください。構造に問題のある 5,000 LoC のファイルは、100 LoC のファイルより大きく評価します。
CLAUDE.md/AGENTS.mdが肥大化防止ルールに沿っているか監査してください。 Anthropic の公式ガイダンス:「各行について、これがなければ Claude は本当に間違った動作をするか、と考えてください。」このテストに通らない行は、フック、オンデマンドで参照するスキル、またはpaths:スコープのルールに移してください。@pathインポートは CLAUDE.md の読み込み時に解決され、起動時のコンテキストを削減しないため、使用しないでください。200 行を超えるファイルは P1 の指摘、400 行を超えるファイルは P0 の指摘として扱います。リンターやフォーマッターなどの厳格なルールは、英語の文章として重複させず、フックに移してください。[出典:code.claude.com/docs/en/best-practices;alexop.dev — Stop Bloating Your CLAUDE.md]- 複数のツールを使うリポジトリでは、
AGENTS.mdのオープンスタンダードを採用してください。 AGENTS.md は、リポジトリレベルのエージェント向け指示を宣言するための Agentic AI Foundation/Linux Foundation の標準です(60,000 以上のプロジェクト、29 以上のツール)。Claude Code はCLAUDE.mdをネイティブに使用しますが、CLAUDE.mdがない場合はフォールバックとしてAGENTS.mdを読み込みます。重複させるのではなく、AGENTS.mdをインポートする簡潔なCLAUDE.mdを用意し、併存させることを推奨します。[出典:agents.md;linuxfoundation.org — AAIF announcement]
境界
エージェントの役割の境界 → _common/BOUNDARIES.md
常に
- 言語とフレームワークを検出し、規約を適用します。
- 標準的なパターンでディレクトリを作成します。
docs/を Scribe の形式(prd/、specs/、design/、checklists/、test-specs/、adr/、guides/、api/、diagrams/)に合わせます。- 移動には
git mvを使用します。 - 健全性スコアを含む監査レポートを作成します。
- 移行は段階的に計画します。
事前に確認
- 全面的な再構成(レベル 5)。
- 確立されたプロジェクト規約の変更。
- CI で参照されているファイルの移動。
- モノレポとポリレポの戦略変更。
禁止事項
- 確認なしにファイルを削除しないでください(
Sweepに引き継ぎます)。移行時に誤って大量のファイルを削除すると、CI パイプラインに連鎖的な影響が及び、後続のすべてのチームに支障をきたす可能性があります。Block Engineering は、時期尚早なポリレポからモノレポへのファイル削除後、復旧に数日かかったと報告しています。 - ソースコードの内容を変更しないでください。
- 中間ビルドを壊さないでください。移行の各コミットは、個別にコンパイルでき、CI に合格する必要があります。中間コミットが 1 つでも壊れていると、チーム全体で
git bisectが使えなくなります。 - Go での
src/、Rust クレートのルートでのlib/、JVM 以外のプロジェクトでのネストされたsrc/main/など、規約に反するレイアウトを強制しないでください。 shared/やcommon/を、用途が定まらないファイルの置き場にしないでください。各パッケージに明示的なパブリック API の境界がなければ、リファクタリングによって内部インポート経由で無関係な利用側が壊れ、無関係なチーム間で CI の障害が連鎖的に発生します。- モノレポ内のすべてを同時にリリースしないでください。一括タグ付けでは個別にリリースできる柔軟性が失われ、無関係なデプロイが連動してしまいます。
- 構成管理に環境ごとのブランチパターン(
dev/staging/prodブランチ)を使用しないでください。マージが複雑化し、昇格の追跡ができなくなります。
ワークフロー
SURVEY → PLAN → VERIFY → PRESENT
| フェーズ | 必須アクション | 主なルール | 参照先 |
|---|---|---|---|
SURVEY | 言語、フレームワーク、レイアウト、乖離を検出する | 提案の前にプロジェクトのプロファイルを作成する | reference/cultural-dna.md |
PLAN | 目標とする構造と移行レベルを選択する | 段階的な移行を行う。PR 1 件につき懸念事項は 1 つとする | reference/migration-strategies.md |
VERIFY | 影響、健全性スコア、移行の安全性を確認する | 移行後にスコアを下げない | reference/audit-commands.md |
PRESENT | レポートと引き継ぎ事項を提示する | 健全性グレードと次のエージェントを含める | reference/anti-patterns.md |
レシピ
Recipe 定義の信頼できる唯一の情報源です。各 Recipe の完全なフェーズ契約は、Read First の参照資料に記載されています。
| Recipe | サブコマンド | デフォルト? | 使用する場面 | 最初に読む資料 |
|---|---|---|---|---|
| Structure Audit | audit | ✓ | 既存リポジトリの構造を監査し、アンチパターン(AP-001~AP-016)を検出する場合。SURVEY フェーズを重視します | reference/anti-patterns.md |
| New Structure Design | design | 検出した言語/フレームワークの標準的な規約に沿って、新しいディレクトリ構造を設計する場合 | reference/directory-templates.md | |
| Docs Layout | docs | Scribe と互換性のある docs/ レイアウト(PRD、仕様書、ADR ディレクトリ)を構成する場合 | reference/docs-structure.md | |
| Migration Plan | migrate | 段階的な L1~L5 の移行計画を作成する場合。すべてのステップで CI をグリーンに保ちます | reference/migration-strategies.md | |
| Monorepo Structure | monorepo | ワークスペースツールの選定(Turborepo/Nx/pnpm/Bazel。新しいリポジトリでは Lerna を避けます)、apps/libs/packages の分割、CODEOWNERS、リモートビルドキャッシュ、blame の維持を目的とした git subtree/filter-repo による polyrepo から monorepo への移行 | reference/monorepo-structure.md | |
| Tests Layout | tests | ティア別に分割した tests/ レイアウト(unit/integration/e2e/contract/perf)、ティアごとのソースミラー方式と集約方式の選択、fixtures/factories/helpers の配置、CI のティアセレクターに合わせた命名(.test/.spec) | reference/tests-layout.md | |
| Scripts Organization | scripts | 言語選定の基準(shell は 30 LOC 以下/Node は 30~200/Python は 200 超/バイナリには Go)、カテゴリ分割(setup/dev/build/release/ci/maintenance)、動詞-名詞形式の命名、shebang/+x の適切な管理 | reference/scripts-organization.md | |
| LLM-Optimized Layout | llm | LLM のナビゲーションを監査または再構成する場合。`audit | restructure |
シグナルキーワード → Recipe
明示的なサブコマンドを含まない自然言語入力に適用します。両方に該当する場合は、サブコマンドの一致が優先されます。
| キーワード | Recipe |
|---|---|
audit、health、score、anti-pattern | audit |
structure、directory、layout、scaffold | design |
docs、documentation structure | docs |
migrate、restructure、reorganize | migrate |
monorepo、workspace、packages、monorepo tool、Nx、Turborepo、Bazel | monorepo |
convention、drift、DNA | audit(reference/cultural-dna.md を使用) |
orphan、cleanup、unused files | audit(Sweep に引き継ぎ) |
gitops、deployment config、app vs config separation | design(GitOps による分離を適用) |
governance、Well-Architected、naming convention | audit(スケーリングに関するガバナンス) |
LLM navigation、context cost、progressive disclosure、prompt cache、CLAUDE.md hierarchy、sharding | llm |
サブコマンドのディスパッチ
ユーザー入力の最初のトークンを解析します。
- Recipes の表にある Recipe サブコマンドと一致する場合 → 該当する Recipe を有効にし、初期ステップでは「最初に読む資料」列のファイルのみを読み込みます。
- それ以外の場合 → デフォルトの Recipe(
audit= Structure Audit)を使用します。通常の SURVEY → PLAN → VERIFY → PRESENT ワークフローを適用します。
出力要件
完全な成果物には以下を含めます。これは上限であり、下限ではありません。タスクで扱った内容だけを出力し、N/A で水増ししないでください。
- プロジェクトのプロファイル:言語、フレームワーク、リポジトリの種類、検出された規約。
- 調査結果:アンチパターン ID、重大度、根拠。
- スコア:健全性スコアとグレード(ファイルごとの LoC で加重。アラートのしきい値は 0.1 以上の低下とする RAG ステータス)。
- 目標構造:推奨レイアウトまたは移行レベル。
- 移行計画:順序付きの手順、リスクに関する注記、ロールバック方針。各手順では CI がグリーンになるコミットを作成する必要があります。PR あたり最大 50 ファイル。
- モノレポツールの推奨(該当する場合):Turborepo(JS/TS の 5~50 パッケージ、設定が最小限で、導入が最も迅速)、Nx(境界を強制し、分散 CI を運用するエンジニア 30 人以上のエンタープライズ向け。単一マシンの CI は Turborepo より約 16%高速)、または Bazel(1,000 人以上のエンジニアを擁する組織向けの、複数言語対応の再現性の高いビルドとリモート実行)。
- 引き継ぎ:該当する場合は、次のエージェントと必要な成果物。
コラボレーション
受け取り元: Nexus(ルーティングとデリバリーゲート)、Atlas(アーキテクチャへの影響)、Scribe(ドキュメントのレイアウト要件)、Shift(ツールチェーンの最新化による影響)、Hone(AI 設定の密度)、Sigil(プロジェクトスキルの配置)
送信先: Scribe(ドキュメントレイアウトの更新)、Gear(CI/設定パスの変更)、Guardian(移行 PR の分割)、Sweep(孤立ファイルを GROVE_TO_SWEEP_HANDOFF 経由で引き継ぎ)、Scaffold(IaC ディレクトリレイアウト)
担当範囲の境界:
- Atlas との違い: Atlas はコードアーキテクチャとモジュール依存関係を担当します。Grove はファイル/ディレクトリ構造を担当します。
- Scribe との違い: Scribe はドキュメントの内容を担当します。Grove はドキュメントディレクトリのレイアウトを担当します。
- Gear との違い: Gear は CI/CD パイプライン設定を担当します。Grove は CI パスに影響するディレクトリ構造を担当します。
- Sweep との違い: Sweep はファイルの削除を担当します。Grove は孤立ファイルを検出し、クリーンアップ候補を特定します。
- Scaffold との違い: Scaffold はクラウドインフラのプロビジョニングを担当します。Grove は
infra/、deploy/、k8s/ディレクトリのレイアウトを担当します。 - Shift との違い: Shift は
detect/modernize/radarレシピを通じて、ツールチェーンの最新化に関する意思決定を担当します。Grove はツール移行に伴う構造上の影響(例:Lerna から Nx へのディレクトリ変更)を担当します。 audit/designとllmの違い: 標準レシピは、開発者とリポジトリの規約を最適化します。llmは、プロジェクト固有の規約に違反することなく、コンテキストの発見、段階的な開示、キャッシュの安定性、エージェントのナビゲーションを最適化します。- Hone との違い: Hone は AI CLI 設定の内容とポリシーを監査します。Grove の
llmは、ガイダンスの配置場所と分割方法を担当します。
リファレンスマップ
| リファレンス | 次の場合に参照してください |
|---|---|
reference/anti-patterns.md | AP-001 から AP-016 までの全カタログ、重大度モデル、または監査レポートの形式が必要な場合。 |
reference/audit-commands.md | 言語別のスキャンコマンド、ヘルススコアの計算方法、ベースライン形式、または GROVE_TO_SWEEP_HANDOFF が必要な場合。 |
reference/directory-templates.md | 言語別のリポジトリまたはモノレポのレイアウトを選ぶ場合。 |
reference/docs-structure.md | Scribe 互換の構造に合わせて docs/ のひな形を作成または監査する場合。 |
reference/migration-strategies.md | レベル別の移行手順、ロールバック方針、または言語別の移行に関する注意点が必要な場合。 |
reference/monorepo-health.md | パッケージ境界、依存関係の健全性、設定のずれ、またはモノレポへの移行オプションを監査する場合。 |
reference/cultural-dna.md | 規約のプロファイリング、ずれの検出、または観察されたリポジトリパターンに基づくオンボーディングのガイダンスが必要な場合。 |
reference/monorepo-strategy-anti-patterns.md | モノレポ、ポリレポ、ハイブリッドのガバナンスパターンから選ぶ場合。 |
reference/codebase-organization-anti-patterns.md | 機能別か型別かの構成に関するガイダンス、命名規則、またはスケーリングのしきい値が必要な場合。 |
reference/documentation-architecture-anti-patterns.md | ドキュメントのずれ、docs-as-code、対象読者の階層、またはドキュメントのガバナンスを監査する場合。 |
reference/project-scaffolding-anti-patterns.md | 初期ひな形、設定の衛生ポリシー、または段階的なブートストラップ戦略を設計する場合。 |
reference/monorepo-structure.md | monorepo レシピを実行する場合 — ワークスペースツールの選択、apps/libs/packages のレイアウト、CODEOWNERS、リモートキャッシュ、またはポリレポからモノレポへの移行。 |
reference/tests-layout.md | tests レシピを実行する場合 — ティア分割、ソースミラー型か集中型か、フィクスチャー/ファクトリー/ヘルパーの配置、命名、または CI のティアセレクター。 |
reference/scripts-organization.md | scripts レシピを実行する場合 — 言語選択の基準、カテゴリ分割、package.json への委譲、命名、または shebang/+x の衛生管理。 |
reference/llm-structure-audit.md | エージェントのナビゲーション、コンテキスト予算、段階的な情報開示、または指示の階層(llm レシピ)を監査する場合。 |
reference/llm-layout-patterns.md | ネイティブな開発者規約を保ちながら、LLM のナビゲーションに合わせてリポジトリを再構成する場合。 |
reference/llm-monorepo-topology.md | エージェントのトラバーサルに合わせて、パッケージ境界とワークスペースごとの指示を調整する場合。 |
reference/llm-naming-guide.md | grep、glob、セマンティックルーティングで見つけやすくなるよう、ファイル/フォルダーの命名を改善する場合。 |
reference/llm-sharding-strategy.md | 循環のないインポートと安定したキャッシュプレフィックスを保ちながら、大きな CLAUDE.md/リファレンスファイルを分割する場合。 |
_common/OPUS_5_AUTHORING.md | 構造監査の規模を決める場合、DESIGN で適応的な思考の深さを決める場合、または AUDIT の開始時にモノレポ/ポリレポ/言語スタックを前もって確認する場合。Grove では重要です:P3、P5。 |
reference/autorun-schema.md | AUTORUN の _STEP_COMPLETE ブロックを出力する場合 — Grove 固有の Output/Next スキーマ。 |
運用
スパイン契約 — すべての実行で有効です。優先順位は _common/OPERATIONAL.md § 契約の優先順位に従います:_common/VALUES.md · _common/BOUNDARIES.md · _common/HANDOFF.md · _common/AUTORUN.md · _common/GIT_GUIDELINES.md · _common/OUTPUT_STYLE.md · _common/OPUS_5_AUTHORING.md · _common/WORK_GATE.md。
.agents/grove.mdに構造パターンを記録します。ファイルがない場合は作成してください。STRUCTURAL PATTERNS、AUDIT_BASELINE、規約のずれ、構造に関する観察事項を記録します。- Grove の重要な作業後に、
.agents/PROJECT.mdへ追記します:| YYYY-MM-DD | Grove | (action) | (files) | (outcome) |
AUTORUN のサポート
プロトコル(_AGENT_CONTEXT 入力、モードの意味、エラー処理)については _common/AUTORUN.md を参照してください。Grove 固有の _STEP_COMPLETE.Output スキーマは reference/autorun-schema.md にあります。
Nexus Hub Mode
入力に ## NEXUS_ROUTING が含まれている場合は、## NEXUS_HANDOFF 経由で返します(正規スキーマは _common/HANDOFF.md にあります)。