
ビジネスユーザに利用してもらうために、コンテナで実行されるSkillを作成して、Claude Code PluginをMarketplaceで配布する
今回は「ある画像処理」を題材にしてSkillを作成し、ビジネスユーザ(非エンジニア)にも利用しやすい形でClaude Codeの拡張機能を配布する手順を紹介します。
ポイントは2つです。
- 作成したSkillをClaude Code Pluginとしてまとめ、Marketplace(カタログ)としてGitHubで配布
- 実行環境をDockerコンテナとすることで、利用者側のインストール負担を最小化
画像処理の中身はあくまで題材で、肝は「Dockerで動くSkillを作り、それをPlugin→Marketplaceで配れる形にする」こととなります。
この記事でできること
- 画像処理のSkillを、Dockerコンテナで実行できるよう作成する(利用者はPython等を入れなくてOK)
- GitHubでMarketplaceとして公開し、作ったSkillをPluginとして配布できる形にする
用語整理(Skill / Plugin / Marketplace)
この記事では次の意味で用語を使っています。
- Skill
- Claudeが参照して実行する「作業手順+同梱ファイル(スクリプト等)」の単位
- 典型的には
SKILL.mdを含むディレクトリが1つのSkillになる
- Plugin
- Claude Codeにインストールする配布単位
- Skillだけでなく commands/agents/hooks/MCP などもまとめられる
- Marketplace
- Pluginをまとめるためのカタログで、Gitリポジトリに
.claude-plugin/marketplace.jsonを置いて公開 - Marketplace定義には複数のPluginを記載可能
- 利用者が
/plugin marketplace add ...で追加してさらにそこからpluginをinstallして使用
- Pluginをまとめるためのカタログで、Gitリポジトリに
詳細は以下を参照ください。
実行環境
開発者、利用者ともに以下の環境で動作確認をしています。
- PC: MacBook Pro (Apple M4, 16GB, Tahoe 26.2)
- Claude Code: 2.1.3
- コンテナ実行環境: Docker version 28.1.1-rd, build 4d7f01e (Rancher Desktop)
開発者編:Skillの作成
Skillにする題材
以下のような写真があります。(なお本写真は画像生成AIにより作成しました)

この写真の人物部分を切り出して、以下のようなプロフィール形式に変換するSkillを作成します。

