---
name: index
description: |
  CLAUDE.md/README.md の自動更新機能を提供するスキル。
  コマンド、スキル、エージェント、ディレクトリ構成、依存関係図の検出と更新を行う。
  /index（表示）または /index --update（更新）で使用。
allowed-tools: Read, Edit, Glob, Task
---

# Index

プロジェクトのリファレンス情報（コマンド、スキル、エージェント、ディレクトリ構成、依存関係図）を自動検出・更新するスキルです。

## 目的

このスキルは以下を提供します：

- **リファレンス表示**: 現在登録されているコマンド、スキル、エージェントの一覧表示
- **自動更新**: ファイルシステムからの自動検出と CLAUDE.md/README.md への反映
- **ディレクトリ構成管理**: プロジェクト構造の可視化と更新
- **依存関係図更新**: コマンド→スキル→エージェント、Pythonパッケージ間の依存関係図を更新

## いつ使用するか

### プロアクティブ使用（自動で使用を検討）

以下の状況では、ユーザーが明示的に要求しなくても使用を検討：

1. **新しいコマンド/スキル/エージェントを作成した後**
   - リファレンスを最新状態に更新する必要がある
   - CLAUDE.md のディレクトリ構成が古くなっている可能性

2. **パッケージ構造を変更した後**
   - 新しいディレクトリやファイルを追加
   - パッケージの README.md を更新する必要がある

### 明示的な使用（ユーザー要求）

- `/index` コマンド: リファレンスの表示
- `/index --update` コマンド: 自動検出と更新

## 実行モード

| モード | コマンド          | 説明                                           |
| ------ | ----------------- | ---------------------------------------------- |
| 表示   | `/index`          | 現在のリファレンスを表示                       |
| 更新   | `/index --update` | コマンド/スキル/エージェント/ディレクトリを自動検出して更新 |

## プロセス

### 表示モード（/index）

`.claude/commands/index.md` の内容を読み込んで表示します。

```bash
# リファレンスファイルを読み込み
Read .claude/commands/index.md
```

### 更新モード（/index --update）

#### 1. 並列検出フェーズ

Task ツールで 5 つのサブエージェントを並列起動：

```yaml
並列実行:
  - コマンド検出: .claude/commands/*.md から description を抽出
  - スキル検出: .claude/skills/*/SKILL.md から name, description を抽出
  - エージェント読み込み: .claude/agents.md から定義を抽出
  - ディレクトリスキャン: プロジェクトルートから 4 層までスキャン
  - 依存関係検出: コマンド→スキル→エージェント、Pythonパッケージ間の依存関係を抽出
```

#### 2. パッケージ README 更新フェーズ

Task ツールで 5 つのサブエージェントを並列起動：

```yaml
並列実行:
  - finance README: src/finance/ の README.md を更新
  - market_analysis README: src/market_analysis/ の README.md を更新
  - rss README: src/rss/ の README.md を更新
  - factor README: src/factor/ の README.md を更新
  - strategy README: src/strategy/ の README.md を更新
```

#### 3. 統合・更新フェーズ

検出結果を統合し、以下のファイルを更新：

| ファイル                    | 更新内容                                      | マーカー |
| --------------------------- | --------------------------------------------- | -------- |
| `.claude/commands/index.md` | コマンド/スキル/エージェント/ディレクトリ一覧 | 各種 |
| `CLAUDE.md`                 | ディレクトリ構成セクション                    | `DIRECTORY` |
| `README.md`                 | プロジェクト構造セクション                    | `DIRECTORY` |
| `README.md`                 | 依存関係図セクション（Mermaid）               | `DEPENDENCY` |

## 活用ツールの使用方法

### ToolSearch でディレクトリツリーを取得

```yaml
# 1. ツールを読み込み
ToolSearch: "select:mcp__filesystem__directory_tree"

# 2. ディレクトリ構成を取得
mcp__filesystem__directory_tree:
  path: "."
  max_depth: 4
```

### Glob でファイルを検出

```yaml
# コマンドファイルを検出
Glob:
  pattern: ".claude/commands/*.md"

# スキルファイルを検出
Glob:
  pattern: ".claude/skills/*/SKILL.md"
```

### Edit でマーカー間を更新

```yaml
# AUTO-GENERATED マーカー間を更新
Edit:
  file_path: "CLAUDE.md"
  old_string: |
    <!-- AUTO-GENERATED: DIRECTORY -->
    [古い内容]
    <!-- END: DIRECTORY -->
  new_string: |
    <!-- AUTO-GENERATED: DIRECTORY -->
    [新しい内容]
    <!-- END: DIRECTORY -->
```

### Task でサブエージェントを起動

```yaml
# Explore エージェントでコマンドを検出
Task:
  subagent_type: "Explore"
  description: "Detect commands"
  prompt: |
    .claude/commands/*.md から description を抽出してください。

# package-readme-updater でパッケージ README を更新
Task:
  subagent_type: "package-readme-updater"
  description: "Update package README"
  prompt: |
    src/finance/ の README.md を更新してください。
```

## リソース

### ./guide.md

CLAUDE.md/README.md 更新の詳細ガイド：

- マーカー構文の説明
- 検出ロジックの詳細
- エラーハンドリング
- トラブルシューティング

### ./template.md

ディレクトリ構成のテンプレート：

