Claude Codeスキル管理のメタエージェント設計
Claude Codeのスキル機能は強力だ。/commitでコミットを自動化し、/review-prでPRレビューを効率化できる。しかし、スキルが増えてくると新しい問題が見えてくる。「このスキル、本当に使ってる?」「同じような操作を毎回手動でやってるけど、スキル化できないか?」「外部マーケットプレイスのスキル、安全なの?」
この記事では、スキル自体を管理・改善するメタ的エージェントの設計を考える。いわば「スキルのCI/CD」だ。
背景:スキルエコシステムの現状
2026年現在、Claude Codeのスキルエコシステムは急速に発展している。SkillsMPやanthropics/skillsといったマーケットプレイスが登場し、claude-code-skill-factoryのようなテンプレート生成ツールも出てきた。
一方で、Vercelがnpx add-skill、npx skills、Skills.shを次々と発表し、事実上のスタンダードを握りつつある。この記事が指摘するように、npmやNext.jsで見た中央集権化の構図が再現されようとしている。
しかし、既存のツールはすべて「スキルのカタログ化」に焦点を当てている。ユーザー固有の作業パターンを観察して自動的にスキル化したり、既存スキルの使用状況を分析して改善提案したりする仕組みはまだない。
アーキテクチャ:フックベースの観察 + ラッパースキル
メタ管理エージェントの設計には、2つの制約を考慮する必要がある。
制約1:SubAgentは1階層のみ
Claude Codeでは、SubAgentの階層は1つに制限されている。つまり、「スキルがスキルを呼ぶ」ようなパイプライン的な合成は現状難しい。そのため、複雑なワークフローを複数スキルの組み合わせで実現するのではなく、観察・分析・提案という役割分担で設計する。
制約2:context消費
SessionStartフックで毎回全スキルをスキャンすると、起動が重くなる。そのため、リアルタイム観察は軽量に保ち、重い分析は別タイミングで実行する。
設計方針
以下の2本柱で構成する:
1. フックベースのパターン観察(ユーザーレベル)
PostToolUseフックを使って、ユーザーの操作履歴を軽量に記録する。
# ~/.config/claude/hooks/post-tool-use.yml
on: PostToolUse
run: |
# 操作ログを記録(軽量)
echo "$TOOL_NAME,$TIMESTAMP,$PROJECT" >> ~/.config/claude/meta-manage/usage.log
定期的に(週1回、または/meta-analyzeを手動実行したとき)、このログを分析してパターンを検出する:
- 「3回以上繰り返された操作パターン」→ スキル化を提案
- 「既存スキルの後に毎回同じ修正をしている」→ スキルの改善を提案
- 「全く使われていないスキル」→ 削除を提案
2. /install-skill-safe ラッパースキル
外部マーケットプレイスからスキルをインストールする際、セキュリティチェックを自動実行する。
/install-skill-safe https://github.com/example/awesome-skill
↓
1. SKILL.mdをダウンロード
2. 静的解析で危険パターンをチェック
3. OKなら npx add-skill を実行、NGなら警告
データ保存場所
プロジェクト横断で動かすため、メタエージェント本体はユーザーレベル(~/.config/claude/skills/meta-manage/)に配置する。
観察データも一元管理:
~/.config/claude/meta-manage/
├── usage.log # 操作履歴(軽量)
├── analytics.json # 分析結果(週次更新)
└── security-reports/ # スキルセキュリティチェック履歴
ただし、提案されたスキルはプロジェクトレベルに配置することもできる。例えば、あるNext.jsプロジェクトで「コンポーネント作成」パターンを検出したら、そのプロジェクト専用のスキルを提案する。
セキュリティチェックの自動化
外部スキルの安全性を検証するため、危険パターンのブラックリストを定義する。
レベル1: 即座にブロック
rm -rf /
curl .* | bash
eval $(curl ...)
chmod 777
sudo rm
> /dev/sda # ディスク直接書き込み
これらが検出されたら、インストールを中断する。
レベル2: 警告(将来的に)
.env への読み取り
~/.ssh/ へのアクセス
credentials.json の読み取り
外部への POST/PUT(ドメイン不明)
現時点では許可するが、ログに記録して将来的にユーザー判断を求める。
レベル3: 情報提示のみ
git push --force
npm publish
危険とは限らないが、ユーザーに通知する。
実装:静的解析
SKILL.mdは基本的にマークダウン形式のプロンプトだが、bashコマンドやスクリプトが含まれることもある。正規表現ベースの単純なパターンマッチングで、まずは「明らかに危険」なものを弾く。
import re
DANGEROUS_PATTERNS = [
r'rm\s+-rf\s+/',
r'curl.*\|.*bash',
r'eval\s*\$\(curl',
r'chmod\s+777',
r'sudo\s+rm',
]
def check_security(skill_content):
for pattern in DANGEROUS_PATTERNS:
if re.search(pattern, skill_content):
return False, f"Dangerous pattern detected: {pattern}"
return True, "Security check passed"
より高度なチェック(AST解析、サンドボックス実行など)は将来の拡張として残す。
パターン観察とスキル自動生成
メタエージェントの核心は、ユーザーの作業習慣を学習し、スキル化を提案することだ。
観察対象
PostToolUseフックで記録する情報:
- ツール名(Read, Edit, Bash, Task, etc.)
- 引数(ファイルパス、コマンド内容など)
- タイムスタンプ
- プロジェクトパス
パターン検出アルゴリズム
週次でusage.logを分析し、以下を検出:
1. 繰り返しパターン
同じファイルパスや同じコマンドパターンが3回以上出現したら、スキル化候補とする。
例:
- Read "articles/xxx.md" → Grep "重要概念" → Write "notes/yyy.md"
- Read "articles/zzz.md" → Grep "重要概念" → Write "notes/www.md"
→ 「記事から概念を抽出する」スキルを提案
2. スキル後の手動修正
既存スキルを実行した直後に、毎回同じEditが入る場合、スキルのテンプレートに不備がある可能性がある。
例:
- Skill: /commit
- Edit: "Co-Authored-By を追加"
→ SKILL.mdに Co-Authored-By をデフォルト追加する提案
3. 未使用スキル
30日間一度も呼び出されていないスキルは、削除候補として通知。
提案の形式
分析結果はanalytics.jsonに保存され、次回の/meta-analyze実行時にユーザーに提示される。
{
"suggestions": [
{
"type": "create_skill",
"name": "extract-concepts",
"reason": "Pattern detected 5 times in the last week",
"template": "..."
},
{
"type": "improve_skill",
"skill": "/commit",
"reason": "User always adds Co-Authored-By manually",
"diff": "..."
},
{
"type": "remove_skill",
"skill": "/unused-skill",
"reason": "Not used in 30 days"
}
]
}
実装例:/install-skill-safe
具体的なSKILL.mdの例を示す。
---
name: install-skill-safe
description: Safely install external Claude Code skills with security checks
invocation-triggers:
- install skill
- add skill
- import skill from marketplace
disable-model-invocation: false
---
# Install Skill Safely
This skill installs external Claude Code skills with automatic security validation.
## Process
1. Download SKILL.md from the provided URL or path
2. Run security analysis to detect dangerous patterns
3. If safe, execute `npx add-skill`; otherwise, warn the user
## Usage
User provides:
- URL or path to the skill (e.g., `https://github.com/example/skill`)
## Security Check
Automatically blocks skills containing:
- `rm -rf /`
- `curl ... | bash`
- `eval $(curl ...)`
- `chmod 777`
- `sudo rm`
- Direct disk writes
## Implementation
```bash
SKILL_URL="$1"
# Download SKILL.md
curl -s "$SKILL_URL/SKILL.md" > /tmp/skill-temp.md
# Run security check (simplified)
if grep -E 'rm\s+-rf\s+/|curl.*\|.*bash|eval\s*\$\(curl' /tmp/skill-temp.md; then
echo "❌ Security check failed: Dangerous patterns detected"
exit 1
fi
echo "✅ Security check passed"
npx add-skill "$SKILL_URL"
Log the result to ~/.config/claude/meta-manage/security-reports/.
## 制約と今後の課題
### SubAgent階層制限
現状、スキル同士を組み合わせた複雑なワークフローは難しい。将来的にClaude CodeがSubAgentのネストをサポートすれば、「観察エージェント」「分析エージェント」「提案エージェント」のように役割分担できるかもしれない。
### Context消費の最適化
観察データが増えると、分析時のcontext消費が増える。定期的にログをローテーションするか、サマリー化して圧縮する仕組みが必要だ。
### Vercel支配問題への対応
`npx add-skill`に依存している限り、Vercelのエコシステムから逃れられない。代替手段として、Git経由での直接インストールや、自前のスキルレジストリを構築する選択肢もある。
しかし、メタエージェントの目的は「外部スキルの管理」だけではなく、**ユーザー固有のパターン学習**にある。Vercelが提供できないこの領域に注力することで、差別化できると考えている。
## まとめ
Claude Codeのスキルは、再利用可能な知識のカプセル化だ。しかし、スキル自体が増えると、それを管理するメタ的な仕組みが必要になる。
この記事で提案したメタエージェントは:
1. **フックベースの観察**で、ユーザーの作業パターンを軽量に記録
2. **セキュアなインストール**で、外部スキルの危険性を自動チェック
3. **パターン分析**で、スキル化・改善・削除を提案
「スキルのCI/CD」という発想は、AI時代の開発ワークフローにおいて、今後さらに重要になるだろう。ツールがツール自身を改善する——そんなメタ的なフィードバックループが、開発体験を次のレベルに引き上げるはずだ。
## 関連概念
- メタエージェント - エージェント自体を管理・改善するエージェント
- フック - プログラムのライフサイクルで自動実行される処理
- パターン検出 - データやログから繰り返しパターンを発見
- セキュリティチェック - コードやスクリプトの安全性を自動検証
- スキル自動生成 - 作業パターンからスキルを自動抽出
- エコシステム中央集権化 - 特定企業による事実上の標準化
- スキルレジストリ - AIエージェントのスキルマーケットプレイス
- 自己増殖AIエージェント - 自ら能力を拡張するエージェント
- CI-CDパイプライン - 継続的インテグレーション・デリバリー
## 抽出された概念
この記事の主要概念は既存のnotes/ノートに収録済み:
- メタエージェント - エージェントを管理・改善するエージェント設計
- スキル自動生成 - 作業パターンからのスキル抽出
- スキルレジストリ - スキルのカタログ化・配布の仕組み
- フック - ライフサイクルベースの自動実行パターン
- エコシステム中央集権化 - プラットフォーム支配のパターン