Back to Skills

metaskill-packaging

verified

Package skills, agents, commands, and hooks as Claude Code plugins. Use when creating plugins, packaging skills for distribution, setting up plugin structure, dogfooding plugins, or when user mentions "plugin structure", "plugin.json", "package plugin", "distribute plugin", "marketplace", "dogfood", "install plugin", "plugin placement", "--plugin-dir".

View on GitHub

Marketplace

skillet

gigaverse-app/skillet

Plugin

metaskill

development

Repository

gigaverse-app/skillet
1stars

metaskill/skills/metaskill-packaging/SKILL.md

Last Verified

January 20, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/gigaverse-app/skillet/blob/main/metaskill/skills/metaskill-packaging/SKILL.md -a claude-code --skill metaskill-packaging

Installation paths:

Claude
.claude/skills/metaskill-packaging/
Powered by add-skill CLI

Instructions

# Plugin Building and Packaging

Package your skills, agents, commands, and hooks as distributable plugins.

## Plugin Structure

**CRITICAL RULE:** Only `plugin.json` goes inside `.claude-plugin/`. All components go at the plugin ROOT:

```
my-plugin/                      <- Plugin name = neutral noun
├── .claude-plugin/
│   └── plugin.json             # ONLY this file here!
├── commands/                   # Slash commands (*.md) - imperative verbs
├── agents/                     # Agent definitions (*.md) - role nouns
├── skills/                     # Skills (*/SKILL.md) - ending in -ing
├── hooks/                      # Event handlers (hooks.json)
├── .mcp.json                   # MCP servers (optional)
├── .lsp.json                   # LSP servers (optional)
└── README.md
```

```
# ❌ WRONG - components inside .claude-plugin/
.claude-plugin/
├── plugin.json
├── commands/         ← NO!
└── skills/           ← NO!

# ✅ CORRECT - components at plugin root
.claude-plugin/
└── plugin.json
commands/             ← YES!
skills/               ← YES!
```

## plugin.json Manifest

**Required fields:**

```json
{
  "name": "my-plugin",
  "version": "1.0.0",
  "description": "What this plugin does"
}
```

**With recommended metadata:**

```json
{
  "name": "my-plugin",
  "version": "1.0.0",
  "description": "What this plugin does",
  "author": {
    "name": "Your Name",
    "email": "you@example.com"
  },
  "license": "MIT",
  "keywords": ["keyword1", "keyword2"],
  "repository": "https://github.com/user/repo",
  "homepage": "https://github.com/user/repo#readme"
}
```

**See `references/plugin-json-schema.md` for the complete field reference.**

## Naming Conventions

**See `/metaskill-naming` for the full naming convention.**

Quick reference:

| Component | Form | Example |
|-----------|------|---------|
| Plugin name | Neutral noun | metaskill, codeforge, datakit |
| Skills | -ing (gerund) | metaskill-authoring, metaskill-triggering |
| Agents | Role noun | metaskill-trig

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
6926 chars