# Skills ガイド

Skills は Claude Code の知識レイヤーコンポーネントで、Claude に特定ドメインの専門知識とガイダンスを提供します。手動で呼び出す必要があるコマンドとは異なり、Skills はタスクのコンテキストに基づいて自動的にアクティブ化されます。

## Skills とは？

Skills は `SKILL.md` ファイルに保存された専門知識モジュールです：

- **自動アクティブ化**：Claude がタスクコンテキストに基づいて関連する Skill を自動的に使用

- **ドメイン知識**：特定ドメインのベストプラクティスとガイダンスを提供

- **拡張可能**：特定のニーズに合わせてカスタム Skills を作成可能

- **コンテキスト認識**：関連するシナリオでのみ呼び出される

### Skills vs Commands vs Agents

| コンポーネント | トリガー | 目的 |
|---------------|----------|------|
| **Commands** | ユーザーが手動で呼び出し（`/command`） | 特定のタスクを実行 |
| **Skills** | 自動アクティブ化 | ドメイン知識を提供 |
| **Agents** | 委任呼び出し | 複雑なワークフローを処理 |

## ビルトイン Skills の使用

Claude Code プラグインには通常、複数のビルトイン Skills が含まれています。タスクが Skill の説明と一致すると、Claude は自動的にそれを使用します。

### 例：コードレビュー

「このコードのセキュリティをレビューして」と言うと、セキュリティレビュー Skill を含むプラグインがインストールされている場合、Claude はその Skill の知識を自動的に適用してレビューを行います。

### 利用可能な Skills の確認

Skills は通常、プラグインと一緒にインストールされます：

```bash
# プラグインをインストール（プラグインには複数の Skills が含まれる場合があります）
/plugin install plugin-name@marketplace
```

## カスタム Skills の作成

### 基本構造

最もシンプルな Skill には `SKILL.md` ファイルのみが必要です：

```bash
my-skill/
└── SKILL.md
```

### SKILL.md フォーマット

```markdown
---
name: コードスタイルガイド
description: ユーザーが「コードスタイル」「命名規則」「コードフォーマット」について質問したり、コーディング規約について議論したりする場合にこの Skill を使用
version: 1.0.0
---

# コードスタイルガイド

## 命名規則

- 変数は camelCase を使用
- 定数は UPPER_SNAKE_CASE を使用
- クラスは PascalCase を使用
- プライベートメンバーはアンダースコアプレフィックスを使用

## フォーマットルール

- インデントには 2 スペースを使用
- 行幅は 80 文字を超えない
- 末尾カンマを使用

## ベストプラクティス

- 関数は単一責任であるべき
- 深いネストを避ける
- 意味のある変数名を使用
```

### Frontmatter フィールド

| フィールド | 必須 | 説明 |
|-----------|------|------|
| `name` | はい | Skill 名 |
| `description` | はい | トリガー条件の説明（重要！） |
| `version` | いいえ | バージョン番号 |

### 効果的な Description の書き方

description フィールドは Skill がいつアクティブ化されるかを決定し、具体的なトリガーフレーズを含める必要があります：

**良い例**：
```yaml
description: ユーザーが「hook を作成」「PreToolUse hook を追加」「ツール使用を検証」と言ったり、hook イベントに言及した場合にこの Skill を使用
```

**悪い例**：
```yaml
description: hooks についてのガイド  # 曖昧すぎる
```

## 完全な Skill 構造

複雑な Skills には、より多くのリソースを含めることができます：

```bash
my-skill/
├── SKILL.md           # メイン知識ドキュメント
├── references/        # 詳細なリファレンス
│   ├── patterns.md    # デザインパターン
│   └── advanced.md    # 高度なテクニック
├── examples/          # サンプルコード
│   ├── basic.ts       # 基本的な例
│   └── advanced.ts    # 高度な例
└── scripts/           # ヘルパースクリプト
    └── validate.sh    # 検証スクリプト
```

### リソースの参照

SKILL.md で他のリソースを参照：

```markdown
---
name: API 開発ガイド
description: ユーザーが「API 設計」「REST インターフェース」「API ベストプラクティス」について質問した場合に使用
version: 1.0.0
---

# API 開発ガイド

詳細な API 設計パターンは @references/patterns.md を参照

## クイック例

基本的な使い方は @examples/basic.ts を参照
```

## プラグインでの Skills 使用

### ディレクトリ構造

Skills はプラグインの `skills/` ディレクトリに配置：

```bash
my-plugin/
├── .claude-plugin/
│   └── plugin.json
├── commands/          # コマンドレイヤー
├── agents/            # エージェントレイヤー
└── skills/            # 知識レイヤー
    ├── code-style/
    │   └── SKILL.md
    └── api-docs/
        ├── SKILL.md
        └── references/
```

