jpskill.com
🛠️ 開発・MCP コミュニティ

plugin-builder

Claudeのコードを使って、プラグインの作成からパッケージング、検証、配布までを自動化し、プラグイン開発やスキル構築、マーケットプレイスの準備などを効率的に進めるSkill。

📜 元の英語説明(参考)

Automate Claude Code plugin creation, packaging, validation, and distribution. Use when creating plugins, packaging skills, generating manifests, validating plugin structure, setting up marketplaces, or distributing skill collections.

🇯🇵 日本人クリエイター向け解説

一言でいうと

Claudeのコードを使って、プラグインの作成からパッケージング、検証、配布までを自動化し、プラグイン開発やスキル構築、マーケットプレイスの準備などを効率的に進めるSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o plugin-builder.zip https://jpskill.com/download/9464.zip && unzip -o plugin-builder.zip && rm plugin-builder.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9464.zip -OutFile "$d\plugin-builder.zip"; Expand-Archive "$d\plugin-builder.zip" -DestinationPath $d -Force; ri "$d\plugin-builder.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して plugin-builder.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → plugin-builder フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Plugin Builder

概要

plugin-builder は、Claude Code プラグインの作成と配布プロセス全体を自動化します。有効なプラグイン構造、マニフェストの生成、コンプライアンスの検証、既存のスキルのパッケージ化、およびマーケットプレイス配布用のプラグインの準備を行います。

目的: スキルを、数時間ではなく数分で配布可能なプラグインに変換する

主な機能:

  • プラグインディレクトリ構造の初期化
  • 有効な plugin.json および marketplace.json マニフェストの生成
  • プラグイン構造と 2025 スキーマコンプライアンスの検証
  • 既存のスキルをプラグイン形式にパッケージ化
  • 反復的なプラグインタスクの自動化

パターン: タスクベース (独立した操作、柔軟な順序)

時間短縮: 2〜4 時間の手作業 → 15〜30 分の自動化

Claude Code プラグインとは?

プラグインは、カスタム機能で Claude Code を拡張する配布可能なパッケージです。次のものを含めることができます。

  • Skills: エージェントの能力 (32 個あります!)
  • Commands: カスタムスラッシュコマンド
  • Agents: 特殊なサブエージェント
  • Hooks: イベントハンドラー
  • MCP Servers: 外部ツールとの統合

配布: プラグインは、Git ベースのマーケットプレイスを介して共有されます。ユーザーは次のコマンドでインストールします。

/plugin marketplace add owner/repo
/plugin install plugin-name@marketplace-name

構造:

plugin-name/
├── .claude-plugin/
│   ├── plugin.json           # 必須: プラグインメタデータ
│   └── marketplace.json      # オプション: 配布用
├── skills/                    # スキルはここに配置
├── commands/                  # カスタムコマンド (オプション)
├── agents/                    # サブエージェント (オプション)
└── README.md                  # 推奨: ドキュメント

いつ使用するか

plugin-builder は、次のことを行う必要がある場合に使用します。

プラグインの作成:

  • 配布用にスキルをパッケージ化する
  • インストール可能なスキルコレクションを作成する
  • スキルをチームと共有する
  • コミュニティマーケットプレイスに公開する

検証と品質:

  • 公開前にプラグイン構造を検証する
  • 2025 スキーマコンプライアンスを保証する
  • マニフェストの正確性を確認する
  • コンポーネントのフォーマットを確認する

配布設定:

  • チーム/組織のマーケットプレイスを作成する
  • GitHub 配布を設定する
  • 複数プラグインカタログを構成する

一括操作:

  • 複数のスキルをプラグインに変換する
  • スキルエコシステム全体をパッケージ化する
  • 既存のスキルをプラグイン形式に移行する

前提条件

plugin-builder を使用する前に:

知識:

  • Claude Code スキルの基本的な理解
  • ターミナル/コマンドラインの知識
  • 基本的な JSON の概念 (スクリプトが自動生成します)

ツール:

  • Python 3.8 以降がインストールされている
  • パッケージ化するスキル/コマンド/エージェント (パッケージ化操作の場合)
  • Git がインストールされている (マーケットプレイス配布の場合)

オプション:

  • GitHub アカウント (パブリック配布の場合)
  • テキストエディタ (手動でマニフェストを編集する場合)

操作

操作 1: プラグイン構造の初期化

最小限の構成で、完全なプラグインディレクトリ構造を作成します。

目的: 正しい構造と最小限のボイラープレートで、新しいプラグインを迅速にスキャフォールドする

いつ使用するか:

  • 新しいプラグインを最初から作成する場合
  • 適切なディレクトリレイアウトが必要な場合
  • 生成された README テンプレートが必要な場合

前提条件:

  • プラグイン名が決定している (kebab-case を推奨)
  • 基本的なメタデータがわかっている (説明、作成者)

入力:

  • プラグイン名
  • オプション: 説明、作成者情報

プロセス:

方法 1: インタラクティブスクリプト (推奨)

cd /path/to/your/workspace
python /path/to/plugin-builder/scripts/init_plugin.py

