β claude code: ship your skills as a plugin marketplace
β’ 324 words β’ 2 min β’ updated
Problem statement: my Claude Code skills lived in my .dotfiles, usable only on the machine that cloned them. I wanted them to be installable anywhere with one command, so that (for example) my teammates could easily adopt them.
Claude Code reads skills from a marketplace, which is essentially a git repo
with a manifest. So I turned github.com/thiagowfx/skills into one. The layout:
.claude-plugin/marketplace.json # marketplace manifest
plugins/thiagowfx/ # one plugin
.claude-plugin/plugin.json # plugin manifest
skills/<name>/SKILL.md # one dir per skill (auto-discovered)The marketplace lists plugins; a plugin bundles skills. I have one plugin
holding all ten. I do not find it necessary to have multiple plug-ins at this
point. marketplace.json points at it with a relative source:
{
"name": "thiagowfx",
"owner": { "name": "Thiago Perrotta", "url": "https://github.com/thiagowfx" },
"plugins": [
{
"name": "thiagowfx",
"source": "./plugins/thiagowfx",
"description": "Thiago's personal Gen-AI / Claude Code skills."
}
]
}The plugin manifest is just metadata β there’s no need to enumerate skills.
Anything under skills/<name>/SKILL.md is discovered automatically:
{
"name": "thiagowfx",
"version": "0.2.2",
"license": "MIT"
}The docs are explicit about why I keep that version:
Setting
versionmeans users only receive updates when you change this field, so bump it on every release. If you omitversionand host this marketplace in git, every commit automatically counts as a new version.
I’ll go with version pinning for now.
Install from any machine:
/plugin marketplace add thiagowfx/skills
/plugin install thiagowfx@thiagowfx/plugin marketplace update thiagowfx pulls future changes.
Outside Claude:
claude plugins update thiagowfx@thiagowfxThe whole thing β manifests, nine seeded skills, README, license β was scaffolded by Claude Code itself, which felt appropriately recursive: one of the skills I was packaging interviews me about a plan before any code gets written, so it grilled me about how to package the skills. Quite meta, eh?
Next up: point the dotfiles at the repo so there’s a single source of truth.
π€ Drafted with /bloggify.
Backlinks
- dual-review: address review findings automatically (Aug 05, 2026)
- claude code: replace a hand-rolled loop with /goal (Jul 16, 2026)