問題
Claude Codeの拡張機能を再利用・配布できる形にまとめるには marketplace としてパッケージ化する必要があります。その際、どのように拡張機能そのものを開発し、どのようにパッケージ化するかでいくつかの問題が起こりえると考えました。
- 拡張機能(例:Skills)がローカルで利用可能な状態だとしても、それをそのまま marketplace として配布は出来ません
- marketplace の構造は、逆にローカルで実行できる状態ではありません
- LLMの性質上、拡張機能が正しく動作しない場合、LLMがその問題を回避してしまうことがある。その場合、単にLLMが拡張機能を使わずに目的を達してしまう
このように混乱が生じやすくなる。
解決の提案
混乱と、それが原因で起こりそうな問題(更新後のバグ)を回避するために開発フローを3つのフェーズに分割し、それぞれのフェーズに専用のレポジトリ(プロジェクト)を使う。
複数のレポジトリにまたがるのでフローの速度はやや落ちる(例: 検証プロジェクトに到達するまでに2回の git clone が必要になる)が、それは理解しやすさとのトレードオフとして許容する。
開発フロー
使用レポジトリ
以下のレポジトリを使う(なお、著者は続けて拡張デモを追加する予定です。著者自身もClaude Code拡張界隈は初心者なので😊)
-
開発用プロジェクト : marketplace-development
https://github.com/yoshiwatanabe/yw-claude-marketplace-development -
パッケージ化(配布): marketplace-demo
https://github.com/yoshiwatanabe/yw-claude-marketplace-demo -
検証: marketplace-testclient
https://github.com/yoshiwatanabe/yw-claude-marketplace-testclient
開発のフロー実例
シナリオ: Commandsの開発(更新、バグ修正含む)
フェーズ 1. Claude 拡張機能の開発
使用プロジェクト marketplace-development
この例では Claude Code を用いてバイブコーディングでCommandsを作成してもらった。TESTING.mdを作成してもらい、それに従いローカルでの動作確認をする。
Claude Codeにはあらかじめ marketplace パッケージとしての構造を持つ別のプロジェクトに物理的にコピーする旨を伝えている。その結果 MIGRATION.md が作成されている。これを使って次のフェーズを完了させる。
フェーズ 2. marketplace に機能追加
使用プロジェクト marketplace-demo
拡張機能は plugin を直近のパッケージとし、さらにその plugin を marketoplace プロジェクトに追加する。Commandsのコピー操作やメタデータの内容は前述のMIGRATION.mdに従う。
具体的には:
- plugins ディレクトリ化に新規 plugin のためのディレクトリを作成し plugin.json と拡張機能本体を格納
-
.claude-pluginディレクトリ内のmarketplace.jsonに新規 Plugin のメタ情報を追加する
フェーズ 3. marketplace に機能検証
使用プロジェクト marketplace-testclient
フェーズ1でローカルでの動作確認は出来ているが、そこから marketplace として配布するための Commands の配置、plugin メタデータ等の検証が必要なので、別のプロジェクトで検証します。
/plugin のUIを使って marketplace を更新すると、新たに加えたdemo-commands pluginが選択可能になります。
ホームの.claude ディレクトリで marketplace と 新規plugin が正しくインストールされているか確認します。
最後に、機能そのものを使って動作確認を完了します。
以上





