| name | publish-plugin |
| description | This skill should be used when the user asks to "publish a plugin", "add a plugin to my marketplace", "convert a skill to a plugin", "register a new plugin", or says "new plugin" in the context of the liamlin/claude-plugins marketplace repo. |
| user-invokable | true |
| args | [{"name":"context","description":"Optional: name or path of the skill/plugin to publish.","required":false}] |
Publish a Plugin to liamlin/claude-plugins
Add a new plugin to the centralized marketplace so users can install it via:
/plugin marketplace add liamlin/claude-plugins
/plugin install {PLUGIN_NAME}
Conventions
- Author: Liam Lin (https://github.com/liamlin)
- License: MIT
- Marketplace repo:
~/code/claude-plugins/ (GitHub: liamlin/claude-plugins)
- Marketplace name:
liamlin-plugins
- Plugin names use kebab-case. Command prefixes can be short aliases (e.g., plugin name
lg for learning-guide).
Workflow
1. Ensure Plugin Structure
The source repo must have a valid plugin structure. If it's a standalone skill, convert it first.
Required structure:
repo-root/
├── .claude-plugin/
│ └── plugin.json # name, version, description, author, repository, license, keywords
├── skills/
│ └── skill-name/
│ └── SKILL.md
├── commands/ # optional
├── agents/ # optional
├── hooks/ # optional
├── README.md
└── LICENSE
Minimum plugin.json:
{
"name": "plugin-name",
"version": "1.0.0",
"description": "One-line description.",
"author": {
"name": "Liam Lin",
"url": "https://github.com/liamlin"
},
"repository": "https://github.com/liamlin/REPO_NAME",
"license": "MIT",
"keywords": ["tag1", "tag2"]
}
If converting a standalone skill (just a SKILL.md file):
- Create
.claude-plugin/plugin.json
- Move
SKILL.md into skills/{skill-name}/SKILL.md
- Keep original
SKILL.md at root if it was already there (backward compat) — or remove if users will only install via marketplace
2. Update README with Install Instructions
Ensure the source repo's README includes this install section:
## Installation
Via the marketplace (recommended):
\```
/plugin marketplace add liamlin/claude-plugins
/plugin install {PLUGIN_NAME}
\```
Or install directly from this repo:
\```
/plugin install liamlin/{REPO_NAME}
\```
3. Add Entry to marketplace.json
Read ~/code/claude-plugins/marketplace.json and add a new entry to the plugins array:
{
"name": "plugin-name",
"source": {
"source": "github",
"repo": "liamlin/REPO_NAME"
},
"description": "One-line description matching plugin.json.",
"version": "1.0.0",
"license": "MIT",
"category": "workflow|devops|learning|utility",
"tags": ["tag1", "tag2"]
}
Rules:
name must match the name in the source repo's plugin.json
description should match or closely paraphrase plugin.json
- Pick one
category that best fits
tags should match keywords from plugin.json
4. Update Marketplace README
Add the new plugin to ~/code/claude-plugins/README.md following the existing format:
### {plugin-name}
{Description with 3-5 bullet points of key features.}
**Commands:** `/cmd1`, `/cmd2` (if applicable)
[Source](https://github.com/liamlin/{REPO_NAME})
5. Commit and Push
Commit changes in each affected repo:
- Source repo: plugin structure + README changes
- Marketplace repo: marketplace.json + README.md
Use conventional commit messages:
- Source repo:
feat: add plugin structure for marketplace distribution
- Marketplace repo:
feat: add {plugin-name} to marketplace
6. Verification Checklist
Before marking complete, verify:
Reference
For templates and detailed examples, consult references/templates.md.