Claude Code で最初のハーネスを作るための入門です。CLAUDE.md・スキル・フック・エージェントの4つを、どの順番で、何を書けばよいかを手順で示します。ハーネスエンジニアリングという言葉の意味・経緯・具体例は ハーネスエンジニアリングとは?AIエージェントのハーネスの意味・具体例・始め方 に、Claude Code の設定全般は Claude Code|2026年版・インストールからCLAUDE.md・Hooks・本番運用までの実装手引き にまとめています。

START WITH THREEClaude Code のハーネス

まずCLAUDE.md・スキル・フックの3つから作る

  1. 1.CLAUDE.md:毎回読まれる決まり

    概要・重要なルール・よく使うコマンド

  2. 2.スキル:呼び出して使う手順書

    PR 作成やデプロイの手順

  3. 3.フック:毎回必ず動く処理

    編集のあとにテストや Lint

エージェント(.claude/agents/)は、3つで足りなくなってから足す。出典: Claude Code ドキュメント

30秒でわかるハーネスエンジニアリング入門

  • ・ハーネスは、モデルの外側で AI エージェントの動きを決める仕組み。Claude Code には部品が最初から揃っている
  • ・部品は4つ。毎回読まれる CLAUDE.md、呼び出して使うスキル、毎回必ず動くフック、別の文脈で働くエージェント
  • ・始め方は5段階。/init で CLAUDE.md を作り、スキルとフックを1つずつ足し、間違えるたびに CLAUDE.md を育てる
  • ・外部のハーネスフレームワーク(Superpowers など)は、自作で足りなくなってから選ぶ

外部ハーネスフレームワーク4選:選択基準と比較

Claude Code内蔵のハーネス要素を使って自作する方法のほかに、すでに設計が体系化された外部ハーネスフレームワークを採用する選択肢がある。2026年時点で実務採用が進んでいる主要4フレームワークと、選択判断の基準を整理する。

フレームワーク選択の4基準

複数フレームワークを実際に評価した実践者が共通して挙げる判断軸は以下の4点だ。

基準 問い なぜ重要か
厳格なワークフロー フェーズスキップがコードレベルで禁止されているか プロンプトの指示はエージェントが無視できる。コードは無視できない
サブエージェント活用 マルチエージェントの並列・協調をネイティブサポートするか 単一エージェントは長期タスクでコンテキストが劣化する
LLM非依存 プロバイダー(Claude/GPT/Gemini)の切り替えが容易か 本番運用ではLLMのコスト・パフォーマンス比較が不可欠
自動ループ レビュー→修正→再レビューを人手なしで繰り返せるか 人間が介入するたびにワークフローが止まる

フレームワーク選択基準

① 厳格なワークフロー
コードレベルで強制

② サブエージェント活用
並列・協調をネイティブ支援

③ LLM非依存
プロバイダー切り替え容易

④ 自動ループ
hands-freeでレビュー・修正

主要4フレームワーク比較

フレームワーク 設計アーキテクチャ ①厳格ワークフロー ②サブエージェント ③LLM非依存 ④自動ループ
TAKT YAMLステートマシン+PieceEngine ◎ ○ ◎ ◎
Superpowers スキル注入+7ステップワークフロー ○ ◎ ○ ○
ECC マニフェスト駆動マルチエージェント ○ ◎ △ ○
OMC イベント駆動+UltraQAループ ○ ○ △ ◎

TAKTは4基準すべてで高水準を実現している。YAMLで定義されたステートマシンが状態遷移をコードで管理するため、遷移条件を満たさない限りエージェントは次フェーズへ進めない。「プロンプトで禁止する」のではなく「プログラムとして不可能にする」アプローチだ。プロバイダー抽象化レイヤーが成熟しており、Claude以外のLLMへの切り替えも設計上容易に実現できる。

Superpowers はサブエージェントの並列実行で強みを持ち、仕様確認→TDD→レビューの7ステップワークフローを自動注入する。Claude Code・Cursor・Codex等の複数ツールに対応しており、LLM非依存性も一定程度確保されている。

ECC(Everything Claude Code) はマニフェストファイルによる設定管理に特化した包括的なハーネスで、大規模チームの設定一元管理に強い。

OMC(oh-my-claudecode) はイベント駆動設計とUltraQAループ(検証→修正→再検証の自律サイクル)が特徴。永続モードと組み合わせることで、長時間バックグラウンドで動き続けるエージェントを構築できる。

Claude Codeのハーネスを構成する4つの要素

Claude Codeには最初からハーネスに必要な仕組みが内蔵されている。4つの要素を理解することで、ゼロからハーネスを構築できる。

