CLAUDE LABEN
WWDC — WWDC 2026でSiriはGoogle Geminiベースと確定。ChatGPT等への外部ハンドオフは廃止され、サードパーティAI選択はEU(DMA)で当面非対応にBILLING — 6/15の課金変更まで残り6日。Agent SDK・headless Claude Code・GitHub Actions・他社エージェントがAPIレート準拠の月次クレジットへ移行OUTAGE — claude.ai・Claude Code・Coworkで障害が報告(6月)。スケジュール実行はfallbackModelとリトライ前提の設計が安全ですDYNAMIC-WORKFLOWS — Max・TeamプランとAPIでdynamic workflowsがデフォルトON。コードベース横断のバグ探索や独立検証に活用ULTRACODE — Claude Codeの新設定ultracodeがeffortメニューに追加。xhigh固定でワークフロー判断はClaudeに委ねますOPUS4.8 — Claude Opus 4.8が主要プランのデフォルトとして定着。コーディング・エージェント・推論を強化WWDC — WWDC 2026でSiriはGoogle Geminiベースと確定。ChatGPT等への外部ハンドオフは廃止され、サードパーティAI選択はEU(DMA)で当面非対応にBILLING — 6/15の課金変更まで残り6日。Agent SDK・headless Claude Code・GitHub Actions・他社エージェントがAPIレート準拠の月次クレジットへ移行OUTAGE — claude.ai・Claude Code・Coworkで障害が報告(6月)。スケジュール実行はfallbackModelとリトライ前提の設計が安全ですDYNAMIC-WORKFLOWS — Max・TeamプランとAPIでdynamic workflowsがデフォルトON。コードベース横断のバグ探索や独立検証に活用ULTRACODE — Claude Codeの新設定ultracodeがeffortメニューに追加。xhigh固定でワークフロー判断はClaudeに委ねますOPUS4.8 — Claude Opus 4.8が主要プランのデフォルトとして定着。コーディング・エージェント・推論を強化
記事一覧/Claude Code
Claude Code/2026-03-20上級

Claude Code カスタムスキル開発の実装パターン — SKILL.md 設計とテスト・配布

Claude Code のカスタムスキルをゼロから設計・実装する実践チュートリアル。SKILL.md の構造、エージェントタイプ、コンテキスト注入、テスト手法まで、3つの実用スキルを作りながら学びます。

Claude Code219スキル10カスタムスキルSKILL-md3エージェント17自動化69MCP56プラグイン6開発6

Claude Code カスタムスキル開発の実装パターン

半年ほど Claude Code を業務で使っていると、同じ手順を毎回プロンプトに書くのが煩わしくなってきます。私の場合は「PR レビュー前に確認したい7項目」を毎回タイプしていて、ある時「これ、スキルにすればいいのか」と気づきました。Claude Code のスキルシステムは、まさにこの「いつもやっている手順」を /review/deploy/migrate のようなスラッシュコマンドとしてパッケージ化し、チームで共有するための仕組みです。

以下では、私が実際に作って使っている3つのスキルを例に、SKILL.md の構造、コンテキスト注入の設計、テスト・配布までの流れを解説します。

前提知識・環境構築

このチュートリアルを進めるには、以下の環境が必要です。

必須ツール:

  • Claude Code CLI(v2.15 以降推奨)
  • Node.js 18+ または Python 3.10+
  • Git(バージョン管理用)

推奨知識:

  • Claude Code の基本操作(/help/model などの組み込みコマンド)
  • YAML フロントマターの基本構文
  • Markdown の記法

インストール確認は以下のコマンドで行えます。

# Claude Code のバージョン確認
claude --version
 
# スキルディレクトリの確認
ls -la .claude/skills/ 2>/dev/null || echo "スキルディレクトリ未作成"

スキルディレクトリが存在しない場合は、プロジェクトルートで作成します。

mkdir -p .claude/skills

スキルの内部アーキテクチャ

