Claude Code のスキルを npx skills でチームに配布する
エニテックの記事を書く手順は、これまで僕の頭の中と、ちょっとしたメモに散らばっていました。文体、校正の観点、サムネイルの作り方、frontmatter の書式。これを Claude Code の「スキル」にまとめておけば、自分が書くときはもちろん、チームの誰でも同じ品質で記事を出せるはずだと思いました。
問題は配り方です。スキルは .claude/skills/ 配下のフォルダなので、リポジトリに置けば共有自体はできます。とはいえ「clone して global の ~/.claude/skills/ に手でコピーして……」という手順を一人ひとりに案内するのは現実的ではありません。ここは npx skills add でリポジトリから直接インストールする形にしました。配布自体はコマンド一発で済みます。ただ、スキルが「どこに住むか」の部分で何度か足を取られたので、その注意点を残しておきます。
配ったもの
用意したスキルは2つです。
anytech-add-article: 手元の素材で記事を1本書いて追加する軽量版。文体・校正・個人スタイルを内蔵しています。anytech-produce-article: Docker で実際にコードを動かし、スクショや図解まで作るフル版です。
どちらも「どの作業ディレクトリからでも動く」ことを前提にしました。ブログのリポジトリを clone していなくても、スキルの最初のステップで自動的に用意します。だから global(-g)に入れておけば、普段触っている開発リポジトリにいるまま「これ記事にして」と頼めます。
npx skills add で配る
配布には vercel-labs/skills の npx skills を使いました。GitHub のリポジトリを指定すると、その中の SKILL.md を見つけてエージェントのスキルディレクトリにインストールしてくれる CLI です。Claude Code だけでなく Cursor など多くのエージェントに対応しています。
npx skills add anycloud-inc/anytech -s anytech-add-article -a claude-code -g
エニテックのリポジトリは private なので、各自 gh auth login 済み(または SSH 鍵設定済み)が前提です。あとは -s で入れたいスキルを選ぶだけ……のはずでした。
ハマり1: -a claude-code を付けないと認識されない
最初は -a を付けずに実行しました。コマンドは成功し、導入サマリにも ~/.agents/skills/anytech-add-article と出ました。ところが Claude Code を起動してもスキルが出てこない。
原因はインストール先でした。npx skills は多数のエージェントに対応していて、エージェントを明示しないと共通の置き場所 ~/.agents/skills/ に入ります。一方 Claude Code が読むのは ~/.claude/skills/(global)と、プロジェクトの ./.claude/skills/ だけです。~/.agents/ の方は見ていません。
-a claude-code を付けると、Claude Code 用のパスに入ります。
ややこしいのは、-a claude-code を付けても導入の途中サマリには ~/.agents/skills/... と表示されることです。これは staging(一時展開)の表示で、確定後に実体は ~/.claude/skills/ へ移ります。→ ~/.claude/skills/anytech-add-article と出れば成功です。ここで一度「やっぱり場所が違う、失敗したのでは?」と勘違いして時間を溶かしました。
ハマり2: 名前空間(コロン)は使えない
スキル名は anytech:add-article のように、コロンで名前空間を切りたいと思っていました。プラグインだと /plugin-name:skill-name のように呼べるので、その感覚です。
ところが npx skills add で素のスキルとして配る場合、このコロンの名前空間は使えません。あれはプラグインの機能でした。仕方なくハイフンでグルーピングして、add-article → anytech-add-article、write-article → anytech-produce-article と改名しました。anytech- を頭に付けておけば、インストール済みスキルの一覧で並んだときに自分たちのものだと分かります。
ハマり3: -s は繰り返して指定する
細かい点ですが、2つのスキルを一度に入れたくて -s anytech-add-article,anytech-produce-article とコンマ区切りで書いたら通りませんでした。-s は繰り返します。
npx skills add anycloud-inc/anytech \
-s anytech-add-article \
-s anytech-produce-article \
-a claude-code -g
更新は npx skills update、削除は npx skills remove -g anytech-add-article です。
個人の文体はスキルの外に逃がす
チームに配ると決めたとき、もう一つ考えたのが「個人の書き方の癖をどう扱うか」でした。文体や校正のルールはチーム共通にしたい。でも人によって細かい好みはあるし、それをスキル本体に書き込むと、npx skills update で上書きされて消えてしまいます。
そこでスキルは、実行時に ~/.claude/writing-style.local.md を読み、共通のデフォルトの上に個人の指定を重ねるようにしました。このファイルはスキルの外(~/.claude/ 直下)にあるので、npx skills update で再取得しても消えません。チーム共通の土台は配布で配り、個人の癖はローカルで育てる、という分担です。
所感
配布そのものは npx skills add 一発で、拍子抜けするくらい簡単でした。つまずいたのは中身ではなく、~/.claude/ と ~/.agents/ のどちらに入るかという住み分けのところだけです。-a claude-code を付ける。これさえ押さえれば、あとは README に1行コマンドを貼っておくだけでチームに配れます。
スキルにして良かったのは、これまで暗黙知だった「エニテックらしい書き方」が、リポジトリの中の一次情報になったことです。ルールを変えたいときは references/ を直して push すれば、次に npx skills update した人から新しいルールで書けます。属人化していた手順を、配れる資産に変えられたのが一番の収穫でした。
Anycloudでは一緒に働くメンバーを募集しています!
Anycloudは、ユーザーの心を動かす体験を届けることを大切にしています。フルリモート・フルフレックスの環境のもと、ライフスタイルに合わせた働き方を実現しながら挑戦したい方を歓迎します。詳細はこちらをご覧ください。