要素①:CLAUDE.md — 全セッションで読まれる「永続ルール」

CLAUDE.mdはすべてのセッションでClaudeが最初に読む「恒久的なコンテキスト」だ。プロジェクトルートに置いた CLAUDE.md は、Claude Codeが起動するたびに自動で読み込まれる。

# CLAUDE.md の基本構成例(実際のプロジェクトに合わせて書く)

## プロジェクト概要
このリポジトリはECサイトのバックエンドAPIです。Node.js + Expressを使用。

## 重要なルール
- コミット前に必ず `npm test` を実行すること
- TypeScriptファイル編集後は `npx tsc --noEmit` で型チェックを実行
- 外部APIへの直接リクエストは禁止。必ず src/lib/api-client.ts を経由すること

## よく使うコマンド
- テスト: `npm test`
- ビルド: `npm run build`
- ローカル起動: `npm run dev`

書くべき内容は「Claudeが推測できない情報だけ」だ。プロジェクト固有のコマンド、デフォルトと異なるコードスタイル、テスト手順などを書く。コードから読み取れる内容や標準的な慣習は書かなくていい。200行を超えたら @import で分割する。

要素②:スキル(Skills)— 再利用可能なワークフロー手順書

スキルは .claude/skills/<スキル名>/SKILL.md に置く「手順書」だ。/スキル名 で明示的に呼び出すか、エージェントに事前ロードして使う。

# .claude/skills/create-pr/SKILL.md の例
---
name: create-pr
description: 現在のブランチでPRを作成する(テスト・lint・PR作成を一括実行)
argument-hint: "[PRタイトルの補足(任意)]"
allowed-tools: Bash(npm test), Bash(git *), Bash(gh pr create *)
---
以下の手順でPRを作成する:

1. `git status` で変更内容を確認する
2. `npm test` でテストを実行する(失敗したら報告して停止)
3. `git add -p` で変更をステージングする
4. `git commit` でコミットする
5. `gh pr create --fill` でPRを作成する
6. 作成したPRのURLをチャットに報告する

/create-pr と打つだけで、テスト実行からPR作成まで一貫した手順が保証される。

要素③:フック(Hooks)— 決定論的な動作の「保証」

フックは .claude/settings.json に設定する「ライフサイクルスクリプト」だ。

CLAUDE.mdのルールは「アドバイス」だが、フックは「保証」だ。ファイル編集後に必ずlintを走らせたい、危険なコマンドをブロックしたいといった「絶対に守りたいルール」をフックで強制できる。

// .claude/settings.json の例
{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Edit",
      "hooks": [{
        "type": "command",
        "command": "bash -c 'if [[ \"$CLAUDE_TOOL_OUTPUT_FILE\" == *.ts ]]; then npx eslint \"$CLAUDE_TOOL_OUTPUT_FILE\" --fix; fi'"
      }]
    }],
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "command": "python3 .claude/hooks/safety-check.py"
      }]
    }]
  }
}

主要なフックイベント:

イベント タイミング 典型的な用途
PreToolUse ツール実行前 危険コマンドのブロック・ログ取得
PostToolUse ツール実行後 自動lint・テスト実行
PermissionRequest 権限要求時 Slack/Webhookへの承認転送
Stop セッション停止時 完了通知の送信
SessionStart セッション開始時 動的コンテキストのロード

要素④:エージェント(Agents)— 独立して動く専門担当者

エージェントは .claude/agents/<名前>.md に定義する「サブエージェント」だ。独立したコンテキストウィンドウで動作するため、メインセッションのコンテキストを汚染せず、専門タスクを切り出せる。

# .claude/agents/security-reviewer.md の例
---
name: security-reviewer
description: コード変更のセキュリティ脆弱性を検査する。auth/paymentコード編集時に自動起動。
tools: Read, Grep, Glob
model: opus
permissionMode: acceptEdits
maxTurns: 20
---
シニアセキュリティエンジニアとして以下を重点的にレビューする:
- SQLインジェクション・XSS・コマンドインジェクション
- 認証・認可の欠陥
- シークレット・クレデンシャルのコード内埋め込み
- 安全でないデータ処理パターン

具体的な行番号と修正案を提示する。

description に PROACTIVELY を含めると、Claude Codeが関連タスクを検出して自動起動する。


Anthropic公式が示す3つの実践パターン

2026年4月にAnthropicが公開した公式ブログ「Harnessing Claude’s Intelligence」では、ハーネス設計においてモデルの能力を最大限に引き出すための3つの実践パターンが示されている。4つの要素を理解した後、この3パターンを実装指針にすることで、より効率的なハーネスを構築できる。

