最近ClaudeやCodexを使う機会が増えてきましたが、skillsを都度書くのは面倒です。
Claudeのskillsでは書いたけど、Codexの方では書いていなかったり、逆も然り。
みなさんも工夫されていると思いますが、私としてはSymbolic Linkで管理することが最適だと感じましたので、紹介します。
Symbolic Linkとは?
ファイル/ディレクトリを参照するポインタを用いて別ファイル/ディレクトリからアクセスする仕組みです。
bashでは以下のように実行することができます。
##ファイル作成
$echo "hello world" > hello.md
##シンボリックリンクを作成
$ln -s hello.md hello_clone.md
すると以下のようにファイルが生成されます。
-rw-r--r-- 1 yu00sasaki staff 12B 4 14 14:21 hello.md
lrwxr-xr-x 1 yu00sasaki staff 8B 4 14 14:22 hello_clone.md -> hello.md
hello_clone.mdの実体はhello.mdなので同じ結果が返ってきます。
$ cat hello_clone.md
hello world
このシンボリックリンクの仕組みを用いて、Agent Skillsを管理します。
すなわち、Agent Skillsについても共通で使うものは、共通ディレクトリで管理し、固有の設定だけ個別で管理すればいいのです。
ざっくりイメージとしてはこちら
root/
├ common/skills
│ ├ skill_1.md ##共通のスキルを書く
│ ・・・
├ .agents/skills -> common/skills ##シンボリックリンクを貼る
├ .claude/skills -> common/skills ##シンボリックリンクを貼る
・・・
上記に対応したシンボリックリンクはこちら
##相対パスで記載する必要があるので注意
$ln -s ../common/skills .agents/skills
$ln -s ../common/skills .claude/skills
なぜSymbolic Link運用がいいのか?
VSCodeやGithubとの相性が良いのでシンボリックリンクによる運用は効果的だと考えております。VSCodeの場合、シンボリックリンクのファイルを参照すると実ファイルにアクセスすることができます。この時、VSCode上では該当のパスを開いたように表示され、変更を行うと実ファイル側に反映することができます。
当然gitへのコミットも実ファイル側になります。
$echo "感謝の気持ちも忘れないでください。" >> .agents/skills/skill_1.md
$git status
modified: common/skills/skill_1.md
github上でもシンボリックリンクの場合、矢印のアイコンが付与されます。
実体は別なのでパスだけを確認することができます。


最後に
今回はシンボリックリンクによるAgent Skillsの管理方法について記載しました。
エージェント管理自体はあまり、意識していなかったので、雑な部分も多かったですが、開発組織としてエージェントを利用する機会も増えてきているので、環境整備はこれからも意識していきたいです。

コメント