はじめに
弊社ではSREチームがGitHub Actionsの使用ルールやワークフローのコード規約を定めています。
Notionのページにまとめていて、それを社内に発信しているのですが、
ルールを呼びかけるだけだとなかなか浸透しづらいのかなと。
何か仕組み化できないかと考えたときに、Claude CodeのPlugin機能が使えるかもと思い、
Marketplaceを作成してPluginとして社内公開できるようにしました!
Claude Code Pluginとは
- Claude Code の機能を拡張するためのパッケージ
- Skills・Agents・Hooks・MCP Servers・LSP Servers といったコンポーネントを一つのプラグインとしてまとめて配布可能
- ユーザは必要なPluginをインストールするだけでそこに含まれるSkillsやAgentsなどを使える
- インストール先
- User: 自分の全プロジェクトで有効(デフォルト)
- Project: リポジトリに含まれ、チーム全員に適用
- Local: 自分だけ・このプロジェクトだけ(gitignore対象)
- ユースケース例
- 社内で機能を共有したい
- 複数のリポジトリをまたいで同じスキル/エージェントが必要
- 一元管理しておきたい
- 社内で機能を共有したい
- 例えば
- 社内規約に沿ってGitHub Actions のワークフローを作成する Skill として定義した Pluginを公開
- 開発者が Plugin をインストールするだけで、ワークフロー関連のタスク時に Claude が自動的に規約に沿った動作をする
サードパーティのプラグインもインストールできてしまいますが、
悪意のあるものもあるので使用する際には十分にご注意ください。
Claude Code Plugin Marketplaceとは
- Plugin を公開・検索・インストールするためのカタログ
- Anthropic公式のMarketplace(claude-plugins-official)はデフォルトで登録済み
- GitHub リポジトリとしてホストでき、社内向けのプライベート Marketplace も登録可能
- 開発者は Marketplace を登録して、そこから必要な Plugin をインストールするだけで使い始められる
社内向けMarketplaceにPluginを公開
前提
- Gitリポジトリがあること
- Pluginを使いたい人に最低でもRead権限があればOK
フォルダ構成例
- 必須ファイルは
marketplace.jsonとplugin.jsonの2つだけ - 任意のコンポーネント(commands, skills, agents, hooks等)は必要なものだけ追加すればOK
my-marketplace/
├── .claude-plugin/
│ └── marketplace.json # 必須: Marketplaceカタログ
├── plugins/
│ └── gha-standards/ # フォルダ名=Plugin名
│ ├── .claude-plugin/
│ │ └── plugin.json # 必須: Pluginマニフェスト
│ ├── skills/ # 任意: スキル定義
│ │ └── gha-check/
│ │ └── SKILL.md
│ ├── agents/ # 任意: サブエージェント
│ │ └── gha-reviewer.md
│ ├── hooks/ # 任意: イベントフック
│ │ └── hooks.json
│ ├── .mcp.json # 任意: MCP Server
│ └── .lsp.json # 任意: LSP Server
└── README.md
Pluginを作成
pluginsディレクトリ配下にPlugin名のフォルダを作成したら、その中に必要なAgentやSkillを追加します。
また、.claude-plugin/plugin.json を作成してPluginを定義しておきます。
{
"name": "gha-standards",
"version": "0.1.0",
"description": "GitHub Actions の規約に沿った開発をサポートするプラグイン",
"author": {
"name": "sre"
},
"keywords": ["github-actions", "ci", "standards"]
}
Marketplaceを定義
.claude-plugin/marketplace.json にMarketplaceを定義して、作ったPluginを登録します。
{
"name": "claude-marketplace",
"owner": {
"name": "sre"
},
"metadata": {
"description": "社内向け Claude Code プラグインマーケットプレイス",
"version": "0.1.0",
"pluginRoot": "./plugins"
},
"plugins": [
{
"name": "gha-standards",
"source": "./plugins/gha-standards",
"description": "GitHub Actions の規約に沿った開発をサポートするプラグイン",
"version": "0.1.0",
"keywords": ["github-actions", "ci", "standards"],
"category": "standards"
}
]
}
テスト
まずは、構文エラーがないかvalidationします。
# CLIから実行する場合
claude plugin validate ./plugins/gha-standards/
# Claude Code内から実行する場合
/plugin validate ./plugins/gha-standards/
✔ Validation passed が表示されたら、実際に使えるかテストしてみます。
# Marketplaceの追加
/plugin marketplace add ./
# Pluginをインストール
/plugin install gha-standards@sre-claude-code-plugin
Pluginを使ってみたいので、何かGitHub Actionsのワークフローを作ってみます。
(例): claude plugin validateするワークフローを作成して。
Skillが自動で呼ばれれば成功です。
● Skill(gha-standards:gha-check)
⎿ Successfully loaded skill
GitHubにpush
これで一通りファイルが揃ったのでGitHubにpushします。
社内向けMarketplaceからPluginをインストール
公開したPluginを使えるようにしてみましょう。
Marketplaceを追加
まずは、先ほどのMarketplaceをローカルのClaude Codeに追加します。
/plugin marketplace add <owner>/<repo>
# 特定のブランチやタグを指定したい場合は
/plugin marketplace add <owner>/<repo>#<branch or tag>
Pluginをインストール
作ったPluginをインストールします。
/plugin install gha-standards@<marketplace>
Claude Codeを再起動すると、PluginにあるSkillが使えるようになります。
# /<skill> という形式で呼べる
/gha-check
Tips
CIでPluginのvalidationを自動化する
PRでPlugin関連のファイルが変更されたときに、自動で claude plugin validate を実行するワークフローを作っておくと安心です。
Pluginの構文エラーがmainにマージされる前に検知できます。
extraKnownMarketplacesでチームに自動配布する
リポジトリの .claude/settings.json に extraKnownMarketplaces を設定しておくと、チームメンバーがそのリポジトリをクローンしてClaude Codeを起動したとき、Marketplaceが自動的に認識されます。
{
"extraKnownMarketplaces": {
"my-marketplace": {
"source": {
"source": "github",
"repo": "<owner>/<repo>"
}
}
},
"enabledPlugins": {
"gha-standards@my-marketplace": true
}
}
enabledPlugins も併せて設定しておけば、メンバーは特に何もしなくてもPluginが有効な状態で使い始められます。
Marketplace追加 → Plugin installの手順を各メンバーに案内する必要がなくなるので、展開がかなり楽になります。
Pluginのenable/disable
Pluginをアンインストールせずに一時的に無効化できます。
# 無効にする
/plugin disable gha-standards
# 有効に戻す
/plugin enable gha-standards
「試しに入れたけど一旦オフにしたい」「特定のプロジェクトだけ無効にしたい」ときに便利です。
--scope オプションで user / project / local を指定すれば、スコープ単位で制御できます。
Marketplace・Pluginを更新する
Marketplace側でPluginを更新したら、利用者は以下のコマンドで最新版を取得できます。
# Marketplaceのカタログ情報を更新
/plugin marketplace update
# 特定のPluginを更新
/plugin update gha-standards
Marketplaceリポジトリにpushするだけで配布側の作業は完了です。
利用者が update を実行すれば最新のSkillやAgentが反映されます。
さいごに
Pluginで「ルールの浸透」問題を解決する
Pluginをインストールすれば、
SkillとしてClaude Codeの動作そのものに組み込めるので、
開発者が意識しなくてもよくうまく仕組み化できると思います。
各リポジトリの .claude/ にSkillやルールファイルを個別に置いて回るのは大変ですが、
Marketplaceに集約してPluginとして配布すれば、一箇所の更新でチーム全体に反映できるのでとても便利ですね!
運用面
- インストール元の制限: 特にサードパーティ製は注意が必要です
- CI: validationのワークフローをMarketplaceリポジトリに導入し、PRレビュー時に構文エラーを自動チェック
- レビュー: Skill や Agent の内容が規約と合っているか、PRベースでレビュー