organize-skills について
Organize Skills は、シンボリックリンクや相互参照を保ちながらスキルライブラリを整理・改名するスキルです。依存関係をたどって変更を検証し、共有ライブラリやツールハブの管理を支援します。
主な機能
- 01スキルと実体の配置を一覧化
- 02バックエンド依存による分類
- 03ディレクトリ改名とリンク修正
- 04frontmatter と相互参照の更新
- 05リンクと改名項目の検証
活用シーン
- 01共有スキルライブラリの再編
- 02複数のツールハブにまたがる改名
- 03リポジトリ内スキルの移動
- 04切れたリンクや古い参照の発見
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ openclaudia/ openclaudia-skills --skill organize-skillsインストール後、Claude Code で/organize-skillsを入力して読み込まれたか確認します。
詳細
スキルを整理する
各スキルが実際に何を扱うのかが名前から分かるようにスキルライブラリを整理し、名前を変更したときにシンボリックリンクと相互参照の整合性を保ちます。
多くの環境では、共有ディレクトリに正規のスキルライブラリを1つだけ置き、各ツールのハブ(例:~/.claude/skills/、~/.codex/skills/)にシンボリックリンクを作成しています。プロジェクトのリポジトリ内にあり、ハブにシンボリックリンクされているスキルもあります。そのため、1つの名前を変更するだけで複数のシンボリックリンクや、古い名前を参照するすべてのドキュメントに影響することがあります。このスキルは、こうした波及範囲を管理します。
ステップ 1 — 一覧を作成する
すべてのスキルと、実際の保存場所を一覧にします。ハブの項目は通常、正規ディレクトリへのシンボリックリンクです。
for hub in <hub-1> <hub-2>; do
echo "== $hub =="; ls -la "$hub"
done
readlink -f で各名前の実ディレクトリを特定します。プロジェクトのリポジトリ内にあるスキルと、共有ライブラリ内にあるスキルを確認してください。リポジトリ内のスキルの名前を変更する場合は、そのリポジトリで git mv を実行する必要があります。
ステップ 2 — バックエンドで分類する(命名ルール)
規則は、スキルが依存するバックエンドをプレフィックスにすることです。話題ではなく、実際に呼び出すものに基づいて判断します。各スキルのディレクトリで、依存関係を示す特徴を grep します。
grep -rlE "<api-host>/api|/api/<x>|<db-client>|<AUTH_TOKEN_NAME>" "$skill_dir"
- 特定の製品の API/データベースを呼び出す場合 → その製品のプレフィックス(例:
acme-*)。 - 完全にローカル(ブラウザーの自動化、オフラインの SOP、ファイル処理など、バックエンドを使用しない)の場合 → 汎用/ローカルのプレフィックス。
- ひとまとまりのスキルが多い場合は、関連するスキルが一緒に並ぶよう、トピックを表すインフィックスを付けます(例:
acme-seo-*とacme-reddit-*)。
名前を変更する前に、分類結果をユーザーに伝えてください。製品固有のように見えてもバックエンドをまったく呼び出さないスキルはローカルの分類に属し、その逆も同様です。依存関係に基づいて判断してください。
ステップ 3 — 名前を変更する(変更によって壊れるものをすべて修正する)
名前を OLD → NEW に変更するたびに、次の手順を行います。
- 正規ディレクトリを移動する。
- 共有ライブラリ内の場合:
mv <lib>/OLD <lib>/NEW - リポジトリ内の場合:
cd <repo> && git mv <skills-path>/OLD <skills-path>/NEW && git commit - 別のリポジトリに置かれている場合:その場で名前だけを変更せず、共有ライブラリに移動します。
- 共有ライブラリ内の場合:
- すべてのハブでシンボリックリンクを張り直す。 古いリンクを削除し、正規ディレクトリを指す新しいリンクを作成します。ライブラリを参照している各ツールのハブで実施してください。
NEW/SKILL.md内のname:フロントマターを更新する。 ディレクトリ名ではなく、この値を基にローダーが識別します。- 相互参照を修正する。 他のスキルや長期記憶/メモファイルで、
OLDが名前または古いパスとして記載されている場合があります。
最も具体的な文字列(古いパス全体)から先に置換し、その後で名前だけを置換します。そうすることで、移動したスキルのパスも正しく更新できます。grep -rln "OLD" <lib> <memory-dirs> 2>/dev/null
ステップ 4 — 検証する
# broken symlinks in any hub
for hub in <hub-1> <hub-2>; do
find -L "$hub" -maxdepth 1 -type l ! -exec test -e {} \; -print
done
# no lingering old names
grep -rn "OLD" <lib> 2>/dev/null
# each renamed skill's name: matches its dir
grep -m1 "^name:" <lib>/NEW/SKILL.md
ローダーが各名前変更済みスキルを新しい名前で再登録することを確認してください。確認作業中に既存のリンク切れシンボリックリンクを見つけたら削除します。修正は簡単ですが、残しておくと混乱を招きます。
注意事項
- 名前を変更していないスキルは削除しないでください。規則の適用に必要なものだけを変更します。
- 名前の変更は簡単で元に戻せます。実際に大きなコストとなるのは相互参照の破損です。このスキルの要点は
mvではなく、ステップ 3.4 と 4 にあります。 - リポジトリ内のスキルの名前を変更する場合は、論理的な変更1件につき1つのコミットを作成し、それぞれ独立して二分探索や取り消しができるようにします。