この記事ではClaude Codeに特化して解説します。Claude Code全般は Claude Code完全ガイド2026:インストールから本番運用まで をご覧ください。

Claude Bootstrapとは何か

Claude Bootstrapは、Claude Code向けのプロジェクト初期化システムだ。READMEの冒頭で「ボトルネックはコード生成からコード理解に移った」と宣言しており、AIが生成するコードをシンプル・安全・検証可能に保つためのガードレールを提供することを目的としている。

Claude Codeをそのまま使うと、AIが積極的にコードを生成する一方で、テストの欠如・セキュリティ上の問題・コードの肥大化といった問題が起きやすい。Claude Bootstrapはこれらをプロジェクト開始時点から防ぐ仕組みを提供する。v2.5.0以降はすべてのプロジェクトがAIエージェントチームとして動作し、v2.7.0ではMCPベースのコードグラフが追加された。

インストールと初期化

Claude Bootstrapのセットアップは数コマンドで完了する:

# リポジトリをクローン
git clone https://github.com/alinaqi/claude-bootstrap.git
cd claude-bootstrap

# プロジェクトを初期化
./bootstrap.sh

bootstrap.shを実行すると、CLAUDE.md(エージェント設定)、エージェント定義ファイル群、pre-commitフック、MCPコードグラフの設定が自動生成される。既存のリポジトリに適用する場合は./bootstrap.sh /path/to/your/projectのようにパスを指定できる。

# 既存プロジェクトへの適用
./bootstrap.sh ~/projects/my-app

# 初期化後の確認
ls -la ~/projects/my-app/.claude/
# agents/  commands/  CLAUDE.md  code-graph/

5つのコア設計原則

Claude Bootstrapの設計思想の核心は、AIが生成するコードに強制的なガードレールをかける5つの原則だ。READMEに明記されているこれらの原則は交渉不可能(non-negotiable)と位置付けられている。

1. テストファースト(Test-First)

機能もバグ修正も、まずテストを書いて失敗させてから実装する。テストなしのコードは出荷しない。これはTDDの原則をAIコーディング環境に強制適用したものだ。

2. シンプルさは非交渉(Simplicity is Non-Negotiable)

  • 関数は20行以内
  • ファイルは200行以内
  • パラメータは3個以内

この制約はAIが「動くが読めないコード」を生成することを防ぐ。

3. セキュリティバイデフォルト(Security by Default)

コード内にシークレットを置かない、依存関係スキャン、pre-commitフックによる自動チェックをデフォルトで有効にする。

4. コードレビュー必須(Mandatory Code Review)

すべてのコミットに/code-reviewが必要。CriticalとHighの問題はマージをブロックする。

5. 反復ループ(Iteration Loop)

すべてのタスクはテストが通るまで自己参照ループで反復する。AIが一度で完璧なコードを書けないことを前提とした設計だ。

6エージェントチームの構成

v2.5.0で導入されたエージェントチームは、以下の役割で協調動作する:

エージェント 役割 主な責務
Team Lead オーケストレーター タスク分解・優先順位付け・エージェント間調整
Quality Agent TDD担当 テスト作成・カバレッジ監視・失敗テスト追跡
Security Agent セキュリティ 脆弱性スキャン・依存関係監査・シークレット検出
Code Review Agent レビュー マルチエンジンコードレビュー・品質ゲート
Merger Agent マージ処理 PR作成・コンフリクト解消・マージ実行
Feature Agent 機能実装 個別機能の並列実装・テスト通過まで反復

OpenHandsのような汎用AIコーディングエージェントが単一エージェントで動作するのに対し、Claude Bootstrapは役割を分割することで品質チェックを構造的に強制する点が異なる。

開発パイプライン:Spec → PR

パイプラインはタスク依存関係によりステップのスキップが不可能な設計になっている:

sequenceDiagram participant User as 開発者 participant TL as Team Lead participant QA as Quality Agent participant FA as Feature Agent participant CR as Code Review Agent participant SA as Security Agent participant MA as Merger Agent User->>TL: タスク指示(新機能・バグ修正) TL->>QA: テスト作成依頼 QA->>QA: テストコード作成(失敗状態) QA->>FA: 実装依頼(失敗テスト付き) FA->>FA: 実装 → テスト実行 FA->>FA: テスト失敗 → 実装修正(反復ループ) FA->>CR: テスト通過後、レビュー依頼 CR->>CR: マルチエンジンレビュー CR-->>FA: Critical/High検出 → 差し戻し CR->>SA: レビュー通過後、セキュリティスキャン SA->>SA: 脆弱性スキャン・シークレット検出 SA-->>FA: セキュリティ問題 → 差し戻し SA->>MA: スキャン通過後、PR作成依頼 MA->>User: PR作成・通知

このシーケンスにおいて重要なのは「差し戻し」が自動的に発生する点だ。CriticalまたはHighの問題が検出された場合、Feature Agentに戻されて修正が繰り返される。人間のレビュアーが介在しなくても、品質ゲートが機能する。

TDDの実践例:pytestによる3パラメータルール

以下は、Claude Bootstrapの設計原則に従ったpytestの実装例だ。「パラメータ3個以内」「関数20行以内」のルールを守りながらテストファーストで進める:

# test_user_service.py(まずテストを書く)
import pytest
from user_service import UserService

class TestUserService:
    def test_create_user_returns_id(self):
        """ユーザー作成でIDが返ることを確認"""
        service = UserService()
        # 3パラメータ以内のシグネチャに準拠
        user_id = service.create_user("alice", "[email protected]")
        assert user_id is not None
        assert isinstance(user_id, str)

    def test_create_user_rejects_duplicate_email(self):
        """重複メールアドレスは拒否されることを確認"""
        service = UserService()
        service.create_user("alice", "[email protected]")
        with pytest.raises(ValueError, match="Email already exists"):
            service.create_user("bob", "[email protected]")

    def test_get_user_returns_none_for_unknown(self):
        """存在しないIDでNoneが返ることを確認"""
        service = UserService()
        result = service.get_user("nonexistent-id")
        assert result is None

テストが失敗する状態(UserServiceが未実装)でFeature Agentに実装を依頼する。実装が完成してテストが通るまで反復ループが続く。

/code-reviewコマンドの出力例

/code-reviewを実行すると、マルチエンジンによる分析結果が出力される。CriticalとHighはマージをブロックする:

=== Code Review Report ===

[CRITICAL] src/auth/token.py:45
  硬コードされたシークレットキーが検出されました。
  SECRET_KEY = "hardcoded-secret-123"
  → 環境変数またはVaultに移動してください。

[HIGH] src/user/service.py:78
  SQLインジェクションの可能性があります。
  query = f"SELECT * FROM users WHERE id = {user_id}"
  → パラメータ化クエリを使用してください。

[MEDIUM] src/user/service.py:102
  関数 `process_user_data` が29行あります(上限20行)。
  → 機能を分割してください。

[LOW] src/utils/helpers.py:15
  未使用のインポートが3件あります。

=== Summary ===
Critical: 1 件 → MERGE BLOCKED
High: 1 件 → MERGE BLOCKED
Medium: 1 件
Low: 1 件

次のステップ: Critical/High を修正してから再度 /code-review を実行してください。
レビューエンジンの組み合わせ
Code Review AgentはClaude自身によるレビューに加え、オプションでSemgrep、Bandit、ESLintなどの静的解析ツールを組み合わせて実行できる。各ツールの検出結果をマージして重複排除した上で、重要度でソートされたレポートを生成する。

MCPベースのコードグラフ(v2.7.0)

v2.7.0で追加されたTiered Code Graphは、MCPを通じて永続的なナレッジグラフを提供する。

READMEによると、従来のブルートフォース方式のファイル読み込みと比較して、コードナビゲーションに必要なトークンを約99%削減できるとされている。この数値はREADMEに記載されたものであり、プロジェクトの規模や構造によって実際の効果は異なる可能性がある。

基本機能として以下が利用可能だ:

  • サブミリ秒のシンボル検索:関数名・クラス名・変数名を瞬時に検索
  • 依存関係分析:あるモジュールが何に依存しているかをグラフで把握
  • 影響範囲(blast radius)分析:変更した場合にどこに影響するかを事前に確認

オプトインでさらに深い解析も利用できる:

  • Joern CPG(AST + CFG + PDG):抽象構文木、制御フローグラフ、プログラム依存グラフを統合した高度な解析
  • CodeQL:テイント解析による深いデータフロー追跡とセキュリティ監査
コードグラフがトークンを削減する仕組み
通常のClaude Codeはコンテキストを理解するために関連ファイルを読み込む必要がある。コードグラフはシンボルの位置と関係をあらかじめインデックスしているため、「UserServiceクラスの定義はどこか」という問いに対してファイルを読み込まずに即座に答えられる。大規模なコードベースほど効果が大きい。

Claude Bootstrap vs 他ツールとの比較

項目 Claude Bootstrap バニラ Claude Code OpenHands
TDD強制 ✅ 構造的に強制 ❌ 任意 ❌ 任意
エージェントチーム ✅ 6エージェント協調 ❌ 単一 ⚠️ 単一(プラグイン拡張可)
コードグラフ ✅ MCP統合(v2.7.0) ❌ なし ❌ なし
セキュリティスキャン ✅ デフォルト有効 ❌ 手動設定 ⚠️ 一部対応
コードレビューゲート ✅ Critical/Highブロック ❌ なし ❌ なし
設計原則の強制 ✅ 20行/200行/3パラメータ ❌ なし ❌ なし
初期設定コスト ⚠️ bootstrap.sh 1回 ✅ 即時利用 ✅ 即時利用

Claude BootstrapはAIの自律実行時に品質を担保したい場面で特に有効だ。Claude Code Auto Modeのような長時間の自律実行では、チェック機構がないと気づかないうちに問題が蓄積しやすい。

対象ユーザーと注意点

Claude Codeを使って本格的なプロジェクトを立ち上げる開発者が主な対象だ。特にAIエージェントの自律実行時に品質を担保したいケースで効果を発揮する。OpenHandsのような汎用エージェントを使っていて品質管理に課題を感じているチームにも参考になるアプローチだ。

ただし、プロジェクトの規模や要件に合わせて設計原則のカスタマイズが必要になる場合もある。「関数20行以内」は厳格なルールであり、複雑なアルゴリズムを実装する際には意図的に緩和する判断も必要になるだろう。

関連記事: Claude Code完全ガイド2026:インストールから本番運用まで

参照ソース