前回の学習編で、Plugin は「バラバラに作った部品をひとつの箱に詰めて、まるごと配れる形にする仕組み」だと整理しました。今回は実際に、これまで作ったスキルやフックを1つの Plugin に箱詰めしてみます。ここでも主役は自然な言葉での指示。フォルダ構成を暗記する必要はありません。
plugin.json、つまり箱の「ラベル(名前や説明を書いた設定ファイル)」です。つまずいたのは2点――「①どの部品を入れるかが曖昧だった」「②ラベル(plugin.json)の必須項目である名前が抜けていた」。中身を1つの箱として確認できることが、配る前の安心材料になります。
このシリーズ(全13回+番外編・拡張編)
- 基礎 ― 全体像と拡張機能の地図
- Skills(学習編)― 繰り返す手順を覚えさせる
- Skills(実践編)― 作って、つまずいて、直す
- Subagents(学習編)― 作業を別の文脈に切り出す
- Subagents(実践編)― 温泉宿を調べて比較する
- Hooks(学習編)― 特定のタイミングで自動実行する
- Hooks(実践編)― 編集したら自動でチェックを走らせる
- MCP(学習編)― 外部サービスへの接続口
- MCP(実践編)― Google ドライブ連携でつまずいた話
- Plugin(学習編)― 作った部品をひとつの箱にまとめる
- Plugin(実践編)― 便利設定を箱に詰めて配る(この記事)
- Marketplace(学習編)― 箱を並べて配る
- Marketplace(実践編)― お店に公開し、取り込む
- 番外編 ― 拡張機能の選び方チートシート
- 拡張編① Agent Teams(学習編)― 複数のAIをチームで動かす
- 拡張編② Agent Teams(実践編)― 3人チームで多角的にレビューする
作りたいもの ― 「私の便利設定一式」を1箱に
このシリーズで、ニュースをまとめる Skill(Skills 実践編)や、編集したらチェックを走らせる Hook(Hooks 実践編)を作ってきました。これらは別々の場所に散らばっています。今回はそれを1つの Plugin にまとめ、別のプロジェクトでも同じ設定をすぐ使える状態にします。
STEP1|「Plugin にまとめて」と頼む
フォルダ構成を自分で作る必要はありません。入れたい部品を伝えて、箱詰めを頼みます。
すると Claude が、Plugin の決まった形にそって、こんな構成を作ってくれます。
ポイントは、箱には「ラベル」が要ること。plugin.json に名前や説明を書いておくと、受け取った人が「これは何の箱か」を一目で分かります。中身(skills / hooks)は、これまで作ってきたものがそのまま入っているだけ——新しく覚えることはほとんどありません。
STEP2|つまずき ― 「名前」が抜けて読み込まれない
箱はできたのに、いざ有効にしようとすると認識されない。確認すると、原因は plugin.json の必須項目(名前)が空だったことでした。ラベルのない箱は、棚に置いても「何か」が分からず弾かれてしまう、というわけです。
直し方は、やはり言葉で頼むだけです。
plugin.json の必須項目(とくに名前)の抜けです。中身をいじる前に、まずラベル(plugin.json)が揃っているかを確認するのが切り分けの第一手でした。
STEP3|別の環境で有効にしてみる
箱が完成したら、別のプロジェクトで開いた Claude Code に「この Plugin を使いたい」と伝えます。中身(スキル・フック)がセットで有効になり、あちこちからファイルをかき集めることなく、同じ便利設定が一発でそろう。これが Plugin の手応えです。
- 箱を渡す。 Plugin のフォルダを、共有したい相手や別環境に渡します(社内なら共有フォルダや Git リポジトリ経由が手軽)。
- 有効にする。 受け取った側は「この Plugin を有効にして」と頼むだけ。中のスキルもフックも、まとめて使えるようになります。
- 動作を確認する。 スキルが候補に出るか、フックが発火するかを軽く試して、箱の中身が効いていることを確かめます。
▶ 次回(完結編)
箱(Plugin)ができたら、最後はそれを「お店」に並べて配る/受け取る番です。次回の Marketplace(実践編) で、公開と取り込みを実際に試し、シリーズの配布レイヤーを締めくくります。
Marketplace(実践編)― お店に公開し、取り込む →まとめ ― 「仕分けて、ラベルを貼る」
- Plugin 化は 「この設定を Plugin にまとめて」と頼むだけ。Claude が決まったフォルダ構成を作る。
- いちばん大事なのは技術より仕分け。配る相手を思い浮かべて中身を選ぶ。
- 読み込まれないときは
plugin.jsonの必須項目(名前)の抜けを疑う。 - 別環境では「この Plugin を有効にして」と頼むだけで、同じ設定一式が一発でそろう。