SiiD BLOG ロゴ

今さら聞けないハーネスエンジニアリング|Claude CodeとCodexの能力を最大限引き出す6つのLevel

今さら聞けないハーネスエンジニアリング|Claude CodeとCodexの能力を最大限引き出す6つのLevel

この記事を書いた人

セイト@エンジニア兼講師

セイト@エンジニア兼講師

2012年に大学を卒業後、株式会社LIGにてWebデザイナー・Webエンジニアを3年務めたあと、株式会社LIG Philippinesの代表・VPoEとして6年間の在籍中に社員数約100名程度のテックチームへ成長させる。 その後2021年に独立し、合同会社BugFixを設立。登録者13万人を超えるテック系YouTubeチャンネルの運営やキャリアに特化したAIプログラミングスクールSiiDを運営中。

こんにちは!SiiD代表エンジニアのセイトです。

Claude CodeのFableや、CodexのAstra。使いこなせていますか?
SNSには「一発でこんなものができた!」という投稿が並んでいますが、自分で触ってみると、そこまでのものは返ってこないことも多いと思います。

いくらAIの性能が良くても、使う側に技術がなければ、クオリティの高いものはできません。その技術が、ハーネスエンジニアリングです。
エンジニアでなくても読める内容にしているので、この記事1本で全体像をつかんでください。

ハーネスエンジニアリングとは?プロンプトエンジニアリングとの違い

AIに「いい感じの提案資料を作って」と頼むより、色、構成、参考にする資料まで具体的に伝えたほうが、期待に近いものが返ってきます。
完成形を具体的な言葉にして伝える。これがプロンプトエンジニアリングです。

ただ、このやり方だけだと、毎回同じ説明をすることになります。新しい会話を始めるたびに、AIは前提を知らないところから仕事を始めるからです。

ハーネスエンジニアリングは、この問題を解決します。AIが仕事をする「環境」を先に整えておく考え方で、目的は次の3つです。

  • AIにいい加減なことをさせない
  • 触ってほしくないファイルに触らせない
  • 一度伝えたことを、何度も説明しなくて済むようにする

そのために、AIに読ませるファイルと、AIの動きを制御するプログラムを先に用意しておきます。こうしておけば、何度も同じ指示をしなくても、少ない手順で期待に届く出力が返ってくるようになります。
こうして用意したものの一式を「ハーネス」と呼びます。

必要なものはけっこうあるので、全部を一度にやろうとすると途中で嫌になってしまうかもしれません。そこでこの記事では、用意するものをLevel 1から6に分けて説明します。

  • Level 1〜3:AIに文章で伝えて、AIの判断で動いてもらうもの
  • Level 4:AIの判断に関係なく、強制的に動くプログラム
  • Level 5〜6:外から取り込んだり、外のサービスとつないだりする仕組み

全部やる必要はありません。苦手意識のある方は、Level 1〜2だけでも試してみてください。それだけでも出力結果は大きく変わります。
また、ここで紹介する知識はClaude CodeとCodexのどちらでも使えます。この記事では、両方に対応できるように説明します。

ハーネスエンジニアリングのLevel 1:AGENTS.md(指示書)

AGENTS.mdはAIが最初に読みにいくファイルで、詳しい仕様は別ファイルに分けて参照させることを示す図

AGENTS.mdは、AIが仕事を始めるときに最初に自動で読みにいくファイルです。作業するフォルダのルートディレクトリ(一番上の階層)に、AGENTS.mdという名前で置いておきます。
ただし、Claude Codeは同じフォルダ(またはその上の階層)にCLAUDE.mdがあると、そちらだけを読みます。すでにCLAUDE.mdを使っている場合は、CLAUDE.mdの先頭に @AGENTS.md と1行書いておけば、AGENTS.mdも読み込まれます。

書くのは次の3つです。

  1. このプロジェクトは何なのか
  2. AIにしてほしいことと、守ってほしいこと
  3. 詳しい情報は、どのファイルに書いてあるのか

