Summary
The skills in this repo follow a solid structure (SKILL.md + optional reference files), but there's no native way to install them into Claude Code's skill system. Adding a proper marketplace manifest would allow discovery and installation directly through Claude Code's built-in plugin commands — no manual file copying or git cloning required.
How Claude Code's skill/plugin system works
Claude Code loads skills from plugin directories under ~/.claude/plugins/<marketplace-name>/. Each skill gets invoked via the Skill tool — the agent sees all skill description: fields in its context and calls Skill with the skill name when relevant.
Installation works in two steps:
/plugin install marketplace https://github.com/mattpocock/skills
/plugin install tdd
/plugin install write-a-skill
First you register the marketplace (points Claude Code at this repo), then you install individual skills from it by name. No manual file management needed.
How the repo needs to be structured
A marketplace directory layout:
~/.claude/plugins/
└── mattpocock-skills/
├── .claude-plugin/
│ └── marketplace.json ← index of all skills
├── tdd/
│ └── SKILL.md
├── write-a-skill/
│ └── SKILL.md
└── ...
.claude-plugin/marketplace.json
{
"name": "mattpocock-skills",
"description": "Production-grade Claude Code skills by Matt Pocock",
"version": "1.0.0",
"skills": [
{
"name": "tdd",
"description": "Test-driven development workflow for Claude Code. Use when implementing features or fixing bugs.",
"path": "tdd/SKILL.md"
},
{
"name": "write-a-skill",
"description": "Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, or build a new skill.",
"path": "write-a-skill/SKILL.md"
}
// ... rest of skills
]
}
The description field can be pulled directly from each SKILL.md frontmatter — a small build script keeps them in sync automatically:
// scripts/gen-marketplace.js
import { readdirSync, readFileSync, writeFileSync } from 'fs'
import { join } from 'path'
const skills = readdirSync('.', { withFileTypes: true })
.filter(d => d.isDirectory() && !d.name.startsWith('.'))
.map(d => {
const content = readFileSync(join(d.name, 'SKILL.md'), 'utf8')
const name = content.match(/^name:\s*(.+)$/m)?.[1]?.trim()
const description = content.match(/^description:\s*(.+)$/m)?.[1]?.trim()
return { name, description, path: `${d.name}/SKILL.md` }
})
writeFileSync('.claude-plugin/marketplace.json', JSON.stringify({
name: 'mattpocock-skills',
skills
}, null, 2))
Run it as part of CI so marketplace.json never drifts from the SKILL.md frontmatter.
User experience after this change
# Register the marketplace once
/plugin install marketplace https://github.com/mattpocock/skills
# Browse available skills
/plugin list mattpocock-skills
# Install what you want
/plugin install tdd
/plugin install write-a-prd
Restart Claude Code and the skills are live — no terminal, no git, no file copying.
Why this matters
- Zero friction: install skills without leaving the Claude Code interface
- Selective install: users pick only the skills they want, keeping context lean
- Auto-discovery: Claude Code reads the manifest and surfaces skill descriptions automatically
- Community sharing: clear format for contributors to follow when adding new skills
- Version pinning: users can pin to a tag for stable skill sets
Happy to submit a PR with the manifest + build script if you're open to it.
Summary
The skills in this repo follow a solid structure (SKILL.md + optional reference files), but there's no native way to install them into Claude Code's skill system. Adding a proper marketplace manifest would allow discovery and installation directly through Claude Code's built-in plugin commands — no manual file copying or git cloning required.
How Claude Code's skill/plugin system works
Claude Code loads skills from plugin directories under
~/.claude/plugins/<marketplace-name>/. Each skill gets invoked via theSkilltool — the agent sees all skilldescription:fields in its context and callsSkillwith the skill name when relevant.Installation works in two steps:
First you register the marketplace (points Claude Code at this repo), then you install individual skills from it by name. No manual file management needed.
How the repo needs to be structured
A marketplace directory layout:
.claude-plugin/marketplace.json{ "name": "mattpocock-skills", "description": "Production-grade Claude Code skills by Matt Pocock", "version": "1.0.0", "skills": [ { "name": "tdd", "description": "Test-driven development workflow for Claude Code. Use when implementing features or fixing bugs.", "path": "tdd/SKILL.md" }, { "name": "write-a-skill", "description": "Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, or build a new skill.", "path": "write-a-skill/SKILL.md" } // ... rest of skills ] }The
descriptionfield can be pulled directly from eachSKILL.mdfrontmatter — a small build script keeps them in sync automatically:Run it as part of CI so
marketplace.jsonnever drifts from the SKILL.md frontmatter.User experience after this change
Restart Claude Code and the skills are live — no terminal, no git, no file copying.
Why this matters
Happy to submit a PR with the manifest + build script if you're open to it.