### コマンドでの Skill 参照

コマンドは Skill の知識を明示的に参照できます：

```markdown
---
description: 規格準拠の API ドキュメントを生成
argument-hint: [api-file]
---

@$1 の API ドキュメントを生成。

api-docs Skill を使用して、ドキュメントに以下が含まれることを確認：
- 完全なエンドポイント説明
- パラメータ仕様
- レスポンス形式
- エラーコード
- 使用例
```

## 実用的な例

### 例 1：プロジェクト規約 Skill

```markdown
---
name: プロジェクト規約
description: ユーザーが「プロジェクト構造」「ファイル構成」「ディレクトリ規約」について質問した場合に使用
version: 1.0.0
---

# プロジェクト規約

## ディレクトリ構造

\`\`\`
src/
├── components/    # React コンポーネント
├── hooks/         # カスタム Hooks
├── services/      # API サービス
├── utils/         # ユーティリティ関数
└── types/         # TypeScript 型
\`\`\`

## ファイル命名

- コンポーネント：PascalCase（例：`UserProfile.tsx`）
- ユーティリティ：camelCase（例：`formatDate.ts`）
- 定数：UPPER_SNAKE_CASE（例：`API_ENDPOINTS.ts`）

## インポート順序

1. React 関連
2. サードパーティライブラリ
3. 内部モジュール
4. 型定義
5. スタイルファイル
```

### 例 2：Git ワークフロー Skill

```markdown
---
name: Git ワークフロー
description: ユーザーが「ブランチ戦略」「コミット規約」「Git プロセス」について質問した場合に使用
version: 1.0.0
---

# Git ワークフロー規約

## ブランチ命名

- 機能：`feature/説明`
- 修正：`fix/説明`
- 緊急修正：`hotfix/説明`

## コミットメッセージ形式

\`\`\`
<type>(<scope>): <subject>

<body>

<footer>
\`\`\`

### Type 値

- `feat`: 新機能
- `fix`: バグ修正
- `docs`: ドキュメント更新
- `style`: コードフォーマット
- `refactor`: リファクタリング
- `test`: テスト
- `chore`: ビルド/ツール
```

### 例 3：セキュリティレビュー Skill

```markdown
---
name: セキュリティレビュー
description: ユーザーが「セキュリティチェック」「脆弱性スキャン」「セキュリティベストプラクティス」について質問したり、コードセキュリティをレビューする場合に使用
version: 1.0.0
---

# セキュリティレビューガイド

## 一般的な脆弱性チェック

### SQL インジェクション
- パラメータ化クエリの使用を確認
- SQL での文字列連結を避ける

### XSS 攻撃
- ユーザー入力がエスケープされているか確認
- CSP ヘッダーを使用

### 機密データ
- パスワードが平文で保存されていないことを確認
- API キーをハードコードしない
- ログに機密データが漏れていないか確認

## レビューチェックリスト

- [ ] 入力検証
- [ ] 出力エンコーディング
- [ ] 認証メカニズム
- [ ] 認可チェック
- [ ] 暗号化の使用
- [ ] エラー処理
```

## ベストプラクティス

### 1. 明確なトリガー説明

曖昧な説明ではなく、具体的なトリガーフレーズを使用：

```yaml
# 良い
description: ユーザーが「コンポーネント作成」「React コンポーネントテンプレート」「コンポーネントベストプラクティス」について質問した場合に使用

# 悪い
description: React コンポーネント関連
```

### 2. 構造化された知識

知識を明確な階層に整理：

- 見出しレベルを使用

- コード例を提供

- チェックリストを含める

### 3. 最新の状態を維持

- Skill コンテンツを定期的に更新

- バージョン番号で変更を反映

- 重要な更新を記録

### 4. モジュラー設計

- 各 Skill は1つのドメインに集中

- references ディレクトリに詳細資料を保存

- 実用的な例を提供

## Skills のデバッグ

Skill が期待通りにアクティブ化されない場合：

1. **description を確認**：トリガーフレーズがユーザー入力と一致することを確認

2. **フォーマットを検証**：YAML frontmatter が正しくフォーマットされていることを確認

3. **トリガーをテスト**：description からの正確なフレーズを試す

## 次のステップ

- [プラグインシステム](/docs/advanced/plugins) - 完全なプラグイン開発を学ぶ

- [MCP サーバー](/docs/advanced/mcp) - Claude のツール機能を拡張

- [CLI テクニック](/docs/usage/cli-tips) - コマンドライン効率を向上