AGENTS.mdの役割は、ほぼインデックス(目次)です。詳しい内容までここに書き込まず、「デザインのルールはこのファイルを見て」「データベースの仕様はこっちのファイルを見て」と参照先を示しておきます。
AGENTS.mdの中身とファイルの置き場所は、次のようになります。

エディタで開いたAGENTS.mdの例。プロジェクト概要と、SPEC.md・TASKS.mdへの参照を書いている

AGENTS.mdをAIに作ってもらう方法

自分で書かなくても、AIにこう頼めば作ってもらえます。

このフォルダの中身を調べて、AGENTS.mdのたたき台を作ってください。
プロジェクトの説明、守ってほしいルール、参照すべきファイルの3つを、短くまとめてください。

そこから、AIが間違えたことや、毎回伝えている前提を書き足していきます。書き足すときも「今の注意点をAGENTS.mdに追記して」と頼むだけで更新できます。

AGENTS.mdの仕組みと長さの目安

AGENTS.mdは、マークダウンというファイル形式(ほぼテキストファイル)で作成します。
このファイルは会話を始めるたびに全文が読み込まれるため、長くなるほど肝心の指示が埋もれて守られにくくなります。Claude Codeの公式ドキュメントでは、目安は200行未満とされています。

それを超えそうなら、ファイルを分けましょう。分けたファイルは、上の画像のようにAGENTS.mdの中でパス付きで指定すれば参照させられます。

ハーネスエンジニアリングのLevel 2:スキル(Skills)

毎回教えて指示する状態から、スキルを用意して「これ読んでおいて」で済む状態に変わることを示す図

スキルは、特定の作業をどう進めるかをまとめた手順書です。用意しておくと、同じ説明を何度もしなくて済むようになります。

僕の場合は、YouTube動画を文字起こししてブログ記事を書く作業をスキルにしています。
「YouTube動画を選ぶ → AIで文字起こしする → 決まったルールに従って文章を整える → サムネ画像を作る → CMSに入稿する」という同じ流れを毎回たどるので、この手順をスキルとして残しました。あとは「この動画をブログ記事にしておいて」と頼むだけで、AIがスキルを読み込んで同じ手順で進めてくれます。

スキルに残せるのは、作業の手順だけではありません。ノウハウも残せます。
たとえばAIに文章を書かせると、いかにもAIが書いたような文章になりがちです。そこで「こう書けばAIの癖が取れて自然な文章になる」という書き方のコツをスキルにまとめておき、それを読ませたうえで書いてもらいます。資料作成のルール、議事録のまとめ方、メールの書き方など、毎回説明している手順やコツなら何でもスキルにできます。

スキルの中身とファイルの置き場所は、次のようになります。1枚目がClaude Code、2枚目がCodexの例です。

Claude Codeのスキルのファイルの置き場所と中身の例
Codexのスキルのファイルの置き場所と中身の例

スキルをAIに作ってもらう方法

まだ一度もやったことのない作業をスキルにしたいなら、「◯◯という作業をスキル化して」と頼むだけで作ってもらえます。
すでにやったことのある作業なら、一度AIと一緒にその作業をしたあとで「今の手順を、次回から同じように進められるようにスキルにしてください」と頼みます。

作ったスキルは、一発目から期待どおりには動かないと思ってください。その都度フィードバックしてスキルを更新していけば、何回かのやり取りで思いどおりに動くようになります。

スキルの置き場所と呼び出し方(Claude Code・Codex)

スキルは、Claude CodeとCodexで仕様が少し異なります。

Claude Code

Codex

置き場所

.claude/skills フォルダ

.agents/skills フォルダ

呼び出し方

/(スラッシュ)のあとにスキルの名前

$(ドル記号)のあとにスキルの名前

普段はAIが必要だと判断したタイミングで作成済みのスキルを自動で使いますが、確実に使いたい場合はコマンドで呼び出します。このとき、Claude Codeでは /、Codexでは $ を入力してからスキルの名前を続けます。

ハーネスエンジニアリングのLevel 3:サブエージェント(Subagents)

あなたが話すClaude Code本体が、複数のサブエージェントを呼び出して並列に仕事を任せる仕組みの図