パターン①:Claudeがよく理解するツールから始める

Anthropicが特に強調するのは bash と テキストエディタだ。この2つのツールだけで、Claude 3.5 SonnetはSWE-bench Verifiedで49% を達成している。複雑なカスタムツールを追加する前に「Claudeがすでに理解しているツール」の組み合わせで多くのタスクをカバーできる。スキル・プログラマティックなツール呼び出し・メモリツールはすべてこの基本ツールの延長線上にある。

パターン②:「やめられること」を問う

ハーネスに積み重なった不必要な仮定を取り除くパターンだ。

a) 行動調整をClaudeに委任する:大規模データを渡す前にClaudeにフィルタリングロジックを書かせる。コード実行ツールを提供することで、Claudeが「何を次のステップに渡すか」を自分で判断できる。ハーネス側のコードが減るほど、実行の信頼性は上がる。

b) コンテキスト管理を委任する:コンテキストウィンドウを効率的に使う手法を組み合わせる:

手法 概要
スキル 段階的な情報開示で必要な情報だけをClaudeに渡す
コンテキスト編集 古くなった情報を会話から削除してウィンドウを節約する
サブエージェント 新鮮なコンテキストウィンドウで独立処理させる
コンパクション Claudeが過去の文脈を自身で要約・圧縮する
メモリフォルダ Claudeが文脈をファイルに書き込み、必要時に読み込む

Anthropicの実績では、BrowseCompベンチマークでOpus 4.6がコンテキスト管理の改善により45.3%→61.6% に向上している。

コンテキスト不安(Context Anxiety)とは
コンテキストウィンドウの上限に近づくと、モデルが早期に処理を打ち切ろうとする現象。新しいモデルでは改善されているため、対策として組み込んだ複雑な制御コードが「余計な重荷」になっていないか定期的に見直すことが重要だ。

c) 仮定を定期的に再テストする:Anthropicは「Claudeにできないと思っていた仮定は再テストが必要」と明言している。モデルのアップデートに伴い、ハーネス側の複雑な制御が不要になることも多い。

パターン③:ハーネスで境界を慎重に設定する

プロンプトキャッシュを活用する

キャッシュされたトークンのコストは通常の入力トークンの10% だ。以下の4原則でキャッシュヒット率を最大化できる:

キャッシュ最適化4原則
1. 静的コンテンツ(システムプロンプト等)を先頭に配置
2. 動的コンテンツ(ユーザー入力等)を末尾に配置
3. セッション中のモデル切り替えを避ける(キャッシュ無効化のため)
4. ツールの追加・削除を最小化する(ツール定義変更もキャッシュを破棄)

宣言的ツールで境界を明示する

セキュリティ境界・UX・監視可能性が必要なアクション(外部API呼び出し、ファイル編集など)には、汎用の Bash コマンドではなく専用の宣言的ツールを割り当てることが推奨されている。これにより「何が安全で何が危険か」をハーネス層で明確に定義できる。

Harnessing Claude's Intelligence
Anthropic公式3パターン

① 基本ツールを活用
bash + テキストエディタ

② 委任できることを委任
コンテキスト管理の最適化

③ 境界を慎重に設定
プロンプトキャッシュ活用

SWE-bench Verified 49%
(Claude 3.5 Sonnet)

BrowseComp
45.3% → 61.6%
(Opus 4.6)

キャッシュコスト
= 入力トークンの10%


ステップバイステップで始める:最初のハーネス構築

FIRST HARNESS始め方

最初のハーネスは5つの段階で作る

  1. /init

    CLAUDE.md を自動で作る

  2. 構成を整える

    .claude/ の置き場所を決める

  3. スキルを1つ

    いちばん繰り返す作業から

  4. フックを1つ

    編集後のテストや整形

  5. 育てる

    間違えるたびに1行足す

本記事の手順(Step 1〜5)

「完璧なハーネスを最初から作る必要はない。最初の10行のCLAUDE.mdから始めよ」——これがハーネスエンジニアリング実践者のコンセンサスだ。

Step 1: /init でCLAUDE.mdを自動生成する

# Claude Code内でコマンドを実行
/init

プロジェクトルートで /init を実行すると、Claude Codeがビルドシステム・テストフレームワーク・コードパターンを解析してCLAUDE.md の下書きを自動生成する。これを土台に育てる。

Step 2: ディレクトリ構造を確認・整える

.claude/
├── agents/          ← サブエージェント定義(.mdファイル)
├── skills/          ← スキル(/コマンド名 で呼び出し)
│   └── create-pr/
│       └── SKILL.md
├── hooks/           ← フックスクリプト
│   └── scripts/
└── settings.json    ← パーミッション・フック設定

