# Claude Code のスキルを npx skills でチームに配布する

> 記事執筆を Claude Code のスキルにしてチームに配ったときの記録です。配布は npx skills add 一発でしたが、~/.claude/ と ~/.agents/ の住み分けや名前空間の制約で何度かつまずきました。

- 公開日: 2026-06-27
- 著者: 村井 謙太
- タグ: Claude Code, Agent Skills
- URL: https://tech.anycloud.co.jp/articles/share-claude-code-skills-with-npx

---

エニテックの記事を書く手順は、これまで僕の頭の中と、ちょっとしたメモに散らばっていました。文体、校正の観点、サムネイルの作り方、frontmatter の書式。これを Claude Code の「スキル」にまとめておけば、自分が書くときはもちろん、チームの誰でも同じ品質で記事を出せるはずだと思いました。

問題は配り方です。スキルは `.claude/skills/` 配下のフォルダなので、リポジトリに置けば共有自体はできます。とはいえ「clone して global の `~/.claude/skills/` に手でコピーして……」という手順を一人ひとりに案内するのは現実的ではありません。ここは [`npx skills add`](https://github.com/vercel-labs/skills) でリポジトリから直接インストールする形にしました。配布自体はコマンド一発で済みます。ただ、スキルが「どこに住むか」の部分で何度か足を取られたので、その注意点を残しておきます。

## 配ったもの

用意したスキルは2つです。

- `anytech-add-article`: 手元の素材で記事を1本書いて追加する軽量版。文体・校正・個人スタイルを内蔵しています。
- `anytech-produce-article`: Docker で実際にコードを動かし、スクショや図解まで作るフル版です。

どちらも「どの作業ディレクトリからでも動く」ことを前提にしました。ブログのリポジトリを clone していなくても、スキルの最初のステップで自動的に用意します。だから global（`-g`）に入れておけば、普段触っている開発リポジトリにいるまま「これ記事にして」と頼めます。

## npx skills add で配る

配布には [vercel-labs/skills](https://github.com/vercel-labs/skills) の `npx skills` を使いました。GitHub のリポジトリを指定すると、その中の `SKILL.md` を見つけてエージェントのスキルディレクトリにインストールしてくれる CLI です。Claude Code だけでなく Cursor など多くのエージェントに対応しています。

```bash
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` は繰り返します。

```bash
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` した人から新しいルールで書けます。属人化していた手順を、配れる資産に変えられたのが一番の収穫でした。
