PR
私が使っているPCガジェット類
作業環境で実際に使っている・気になっている周辺機器などをまとめました
※ 一部のリンクは広告(アフィリエイト)を含みます
作業環境で実際に使っている・気になっている周辺機器などをまとめました
※ 一部のリンクは広告(アフィリエイト)を含みます
Claude Code Desktopを使い始めて何記事か触っているうちに、「もっと自動化したい」「設定を整理したい」「ファイル操作を任せる範囲を絞りたい」みたいなことを考え始めますよね
そこから先に進むには 「拡張機構」と呼ばれる仕組みを理解しておくと、できることの幅が一気に広がります
この記事では、Claude Codeに慣れてきた中級者向けに 拡張機構の4本柱(Skills・MCP・Hooks・Subagents)と、その土台になる「ハーネス」という概念を体系的に解説します
応用編では各機能の具体的なテクニックや、CLAUDE.md・Permissions・Worktreesといった日常運用で効いてくる設定を扱う予定なので、まずはこの基礎編で全体像を押さえてもらえると嬉しいです
Claudeの基本的な使い方はClaudeの使い方を初心者向けに解説した記事、AI周辺の用語はClaudeを始める前に知っておきたい用語集でまとめているので、初学者の方はそちらから入るのがスムーズです
Claude Code関連の記事を読んでいると、最近 「ハーネス」(harness)という言葉をよく見るようになりました、聞き慣れない単語ですよね
Claude本体は厳密にいうと LLM(大規模言語モデル)というテキストを生成するだけのモデルです、ファイルを読んだり、コマンドを実行したり、記憶を保持したりする機能は本体にはありません
それなのにClaude Codeが「ファイルを操作する」「コマンドを実行する」「設定を覚える」みたいな振る舞いができるのは、本体の周りに『体・道具・記憶』に相当するソフトウェア層が組まれているからです、これが「ハーネス」と呼ばれているものになります
例えるなら次のような関係性です
| 役割 | 担当しているもの |
|---|---|
| 脳(考える部分) | Claudeの本体(LLM) |
| 体(動く部分) | ツール実行・ファイル操作・コマンド実行 |
| 道具(連携部分) | MCP・コネクタ・拡張機構 |
| 記憶(覚える部分) | CLAUDE.md・Memory・コンテキスト管理 |
| ルール(縛る部分) | Permissions・Hooks |
このうち 「脳」以外のすべてがハーネスです、つまり実は Claude Codeのコードの大半はLLMの中身ではなく、このハーネス側にあることになります
ここが中級者にとって重要な視点で、ハーネス側はユーザーが書き換えられる部分が多いです
LLM本体(Claudeの賢さ)はAnthropicが訓練したものをそのまま使うしかありませんが、周辺のハーネスは settings.json や Skills・Hooks・MCPサーバーなどで 自分の使い方に合わせて自由に拡張できる設計になっています
つまり「Claude Codeをもっと使いこなしたい」というのは ハーネス側をどう構築するかの話とほぼ同義です、ここから先で扱う4本柱はすべてこのハーネス層の構成要素になります
ハーネスを 「設計・構築・最適化する取り組み全般」を ハーネスエンジニアリングと呼びます
Anthropic公式や業界でもよく出てくる用語で、最近は prompt engineering(プロンプトエンジニアリング)から harness engineering へと重心が移ってきている流れがあります
両者の違いをざっくり整理すると次のようになります
| 軸 | prompt engineering | harness engineering |
|---|---|---|
| 焦点 | プロンプトの書き方 | 周辺ソフトウェア層の設計 |
| 主体 | エンドユーザー寄り | 開発者・運用者 |
| 効果範囲 | 1回の会話で完結 | 継続的なエージェント動作 |
| 具体例 | 「順を追って考えて」と頼む | Hookでツール権限を制限する |
ハーネスエンジニアリングが扱う主な範囲はこんな感じです
つまりこの記事で紹介している 4本柱の話もすべてハーネスエンジニアリングの構成要素になります
参考までに、Claude Codeのコードベース分析(2026年)では 「AI判定ロジック1.6% / ハーネス層98.4%」というデータもあって、Claude Code自体がハーネスエンジニアリングの結晶みたいな存在になっています
「もっと使いこなしたい」と感じたら、この記事で扱う拡張機構を組み合わせて自分用のハーネスを設計していくフェーズに入ったということになります
Claude Codeのハーネスを拡張する仕組みは、現時点で大きく4つあります
それぞれが 「困りごと」の解決手段として性格が違うので、ここから1つずつ役割を整理していきます
Skillsは「よく使うプロンプト指示をテンプレート化して、Claudeに覚えさせる」仕組みです
毎回「コミットメッセージを書くときは○○のフォーマットで、こういう観点で…」と説明するのは面倒、でも一度Skillとして登録しておけば、Claudeがその場面を察知して自動で呼び出してくれたり、こちらから /コマンド名 で呼び出せたりします
ファイルの置き場所は次の2か所
~/.claude/skills/<skill-name>/SKILL.md(全プロジェクト共通の個人スキル).claude/skills/<skill-name>/SKILL.md(プロジェクト固有、Gitで共有可)SKILL.mdの基本構造はこんな感じです
---
name: commit-message
description: Gitのコミットメッセージを書くときに呼び出すスキル。conventional commits形式で、件名と本文を生成
when_to_use: Gitコミット、コミットメッセージ作成、commit
allow-tools: Bash(git diff *) Bash(git status)
user-invocable: true
---
# コミットメッセージ生成スキル
差分を確認した上で、次のルールでコミットメッセージを書いてください
- 件名は50字以内、英語または日本語
- conventional commits形式(feat / fix / docs / chore など)
- 本文は「なぜこの変更が必要だったか」を1〜2文で
- 文末に署名を入れないSkillsは どうやって発動するかで3つのパターンがあります
| パターン | 発動条件 | 主な用途 |
|---|---|---|
| 自動トリガー | Claudeがdescriptionを読んで「これだ」と判断したとき | 常用するタスク全般 |
| 手動呼び出し | ユーザーが /skill-name と入力 | 明示的に呼びたいワークフロー |
| パストリガー | frontmatterの paths にマッチするファイルを開いたとき | ファイル種別ごとの自動ロード |
自動トリガーを効かせるには description フィールドの書き方が重要で、「いつ使うべきか」を具体的なキーワード付きで書いておくとClaudeの判断精度が上がります
allow-toolsで限定)個人的にはClaude Codeの4本柱のうち 一番気軽に作り始められるのがSkillsで、Markdownを書くだけで作れるので習作に最適です
MCP(Model Context Protocol)は、Claudeが外部のサービスやデータベースとやり取りするための 共通言語です
これがなかった頃は、AIに「WordPressを操作させる」「GitHubのissueを読ませる」みたいなことをやろうとすると、それぞれのサービスごとに 個別のつなぎ込みコードを書く必要がありました
MCPは そのつなぎ込みのインターフェース部分を標準化したものです、MCPに対応した「MCPサーバー」を1個用意すれば、Claudeから自由にその外部サービスを呼び出せるようになります
MCPの活用には大きく2つのアプローチがあります
| アプローチ | 概要 | 難易度 |
|---|---|---|
| 公式コネクタを使う | Anthropicが用意したGoogle Drive・Slack・GitHubなどとの連携を有効化するだけ | 低(設定のみ) |
| 自作MCPサーバーを書く | Python/TypeScriptで自前のサーバーを立てて、独自API・社内システムと連携 | 中〜高 |
中級者がまず触るなら 公式コネクタからがおすすめ、設定画面からON/OFFするだけで使えます
そこから先「自分のWordPressと連携したい」「社内システムと繋ぎたい」となったら自作MCPサーバーの出番です
2026年現在、AIエージェント業界の標準規格として急速に広がっていて、これからますます重要になる仕組みです
Hooksは、Claudeが何かをするタイミング(イベント)に合わせて 自動でスクリプトを実行する仕組みです
SkillsやCLAUDE.mdが「Claudeにお願いする」性格の機構なのに対して、Hooksは 機械的に発動するのが大きな違いになります、「Claudeの判断に任せず、確実に毎回走らせたい処理」がある場合に効きます
| イベント名 | 発火タイミング | 典型的な用途 |
|---|---|---|
SessionStart | Claude Code起動時 | 環境変数読み込み、初期化スクリプト |
UserPromptSubmit | ユーザーがプロンプト送信時 | 入力検証、コンテキスト自動追加 |
PreToolUse | Claudeがツール実行する直前 | 危険コマンドのブロック、ログ出力 |
PostToolUse | ツール実行直後 | 自動lint・format、結果ロギング |
Stop | セッション終了時 | クリーンアップ、後片付け |
とくに PreToolUse は 危険コマンドの最終防衛線として使えるので、中級者なら覚えておきたいイベントです
例えば settings.json のdenyリストだけでは不安なので「実行直前に二重チェックして、危ない場合は通知も出したい」みたいなケースで使います
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/block-dangerous.sh"
}
]
}
]
}
}呼び出されるシェルスクリプトの最小例はこんな感じ
#!/bin/bash
INPUT=$(cat)
CMD=$(echo "$INPUT" | jq -r '.tool_input.command')
if echo "$CMD" | grep -qE 'rm -rf|DROP TABLE'; then
jq -n '{
hookSpecificOutput: {
hookEventName: "PreToolUse",
permissionDecision: "deny",
permissionDecisionReason: "危険コマンドをHookでブロックしました"
}
}'
fi
exit 0Hookは exit code とJSON出力の組み合わせで「許可/拒否/警告だけ」を制御できる仕組みになっていて、ここの設計が地味に奥深いです
初心者が混乱しがちなのが「SkillsとHooksってどう違うの?」という点なので整理しておきます
| 項目 | Skills | Hooks |
|---|---|---|
| 性質 | Claudeへの「お願い」 | 機械的な強制実行 |
| 判断主体 | Claude(描写を読んで判断) | システム(条件マッチで自動発火) |
| 書き方 | Markdown(プロンプト的) | シェルスクリプトや任意の実行可能ファイル |
| 主な用途 | 定型タスクのテンプレート化 | セキュリティ防御・自動lint等 |
Subagents(サブエージェント)は、メインのClaudeセッションから 別のコンテキストを持つClaudeにタスクを委譲する仕組みです
たとえば「ファイルを50個調査して、関連箇所をまとめて」みたいな重いタスクを、メインの会話に直接やらせると コンテキストウィンドウが調査ログで埋まってしまう問題があります
これをSubagentに任せれば、メインのコンテキストはきれいなまま、結果サマリーだけを受け取れます
Subagentの定義ファイルは .claude/agents/<agent-name>/AGENT.md に置きます
---
name: code-researcher
description: 大規模リポジトリの調査用エージェント、関連ファイル特定と概要把握を担当
tools: Read Grep Glob Bash(rg *)
model: claude-sonnet
maxTurns: 30
permissionMode: ask
isolation: worktree
---
あなたはコード調査の専門エージェントです
ユーザーから渡されたテーマに沿って、リポジトリ内の関連ファイル・関数・モジュールを特定し
最後に「どこに何があるか」のサマリーをMarkdownで返してください
ファイル変更や書き込みは行わず、読み取り専用で動作してください| フィールド | 役割 |
|---|---|
tools | このエージェントが使えるツールを限定(セキュリティの肝) |
model | 使用モデル指定(軽い作業はHaikuに任せる等) |
maxTurns | 最大ターン数、暴走を防ぐ |
permissionMode | 権限チェックの強さ(ask / allow / deny) |
isolation | worktree隔離するか |
注意点として、Subagentは親のSkillsを継承しない仕様です、必要なSkillはAGENT.mdの中で明示的にプリロードする必要があります
ここまで4つの拡張機構を見てきましたが、 どの場面でどれを使うかを整理するとこんな感じになります
| やりたいこと | 使うべき機構 |
|---|---|
| 定型タスクのテンプレート化(コミットメッセージ、レビュー観点など) | Skills |
| 外部サービスとの連携(WordPress、Slack、GitHubなど) | MCP |
| 機械的な強制処理(危険コマンドブロック、自動lint) | Hooks |
| 長いリサーチ・並列処理・隔離したい作業 | Subagents |
| 判断基準・方針の周知(常時参照される指針) | CLAUDE.md(応用編で扱う) |
| 機械的に止めたい操作のブロック | Permissions deny(応用編で扱う) |
同じ「自動化したい」というニーズでも、「Claudeの判断を信頼する」のがSkills、「機械的に処理させる」のがHooks、という対称関係を覚えておくと選びやすくなります
同様に 「メイン会話内で完結させる」のが標準、「コンテキストを分けたい」のがSubagents、「Claude内で完結」のが標準、「外部とつなぐ」のがMCP、と対比で覚えると整理しやすいです
4本柱を一気に覚えるのは大変なので、それぞれ 「習作として最初に作るならこれ」というお題を1つずつ紹介します
上で例示したような commit-message スキルが Skills入門に最適です
毎回作業しているうちに「commitメッセージこんな感じで書きたい」という個人の好みが見えてくるので、それをそのままMarkdownに書き出すだけで形になります、5分くらいで完成します
自作MCPはハードルが高めなので、まずは 公式コネクタを1つ有効化してみるのがおすすめ
Google Drive・GitHub・Notion など、自分が日常的に使っているサービスのコネクタを設定画面から有効にして、Claude経由でファイル一覧を取ったり検索したりする体験から始めるとMCPの便利さが実感できます
いきなり複雑なHookを書くより、「危険コマンドを実行しようとしたらデスクトップ通知を出すだけ」みたいな最小Hookから入るのが分かりやすいです
Windowsなら msg、Macなら osascript、シェルスクリプトの記述方法もコピペできるものが多いので、最初の壁は高くありません
「リサーチタスク用に tools を Read Grep Glob だけに絞った専用エージェント」を作るのが、Subagentsの威力を体感する最短ルートです
大きめリポジトリで「○○の実装どこにある?」みたいな調査をするとき、メインで進めるのとSubagentに任せるのとで、コンテキスト消費量の違いに驚くと思います
長くなりましたが、ポイントをぎゅっと整理するとこんな感じです
この基礎編で4本柱の見取り図ができたので、応用編では CLAUDE.mdの深掘り・Memory管理・Permissions応用・Worktreesでの並列開発など、日常運用で効いてくる中級者向けテクニックを掘り下げる予定です
各拡張機構の個別深掘り(Skillsだけで1記事、MCPだけで1記事、というレベル)も今後 順次まとめていく予定なので、興味のある分野があれば追っかけてもらえると嬉しいです
初心者向けの周辺記事として、Claudeの使い方を初心者向けに解説した記事、Claudeを始める前に知っておきたい用語集、Claude Code Desktop初心者向けセキュリティ5選も合わせてどうぞ
PythonとExcelを中心に仕事に役立つ業務ツールや自動化、スクレイピングツールの作成を受注していて、クラウドワークスでは気が付けば100件以上のお仕事を受注してきました!
会社員をやりながらの副業なので時間の捻出は相応ですが、クライアントの方々と近い立場でこちらからも提案しながら活動していますのでお悩みあれば是非ご相談ください
VBAとPythonを中心にユーザー側でできるITを自己学習しているので備忘録半分、学習履歴を残して同じ道を辿る人の参考になればとブログを始めました
副業でスクレイピングツール作成を中心にできることを色々やっていますのでご相談いただけるとありがたいです!
クラウドワークスのページへ
ココナラのページへ
コメント