AIエージェントは、あなたと直接会話するエージェントの後ろで、「サブエージェント」と呼ばれる複数のエージェントを動かせます。作業を分担させたり並列で処理させたりすることで、スピードと質を上げられます。
人間も、一人で異なる業務をこなすより、デザインはデザイナー、プログラミングはエンジニア、営業は営業担当と役割を分けてチームで動いたほうが生産性は高くなります。サブエージェントを使うと、AIにもこれと同じように作業を分担させられます。

僕が使っているサブエージェントの一例として、記事のレビューだけを担当するサブエージェントを用意しています。
AIは「スキルの手順どおりに書いた」と思っていても、本当にそのとおりに書けているとは限りません。自分で書いたものを自分でチェックすると見落とすのは、人間も同じです。そこで、書き上がった原稿をレビュー担当にチェックしてもらい、指摘を受けたら書いたAIが直します。僕のところに完了報告が来るのは、そのあとです。

サブエージェントの中身とファイルの置き場所です。Claude Code(上)とCodex(下)の例です。

Claude Codeのサブエージェントのファイルの置き場所と中身の例
Codexのサブエージェントのファイルの置き場所と中身の例

サブエージェントをAIに作ってもらう方法

使うだけなら、ファイルを用意する必要すらありません。「サブエージェントを使って、書く担当とレビューする担当に分けて」と頼むだけで動いてくれます。
毎回同じ担当を使うなら、「今のレビュー担当を、次回からも使えるように保存して」と頼めば、ファイルにして残してもらえます。

スキルと同じで、一発目のレビューは甘かったり、逆に細かすぎたりします。「ここは見なくていい」「ここはもっと厳しく」とフィードバックして、担当を育てていきましょう。

サブエージェントの置き場所とファイル形式(Claude Code・Codex)

サブエージェントは、Claude CodeとCodexでファイルの作りが別物です。

Claude Code

Codex

置き場所

.claude/agents フォルダ

.codex/agents フォルダ

ファイル形式

マークダウン

TOML(設定ファイルの一種)

形式は違いますが、書く内容はどちらも「担当の名前」「どんなときに使うか」「何をしてほしいか」の3つです。そのため、片方で作った担当の文章は、もう片方にも使い回せます。

なお、自分で作ったサブエージェントは、メインの会話の内容を引き継がずに動きます。書いた経緯を知らない状態で原稿を読むので、思い込みなしでレビューできます。ここが、レビューの質が上がる理由です。

ハーネスエンジニアリングのLevel 4:フックス(Hooks)

プロンプトは「お願い」、フックスは「システム」として強制力があることを比べた図

フックスは、AIが何かをする前後に、自動で別の処理を差し込む仕組みです。ここまでの3つはAIの判断で動いてもらうものでしたが、フックスはプログラムで強制的に動かします。

AIに「このファイルは絶対に編集しないで」と伝えると、AIは守ろうとしてくれます。ただ、100%守ってくれる保証はありません。
プロンプトや指示書に書いた内容は、あくまで「お願い」だからです。状況によっては、AIが「ここでは触る必要がある」と判断して編集してしまうことがあります。

僕が使っているフックスの一例として、触ってほしくないファイルへの書き込みを止めるフックスを入れています。AIが編集しようとした時点で、プログラムが止めてくれます。

「させない」だけでなく、「必ずさせる」こともできます。よく使われるのは通知です。AIの作業が終わったときや、AIがあなたの判断を待っているときに、パソコンに通知を出します。これを入れておけば、AIに任せている間は別の仕事をして、呼ばれたときだけ戻ればよくなります。

フックスの設定ファイルの中身と置き場所です。Claude Code(上)とCodex(下)の例です。

Claude Codeのフックスの設定ファイルの置き場所と中身の例
Codexのフックスの設定ファイルの置き場所と中身の例

フックスをAIに設定してもらう方法

設定ファイルを見て難しそうだと感じても、自分で書く必要はありません。やりたいことを、そのままAIに伝えます。