CLAUDE.md            ← 最上位のルールファイル(必須)

Step 3: よく繰り返す作業を1つスキルにする

「毎回同じ手順で実行していること」を1つ選んでスキル化する。例:PR作成手順。

mkdir -p .claude/skills/create-pr

SKILL.mdを上記のフォーマットで作成し、/create-pr で呼び出せるか確認する。

Step 4: 最初のフックを設定する

ファイル編集後に自動でlintを実行する最小限の設定:

// .claude/settings.json
{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Edit",
      "hooks": [{
        "type": "command",
        "command": "bash -c 'npx eslint \"$CLAUDE_TOOL_OUTPUT_FILE\" --fix 2>/dev/null || true'"
      }]
    }]
  }
}

Step 5: CLAUDE.mdを間違えるたびに育てる

Claudeが期待と異なる動作をしたとき:

(Claude Codeへの指示例)
「CLAUDE.mdを更新して、同じ間違いを繰り返さないようにして」

これを習慣にするだけで間違い率が目に見えて下がる。Claude Code作者のBoris Chernyが最重要プラクティスとして推奨している方法だ。

詳しいCLAUDE.mdの書き方はClaude Codeベストプラクティス完全ガイド2026年版で解説している。


実践例3選:ハーネスが威力を発揮するシーン

実践例①:コードレビューの自動化

課題: コードを書いた後のセキュリティチェックが抜けがちになる。

ハーネスによる解決:

  1. .claude/agents/security-reviewer.md を設置(前掲のエージェント定義)
  2. descriptionに「PROACTIVELY invoked when editing auth or payment code」を追加
  3. auth/paymentディレクトリのコードを編集するたびに自動でセキュリティレビューが走る

効果: セキュリティチェックが漏れることがなくなる。エージェントが「書いた本人ではない」独立したコンテキストで評価するためバイアスがない。

実践例②:本番環境への誤デプロイ防止

課題: deploy production を誤って実行してしまうリスクがある。

ハーネスによる解決: PreToolUseフックでdeployコマンドをブロックする。

# .claude/hooks/safety-check.py
import sys, json, os

tool_input = json.loads(os.environ.get('CLAUDE_TOOL_INPUT', '{}'))
cmd = tool_input.get('command', '')

if 'production' in cmd or ' prod ' in cmd:
    print(json.dumps({
        "decision": "block",
        "reason": (
            "本番環境へのデプロイはClaude Codeから直接実行できません。"
            "PRをmainにマージしてCIパイプラインから実行してください。"
        )
    }))
    sys.exit(0)
// .claude/settings.json に追加
{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{"type": "command", "command": "python3 .claude/hooks/safety-check.py"}]
    }]
  }
}

効果: deploy production がハーネス層でブロックされる。Claudeがどれだけ「実行すべき」と判断しても、ハーネスが上書きして阻止する。

実践例③:マルチエージェントリサーチシステム

課題: 大規模な調査タスクを1セッションで処理しようとするとコンテキストが汚染される。

ハーネスによる解決: 役割別エージェントが協調してレポートを作成する。

Writer Agent(レポート執筆担当)Analyst Agent(データ分析担当)Researcher Agent(Web検索担当)Orchestrator(メインセッション)ユーザーWriter Agent(レポート執筆担当)Analyst Agent(データ分析担当)Researcher Agent(Web検索担当)Orchestrator(メインセッション)ユーザー各エージェントは独立したコンテキストウィンドウで動作/research-report テーマ名情報収集を依頼(独立コンテキス-ト)収集結果を構造化して返すデータ分析を依頼(独立コンテキスト)分析結果・考察を返すレポート執筆を依頼(独立コンテキスト)完成ドラフトを返す最終レポートを提出

各エージェントが独立したコンテキストで動くため、1つのセッションにすべての情報を詰め込む必要がない。コンテキスト汚染を防ぎつつ、大規模な並列処理が実現できる。


よくある疑問とつまずきポイント

よくある失敗:CLAUDE.mdを書きすぎる
CLAUDE.mdが長くなりすぎると、Claudeが重要なルールを見落とす。「このルールを削除してもClaudeが間違いを犯すか?」と問い、NOなら削除する。200行以下を目安に保つ。コードから読み取れること・標準的な慣習・頻繁に変わる情報は書かない。

Q: スキルとCLAUDE.mdの使い分けは?

→「常に意識すべきルール」はCLAUDE.mdへ。「特定の作業でだけ使う具体的な手順」はスキルへ。例えば「コミットメッセージはAngular形式を使う」はCLAUDE.mdに書くが、「PRを作成する具体的な手順」はスキルにする。

