ClaudeCodeを最大限に活用するための機能完全ガイド
はじめに
こんにちは。株式会社FLINTERSの小林です。
ClaudeCodeを最大限に活用したいと考えたとき、まず取り組むべきことはSub-Agentsなどの固有機能について理解することです。
ClaudeCodeの特定の活用事例についての記事は数多く出ており、今後も画期的な活用方法が生み出され続けていくと思います。
しかし、それらの活用アイデアを自分のチームに最適な形で運用するためには、それらを支えているClaudeCodeの基本機能について「何が」「どこで」「どのように」「なぜ」使われているのか理解する必要があります。
そのために公式ドキュメントを読み込むことが一番オススメなのですが、
- AgentSkillsについての説明が(おそらく)ビジネス面での都合でExcel分析などができることを強くアピールしすぎており、本質的な特徴がProgressive Disclosure(段階的開示)であることがわかりづらくなっている。
- AskUserQuesionといった、ひっそりリリースされている隠しツール的なものが存在する
など、公式ドキュメントだけではわかりづらい、もしくは知り得ない情報があります。
そのため、今回は本記事を作成しました。
本記事では、ClaudeCodeを最大限に活用するための代表的な固有機能を紹介します。
それぞれの用途、違い、使い分けを理解し、各機能ごとの本質的な特徴を掴むことでClaude Codeをより効果的に活用できるようになります。
紹介する固有機能一覧
| 機能 | 呼び出し方 | リリース |
|---|---|---|
| CLAUDE.md | 自動:常時 | 初期機能 |
| Slash Commands | 明示的 | 初期機能 |
| Sub-Agents | 自動:AI駆動※1 | 初期機能 |
| Hooks | 自動:イベント駆動※2 | 初期機能 |
| Plugins | 配布パッケージ | 2025年10月 |
| Agent Skills | 自動:AI駆動※1 | 2025年10月 |
| Ask User Question | 自動:AI駆動※1 | 公式未発表 |
※1 AI駆動とは、AIが状況を判断して自律的に実行を決定すること(ユーザーが明示的に指定する必要がない)
※2 イベント駆動とは、特定のイベント(ツール実行前後、ユーザー入力時など)をトリガーに自動実行されること
0. CLAUDE.md - 全体ルール
概要
CLAUDE.md は、プロジェクト固有の情報を Claude に常時提供するためのメモリファイルです。セッション開始時に自動的に読み込まれ、プロジェクトのコンテキスト、規約、構造などの基本情報を Claude Code と共有します。
特徴
- 常時読み込み - セッション開始時に自動的にコンテキストに含まれる
- プロジェクト知識の中央管理 - チーム全体で共有すべき情報を一箇所に集約
ファイル構造
my-project/
├── .claude/
│ └── CLAUDE.md # プロジェクトレベル
└── ...
~/.claude/
└── CLAUDE.md # 個人レベル(すべてのプロジェクトで有効)
作成例
プロジェクトレベル - .claude/CLAUDE.md:
# プロジェクト概要
このプロジェクトは、Next.js + TypeScript で構築された E コマースプラットフォームです。
## ディレクトリ構造
- `src/components/` - React コンポーネント
- `src/pages/` - Next.js ページとAPIルート
- `src/lib/` - ユーティリティ関数
- `src/styles/` - グローバルスタイル
## コーディング規約
### TypeScript
- `any` 型の使用は禁止(型安全性を重視)
- すべての関数に戻り値の型を明示
- Props には必ず interface を定義
### スタイリング
- Tailwind CSS を使用
- カスタム CSS は最小限に
- レスポンシブデザインは mobile-first
### コミット規約
- Conventional Commits 形式を採用
- 例:`feat: ユーザー認証機能を追加`, `fix: カート計算のバグを修正`
## テスト
- 単体テスト:Jest + React Testing Library
- E2E テスト:Playwright
- テストコマンド:`npm test`
- カバレッジ目標:80%以上
## 環境変数
必要な環境変数は `.env.example` を参照。
本番環境の値は Vercel の Environment Variables で管理。
## デプロイ
- `main` ブランチへの push で本番環境に自動デプロイ(Vercel)
- `develop` ブランチは staging 環境に自動デプロイ
- PR 作成時にプレビュー環境が自動生成
## 参考リンク
- [技術スタック詳細](./docs/tech-stack.md)
- [API 仕様書](./docs/api-spec.md)
- [デザインシステム](https://www.figma.com/...)
個人レベル - ~/.claude/CLAUDE.md:
# 個人的な開発プリファレンス
## コーディングスタイル
- 関数は小さく保つ(最大20行まで)
- コメントは「なぜ」を説明する(「何を」はコード自体で表現)
- 早期リターンを活用
## よく使うコマンド
```bash
# 開発サーバー起動
npm run dev
# ビルド
npm run build
# テスト
npm test
# リント
npm run lint
```
## 作業フロー
1. Issue からブランチを作成
2. ローカルで開発・テスト
3. PR 作成(レビュー依頼)
4. CI パス後にマージ
CLAUDE.md に書くべき内容
- プロジェクト構造 - ディレクトリレイアウト、主要ファイルの場所
- コーディング規約 - 命名規則、フォーマット、スタイルガイド
- 開発ワークフロー - Git フロー、デプロイ手順、テスト方針
- 技術スタック - 使用しているフレームワーク、ライブラリ
- 環境設定 - 必要な環境変数、設定ファイル
1. Slash Commands - 1コマンドでプロンプト指示
概要
Slash Commands は、ユーザーが明示的に /command-name の形式で呼び出すコマンドです。Claude Code には元々 /help や /clear などの組み込みスラッシュコマンドが用意されていますが、ここではユーザーが独自に作成できるカスタムスラッシュコマンドにフォーカスして解説します。よく使うプロンプトやワークフローをテンプレート化して、いつでも素早く実行できます。
特徴
-
ユーザーが明示的に呼び出す -
/reviewや/optimizeなど、ユーザーが指定したときだけ実行 -
引数をサポート -
$1、$2などのプレースホルダーで動的な値を渡せる -
Bash 実行が可能 -
!プレフィックスでコマンドを実行し、その出力をコンテキストに含める -
ファイル参照が可能 -
@で他のファイルの内容を含める
ファイル構造
my-project/.claude/commands/
├── optimize.md # プロジェクトコマンド
└── frontend/
└── component-review.md
~/.claude/commands/
└── security-review.md # 個人コマンド
作成例
基本的なコマンド - .claude/commands/optimize.md:
---
description: コードのパフォーマンス問題を分析して最適化を提案する
---
このコードを分析してパフォーマンスの問題を特定し、最適化の提案をしてください。以下の点に特に注意してください:
1. アルゴリズムの効率性
2. 不要な計算やループ
3. メモリ使用量
4. キャッシング可能な処理
引数を使ったコマンド - .claude/commands/fix-issue.md:
---
argument-hint: [issue-number] [priority]
description: Git issue を修正する(例: /fix-issue 123 high)
---
GitHub issue #$1(優先度: $2)を修正してください。
Git コンテキストを含むコマンド - .claude/commands/commit.md:
---
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*)
description: Git diff に基づいて自動的にコミットメッセージを生成して commit する
---
## 現在の状態
- Git ステータス: !`git status`
- Diff: !`git diff HEAD`
## タスク
上記の変更内容を確認して、適切なコミットメッセージを作成し、コミットしてください。
Slash Commands を使うべき場面
- 定期的に実行する決まったワークフロー
- 複数のステップから構成される処理
- チーム全体で共通の手順
2. Sub-Agents - 責務とコンテキストの分離
概要
Sub-Agents は、特定の作業タスクに特化させることができる専門的なAIエージェント定義機能です。各 Sub-Agent は独立したコンテキストウィンドウを持ち、作業タスクの専門性をカスタマイズできます:
特徴
- AI駆動 - AIが状況を判断して自動的に適切な Sub-Agent を選択(明示的な呼び出しも可)
- 独立したコンテキスト - メインの会話を汚さず、各 Sub-Agent が独立して動作
- 並列実行 - 複数の Sub-Agent を同時に実行可能(例:コードレビューとテスト実行を並行処理)
ファイル構造
.claude/agents/
├── code-reviewer.md # プロジェクト Sub-Agent
└── test-runner.md
~/.claude/agents/
└── debugger.md # 個人 Sub-Agent
作成例
コードレビュー Sub-Agent - .claude/agents/code-reviewer.md:
---
name: code-reviewer
description: シニアコードレビュー専門家。コード品質とセキュリティを審査する。コード変更後に自動的に使用。
tools: Read, Grep, Glob, Bash
model: inherit
---
# コードレビュー専門家
あなたはシニアコードレビュアーです。コードの品質とセキュリティ標準を確保します。
## 実行時の手順
1. `git diff` で最近の変更を確認
2. 修正されたファイルにフォーカス
3. すぐにレビューを開始
## レビューチェックリスト
- コードは単純で読みやすいか
- 関数と変数は適切に命名されているか
- コードの重複がないか
- 適切なエラーハンドリングがあるか
- シークレットや API キーが露出していないか
- 入力値の検証が実装されているか
- テストカバレッジは十分か
## フィードバック形式
優先度別に整理してフィードバックを提供:
- **クリティカル** - 必ず修正すること
- **警告** - 修正した方が良い
- **提案** - 改善を検討する価値がある
具体的な修正方法の例も含める。
テスト実行 Sub-Agent - .claude/agents/test-runner.md:
---
name: test-runner
description: テスト自動化エキスパート。コード変更後に自動的にテストを実行。テスト失敗時に原因を分析して修正。
tools: Read, Edit, Bash, Grep, Glob
---
# テスト自動化エキスパート
あなたはテスト自動化の専門家です。コード変更を見たら積極的にテストを実行します。
## 実行時の手順
1. 適切なテストコマンドを決定
2. テストスイートを実行
3. テスト失敗時は失敗原因を分析
4. テストの意図を保持しながら修正
## テスト実行戦略
- 修正されたファイルに関連するテストを優先実行
- 失敗したテストの詳細ログを確認
- 根本原因を特定してから修正
Sub-Agents を使うべき場面
- 異なる専門性が必要なタスク(レビュー、テスト、デバッグなど)
- メイン会話のコンテキストを汚したくないとき
3. Hooks - 特定タイミングで確実に処理実行
概要
Hooks は、Claude Code 内で特定のイベントが発生したときに自動実行されるイベントハンドラーです。ツール実行の前後、ユーザー入力時、セッション開始時など、様々なタイミングで処理を実行できます。
特徴
- イベント駆動 - PreToolUse、PostToolUse、UserPromptSubmit など前もって設定したイベントに応じて実行
- 自動化 - 設定しておけばユーザーによる指示なしで、非同期に自動実行が可能
- スクリプト対応 - Python や Bash スクリプトで複雑な処理を実装可能
主要イベント
| イベント | タイミング | 用途 |
|---|---|---|
| PreToolUse | ツール実行前 | ツール実行の制御・ブロック |
| PostToolUse | ツール実行後 | 実行結果の検証・追加処理 |
| UserPromptSubmit | ユーザー入力時 | 入力値の検証・コンテキスト追加 |
| Stop | Claude の応答完了時 | 後処理・ロギング |
| SessionStart | セッション開始時 | コンテキストの初期化 |
ファイル構造
Hooks は ~/.claude/settings.json または my-project/.claude/settings.json に設定:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/check-style.sh"
}
]
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "/path/to/validator.py"
}
]
}
]
}
}
作成例
ファイル保護 Hook - .claude/hooks/protect-sensitive-files.py:
#!/usr/bin/env python3
import json
import sys
# 保護すべきファイルパターン
PROTECTED_PATTERNS = [
".env",
".git/",
"*.key",
"*.pem",
"secrets/",
]
def is_protected(file_path):
return any(pattern in file_path for pattern in PROTECTED_PATTERNS)
try:
input_data = json.load(sys.stdin)
except json.JSONDecodeError:
sys.exit(1)
tool_name = input_data.get("tool_name", "")
tool_input = input_data.get("tool_input", {})
file_path = tool_input.get("file_path", "")
if tool_name in ["Edit", "Write"] and is_protected(file_path):
output = {
"decision": "deny",
"reason": f"ファイル {file_path} は保護されています"
}
print(json.dumps(output))
sys.exit(0)
sys.exit(0)
コマンド検証 Hook - .claude/hooks/validate-bash-command.py:
#!/usr/bin/env python3
import json
import re
import sys
VALIDATION_RULES = [
(r"rm\s+-rf\s+/", "ルートディレクトリの削除は許可されていません"),
(r"sudo", "sudo コマンドは許可されていません"),
]
try:
input_data = json.load(sys.stdin)
except json.JSONDecodeError:
sys.exit(1)
tool_name = input_data.get("tool_name", "")
tool_input = input_data.get("tool_input", {})
command = tool_input.get("command", "")
if tool_name != "Bash":
sys.exit(0)
for pattern, message in VALIDATION_RULES:
if re.search(pattern, command):
print(f"警告: {message}", file=sys.stderr)
sys.exit(2) # ツール実行をブロック
sys.exit(0)
コンテキスト追加 Hook - .claude/hooks/add-context.py:
#!/usr/bin/env python3
import json
import sys
from datetime import datetime
try:
input_data = json.load(sys.stdin)
except json.JSONDecodeError:
sys.exit(1)
hook_event = input_data.get("hook_event_name", "")
if hook_event == "UserPromptSubmit":
context = f"現在時刻: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
output = {
"hookSpecificOutput": {
"hookEventName": "UserPromptSubmit",
"additionalContext": context
}
}
print(json.dumps(output))
sys.exit(0)
Hooks を使うべき場面
- プロンプトに依存せず、確実に実行したい作業(セキュリティチェック、ログ記録など)
- 特定のタイミング(ツール実行前後、入力時など)に自動連動させたい処理
- ユーザーの意識に入らず裏側で動作させたい自動化
4. Plugins - ClaudeCodeの活用方法を共有
概要
Plugins は、Slash Commands、Sub-Agents、Hooks、MCP サーバー設定を組み合わせて、1つのパッケージとして配布・共有できる仕組みです。チームや組織全体で同じ機能セットを利用できます。
特徴
- 複合型 - Slash Commands、Sub-Agents、Hooks、MCP を組み合わせ可能
- マーケットプレイス対応 - プラグインマーケットプレイスで公開・配布
- チーム共有 - リポジトリレベルで設定して全員が自動利用
- 外部ツール連携 - MCP サーバーを通じて外部サービスと連携
ファイル構造
my-plugin/
├── .claude-plugin/
│ └── plugin.json # プラグインメタデータ
├── commands/ # カスタムコマンド
│ └── optimize.md
├── agents/ # カスタムエージェント
│ └── reviewer.md
├── hooks/
│ └── hooks.json # イベントハンドラー
└── .mcp.json # MCP サーバー設定
作成例
Plugin Manifest - .claude-plugin/plugin.json:
{
"name": "code-quality-toolkit",
"description": "コード品質向上ツールキット - レビュー、テスト、最適化",
"version": "1.0.0",
"author": {
"name": "チーム名"
}
}
Plugin に含めるコマンド - commands/optimize.md:
---
description: コードのパフォーマンス問題を分析して最適化を提案する
---
# コード最適化
このコードを分析してパフォーマンスの問題を特定し、最適化の提案をしてください。
Plugin に含めるエージェント - agents/code-reviewer.md:
---
name: code-reviewer
description: シニアコードレビュー専門家
tools: Read, Grep, Glob, Bash
---
# コードレビュー専門家
...
インストールと利用
# マーケットプレイスを追加
/plugin marketplace add my-organization/plugins
# プラグインをインストール
/plugin install code-quality-toolkit@my-organization
# プラグインの機能を使用
/optimize # プラグインのコマンド
> /mcp コマンドで MCP サーバーを確認
Plugins を使うべき場面
- 複数の関連機能を一緒に配布したい
- チーム全体で同じツールセットを共有したい
- 組織のマーケットプレイスで公開・管理したい
5. Agent Skills - 必要なとき必要分だけコンテキストに知識を仕入れる
概要
Agent Skills は、専門知識や作業手順をパッケージ化して、Claude が必要に応じて自動的に活用できるようにする仕組みです。
特徴
- AI駆動型 - AIがユーザー指示とあらかじめ定義したスキルの description を照合して、自律的に使用を判断
- 専門知識や手順のパッケージ化 - チームの専門知識や手順のベストプラクティスを SKILL.md ファイルとして文書化
- コンテキストの節約 - 必要な時だけスキルが読み込まれるため、CLAUDE.md のコンテキスト溢れを防げる
ファイル構造
~/.claude/skills/
├── kubernetes-helper/
│ ├── SKILL.md
│ ├── reference.md
│ └── scripts/
│ └── deploy.sh
└── git-helper/
└── SKILL.md
my-project/.claude/skills/
└── project-specific-skill/
└── SKILL.md
作成例
基本的なスキル - ~/.claude/skills/commit-helper/SKILL.md:
---
name: Generating Commit Messages
description: Git diff から明確なコミットメッセージを生成。コミットメッセージの作成時やステージ変更をレビューするときに使用。
---
# Generating Commit Messages
## 手順
1. `git diff --staged` で変更内容を確認
2. コミットメッセージを以下の形式で提案:
- 50 文字以下のサマリー
- 詳細な説明
- 影響を受けるコンポーネント
## ベストプラクティス
- 現在形を使用
- 「何」と「なぜ」を説明し、「どのように」は省略
Agent Skills を使うべき場面
- 常に必要ではなく、特定作業にしか使用しない手順・知識
6. Ask User Question - ユーザーへのQ&A
概要
他の機能とは立ち位置が少し異なりますが、合わせて紹介します。
こちらはClaudeCodeが作業中にユーザーに対して、明示的に単一選択 or 複数選択の設問をしてくれるツールです。
このツール単体で見るとなんて事のない機能ですが、他のSlashCommands等の中で使うことで条件分岐による柔軟なワークフロー を作成できるといった強力な効果を発揮します。
特徴
- AI駆動型 - AIがユーザー指示とあらかじめ定義したスキルの description を照合して、自律的に使用を判断
- 確実な回答 - 選択肢を選べることで、文章で返信する手間が省け、また確実に意図をAIに伝えられる。
- 誤入力防止 - 選択肢を選択後に入力をSubmitするUIであるため、誤入力防止ができる。
使い方例
プロンプト指示やCLAUDE.md、Skills内の指示でAskUserQuesionを使う旨を明示して支持する。
> Ask User Questionのテストをしたい。私に適当な質問をして。
⏺ Ask User Questionツールのテストですね!いくつか質問を用意しました。
────────────────────────────────────────────────────────────────────────
← ☐ 言語選択 ☐ 優先事項 ✔ Submit →
このプロジェクトで主に使用したいプログラミング言語はどれですか?
❯ 1. TypeScript
型安全性が高く、大規模開発に適している
2. Python
書きやすく、データ分析やAI開発に強い
3. Go
高速で並行処理に優れ、バックエンド開発に最適
4. Rust
メモリ安全性とパフォーマンスを両立
5. Type something.
Enter to select · Tab/Arrow keys to navigate · Esc to cancel
※ 明記しなくてもたまに使ってくれますが、明記すると確実に使ってくれます。
おまけ
ClaudeCodeによるワークフローアイデアをだれでも簡単に実現できるノーコードツールのご紹介
Claude Code Workflow Studio
(追記:publisher名をタイポしてしまったので,正しいpublisher名でアップしなおしましたmm)
ここまで色々説明しましたが、記事を書いているうちに
- 結局小難しい話を理解しないとClaudeCodeを活用できないのか?
- もっとだれでも簡単にClaudeCodeの活用アイデアを形にすることできないのか?
という思いがありました。
そこでアイデアさえあれば、だれでもClaudeCodeによるワークフローの設計をすることができるノーコードツールをVSCode拡張機能で作成してみました。
使い方は簡単で
- インストール後、エディタ右上のオレンジ色の
Cのアイコンをクリックしてビジュアルエディタを開く - 左側のパレットからノードを選択。StartからEndまで各ノードを線で繋げるようにする。
- Exportボタンで現在開いているプロジェクトの.claude配下にスラッシュコマンドを保存する。
- Claude Codeを立ち上げて、作成されたスラッシュコマンドを実行する
これだけです。もちろんインストールは無料です。
評判が良く、利用者が増えたら将来的には
- AIチャット相談によるワークフロー生成機能
- AgentSkillsノードの追加
なども検討しています。
AIチャット編集機能、Agent Skills、MCP Toolsも実装しました。
ぜひ色々遊んでみて自分のアイデアを形にしてみてください。
おわりに
本記事を執筆するにあたり、Claude Code の基本機能を改めて整理する中で、GitHub CopilotやCodex CLIといった他の AI エージェントと比較して、コンテキストを意識した基本機能の豊富さに気づきました。
特に、CLAUDE.md によるプロジェクト知識の管理、Agent Skills の Progressive Disclosure(段階的読み込み)、Sub-Agents の独立したコンテキストなど、「どのタイミングで、どの情報を、どれだけ提供するか」を細かく制御できる点が、Claude Code の大きな特徴です。
これらの基本機能を正しく理解することで、Claude Code をただのコード編集ツールから、個々の開発プロジェクトに最適化された自動作業ツールへと拡張できます。
まずは CLAUDE.md でプロジェクト知識を整理し、次に Slash Commands から始めて、徐々に他の機能を組み合わせていきながらコンテキストに対する感覚を理解することをお勧めします。もし GitHub Copilot や Codex CLI を使用していて、コンテキスト溢れやコンテキストの汚れによるAI利用の限界を感じた際は、ぜひ Claude Code を試してみてください。
Discussion