作業が終わったときと、私の確認が必要になったときに、パソコンに通知が出るように設定してください。
「契約書」フォルダの中のファイルを、編集も削除もできないようにフックスを設定してください。
設定したら、実際に止まるかどうかテストしてください。

設定してもらったら、本当に動くかを一度だけ自分で確かめましょう。通知なら実際に届くか、ファイルの保護なら練習用のファイルでちゃんと止まるかを見ます。

フックスの設定ファイル(Claude Code・Codex)と設定後のテスト

フックスの考え方はClaude CodeもCodexも同じですが、設定を書くファイルが異なります。

Claude Code

Codex

置き場所

.claude フォルダの settings.json

.codex フォルダの hooks.json

ファイル形式

JSON(設定ファイルの一種)

JSON(設定ファイルの一種)

どちらのファイルにも「いつ」「何に対して」「何を実行するか」を書きます。書き方はよく似ていますが、使えるタイミングや項目に違いがあるので、片方の設定を持ってきたときは必ず動作を確認しましょう。
また、フックスが止めてくれるのは、設定した条件に当てはまる操作だけです。だからこそ、設定後のテストが大事になります。

ハーネスエンジニアリングのLevel 5:プラグイン

スキルやサブエージェントなどを1つにまとめて配布するプラグインの仕組みの図

Level 2〜4のスキル、サブエージェント、フックスは、自分で作らなくても手に入ります。公式や他の人が作ったスキルやサブエージェントやフックスを、まとめて使えるパッケージにして配布する仕組みがプラグインです。

いちばん簡単なのは、デスクトップアプリから追加する方法です。Claude Codeは左メニューの「カスタマイズ」、Codexは左メニューの「プラグイン」から追加できます。CLI操作ができる方は、コマンド入力でインストールする方法もあります。

Claude Codeのデスクトップアプリの「カスタマイズ」画面で、プラグインの一覧を表示している様子
Codexアプリの「プラグイン」画面で、プラグインの一覧を表示している様子

僕が使っているプラグインの一例として、Claude Codeに「Frontend Design」を入れています。AIにWebページを作らせると、どれも似たような見た目になりがちですが、これを入れておくとそうなりにくくなります。
自分にない専門知識をAIに持たせられるのが、プラグインのいいところです。

プラグインの選び方をAIに相談する方法

最初は、プラグインは作るものではなく、一覧から選んで入れるものだと考えてください。やることは「選ぶ」だけです。
どれを入れればいいか分からなければ、一覧を見ながらAIに「資料作成とリサーチの仕事が多いです。この中で入れておくと良いものはどれ?」と相談しましょう。入れてみて合わなければ、外せば済みます。

プラグインの中身と、公式のものから選ぶ理由

プラグインの中身は、スキルやサブエージェント、フックスなどの詰め合わせです。
プラグインの仕組みはClaude CodeにもCodexにもありますが、それぞれ別物です。Claude Code用のプラグインは、Codexのプラグイン一覧からそのまま入れることはできません(Codexには、Claude Codeの設定をまとめて取り込むインポート機能があります)。

個人が配布しているプラグインもありますが、誰が作ったか分からないものは安全面で不安が残ります。プラグインにはプログラムも含められるので、まずは公式のものから試すのがおすすめです。

ハーネスエンジニアリングのLevel 6:MCP

MCPの説明と、Playwright・GitHub・freee・Googleの4つの接続例を並べた図

MCPは、AIエージェントと外部のサービスをつなぐための仕組みです。デザインツールのFigma、会計ソフトのfreee、ドキュメント管理のNotionなど、こうしたサービスをAIに操作させたいときに使います。

MCPがなくても、近いことはできます。AIにブラウザを操作させる方法です。freeeの画面を開いて、スクロールして、ボタンを1つずつ押していくという、人間と同じやり方ですね。
ただ、これは遅いうえに操作ミスも起きやすく、トークンの消費量も多くなります。AIに人間のまねをさせるのは、効率がよくありません。