Claude Code のスキルシステムは、以前の「カスタムコマンド」(.claude/commands/*.md)を拡張・統合したものです。現在はどちらのディレクトリに配置しても同じスラッシュコマンドとして認識されますが、スキルの方がより多くの機能をサポートしています。

ディレクトリ構造

スキルは以下の2つのスコープで配置できます。

# プロジェクトスコープ(チーム共有向け)
.claude/skills/
  review/
    SKILL.md          # スキル定義(必須)
    templates/         # テンプレートファイル(任意)
    examples/          # サンプルコード(任意)

# ユーザースコープ(個人利用)
~/.claude/skills/
  my-skill/
    SKILL.md

プロジェクトスコープのスキルは Git で管理でき、チームメンバー全員が同じスキルを利用できます。ユーザースコープのスキルは個人の環境にのみ適用されます。

SKILL.md の構造

すべてのスキルは SKILL.md ファイルで定義されます。このファイルは YAML フロントマターと Markdown 本文で構成されます。

---
name: review           # スラッシュコマンド名(/review で呼び出し)
description: "コードレビューを実行し、改善点を指摘する"
# --- 以下はオプション ---
user-invocable: true   # ユーザーが直接呼び出し可能(デフォルト: true)
agent: "claude-code"   # エージェントタイプ
allowed-tools:         # 使用可能なツールを制限
  - Read
  - Glob
  - Grep
context:               # コンテキスト注入の設定
  - type: file
    path: ".eslintrc.json"
  - type: shell
    command: "git diff --staged --stat"
---
 
# コードレビュースキル
 
以下のルールに従ってコードレビューを実施してください。
 
1. セキュリティ脆弱性のチェック
2. パフォーマンスの問題点
3. コーディング規約への準拠
...

フロントマターの全オプション

| フィールド | 型 | デフォルト | 説明 | |---|---|---|---| | name | string | ディレクトリ名 | スラッシュコマンド名 | | description | string | — | スキルの説明(自動トリガー判定に使用) | | user-invocable | boolean | true | ユーザーが直接呼び出せるか | | agent | string | "claude-code" | 実行エージェントタイプ | | allowed-tools | string[] | すべて | 使用可能なツールのリスト | | context | object[] | — | コンテキスト注入の定義 | | disable-model-invocation | boolean | false | LLM 呼び出しを無効化 |

実践1:インテリジェントなコードレビュースキル

最初のスキルとして、Git のステージング済み変更を分析し、カテゴリ別にフィードバックを返すレビュースキルを構築します。

ステップ1:ディレクトリとファイルの作成

mkdir -p .claude/skills/smart-review

ステップ2:SKILL.md の作成

---
name: smart-review
description: "ステージング済みの変更をインテリジェントにレビューする。セキュリティ、パフォーマンス、保守性の3軸で分析。"
allowed-tools:
  - Read
  - Glob
  - Grep
  - Bash
context:
  - type: shell
    command: "git diff --staged"
  - type: shell
    command: "git diff --staged --stat"
  - type: file
    path: ".claude/skills/smart-review/review-rules.md"
---
 
# スマートコードレビュー
 
あなたはシニアソフトウェアエンジニアとして、以下の3つの軸でコードレビューを実施します。
 
## レビュー軸
 
### 1. セキュリティ(Critical / Warning / Info)
- SQLインジェクション、XSS、CSRF の可能性
- ハードコードされた秘密情報(APIキー、パスワード)
- 不適切な入力バリデーション
- 安全でない暗号化手法
 
### 2. パフォーマンス(Warning / Info)
- N+1クエリの可能性
- 不要なループ内のI/O操作
- メモリリークの可能性
- 非効率なアルゴリズム(O(n²) 以上)
 
### 3. 保守性(Warning / Info)
- 関数の複雑度(サイクロマチック複雑度 > 10)
- マジックナンバー・マジックストリング
- 不十分なエラーハンドリング
- テストカバレッジの欠如
 
## 出力フォーマット
 
以下の形式で結果を報告してください。
 

レビュー結果サマリー

| カテゴリ | Critical | Warning | Info | |---------|----------|---------|------| | セキュリティ | X件 | X件 | X件 | | パフォーマンス | — | X件 | X件 | | 保守性 | — | X件 | X件 |

🔴 Critical Issues

(該当するものがあればファイル名・行番号とともに記述)

🟡 Warnings

(改善を推奨する項目)

🔵 Info

(任意の改善提案)

📝 総合コメント

(全体的な品質評価と改善の方向性)


変更が少ない場合(10行未満)でも、必ず全軸でチェックを実行してください。
問題がない場合は「問題なし」と明示してください。

ステップ3:補足ルールファイルの作成

<!-- .claude/skills/smart-review/review-rules.md -->
# プロジェクト固有のレビュールール
 
## 命名規約
- React コンポーネント: PascalCase
- 関数・変数: camelCase
- 定数: UPPER_SNAKE_CASE
- ファイル名: kebab-case
 
## 禁止パターン
- `any` 型の使用(TypeScript)
- `console.log` の本番コードへの残存
- `// TODO` コメントの放置(Issue 番号を付けること)
 
## 必須パターン
- すべての公開関数に JSDoc コメント
- エラーハンドリングは `try-catch` で明示的に
- 非同期処理は必ず `async/await` を使用

ステップ4:実行テスト

# テスト用の変更をステージング
git add -p
 
# スキルを実行
claude /smart-review

このスキルのポイントは、context フィールドでシェルコマンドの出力を自動注入している点です。スキルが呼び出された瞬間に git diff --staged の結果がコンテキストとして渡されるため、ユーザーが差分を手動で貼り付ける必要がありません。

実践2:データベースマイグレーション生成スキル

次に、データベーススキーマの変更を検知し、マイグレーションファイルを自動生成するスキルを構築します。

SKILL.md

---
name: gen-migration
description: "データベーススキーマの変更からマイグレーションファイルを自動生成する"
allowed-tools:
  - Read
  - Write
  - Glob
  - Bash
context:
  - type: shell
    command: "ls -la migrations/ 2>/dev/null | tail -5"
  - type: shell
    command: "git diff --name-only HEAD | grep -E '(schema|model|entity)' || echo 'スキーマ変更なし'"
---
 
# データベースマイグレーション生成
 
## 手順
 
1. 変更されたスキーマファイルを特定する
2. 既存のマイグレーション履歴を確認する
3. 差分からマイグレーションSQLを生成する
4. ロールバック用の down マイグレーションも必ず生成する
 
## マイグレーションファイル命名規則
 

migrations/ YYYYMMDDHHMMSS_[説明的な名前].sql


例: `20260320100000_add_user_preferences_table.sql`

## 生成テンプレート

```sql
-- Migration: [説明]
-- Created: [日時]

-- Up Migration
BEGIN;

-- ここにスキーマ変更を記述

COMMIT;

-- Down Migration (Rollback)
BEGIN;

-- ここにロールバック処理を記述

COMMIT;

ルール

  • すべての操作をトランザクション内で実行すること
  • DROP TABLE には IF EXISTS を付けること
  • カラム追加時はデフォルト値を設定すること(ダウンタイムゼロ対応)
  • インデックス作成は CONCURRENTLY オプションを使用すること(PostgreSQL)
  • 破壊的変更(カラム削除等)は2段階に分けること:
    1. まずカラムを nullable にする
    2. 次のリリースで実際に削除する

### 実行例

```bash
# スキーマファイルを編集後
claude /gen-migration

# 期待される出力:
# migrations/20260320100000_add_user_preferences_table.sql が生成されました
# ロールバック用SQLも含まれています

実践3:Explore エージェントを活用したリサーチスキル

3つ目は、context: fork と Explore エージェントを組み合わせた高度なスキルです。コードベースを自動的にリサーチし、アーキテクチャドキュメントを生成します。

SKILL.md

---
name: arch-doc
description: "コードベースを分析し、アーキテクチャドキュメントを自動生成する"
agent: "explore"
context: fork
allowed-tools:
  - Read
  - Glob
  - Grep
---
 
# アーキテクチャドキュメント生成
 
このスキルは Explore エージェントとして実行されます。コードベースを読み取り専用で分析し、以下の情報を収集してください。
 
## 収集する情報
 
### 1. プロジェクト構造
- ディレクトリ構成とその目的
- 主要なエントリーポイント
- ビルドシステムの構成
 
### 2. 依存関係マップ
- 外部パッケージの一覧と用途
- 内部モジュール間の依存関係
- 循環依存の有無
 
### 3. APIエンドポイント一覧
- ルーティング定義の場所
- 各エンドポイントの HTTP メソッドとパス
- 認証・認可の有無
 
### 4. データモデル
- データベーススキーマまたは型定義
- リレーションシップ
- バリデーションルール
 
## 出力フォーマット
 
Markdown 形式で以下の構造で出力してください。
 
```markdown
# [プロジェクト名] アーキテクチャドキュメント
 
## 概要
(プロジェクトの目的と技術スタックの要約)
 
## ディレクトリ構成
(ツリー形式で主要ディレクトリを説明)
 
## 主要コンポーネント
(各コンポーネントの責務と相互関係)
 
## API エンドポイント
(テーブル形式で一覧化)
 
## データモデル
(ER図的な記述またはテーブル形式)
 
## 依存関係
(主要な外部ライブラリとその用途)

分析対象が大規模な場合は、主要なモジュールに絞って深く分析してください。


### `context: fork` の仕組み

`context: fork` を指定すると、スキルの内容がそのまま Explore エージェントのタスクとして実行されます。Explore エージェントは読み取り専用のツール(`Read`、`Glob`、`Grep`)に最適化されており、コードベースの調査に特化しています。

通常のスキルとの違いは以下の通りです。

| 特性 | 通常のスキル | fork スキル |
|---|---|---|
| 実行コンテキスト | メインセッション | 独立したサブエージェント |
| ファイル書き込み | 可能 | 不可(読み取り専用) |
| 実行速度 | 標準 | 高速(軽量エージェント) |
| 用途 | ファイル生成・編集 | 調査・分析・レポート |

## コンテキスト注入の高度なテクニック

コンテキスト注入はスキルの強力な機能の1つです。スキル実行時に外部データを自動的に取り込むことで、毎回の手動入力を省略できます。

### シェルコマンドによる動的コンテキスト

```yaml
context:
  # 現在のブランチ情報
  - type: shell
    command: "git branch --show-current"

  # 直近のコミットログ
  - type: shell
    command: "git log --oneline -5"

  # テスト結果のサマリー
  - type: shell
    command: "npm test -- --reporter=dot 2>&1 | tail -5"

  # 環境変数(秘密情報は含めないこと)
  - type: shell
    command: "echo NODE_ENV=$NODE_ENV"

ファイルによる静的コンテキスト

context:
  # プロジェクトのコーディング規約
  - type: file
    path: "docs/coding-standards.md"
 
  # API仕様書
  - type: file
    path: "openapi.yaml"
 
  # チームのレビュー基準
  - type: file
    path: ".claude/skills/review/criteria.md"

注意点

シェルコマンドのコンテキスト注入には重要な制約があります。

  1. 実行時間: コマンドはスキル起動時に同期的に実行されます。重い処理はスキルの起動を遅延させます
  2. セキュリティ: 秘密情報を出力するコマンドは絶対に含めないでください
  3. 冪等性: コマンドは副作用のない読み取り専用のものにしてください
  4. エラー処理: コマンドが失敗した場合、空文字列が注入されます

スキルのテストとデバッグ

手動テスト

最もシンプルなテスト方法は、スキルを直接呼び出してその出力を確認することです。

# スキルが認識されているか確認
claude /help
 
# スキルを実行(デバッグ出力付き)
claude --verbose /smart-review

テストケースの作成

本格的なテストには、テスト用のリポジトリを作成し、既知の問題を含むコードで動作確認を行います。

# テスト用ディレクトリの作成
mkdir -p /tmp/skill-test && cd /tmp/skill-test
git init
 
# 意図的にセキュリティ問題を含むファイルを作成
cat > test.js << 'EOF'
const password = "hardcoded-secret-123";
const query = `SELECT * FROM users WHERE id = ${userId}`;
console.log(password);
EOF
 
git add test.js
 
# スキルを実行して結果を確認
claude /smart-review
# 期待: セキュリティの Critical が3件検出される

よくあるエラーと対処法

スキルが認識されない場合:

# ディレクトリ構造の確認
find .claude/skills -name "SKILL-md" -type f
 
# フロントマターの YAML 構文チェック
head -20 .claude/skills/my-skill/SKILL.md

YAML フロントマターが正しく --- で囲まれているか確認してください。インデントにタブ文字が混入していると解析に失敗します。

コンテキスト注入が空になる場合:

シェルコマンドの出力を直接ターミナルで確認してください。

# コンテキストコマンドの動作確認
git diff --staged --stat

コマンドが空の出力を返す場合、スキルに渡されるコンテキストも空になります。

allowed-tools で制限したツールが使えない場合:

ツール名は正確に指定する必要があります。read ではなく Readbash ではなく Bash のように、先頭が大文字です。

パフォーマンスとセキュリティの考慮事項

パフォーマンス最適化

スキルの応答速度を改善するための指針です。

  1. コンテキストの最小化: 必要な情報のみを注入します。大きなファイルを丸ごと注入するとトークン消費が増え、応答が遅くなります
  2. allowed-tools の制限: 不要なツールを除外すると、Claude の判断コストが下がります
  3. fork エージェントの活用: 読み取り専用の調査タスクは context: fork で Explore エージェントに委譲する方が高速です
  4. シェルコマンドの高速化: パイプラインで必要な部分のみ抽出する(例: | head -20| grep -m 5

セキュリティのベストプラクティス

  1. 秘密情報の排除: .env ファイルや API キーをコンテキストに含めない
  2. 実行権限の制限: 破壊的な操作を行うスキルには allowed-tools で書き込み系ツールのみを許可する
  3. 入力のバリデーション: ユーザー入力をシェルコマンドに渡す場合は、エスケープ処理を行う
  4. Git 管理: プロジェクトスコープのスキルは必ず Git で管理し、変更履歴を追跡する

スキルの配布と共有

チーム内での共有

プロジェクトスコープのスキルは .claude/skills/ ディレクトリに配置するだけで、リポジトリをクローンした全メンバーが利用できます。

# .gitignore にスキルが除外されていないか確認
grep -r "\.claude" .gitignore
 
# スキルをコミット
git add .claude/skills/
git commit -m "Add smart-review skill for team code reviews"

スキルマーケットプレイスへの公開

Claude Code はスキルマーケットプレイスをサポートしており、作成したスキルを他のユーザーと共有できます。

# スキルのパッケージ化(.skill ファイルの作成)
cd .claude/skills/smart-review
zip -r smart-review.skill SKILL.md review-rules.md

マーケットプレイスに公開する際は、以下の点に注意してください。

  • description フィールドを明確に記述する(検索でヒットしやすくなる)
  • README.md を追加して使い方を説明する
  • 必要な前提条件(ツール、言語、フレームワーク)を明記する

全体を振り返ってと次のステップ

ここではClaude Code のカスタムスキル開発について、アーキテクチャの理解から3つの実践的なスキルの構築、テスト手法、配布方法までを解説しました。

スキルは「指示書」であり「会話」ではありません。命令形で具体的な手順を記述し、出力フォーマットを明確に指定することが、高品質なスキル開発の鍵です。

さらに深く学びたい方は、以下の記事も参考にしてください。

スキルとサブエージェントの境界線を考える際の整理に使えます。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Claude Code2026-03-06
Claude Code プラグイン開発入門 — 最初のプラグインを作ろう
Claude Codeのプラグインシステムを解説。Skills、Agents、MCP servers、Hooksの各コンポーネントの役割と、プラグインマニフェストの書き方を実例付きで紹介します。
Claude Code2026-05-23
Claude Code の Skill・Subagents・Rules を組み合わせて、社内プロジェクトを 1 時間以内に動かす:個人運用に落とし込んだ実装パターン
Claude Code の Skill・Subagents・Rules を組み合わせて、後回しになりがちな社内プロジェクトの 1 週間分のタスクを 1 時間で完了させる仕組み。SonicGarden の実装を起点に、個人開発で 12 年回してきた運用感覚に落とし込んだ構成と落とし所をまとめます。
Claude Code2026-05-06
Claude Code × MCP で構築する個人開発 AI 自動化ハブ — 複数サービス横断の設計と実装
Claude Code と MCP を組み合わせて GitHub・Notion・Slack を横断する AI 自動化ハブを構築する完全ガイド。設計思想・エラーハンドリング付きコード例・運用ベストプラクティスを体系的に解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →