# Claude Plugin Dev

> Package and publish a Claude Code plugin and marketplace (.claude-plugin/ manifests, skills, commands, agents, hooks) with a dual-target twist: the same repo simultaneously serves DeepSeek Harness (dsh), Codex, Gemini CLI and Copilot via plain skills and a dsh bundle. Use when creating a Claude Code plugin, setting up a marketplace repo, or making one repo installable across every agent.

- Skill: `zhangliang0115/claude-plugin-dev` (Agent Skill)
- Install (CLI): `npx skillmds@latest add zhangliang0115/claude-plugin-dev`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zhangliang0115/claude-plugin-dev/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: zhangliang0115 (https://skillmd.com/u/zhangliang0115)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zhangliang0115/claude-plugin-dev

---


# Building a Claude Code plugin & marketplace

A Claude Code **plugin** bundles skills, slash commands, subagents, hooks and
MCP servers into one installable unit. A **marketplace** is a git repo that
lists plugins so users can add it by name and install from it with one
command.

## Repo layouts

Single plugin:

```
my-plugin/
├── .claude-plugin/
│   └── plugin.json         # {"name": "my-plugin", "version": "1.0.0", "description": "…"}
├── skills/                 # <name>/SKILL.md folders
├── commands/               # <command>.md slash commands
├── agents/                 # subagent definitions
└── hooks/                  # lifecycle hooks
```

Marketplace repo (can list many plugins, including its own subdirectories):

```
my-marketplace/
└── .claude-plugin/
    └── marketplace.json
```

```json
{
  "name": "my-marketplace",
  "owner": { "name": "you" },
  "plugins": [
    {
      "name": "my-plugin",
      "source": "./plugins/my-plugin",
      "description": "What it does",
      "category": "productivity",
      "keywords": ["skills", "automation"]
    }
  ]
}
```

A repo can be **both** marketplace and plugin: point the plugin entry at
`"./"` and put a `.claude-plugin/plugin.json` at the repo root (this is the
`zhangliang0115/ai-plugin` pattern).

## How users install

```sh
# inside Claude Code:
/plugin marketplace add you/my-marketplace     # git URL or owner/repo
/plugin install my-plugin@my-marketplace
```

Skills can also be dropped straight into `~/.claude/skills/<name>/SKILL.md`
without any plugin packaging — use `aipx install owner/repo` to do that plus
every other agent in one shot.

## Quality rules

1. **Plugin `name`**: kebab-case, stable — it's the namespace for commands.
2. **Skill descriptions are routing triggers** — say *when* to fire, not just
   *what* it is.
3. **Version your plugin.json** and keep a CHANGELOG; users update via
   `/plugin marketplace update`.
4. **Dual-manifest for reach**: adding a `.github/plugin.json` makes the same
   repo installable by GitHub Copilot CLI/VS Code tooling too.
5. **Hooks**: keep them narrow and fast; document exactly what they run —
   hooks execute shell on the user's machine, so earn trust explicitly.

## Distribution checklist

- [ ] `.claude-plugin/plugin.json` (plugin) or `marketplace.json` (marketplace)
- [ ] Skills validated: kebab-case names, trigger-style descriptions
- [ ] README shows the exact `/plugin marketplace add` line
- [ ] GitHub topics: `claude-code`, `claude-plugin`, `agent-skills`
- [ ] Cross-agent story (optional but high-leverage): also ship a
      `dsh-plugin/` bundle and plain `skills/` — see the `dsh-plugin-dev`
      skill and `zhangliang0115/ai-plugin/docs/publish-dual-target.md`