準備
まずは作業ディレクトリを作成します。
mkdir -p sample-claude-plugin
cd sample-claude-plugin
ここに入力となる画像と正解とする画像を配置しておきます。
sample-claude-plugin
└── sample-image-files
├── after_sample_01.jpg
├── after_sample_02.jpg
├── origin_sample_01.jpg
└── origin_sample_02.jpg
Claude Codeを起動します。
claude
Dockerで動くSkillを作る指示を出す
Skillを作成してもらいます。
以下の指示をClaude Codeに与えます。
> skillを作成したいです。
## 作成するskillの説明
作成するskillは以下の処理を実施します。
- 与えられた画像から人物を切り出す
- 背景を #e1e1e1 に塗り潰す
- 顔周辺が統一されたサイズになるようリサイズ(正解画像を参考に)
- 明るさを標準化します(正解画像を参考に)
- 顔の位置を調整します(正解画像を参考に)
参考としてサンプルの入力画像と、正解の処理結果の画像を与えます。
入出力としてはフォルダ単位、ファイル単位の双方に対応します。スキル実行前にユーザに確認を求めるようなスキルにします。
## skill実行環境について
ユーザに開発者向けのソフトウェアのインストールをさせるのを最小限にとどめるため、Dockerコンテナを実行環境とします。
必要なコンテナ実行環境がわかるように、Skill作成にDockerfileを作成し、ユーザ実行時はコンテナをビルドしてその中でPythonなどを実行しましょう。
もしユーザがコンテナ実行環境を持っていないように見える場合は、Rancher Desktopなどをユーザにインストールするよう促すskillにします。
こちらを実行するとSkillが概ね完成します。以下のようなフォルダ構成でファイルが作成されます
sample-claude-plugin
+ ├── profile-photo-processor
+ │ ├── Dockerfile
+ │ ├── process_photo.py
+ │ ├── requirements.txt
+ │ └── SKILL.md
└── sample-image-files
├── after_sample_01.jpg
├── after_sample_02.jpg
├── origin_sample_01.jpg
└── origin_sample_02.jpg
画像処理がうまくいかない部分は、処理結果の画像を見ながら細かく調整します。
今回は以下のような調整指示を出しました。
> 顔の部分が白すぎます、あと顔のサイズが小さすぎると思います。
> あと明るさの調整が明るすぎます。正解画像をチェックしてください。
> 背景切り出しが少し荒いようです。もう少し細かくしましょう。正解画像を確認してください。
この調整は題材に依存するため、やりたいことができた時点で次に進みます。
PluginをMarketplace定義に記述
最後に配布するためのPluginをMarketplaceに記述します。
以下の指示をClaude Codeに与えます。
> 作成したskillをpluginとして配布したいです。以下に従ってpluginにしてください。
- https://github.com/anthropics/skills
以下のように .claude-plugin/marketplace.json が記載された形となります。
sample-claude-plugin
+ ├── .claude-plugin
+ │ └── marketplace.json
├── profile-photo-processor
│ ├── Dockerfile
│ ├── process_photo.py
│ ├── requirements.txt
│ └── SKILL.md
└── sample-image-files
├── .gitignore
├── after_sample_01.jpg
├── after_sample_02.jpg
├── origin_sample_01.jpg
└── origin_sample_02.jpg
marketplace.json の内容は以下のようになっており、pluginとして公開するskillについて記載されます。
{
"name": "profile-photo-skills",
"owner": {
"name": "Your Name",
"email": "your-email@example.com"
},
"metadata": {
"description": "Profile photo processing skills for standardizing profile photos",
"version": "1.0.0"
},
"plugins": [
{
"name": "profile-photo-processor",
"description": "Process profile photos: remove background, standardize face position/size, and apply gray background (#e1e1e1). Supports batch processing.",
"source": "./",
"strict": false,
"skills": [
"./profile-photo-processor"
]
}
]
}
GitHubで公開
作成したMarketplace(リポジトリ)はGitHubでパブリックに公開しておきます。
今回の例では以下にpushしています。
利用者編:Skillの利用
ここからは利用者側の視点です。
利用者にもClaude Codeを触ってもらう想定なので、手順はそのまま載せます。
準備
作業用のディレクトリを作成します。
mkdir -p sample-use-profile-processor
cd sample-use-profile-processor
ここに入力となる画像のみを配置しておきます。
sample-use-profile-processor
├── origin_sample_01.jpg
└── origin_sample_02.jpg
Claude Codeを起動します。
claude
Marketplaceの追加
まずは以下のコマンドでpluginを追加します。
❯ /plugin marketplace add cm-nakamura-shogo/sample-claude-plugin
⎿ Successfully added marketplace: profile-photo-skills
Pluginをインストールする
次にpluginからskillをインストールします。
❯ /plugin install profile-photo-processor@profile-photo-skills
─────────────────────────────────────────
Plugins Discover Installed Marketplaces (←/→ or tab to cycle)
Plugin Details
profile-photo-processor
Process profile photos: remove background, standardize face position/size, and apply gray background (#e1e1e1). Supports batch processing.
Will install:
• Components will be discovered at installation
⚠Make sure you trust a plugin before installing, updating, or using it. Anthropic does not control what MCP servers, files, or other software are included in plugins and
cannot verify that they will work as intended or that they won't change. See each plugin's homepage for more information.
> Install for you (user scope)
Install for all collaborators on this repository (project scope)
Install for you, in this repo only (local scope)
Back to plugin list
Enter to select · escape to back
そのままEnterを押します。
❯ /plugin install profile-photo-processor@profile-photo-skills
⎿ ✓ Installed profile-photo-processor. Restart Claude Code to load new plugins.
リスタートが必要なため、一旦 /exit してから再度起動します。
> /exit
claude
インストールされたかどうか、 /skill コマンドで確認します。
/skills コマンドで一覧を確認します。
> /skills
─────────────────────────────────────────
Skills
14 skills
User skills (~/.claude/skills, ~/.claude/commands)
(省略)
Plugin skills (plugin)
profile-photo-processor • ~30 tokens
Skillを実行する
profile-photo-processor がインストールしたskillなのでそちらを実行します。
(最近のアップデートで、skillも直接 / で呼び出すことが可能となっています)
> /profile-photo-processor
以降はClaude Codeと対話しながら進めていきます。
⏺ Profile Photo Processor
プロフィール写真を標準化するスキルを実行します。
まず、Docker環境を確認させてください。
⏺ Bash(docker --version)
⎿ Docker version 28.1.1-rd, build 4d7f01e
⏺ Bash(docker ps 2>&1)
⎿ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b7e1d41736f6 8f80de43fbfe "/entrypoint.sh --gl…" 19 hours ago Up 19 hours
k8s_traefik_traefik-c98fdf6fb-542s4_kube-system_c002d80d-4d8e-4b0a-b6
b4-c1e18c7aaf72_14
… +20 lines (ctrl+o to expand)
⏺ Docker環境が正常に動作しています(Rancher Desktop使用中)。
処理を開始する前に、以下を教えてください:
1. 入力ファイル/フォルダのパス - 処理したいプロフィール写真のパス
2. 出力先のパス - 処理後の画像を保存する場所
これらの情報をお知らせください。
❯ カレントパスが入力フォルダのパスです
⏺ 2枚の画像ファイルが見つかりました。出力先を確認させてください。
─────────────────────────────────────────
☐ 出力先
出力先のフォルダをどこにしますか?
❯ 1. 同じフォルダ内に output/ を作成
~/repo/myapp/sample-photo-profile/output/
2. 同じフォルダに上書き
元のファイルを処理後の画像で置き換えます
3. Type something.
⏺ User answered Claude's questions:
⎿ · 出力先のフォルダをどこにしますか? → 同じフォルダ内に output/ を作成
⏺ 以下の内容でプロフィール写真を処理します:
┌──────────┬───────────────────────────────────────────────────────────────┐
│ 項目 │ 内容 │
├──────────┼───────────────────────────────────────────────────────────────┤
│ 入力 │ ~/repo/myapp/sample-photo-profile/ │
├──────────┼───────────────────────────────────────────────────────────────┤
│ 出力 │ ~/repo/myapp/sample-photo-profile/output/ │
├──────────┼───────────────────────────────────────────────────────────────┤
│ 処理対象 │ 2枚(origin_sample_01.jpg, origin_sample_02.jpg) │
└──────────┴───────────────────────────────────────────────────────────────┘
処理内容:
- 背景を #e1e1e1 に置換
- 顔の位置・サイズを標準化
- 出力サイズ: 2160 x 3840 px
実行してよろしいですか?
❯ はい、お願いします。
⏺ 処理を開始します。
⏺ Bash(mkdir -p ~/repo/myapp/sample-photo-profile/output)
⎿ (No content)
⏺ Bash(cd ~/.claude/plugins/cache/profile-photo-skills/profile-photo-processor/c47b58ca02c1/profile-photo-processor && docker build -t profile-phot…) timeout: 5m 0s
⎿ #0 building with "rancher-desktop" instance using docker driver
#1 [internal] load build definition from Dockerfile
… +41 lines (ctrl+o to expand)
⎿ Shell cwd was reset to ~/repo/myapp/sample-photo-profile
⏺ Dockerイメージのビルドが完了しました。画像処理を実行します。
⏺ Bash(docker run --rm \ timeout: 5m 0s
-v "~/repo/myapp/sample-photo-profile:/input:ro" \…)
⎿ 背景除去モデルを初期化中...
初期化完了
… +9 lines (ctrl+o to expand)
⏺ 処理が完了しました。結果を確認します。
⏺ Bash(ls -la ~/repo/myapp/sample-photo-profile/output/)
⎿ total 3536
drwxr-xr-x@ 4 nakamura.shogo staff 128 Jan 11 17:35 .
drwxr-xr-x 6 nakamura.shogo staff 192 Jan 11 17:35 ..
… +2 lines (ctrl+o to expand)
⏺ 処理が完了しました。
結果
┌────────────────────────────────┬────────┐
│ ファイル │ サイズ │
├────────────────────────────────┼────────┤
│ origin_sample_01_processed.jpg │ 879 KB │
├────────────────────────────────┼────────┤
│ origin_sample_02_processed.jpg │ 929 KB │
└────────────────────────────────┴────────┘
出力先: ~/repo/myapp/sample-photo-profile/output/
両方の画像で顔が正常に検出され、以下の処理が適用されました:
- 背景を #e1e1e1(グレー)に置換
- 顔の位置・サイズを標準化
- 出力サイズ: 2160 x 3840 px
出力フォルダの画像をご確認ください。
処理結果が以下のように保存されているはずです。
sample-use-profile-processor
├── origin_sample_01.jpg
├── origin_sample_02.jpg
└── output
├── origin_sample_01_processed.jpg
└── origin_sample_02_processed.jpg
まとめ
いかがでしたでしょうか。今回作成したMarketplaceのpluginは実際にpublicに公開されているので、どなたでもお試しいただけます。
ただし注意点として、Pluginは任意のコード実行を含みうるため、信頼できる配布元のみを追加・インストールしてください。
本ブログがSkillなどを配布する際の参考になれば幸いです。