Q: スキルとエージェントはどう使い分けるか

  スキル エージェント
定義ファイル .claude/skills/*/SKILL.md .claude/agents/*.md
実行方法 /スキル名 で明示的に呼ぶ Agentツール経由または自動起動
コンテキスト メインセッションと共有 独立したコンテキストウィンドウ
向いているもの 決まった手順を繰り返す作業 独立して考えさせたいサブタスク
例 deploy・fix-issue・create-pr security-reviewer・researcher

Q: フックのスクリプトが動かない

→ 実行権限の確認が最初の一手だ。

chmod +x .claude/hooks/scripts/*.sh
# settings.jsonの構文確認
python3 -c "import json; json.load(open('.claude/settings.json')); print('OK')"

次のステップ:学習リソースとコミュニティ

walkinglabs/awesome-harness-engineering

ハーネスエンジニアリングのリソースを体系化したキュレーションリポジトリ。530件以上のリソースが8カテゴリに整理されている。

カテゴリ 内容
Foundations AIエージェント設計の基本原則(OpenAI・Anthropic論文含む)
Context, Memory & Working State コンテキスト・メモリ設計の手法
Constraints, Guardrails & Safe Autonomy 安全性・制約の実装パターン
Specs, Agent Files & Workflow Design CLAUDE.md等のスペック設計ノウハウ
Evals & Observability 評価・可観測性フレームワーク
Benchmarks 40以上の評価スイート(SWE-bench・WebArena等)
Runtimes & Reference Implementations オープンソースエージェント実装例

初学者には「Foundations」と「Specs, Agent Files & Workflow Design」から入るのが最も効率的だ。

revfactory/harness プラグイン

Claude Codeのプラグインとして、ドメイン固有のエージェントチームの設計・スキル生成を自動化するメタスキル。Build a harness for this project と指示するだけで、6つのアーキテクチャパターン(パイプライン・ファンアウト/ファンイン・エキスパートプール・プロデューサー・レビュアー・スーパーバイザー・階層的委譲)から最適な構成を自動生成する。

Claude Code Auto Modeの設定方法と組み合わせることで、より自律的なエージェント環境を構築できる。

実践チェックリスト
  • ☐ /init でCLAUDE.mdを生成した
  • ☐ よく繰り返す作業を1つスキル化した
  • ☐ PostToolUseフックでlintを自動実行する設定を追加した
  • ☐ CLAUDE.mdを200行以下に保っている
  • ☐ 間違えるたびにCLAUDE.mdを更新している

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

2026-10-11 に実測で確かめ直した

本記事の対象リポジトリを 2026-10-11 に clone して、ライセンスの実体・更新状況・規模を測り直した。 紹介文やバッジではなく、リポジトリの中身を直接読んだ値だ。

# ① 浅く clone する
git clone --depth 1 https://github.com/walkinglabs/awesome-harness-engineering /tmp/awesome-harness-engineering
# ② 直近のコミット日を見る → 2026-08-19
git -C /tmp/awesome-harness-engineering log -1 --format=%ad --date=short
# ③ ライセンスの実体と規模を見る → Creative Commons / 7 ファイル
head -3 /tmp/awesome-harness-engineering/LICENSE* 2>/dev/null; git -C /tmp/awesome-harness-engineering ls-files | wc -l

③が肝心で、ライセンスは Creative Commonsだった。バッジや README の記述ではなく LICENSE ファイルの中身を読んでいる。

確認項目 2026-10-11 の実測 確認方法
ライセンス Creative Commons head -3 LICENSE* でファイル本文を読む
直近コミット 2026-08-19(53日前) git log -1 --date=short
規模 追跡ファイル 7 本 git ls-files \| wc -l

確かめていない

clone して読む

clone して読む

紹介文やバッジ

実体を確かめたか

公称値のまま

LICENSE の中身

git log の最終コミット

Creative Commons

2026-08-19

2026-10-11 時点の
判断材料

参照ソース

・walkinglabs/awesome-harness-engineering(GitHub) — 本記事が 2026-10-11 に測り直した対象
・LICENSE — ライセンスの実体(手順③で読んだファイル)
・Harnessing Claude’s Intelligence — Anthropic公式ブログ
・revfactory/harness — GitHub
・Harness Design for Long-Running Applications — Anthropic Engineering
・Claude Managed Agents Overview — Anthropic Docs
・Skill Issue: Harness Engineering for Coding Agents — HumanLayer
・Extend Claude Code with Skills — code.claude.com
・TAKTを選んだ理由:ハーネスエンジニアリング4フレームワーク比較 — Zenn(purple_matsu1)