サービス側がMCPを用意していれば、AIは画面を経由せずに、必要な機能を直接使えます。そのほうが速く、ミスも少なくなります。
僕が使っているMCPの一例として、会計ソフトのfreeeをつないでいます。これで、毎月の経費精算をAIに手伝ってもらっています。AIに操作させたいサービスがあるなら、まずMCPがあるかを探しましょう。

MCPをAIに設定してもらう方法

つなぎたいサービスにMCPがあるかをAIに調べてもらい、設定するところまで頼んでしまいましょう。

あなたが{任意のサービス名}を操作できるようにしたいです。公式のMCPがあるか調べて、つなぐ手順を教えてください。設定できるところは、あなたが進めてください。

手順によってはログインなど人間の操作が必要になる場合があるので、そのときはAIに代わってあなたが操作します。それ以外は、基本的にAIの案内どおりに進めれば完了します。

MCPの設定場所(Claude Code・Codex)と対応操作の確認

MCPは共通の通信規格です。そのため、サービス側が用意したMCPは、Claude CodeでもCodexでも使えます。どちらもデスクトップアプリから探せます。

Claude Code

Codex

設定する場所

デスクトップアプリの「コネクタ」

Codexアプリの左メニューにある「プラグイン」(一覧にないサービスは「設定」の「MCP servers」から追加)

Claude Codeのデスクトップアプリで、MCPをつなぐ「コネクタ」の画面
Codexアプリの左メニュー「プラグイン」から、外部サービスとの連携を追加する画面

なお、「読み取りはできるけれど、作成や更新はできない」というMCPもあります。やりたい操作に対応しているかは、最初に確認しておきましょう。

ハーネスエンジニアリングは最初から全部そろえなくていい

最初から全部そろえる必要はありません。まずはLevel 1と2だけで十分で、足りなくなったものを次の順で足していけば済みます。

  • 毎回伝えている前提なら、AGENTS.mdに書く
  • 毎回説明している手順なら、スキルに残す
  • それでもAIが守ってくれないルールが出てきたら、フックスを検討する

ハーネスは一度作って終わりではなく、使いながら育てていくものです。
僕もブログ記事をAIに書いてもらっていますが、最初に任せた頃より、今のほうが圧倒的に質の高い初稿が出てきます。使うたびに「この指示はこう書いたほうがいいな」と気づいて、スキルや指示書を直してきたからです。

SiiD公式LINEで「ハーネスの雛形ファイル」を無料配布中

記事を読んで実際に作ってみたものの、これで合っているのか分からない方に向けて、この記事で紹介したファイルの実際の雛形(Level 1〜6)を無料でお配りしています。答え合わせに使ってください。

特典の雛形ファイル一式。AGENTS.md・SPEC.md・TASKS.md・はじめに.txtと、.agents・.codex・.claude・scriptsフォルダ

受け取り方法は、SiiDの公式LINEに登録して、メッセージで「ハーネス」と送ってください。自動で届きます。

ハーネスエンジニアリングの参考資料

  • How Claude remembers your project(Claude Code公式ドキュメント:指示書の書き方・長さの目安、AGENTS.mdの読み込み条件)
  • Best practices for Claude Code(Claude Code公式ドキュメント:指示書に書くこと・書かないこと)
  • Automate workflows with hooks(Claude Code公式ドキュメント:フックス)
  • Create custom subagents(Claude Code公式ドキュメント:サブエージェント)
  • Agent Skills(スキルの共通規格と対応ツールの一覧)
  • Build skills(OpenAI公式ドキュメント:Codexのスキルの置き場所・呼び出し方)
  • Hooks(OpenAI公式ドキュメント:Codexのフックスの設定場所)
  • Subagents(OpenAI公式ドキュメント:Codexのサブエージェントの形式)
  • Plugins(OpenAI公式ドキュメント:Codexのプラグイン)
シェアする

未経験からのエンジニア転職を本気で目指すなら「SiiD」

SiiDはYouTube 13万人のセイト先生が主任講師のAIプログラミングスクール。元人事部長&現役エンジニアによる徹底指導で、生涯年収を大きくアップさせませんか?

SiiDの詳細を見る