- 標準的なディレクトリ構成形式
- コメント記法
- 省略表記ルール

## 使用例

### 例1: リファレンスの確認

**状況**: 現在登録されているコマンドを確認したい

**処理**:
1. `/index` を実行
2. `.claude/commands/index.md` の内容を表示

**期待される出力**:
```
## コマンド一覧

| コマンド | 説明 |
|----------|------|
| /analyze | 多次元コード分析 |
| /commit-and-pr | 変更のコミットとPR作成 |
...
```

---

### 例2: 新しいスキル追加後の更新

**状況**: 新しいスキルを `.claude/skills/new-skill/` に作成した後、リファレンスを更新したい

**処理**:
1. `/index --update` を実行
2. スキル検出エージェントが `.claude/skills/*/SKILL.md` をスキャン
3. 新しいスキルの name, description を抽出
4. `.claude/commands/index.md` のスキル一覧を更新

**期待される出力**:
```
================================================================================
                    /index --update 完了
================================================================================

## 更新結果

| 対象 | 状態 | 変更内容 |
|------|------|----------|
| コマンド | ✓ | 37 件（変更なし） |
| スキル | ✓ | 14 件（+1 追加） |
| エージェント | ✓ | 67 件（変更なし） |
| ディレクトリ | ✓ | 更新済み |

## 更新したファイル
- .claude/commands/index.md
- CLAUDE.md（ディレクトリ構成）
- README.md（プロジェクト構造）

================================================================================
```

---

### 例3: パッケージ追加後の更新

**状況**: 新しいパッケージ `src/new_package/` を追加した後、構成を更新したい

**処理**:
1. `/index --update` を実行
2. ディレクトリスキャンエージェントがプロジェクト構造を取得
3. CLAUDE.md のディレクトリ構成セクションを更新
4. README.md のプロジェクト構造セクションを更新

**期待される出力**:
```
## ディレクトリ構成（更新後）

src/
├── finance/
├── market_analysis/
├── rss/
├── factor/
├── strategy/
└── new_package/          # 新規追加
```

---

### 例4: 自動検出のエラー対応

**状況**: フロントマターが正しくないファイルがある

**処理**:
1. `/index --update` を実行
2. 検出エラーを警告として表示
3. 正常に検出できたものは更新

**期待される出力**:
```
================================================================================
                    /index --update 完了（警告あり）
================================================================================

## 警告

⚠ .claude/commands/broken-command.md: フロントマターのパースに失敗

## 更新結果

| 対象 | 状態 | 変更内容 |
|------|------|----------|
| コマンド | ⚠ | 36 件（1 件エラー） |
...

================================================================================
```

## 品質基準

### 必須（MUST）

- [ ] コマンド検出: `.claude/commands/*.md` の description を正しく抽出
- [ ] スキル検出: `.claude/skills/*/SKILL.md` の name, description を正しく抽出
- [ ] マーカー更新: `<!-- AUTO-GENERATED: xxx -->` と `<!-- END: xxx -->` 間を正確に更新
- [ ] 既存内容の保持: マーカー外の内容を変更しない

### 推奨（SHOULD）

- パッケージ README の自動更新（package-readme-updater 使用）
- エラー発生時の部分更新（正常なものは更新）
- 変更差分のサマリー表示

## 出力フォーマット

### 更新完了時

```
================================================================================
                    /index --update 完了
================================================================================

## 更新結果

| 対象 | 状態 | 変更内容 |
|------|------|----------|
| コマンド | ✓ | {count} 件 |
| スキル | ✓ | {count} 件 |
| エージェント | ✓ | {count} 件 |
| ディレクトリ | ✓ | 更新済み |

## 更新したファイル
- .claude/commands/index.md
- CLAUDE.md（ディレクトリ構成）
- README.md（プロジェクト構造）

================================================================================
```

## エラーハンドリング

### フロントマターのパースエラー

**原因**:
1. YAML 構文エラー
2. 必須フィールド（description）の欠落
3. 不正なエンコーディング

**対処法**:
- 警告を表示してスキップ
- 他の正常なファイルは処理を継続
- 問題のファイルパスを報告

### マーカーペアの不整合

**原因**:
1. 開始マーカーのみ存在
2. 終了マーカーのみ存在
3. マーカー名の不一致

**対処法**:
- エラーを表示して処理を中断
- 手動修正を促すメッセージを表示

### ディレクトリスキャンの失敗

**原因**:
1. 権限エラー
2. シンボリックリンクのループ
3. MCP サーバーの接続エラー

**対処法**:
- 代替手段（`ls -R` など）を試行
- エラーを報告して既存内容を維持

## 完了条件

- [ ] 表示モード: リファレンス内容が正しく表示される
- [ ] 更新モード: 全ての検出対象が正しく抽出される
- [ ] 更新モード: マーカー間が正しく更新される
- [ ] 更新モード: マーカー外の内容が保持される
- [ ] エラー時: 適切なエラーメッセージが表示される

## 関連スキル

- **skill-expert**: スキル設計・管理（新しいスキル作成時に参照）
- **agent-expert**: エージェント設計・管理（新しいエージェント作成時に参照）

## 参考資料

- `CLAUDE.md`: プロジェクト全体のガイドライン
- `.claude/commands/index.md`: 移行元のコマンド定義
- `template/`: テンプレートディレクトリ構造の参考
