Skill Migrator
既存スキルを指定プロジェクト向けに移行・特化させるスキル。 移行元スキルをベースに、移行先プロジェクトの文脈を織り込んだ独立コピーを作成する。
ワークフロー概要
1. 入力の確認 → 移行元スキル・移行先プロジェクトの特定
2. プロジェクト分析 → 技術スタック・規約・構成の自動検出
3. 分析結果の確認 → ユーザーと対話して分析結果を補正
4. 拡張方針の策定 → どの部分をどう特化するか提案・確認
5. スキル生成 → 移行元をベースに拡張した新スキルを生成
6. レビュー・調整 → ユーザーの確認を受けて微調整
ステップ1: 入力の確認
ユーザーから以下を確認する。会話の文脈から読み取れる場合は確認を省略してよい。
必須情報
- 移行元スキルのパス: SKILL.mdが存在するディレクトリパス
- ユーザースコープ:
~/.claude/skills/<skill-name>/ - プロジェクトスコープ:
<project>/.claude/skills/<skill-name>/
- ユーザースコープ:
- 移行先プロジェクトのパス: ルートディレクトリのパス
- 移行先は
<project>/.claude/skills/<skill-name>/に配置
- 移行先は
任意情報
- スキル名の変更: 移行先で別名にしたい場合(デフォルトは元の名前を維持)
- 特に特化したい領域: ユーザーが明確な拡張意図を持っている場合
ステップ2: プロジェクト分析
移行先プロジェクトを自動分析し、スキル拡張に活かせるコンテキストを収集する。
分析対象
以下のファイル・ディレクトリを順に探索する:
コンテキストファイル(最優先)
CLAUDE.md— AI向けプロジェクト指示(コーディング規約、アーキテクチャなど)AGENTS.md— エージェント向け指示.claude/rules/配下のルールファイル.cursorrules,.windsurfrulesなど他AIツール向け設定
技術スタック検出
package.json→ Node.js/フロントエンド技術、スクリプト、依存関係go.mod→ Go言語、モジュール構成Cargo.toml→ Rustpyproject.toml,setup.py,requirements.txt→ PythonGemfile→ Rubypom.xml,build.gradle→ Java/KotlinMakefile→ ビルド構成docker-compose.yml,Dockerfile→ コンテナ構成terraform/,*.tf→ IaCtsconfig.json→ TypeScript設定.eslintrc*,.prettierrc*→ Lint/フォーマッタ設定
プロジェクト構成
- ディレクトリ構造の概要(
ls -la, 主要ディレクトリの役割) - テストフレームワーク(
jest.config.*,vitest.config.*,pytest.iniなど) - CI/CD設定(
.github/workflows/,.gitlab-ci.ymlなど) - README.md — プロジェクト概要
分析結果の構造化
収集した情報を以下のカテゴリに整理する:
プロジェクトコンテキスト:
├── 技術スタック(言語、フレームワーク、主要ライブラリ)
├── コーディング規約(命名規則、ファイル構成、スタイル)
├── アーキテクチャパターン(レイヤー構成、モジュール分割)
├── テスト方針(フレームワーク、カバレッジ要件)
├── 既存のAIコンテキスト(CLAUDE.md等から抽出した指示)
└── プロジェクト固有の用語・概念
ステップ3: 分析結果の確認
分析結果をユーザーに提示し、対話的に補正する。 AskUserQuestionツールを活用して効率的に確認を取る。
提示する内容
- 検出した技術スタックの一覧
- 検出したコーディング規約のサマリ
- スキル拡張に関連しそうなプロジェクト固有の特徴
ユーザーに確認する内容
- 検出結果に誤りや不足がないか
- スキルに反映すべき追加のプロジェクト規約があるか
- 特に重視したい拡張ポイント
ステップ4: 拡張方針の策定
移行元スキルの各セクションについて、プロジェクトコンテキストをどう反映するか方針を立てる。
拡張の観点
4.1 description(トリガー条件)の拡張
- プロジェクト固有のユースケースをトリガー例に追加
- プロジェクト名やドメイン用語を含めた具体的なトリガー文を追加
- プロジェクトの実際のブランチ戦略を反映する(例: GitLab Flowなら
main、Git Flowならdevelopなど。CLAUDE.mdやgit branchコマンドで確認し、存在しないブランチ名を例に使わない)
4.2 ワークフロー・手順の特化
- プロジェクトの技術スタックに合わせた具体的な手順の追加
- 汎用的な記述をプロジェクト固有のツール・コマンドに置き換え
- プロジェクトのディレクトリ構成を前提とした操作の具体化
4.3 品質基準・規約の統合
- CLAUDE.mdやlint設定から抽出した規約の組み込み
- プロジェクト固有のコーディングスタイルへの適合
- テスト要件やレビュー基準の反映
4.4 CLAUDE.mdとの情報重複を避ける(重要)
移行先プロジェクトにCLAUDE.mdが存在する場合、SKILL.mdとの情報重複を意識的に管理する。
SKILL.mdに複製しないもの(CLAUDE.md参照で済ませる):
- 技術スタックの一覧や概要説明(「このプロジェクトはKotlin/Ktorで...」といった背景情報)
- アーキテクチャの全体構成図やディレクトリ構成の説明
- コーディングスタイルの一般的な規約説明
SKILL.mdに明示的に記載すべきもの(参照に置き換えない):
- アクション可能なチェック項目: 「
@Serializableの新規フィールドにデフォルト値があるか確認」のような具体的な検証ステップ - 禁止事項・CRITICAL RULESのチェックリスト: 「
components/ui/の編集禁止」「any型の使用禁止」等、スキル実行時に直接確認すべき項目 - プロジェクト固有の判断基準や閾値: 「200行以上のモーダルはディレクトリ分割」「テストが必須(バックエンド)」等
- スキルの責務に直接関わるプロジェクト固有知識: scope推定ルール、レビュー観点の具体例、分類基準など
つまり、「背景情報」はCLAUDE.md参照に任せ、「実行時のチェックリスト」は必ずSKILL.mdに含める。「CLAUDE.mdを参照」と書くだけでは、スキル実行時に具体的に何をチェックすべきか不明確になるため、チェック項目自体は省略しない。
補足:
context: forkで別プロセスとして実行されるスキルの場合、CLAUDE.mdが自動的にコンテキストに含まれるかをユーザーに確認し、含まれない場合は背景情報も必要最小限をSKILL.mdに埋め込む- 情報の二重管理が気になる場合は、CLAUDE.mdのセクション名を参照しつつチェック項目は具体的に記載する(例: 「CLAUDE.mdの『セキュリティ規約』に基づき、以下を確認: ...」)
4.5 移行元スキルの観点を漏らさない(重要)
移行元スキルが持つ観点・チェック項目・ワークフローステップは、プロジェクトに適用可能な限りすべて維持する。プロジェクト固有の観点を追加する際に、移行元の汎用的な観点を削ってはならない。
具体的には:
- 移行元の各セクション・チェック項目を一つずつ確認し、プロジェクトに該当するものはすべて残す
- 「プロジェクトで使っていない技術」に関する記述のみ削除する(例: Go固有の記述をKotlinプロジェクトに移行する場合)
- 汎用的だが有用な観点(セキュリティ、エラーハンドリング、パフォーマンス等)は削除せず、プロジェクト固有の具体例で補強する
- without_skill版(スキルなしでの移行結果)の網羅性を下回らないことを目標とする
4.6 コンテキスト情報の追加
- プロジェクト固有のファイルパス、設定パスの具体例
- 頻出パターンやアンチパターンの記述
- 既存コードベースから抽出した具体例の追加
4.7 bundled resourcesの拡張
- プロジェクト固有のスクリプトやテンプレートの追加
- referenceファイルの追加(技術スタック固有のガイドなど)
方針の提示
拡張方針を箇条書きでユーザーに提示し、確認を取る:
拡張方針:
1. [セクション名]: [具体的な拡張内容]
2. [セクション名]: [具体的な拡張内容]
...
追加予定のセクション:
- [新規セクション名]: [目的と内容の概要]
ステップ5: スキル生成
確認された方針に基づいて、移行元スキルをベースに拡張版を生成する。
生成ルール
- 移行元の構造を尊重: セクション構成は基本的に維持し、拡張・追記する形で変更
- frontmatterの更新:
name: ユーザーが変更を希望しない限り維持description: プロジェクト固有のトリガー条件を追加- 移行元への参照は含めない(独立コピーのため)
- プロジェクトコンテキストの埋め込み: 分析結果を自然な形でスキル本文に統合
- 具体例の追加: 抽象的な記述をプロジェクト固有の具体例で補強
- 不要な汎用記述の削除: プロジェクトに該当しない技術スタックへの言及は削除
配置先
<移行先プロジェクト>/.claude/skills/<skill-name>/
├── SKILL.md
├── scripts/ (必要に応じて)
├── references/ (必要に応じて)
└── assets/ (必要に応じて)
移行元にbundled resourcesがある場合はコピーし、プロジェクトに合わせて調整する。
ステップ6: レビュー・調整
生成したスキルをユーザーに提示し、フィードバックを受けて調整する。
提示する内容
- 生成したSKILL.mdの全文
- 移行元からの主な変更点のサマリ
- 追加・削除したセクションの説明
調整のポイント
- ユーザーのフィードバックに基づいて修正
- 過剰な特化(狭すぎるスコープ)の調整
- 不足している規約やパターンの追加
注意事項
- 移行元スキルは一切変更しない(読み取り専用として扱う)
- 移行先ディレクトリが既に存在する場合、上書き前にユーザーに確認する
- プロジェクト分析で機密情報(API key、credentialなど)を検出した場合、スキルに含めない
- 大きなスキル(500行超)の場合、references/への分割を検討する