プロンプトに従ってください:

  1. プラグイン名を入力します (この名前でディレクトリが作成されます)
  2. 説明を入力します (簡潔に 1〜2 文)
  3. 作成者名を入力します
  4. 作成者のメールアドレスを入力します (オプション)
  5. 含めるコンポーネントを選択します (skills/commands/agents)

方法 2: コマンドライン

python /path/to/plugin-builder/scripts/init_plugin.py my-plugin \
  --description "My awesome plugin" \
  --author "Your Name" \
  --email "you@example.com" \
  --components skills,commands

方法 3: 手動作成

mkdir -p my-plugin/.claude-plugin
mkdir -p my-plugin/skills
mkdir -p my-plugin/commands  # optional
mkdir -p my-plugin/agents    # optional

# 最小限の plugin.json を作成
cat > my-plugin/.claude-plugin/plugin.json <<'EOF'
{
  "name": "my-plugin"
}
EOF

# README を作成
cat > my-plugin/README.md <<'EOF'
# My Plugin

このプラグインの機能の説明。

## Installation

\`\`\`bash
/plugin marketplace add your-username/your-repo
/plugin install my-plugin
\`\`\`
EOF

出力:

my-plugin/
├── .claude-plugin/
│   └── plugin.json       # 最小限のマニフェスト (名前のみ)
├── skills/               # 選択した場合
├── commands/             # 選択した場合
├── agents/               # 選択した場合
└── README.md             # インストール手順を含むテンプレート

検証:

  • [ ] ディレクトリが正しい名前で作成されている
  • [ ] .claude-plugin/plugin.json が存在し、有効な JSON である
  • [ ] README.md が存在する
  • [ ] 選択したコンポーネントディレクトリが作成されている

:

# インタラクティブモード
$ python scripts/init_plugin.py

Enter plugin name (kebab-case): team-toolkit
Enter description: Development tools for our team
Enter author name: DevOps Team
Enter author email (optional): devops@company.com
Include skills? (y/n): y
Include commands? (y/n): y
Include agents? (y/n): n

Creating plugin structure...
✓ Created team-toolkit/
✓ Created .claude-plugin/plugin.json
✓ Created README.md
✓ Created skills/
✓ Created commands/

Next steps:
1. Add your skills to team-toolkit/skills/
2. Add your commands to team-toolkit/commands/
3. Run: python scripts/generate_manifest.py team-toolkit/
4. Run: python scripts/validate_plugin.py team-toolkit/

参照: 生成されたマニフェスト構造については、templates/plugin.json.minimal を参照してください。


操作 2: plugin.json の生成

完全なメタデータを含むプラグインマニフェストファイルを作成または更新します。

目的: 推奨されるすべてのフィールドを含む、有効なスキーマ準拠の plugin.json を生成する

いつ使用するか:

  • プラグイン構造を初期化した後
  • メタデータを追加/更新する必要がある場合
  • Want

(原文がここで切り詰められています)

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Plugin Builder

Overview

plugin-builder automates the entire Claude Code plugin creation and distribution process. It generates valid plugin structures, manifests, validates compliance, packages existing skills, and prepares plugins for marketplace distribution.

Purpose: Transform skills into distributable plugins in minutes instead of hours

Key Capabilities:

  • Initialize plugin directory structure
  • Generate valid plugin.json and marketplace.json manifests
  • Validate plugin structure and 2025 schema compliance
  • Package existing skills into plugin format
  • Automate repetitive plugin tasks

Pattern: Task-based (independent operations, flexible order)

Time Savings: 2-4 hours manual work → 15-30 minutes automated

What Are Claude Code Plugins?

Plugins are distributable packages that extend Claude Code with custom functionality. They can contain:

  • Skills: Agent capabilities (what we have 32 of!)
  • Commands: Custom slash commands
  • Agents: Specialized subagents
  • Hooks: Event handlers
  • MCP Servers: External tool integrations

Distribution: Plugins are shared via Git-based marketplaces. Users install with:

/plugin marketplace add owner/repo
/plugin install plugin-name@marketplace-name

Structure:

plugin-name/
├── .claude-plugin/
│   ├── plugin.json           # Required: Plugin metadata
│   └── marketplace.json      # Optional: For distribution
├── skills/                    # Your skills go here
├── commands/                  # Custom commands (optional)
├── agents/                    # Subagents (optional)
└── README.md                  # Recommended: Documentation

When to Use

Use plugin-builder when you need to:

Creating Plugins:

  • Package your skills for distribution
  • Create installable skill collections
  • Share skills with your team
  • Publish to community marketplaces

Validation & Quality:

  • Validate plugin structure before publishing
  • Ensure 2025 schema compliance
  • Check manifest correctness
  • Verify component formatting

Distribution Setup:

  • Create team/organization marketplaces
  • Set up GitHub distribution
  • Configure multi-plugin catalogs

Bulk Operations:

  • Convert multiple skills to plugins
  • Package entire skill ecosystems
  • Migrate existing skills to plugin format

Prerequisites

Before using plugin-builder:

Knowledge:

  • Basic understanding of Claude Code skills
  • Familiarity with terminal/command line
  • Basic JSON concepts (scripts generate it for you)

Tools:

  • Python 3.8+ installed
  • Skills/commands/agents to package (for packaging operations)
  • Git installed (for marketplace distribution)

Optional:

  • GitHub account (for public distribution)
  • Text editor (for manual manifest edits)

Operations

Operation 1: Initialize Plugin Structure

Create a complete plugin directory structure with minimal configuration.

Purpose: Quickly scaffold a new plugin with correct structure and minimal boilerplate

When to Use:

  • Starting a new plugin from scratch
  • Need proper directory layout
  • Want generated README template

Prerequisites:

  • Plugin name decided (kebab-case recommended)
  • Basic metadata known (description, author)

Inputs:

  • Plugin name
  • Optional: Description, author information

Process:

Method 1: Interactive Script (Recommended)

cd /path/to/your/workspace
python /path/to/plugin-builder/scripts/init_plugin.py

Follow prompts:

  1. Enter plugin name (will create directory with this name)
  2. Enter description (brief, 1-2 sentences)
  3. Enter author name
  4. Enter author email (optional)
  5. Choose components to include (skills/commands/agents)

Method 2: Command Line

python /path/to/plugin-builder/scripts/init_plugin.py my-plugin \
  --description "My awesome plugin" \
  --author "Your Name" \
  --email "you@example.com" \
  --components skills,commands

Method 3: Manual Creation

mkdir -p my-plugin/.claude-plugin
mkdir -p my-plugin/skills
mkdir -p my-plugin/commands  # optional
mkdir -p my-plugin/agents    # optional

# Create minimal plugin.json
cat > my-plugin/.claude-plugin/plugin.json <<'EOF'
{
  "name": "my-plugin"
}
EOF

# Create README
cat > my-plugin/README.md <<'EOF'
# My Plugin

Description of what this plugin does.

## Installation

\`\`\`bash
/plugin marketplace add your-username/your-repo
/plugin install my-plugin
\`\`\`
EOF

Outputs:

my-plugin/
├── .claude-plugin/
│   └── plugin.json       # Minimal manifest (name only)
├── skills/               # If selected
├── commands/             # If selected
├── agents/               # If selected
└── README.md             # Template with installation instructions

Validation:

  • [ ] Directory created with correct name
  • [ ] .claude-plugin/plugin.json exists with valid JSON
  • [ ] README.md exists
  • [ ] Selected component directories created

Example:

# Interactive mode
$ python scripts/init_plugin.py

Enter plugin name (kebab-case): team-toolkit
Enter description: Development tools for our team
Enter author name: DevOps Team
Enter author email (optional): devops@company.com
Include skills? (y/n): y
Include commands? (y/n): y
Include agents? (y/n): n

Creating plugin structure...
✓ Created team-toolkit/
✓ Created .claude-plugin/plugin.json
✓ Created README.md
✓ Created skills/
✓ Created commands/

Next steps:
1. Add your skills to team-toolkit/skills/
2. Add your commands to team-toolkit/commands/
3. Run: python scripts/generate_manifest.py team-toolkit/
4. Run: python scripts/validate_plugin.py team-toolkit/

See Also: templates/plugin.json.minimal for the generated manifest structure


Operation 2: Generate plugin.json

Create or update the plugin manifest file with complete metadata.

Purpose: Generate a valid, schema-compliant plugin.json with all recommended fields

When to Use:

  • After initializing plugin structure
  • Need to add/update metadata
  • Want all optional fields included
  • Upgrading from minimal to complete manifest

Prerequisites:

  • Plugin directory exists
  • Plugin name decided
  • Metadata information available

Inputs:

  • Plugin name (required)
  • Version (recommended, default: 1.0.0)
  • Description (recommended)
  • Author information (optional but recommended)
  • Homepage URL (optional)
  • Repository URL (optional)
  • License (optional, default: MIT)
  • Keywords (optional, for discoverability)
  • Component paths (optional, uses defaults)

Process:

Method 1: Interactive Script (Recommended)

python scripts/generate_manifest.py /path/to/my-plugin

Follow prompts for each field. Press Enter to accept defaults or skip optional fields.

Method 2: Update Existing Manifest

python scripts/generate_manifest.py /path/to/my-plugin --update

Loads existing manifest, prompts only for changes/additions.

Method 3: Use Template

python scripts/generate_manifest.py /path/to/my-plugin --template standard

Templates available:

  • minimal: Name only (valid but basic)
  • standard: Name, version, description, author (recommended)
  • complete: All fields with examples

Method 4: Manual Creation

Copy from templates/plugin.json.standard and edit:

{
  "name": "my-plugin",
  "version": "1.0.0",
  "description": "Brief description of plugin functionality",
  "author": {
    "name": "Your Name",
    "email": "you@example.com"
  },
  "keywords": ["keyword1", "keyword2"],
  "license": "MIT"
}

Save to my-plugin/.claude-plugin/plugin.json.

Outputs:

  • Valid plugin.json in .claude-plugin/ directory
  • JSON formatted and validated
  • All required fields present
  • Optional fields included as specified

Validation:

  • [ ] JSON syntax is valid
  • [ ] Name field present (required)
  • [ ] Name is kebab-case
  • [ ] Version follows semver if present
  • [ ] No absolute paths
  • [ ] File saved in correct location

Example:

$ python scripts/generate_manifest.py team-toolkit/

Generating plugin.json for team-toolkit
======================================

Name: team-toolkit (from directory)
Version [1.0.0]: 2.1.0
Description: Development and deployment tools for engineering team
Author name: DevOps Team
Author email: devops@company.com
Author URL (optional): https://company.com/devops
Homepage (optional): https://github.com/company/team-toolkit
Repository (optional): https://github.com/company/team-toolkit
License [MIT]: Apache-2.0
Keywords (comma-separated): deployment,ci-cd,automation,team

Component paths (optional, press Enter for defaults):
Skills path [./skills/]:
Commands path [./commands/]:
Agents path:

Generated plugin.json:
{
  "name": "team-toolkit",
  "version": "2.1.0",
  "description": "Development and deployment tools for engineering team",
  "author": {
    "name": "DevOps Team",
    "email": "devops@company.com",
    "url": "https://company.com/devops"
  },
  "homepage": "https://github.com/company/team-toolkit",
  "repository": "https://github.com/company/team-toolkit",
  "license": "Apache-2.0",
  "keywords": ["deployment", "ci-cd", "automation", "team"]
}

✓ Saved to team-toolkit/.claude-plugin/plugin.json
✓ Validation: All checks passed

Next steps:
1. Review generated manifest
2. Package your skills: python scripts/package_skills.py
3. Validate: python scripts/validate_plugin.py team-toolkit/

Tips:

  • Use semantic versioning (MAJOR.MINOR.PATCH)
  • Include keywords for discoverability
  • Add repository URL for open source plugins
  • Keep description under 200 characters
  • Use kebab-case for plugin name

See Also:


Operation 3: Generate marketplace.json

Create a marketplace catalog file for distributing one or more plugins.

Purpose: Set up a marketplace for team/community distribution of plugins

When to Use:

  • Distributing plugins via GitHub repository
  • Creating team marketplace
  • Publishing multiple plugins
  • Setting up plugin catalog

Prerequisites:

  • One or more plugins ready for distribution
  • Marketplace name decided
  • Owner information available

Inputs:

  • Marketplace name (required)
  • Owner name and email (required)
  • Plugin entries (required):
    • Plugin name
    • Source (path, GitHub repo, or git URL)
    • Description
    • Category (optional)
    • Version (optional)

Process:

Method 1: Interactive Script (Recommended)

python scripts/generate_marketplace.py

Follow prompts:

  1. Marketplace name (kebab-case)
  2. Marketplace description
  3. Owner name and email
  4. Plugin source directory (optional, for auto-discovery)
  5. For each plugin:
    • Name
    • Source (local path, GitHub, git URL)
    • Description
    • Category
    • Version

Method 2: Auto-Discover Plugins

python scripts/generate_marketplace.py --scan plugins/

Automatically finds plugins in directory and prompts for metadata.

Method 3: Manual Creation

Copy from templates/marketplace.json.minimal and edit:

{
  "name": "my-marketplace",
  "description": "Curated plugins for my team",
  "owner": {
    "name": "Team Name",
    "email": "team@company.com"
  },
  "plugins": [
    {
      "name": "plugin-one",
      "description": "First plugin",
      "source": "./plugins/plugin-one",
      "category": "development"
    }
  ]
}

Save to repository root as .claude-plugin/marketplace.json.

Outputs:

  • Valid marketplace.json file
  • All plugins listed with metadata
  • Ready for Git repository hosting

Validation:

  • [ ] JSON syntax valid
  • [ ] Required fields present (name, owner, plugins)
  • [ ] All plugin sources are valid
  • [ ] Plugin names are kebab-case
  • [ ] Categories are standard (development, productivity, security, learning)

Example:

$ python scripts/generate_marketplace.py --scan company-plugins/

Generating marketplace.json
===========================

Scanning company-plugins/ for plugins...
Found 3 plugins:
  - deployment-tools
  - security-scanner
  - test-automation

Marketplace name: company-approved-plugins
Marketplace description: Approved plugins for Company use
Owner name: Engineering Team
Owner email: engineering@company.com

Plugin 1: deployment-tools
  Description: Automated deployment and rollback tools
  Category [development]:
  Version [1.0.0]: 2.1.0
  Source [./plugins/deployment-tools]:

Plugin 2: security-scanner
  Description: Security analysis and vulnerability detection
  Category [security]:
  Version [1.0.0]: 1.5.0
  Source [./plugins/security-scanner]:

Plugin 3: test-automation
  Description: Automated testing framework and utilities
  Category [development]:
  Version [1.0.0]: 3.0.0
  Source [./plugins/test-automation]:

Generated marketplace.json (3 plugins)
✓ Saved to .claude-plugin/marketplace.json
✓ Validation: All checks passed

Next steps:
1. Create GitHub repository
2. Push marketplace.json to repo root
3. Users can add: /plugin marketplace add company/company-plugins
4. Users can install: /plugin install deployment-tools@company-approved-plugins

Distribution Setup:

After generating marketplace.json:

  1. Create GitHub Repository:

    cd /path/to/marketplace
    git init
    git add .
    git commit -m "Initial marketplace setup"
    git remote add origin git@github.com:username/my-marketplace.git
    git push -u origin main
  2. Users Add Marketplace:

    /plugin marketplace add username/my-marketplace
  3. Users Install Plugins:

    /plugin install plugin-name@my-marketplace

See Also:


Operation 4: Validate Plugin

Comprehensive validation of plugin structure, manifests, and component compliance.

Purpose: Ensure plugin is correctly structured and ready for distribution

When to Use:

  • Before publishing to marketplace
  • After making changes to plugin
  • Before creating GitHub release
  • Troubleshooting plugin issues
  • Ensuring 2025 schema compliance

Prerequisites:

  • Plugin directory exists
  • plugin.json file exists

Inputs:

  • Plugin directory path

Process:

Method 1: Script Validation (Comprehensive)

python scripts/validate_plugin.py /path/to/my-plugin

Method 2: Verbose Output

python scripts/validate_plugin.py /path/to/my-plugin --verbose

Shows detailed checks and reasoning.

Method 3: Specific Validation Type

# Structure only
python scripts/validate_plugin.py /path/to/my-plugin --check structure

# Manifests only
python scripts/validate_plugin.py /path/to/my-plugin --check manifests

# Components only (skills, commands, agents)
python scripts/validate_plugin.py /path/to/my-plugin --check components

# 2025 schema compliance
python scripts/validate_plugin.py /path/to/my-plugin --check 2025

Validation Categories:

1. Structure Validation:

  • [x] .claude-plugin/ directory exists
  • [x] plugin.json exists in .claude-plugin/
  • [x] Component directories at plugin root (NOT in .claude-plugin/)
  • [x] Directory names are kebab-case
  • [x] README.md exists (recommended)

2. Manifest Validation:

  • [x] plugin.json is valid JSON
  • [x] Required field name present
  • [x] Name is kebab-case (no spaces, underscores)
  • [x] Version follows semver if present
  • [x] No absolute paths (all paths relative with ./)
  • [x] Referenced files in manifest actually exist

3. Component Validation:

  • [x] Skills have SKILL.md files
  • [x] Skills have valid YAML frontmatter
  • [x] Skills have allowed-tools field (2025 schema)
  • [x] Commands have valid markdown with frontmatter
  • [x] Agents have proper markdown structure
  • [x] No placeholder TODO comments in production files

4. 2025 Schema Compliance:

  • [x] All skills have allowed-tools field in frontmatter
  • [x] allowed-tools lists valid Claude Code tools
  • [x] Frontmatter format is correct

Outputs:

Success Example:

Validating plugin: team-toolkit
================================

✓ Structure validation passed (5/5 checks)
  ✓ .claude-plugin/ directory exists
  ✓ plugin.json exists
  ✓ Component directories at root
  ✓ Directory names valid
  ✓ README.md present

✓ Manifest validation passed (6/6 checks)
  ✓ Valid JSON syntax
  ✓ Required fields present
  ✓ Name format valid
  ✓ Version format valid
  ✓ Paths are relative
  ✓ Referenced files exist

✓ Component validation passed (8 skills, 3 commands)
  ✓ All skills have SKILL.md
  ✓ All skills have valid frontmatter
  ✓ All skills have allowed-tools field
  ✓ All commands valid

✓ 2025 schema compliance passed

================
RESULT: PASSED
================
0 errors, 0 warnings

✓ Plugin is ready for distribution!

Error Example:

Validating plugin: my-plugin
============================

✗ Structure validation failed (4/5 checks)
  ✓ .claude-plugin/ directory exists
  ✓ plugin.json exists
  ✗ Component directories at root
    ERROR: skills/ directory found in .claude-plugin/ (should be at plugin root)
  ✓ Directory names valid
  ✓ README.md present

✗ Manifest validation failed (5/6 checks)
  ✓ Valid JSON syntax
  ✓ Required fields present
  ✗ Paths are relative
    ERROR: "commands" field has absolute path: /home/user/commands
    FIX: Change to relative path: ./commands
  ✓ Referenced files exist

✗ Component validation failed (2/3 skills)
  ✓ All skills have SKILL.md
  ✗ Skills missing allowed-tools field
    ERROR: skills/my-skill/SKILL.md missing allowed-tools in frontmatter
    FIX: Add "allowed-tools: Read, Write, Bash" to YAML frontmatter

================
RESULT: FAILED
================
3 errors, 0 warnings

Fix errors above before distributing plugin.

Exit Codes:

  • 0: All validation passed, plugin ready
  • 1: Errors found, plugin not ready
  • 2: Script execution error

Common Errors and Fixes:

Error: Component directory in .claude-plugin/

ERROR: skills/ found in .claude-plugin/ (should be at plugin root)
FIX: Move skills/ to plugin root directory

Error: Absolute paths in manifest

ERROR: "skills" field has absolute path: /Users/me/skills
FIX: Change to relative path: ./skills

Error: Missing allowed-tools field

ERROR: skill missing allowed-tools in frontmatter (2025 schema)
FIX: Add to SKILL.md frontmatter:
---
name: my-skill
description: ...
allowed-tools: Read, Write, Glob, Bash
---

Error: Invalid JSON syntax

ERROR: plugin.json has invalid JSON (trailing comma)
FIX: Remove trailing comma in JSON file

Error: Non-kebab-case name

ERROR: Plugin name "my_plugin" should be kebab-case
FIX: Change name to "my-plugin"

Validation Checklist:

Before publishing, ensure all pass:

  • [ ] Structure validation: 0 errors
  • [ ] Manifest validation: 0 errors
  • [ ] Component validation: 0 errors
  • [ ] 2025 compliance: All skills have allowed-tools
  • [ ] README exists and is complete
  • [ ] Test installation locally

See Also:


Operation 5: Package Skills

Copy existing skills into plugin structure and update manifest.

Purpose: Convert standalone skills into plugin-packaged skills ready for distribution

When to Use:

  • Converting .claude/skills/ to plugin format
  • Packaging skill collections
  • Migrating existing skills to plugins
  • Creating skill-focused plugins

Prerequisites:

  • Plugin structure initialized
  • Skills exist in source directory
  • Skills are 2025-compliant (or will be validated and flagged)

Inputs:

  • Source skills directory path
  • Target plugin path
  • Optional: Specific skills to package (default: all)
  • Optional: Validation mode (strict/warn)

Process:

Method 1: Package All Skills

python scripts/package_skills.py /path/to/skills /path/to/plugin

Copies all skills from source to plugin/skills/ directory.

Method 2: Package Specific Skills

python scripts/package_skills.py /path/to/skills /path/to/plugin \
  --skills skill1,skill2,skill3

Method 3: Package with Validation

python scripts/package_skills.py /path/to/skills /path/to/plugin --validate

Validates each skill for 2025 compliance before packaging.

Method 4: Dry Run (Preview)

python scripts/package_skills.py /path/to/skills /path/to/plugin --dry-run

Shows what would be packaged without actually copying.

What Happens:

  1. Scans Source Directory:

    • Finds all skill directories
    • Identifies skills with SKILL.md files
    • Lists skills to be packaged
  2. Validates Skills (if --validate):

    • Checks SKILL.md exists
    • Validates YAML frontmatter
    • Checks for allowed-tools field (2025 schema)
    • Reports warnings for missing fields
  3. Copies Skills:

    • Creates plugin/skills/ if doesn't exist
    • Copies each skill directory
    • Preserves structure (SKILL.md, references/, scripts/)
    • Copies all files (no modification)
  4. Updates Manifest:

    • Adds skills to plugin.json
    • Updates skills array (if field exists)
    • Preserves existing manifest fields
  5. Reports Results:

    • Number of skills packaged
    • Any warnings or issues
    • Next steps

Outputs:

plugin/
├── .claude-plugin/
│   └── plugin.json          # Updated with skills reference
├── skills/
│   ├── skill1/
│   │   ├── SKILL.md
│   │   ├── references/
│   │   └── scripts/
│   ├── skill2/
│   │   └── SKILL.md
│   └── skill3/
│       ├── SKILL.md
│       └── references/
└── README.md

Validation:

  • [ ] All skills copied successfully
  • [ ] Directory structure preserved
  • [ ] SKILL.md files exist in each skill
  • [ ] plugin.json updated (if applicable)
  • [ ] 2025 compliance checked

Example:

$ python scripts/package_skills.py .claude/skills skrillz-ecosystem --validate

Packaging skills into plugin: skrillz-ecosystem
==============================================

Scanning .claude/skills for skills...
Found 32 skills:
  ✓ analysis
  ✓ anthropic-expert
  ✓ auto-updater
  ... (29 more)

Validating skills (2025 schema compliance)...
  ✓ analysis: Valid (allowed-tools present)
  ✓ anthropic-expert: Valid (allowed-tools present)
  ⚠ legacy-skill: WARNING - Missing allowed-tools field
  ... (checking all 32)

Results: 31 valid, 1 warning

Packaging skills...
  ✓ Copied analysis (245 KB, 3 files)
  ✓ Copied anthropic-expert (1.2 MB, 12 files)
  ✓ Copied auto-updater (180 KB, 5 files)
  ... (29 more)

✓ 32 skills packaged successfully
✓ Total size: 15.8 MB
✓ Updated plugin.json

Warnings:
  ⚠ legacy-skill missing allowed-tools field (2025 compliance)
    Add to SKILL.md frontmatter: allowed-tools: Read, Write, Bash

Next steps:
1. Fix warnings (add allowed-tools to legacy-skill)
2. Review plugin/skills/ directory
3. Update README.md with skill list
4. Validate: python scripts/validate_plugin.py skrillz-ecosystem
5. Test: /plugin install skrillz-ecosystem (local test)

Handling 2025 Compliance:

If skills are missing allowed-tools field:

  1. Manual Fix: Add to SKILL.md frontmatter:

    ---
    name: my-skill
    description: Skill description
    allowed-tools: Read, Write, Edit, Glob, Bash
    ---
  2. Common Tool Sets:

  • Read-only analysis: Read, Grep, Glob
  • File editing: Read, Write, Edit
  • Automation: Read, Write, Bash
  • Research: Read, WebSearch, WebFetch
  • All tools: Read, Write, Edit, Glob, Grep, Bash, WebSearch, WebFetch
  1. Re-package after fixing:
    python scripts/package_skills.py .claude/skills plugin --validate

Tips:

  • Use --validate to catch issues early
  • Use --dry-run to preview before packaging
  • Fix 2025 compliance warnings before distribution
  • Keep original skills as backup
  • Test plugin installation locally before publishing

See Also:


Best Practices

Plugin Development

1. Start with MVP:

  • Get basic plugin working first
  • Add optional metadata later
  • Test early, test often

2. Use Semantic Versioning:

  • Format: MAJOR.MINOR.PATCH (e.g., 1.2.3)
  • MAJOR: Breaking changes
  • MINOR: New features, backward compatible
  • PATCH: Bug fixes

3. Write Good Descriptions:

  • Clear, concise (under 200 chars)
  • Explain what plugin does
  • Mention key features
  • Include use cases

4. Include Comprehensive README:

  • Installation instructions
  • Usage examples
  • List of components
  • Configuration options
  • Troubleshooting

5. Validate Before Publishing:

python scripts/validate_plugin.py my-plugin/
# Should show 0 errors

6. Test Installation Locally:

# Create local marketplace
python scripts/generate_marketplace.py

# Test installation (if possible)
/plugin marketplace add ./my-marketplace
/plugin install my-plugin

Manifest Best Practices

1. Always Include:

  • name: Clear, kebab-case identifier
  • version: Semantic version
  • description: What it does
  • author: Who maintains it

2. Highly Recommended:

  • keywords: For discoverability
  • license: Legal clarity (MIT, Apache-2.0, etc.)
  • repository: Source code location
  • homepage: Documentation URL

3. Path Rules:

  • Always use relative paths: ./skills/
  • Never use absolute paths: /Users/me/skills
  • Use forward slashes (cross-platform): ./path/to/file

4. Naming Conventions:

  • Plugin names: kebab-case
  • No spaces, underscores, or special chars
  • Descriptive and memorable

2025 Schema Compliance

1. All Skills Must Have allowed-tools:

---
name: my-skill
description: What it does
allowed-tools: Read, Write, Bash
---

2. Common Tool Combinations:

  • Analysis: Read, Grep, Glob
  • Editing: Read, Write, Edit
  • Automation: Read, Write, Bash
  • Research: Read, WebSearch, WebFetch

3. Be Specific:

  • Only list tools skill actually uses
  • Don't include all tools if not needed
  • Helps Claude optimize execution

Distribution Best Practices

1. GitHub Repository Setup:

  • Clear repository name
  • Comprehensive README.md
  • LICENSE file
  • .gitignore for OS files

2. Version Management:

  • Tag releases: git tag v1.0.0
  • Write changelogs
  • Follow semver strictly

3. Documentation:

  • Installation instructions
  • Usage examples
  • Component documentation
  • Troubleshooting guide

4. Team Distribution:

  • Use .claude/settings.json for team-wide:
    {
    "extraKnownMarketplaces": [
      {"source": "github", "repo": "company/approved-plugins"}
    ]
    }

Common Mistakes

Mistake 1: Component Directories in Wrong Location

❌ Wrong:

my-plugin/
└── .claude-plugin/
    ├── plugin.json
    └── skills/          # WRONG LOCATION

✅ Correct:

my-plugin/
├── .claude-plugin/
│   └── plugin.json
└── skills/              # AT PLUGIN ROOT

Why: Claude looks for components at plugin root, not in .claude-plugin/

Fix: Move component directories to plugin root


Mistake 2: Absolute Paths in Manifests

❌ Wrong:

{
  "name": "my-plugin",
  "skills": "/Users/me/my-plugin/skills"
}

✅ Correct:

{
  "name": "my-plugin",
  "skills": "./skills"
}

Why: Absolute paths break on other machines

Fix: Use relative paths starting with ./


Mistake 3: Non-Kebab-Case Names

❌ Wrong:

{
  "name": "My_Plugin"     // Underscores and capitals
}

✅ Correct:

{
  "name": "my-plugin"     // Kebab-case
}

Why: Naming convention expected by Claude Code

Fix: Use lowercase with hyphens


Mistake 4: Missing allowed-tools (2025 Schema)

❌ Wrong:

---
name: my-skill
description: What it does
---

✅ Correct:

---
name: my-skill
description: What it does
allowed-tools: Read, Write, Bash
---

Why: 2025 schema requires explicit tool permissions

Fix: Add allowed-tools field to all skills


Mistake 5: Invalid JSON Syntax

❌ Wrong:

{
  "name": "my-plugin",
  "version": "1.0.0",    // Trailing comma
}

✅ Correct:

{
  "name": "my-plugin",
  "version": "1.0.0"
}

Why: JSON doesn't allow trailing commas

Fix: Remove trailing commas, validate JSON


Mistake 6: No README

❌ Wrong:

my-plugin/
├── .claude-plugin/plugin.json
└── skills/

✅ Correct:

my-plugin/
├── .claude-plugin/plugin.json
├── README.md           # Installation & usage
└── skills/

Why: Users need to understand what plugin does and how to install it

Fix: Create README with installation instructions


Mistake 7: Not Validating Before Publishing

❌ Wrong:

git push origin main    # Push without validation

✅ Correct:

python scripts/validate_plugin.py my-plugin/
# Fix any errors
git push origin main

Why: Catch errors before users try to install

Fix: Always validate before publishing


Mistake 8: No Version Bumping

❌ Wrong:

{
  "version": "1.0.0"     // Never changes
}

✅ Correct:

{
  "version": "1.1.0"     // Bumped for each release
}

Why: Users need to know when updates are available

Fix: Bump version for each release following semver


Quick Reference

Essential Commands

# Initialize new plugin
python scripts/init_plugin.py my-plugin

# Generate manifest (interactive)
python scripts/generate_manifest.py my-plugin/

# Generate marketplace
python scripts/generate_marketplace.py

# Validate plugin
python scripts/validate_plugin.py my-plugin/

# Package skills
python scripts/package_skills.py .claude/skills my-plugin/

# Package with validation
python scripts/package_skills.py .claude/skills my-plugin/ --validate

Plugin Structure

plugin-name/
├── .claude-plugin/
│   ├── plugin.json           # Required: Metadata
│   └── marketplace.json      # Optional: Distribution
├── skills/                    # Your skills
├── commands/                  # Custom slash commands
├── agents/                    # Specialized agents
└── README.md                  # Recommended: Docs

plugin.json Minimal

{
  "name": "my-plugin"
}

plugin.json Standard

{
  "name": "my-plugin",
  "version": "1.0.0",
  "description": "What this plugin does",
  "author": {
    "name": "Your Name",
    "email": "you@example.com"
  },
  "keywords": ["keyword1", "keyword2"],
  "license": "MIT"
}

marketplace.json

{
  "name": "my-marketplace",
  "description": "Plugin marketplace",
  "owner": {
    "name": "Maintainer",
    "email": "maintainer@example.com"
  },
  "plugins": [
    {
      "name": "plugin-one",
      "description": "First plugin",
      "source": "./plugins/plugin-one",
      "category": "development"
    }
  ]
}

2025 Skill Frontmatter

---
name: my-skill
description: What it does. Use when [triggers].
allowed-tools: Read, Write, Bash
---

Validation Checklist

Before publishing:

  • [ ] Run python scripts/validate_plugin.py my-plugin/
  • [ ] 0 errors, 0 warnings
  • [ ] README.md exists and is complete
  • [ ] All skills have allowed-tools field
  • [ ] Version number bumped (if updating)
  • [ ] Git tag created for release
  • [ ] Test installation locally

Distribution Workflow

  1. Create Plugin:

    python scripts/init_plugin.py my-plugin
    python scripts/generate_manifest.py my-plugin/
    python scripts/package_skills.py .claude/skills my-plugin/
  2. Validate:

    python scripts/validate_plugin.py my-plugin/
  3. Create Marketplace:

    python scripts/generate_marketplace.py
  4. Push to GitHub:

    cd my-marketplace
    git init
    git add .
    git commit -m "Initial plugin marketplace"
    git remote add origin git@github.com:username/my-marketplace.git
    git push -u origin main
  5. Users Install:

    /plugin marketplace add username/my-marketplace
    /plugin install my-plugin@my-marketplace

Common Tool Sets (2025)

  • Read-only: Read, Grep, Glob
  • File editing: Read, Write, Edit
  • Automation: Read, Write, Bash
  • Research: Read, WebSearch, WebFetch
  • Full access: Read, Write, Edit, Glob, Grep, Bash, WebSearch, WebFetch

Script Help

All scripts support --help:

python scripts/init_plugin.py --help
python scripts/generate_manifest.py --help
python scripts/validate_plugin.py --help
python scripts/package_skills.py --help

Next Steps After MVP

This MVP includes the core operations needed to package and distribute plugins. Future enhancements could include:

Additional Operations:

  • Package commands (Operation 6)
  • Package agents (Operation 7)
  • Update existing plugin (Operation 9)
  • Bulk package multiple plugins (Operation 10)

Enhanced Features:

  • Automated GitHub repo creation
  • Change log generation
  • Dependency resolution
  • Plugin analytics

For Now: The MVP operations (1-5) are sufficient to:

  • Create plugins
  • Package your 32 skills
  • Distribute via GitHub
  • Validate compliance
  • Share with team or community

References

Detailed guides for advanced topics:


plugin-builder makes plugin creation fast, validated, and reliable. Use it to package your skills and share them with your team or the community!