plugin-builder
Skill0 starsChanged 41 days agoMITView on GitHub
Package any combination of skills into a distributable Claude Code / Cowork plugin. Builds the correct directory structure, rewrites frontmatter, creates slash commands, generates marketplace.json, and zips for upload. Trigger with "build a plugin", "package these skills as a plugin", "create a plugin from", or "turn these skills into a plugin".
- Reads credentials
5 other projects use a version of this.
Adopted by
Most recently taken up by
- beCyborg/jadlis-plugin-creatortheir own version, first seen Nov 8, 2026
- vi0let-dev/plugin-buildertheir own version, first seen Oct 25, 2026
- GerardoRdz96/claude-skillstheir own version, first seen Jul 13, 2026
- vellum-ai/vellum-assistanttheir own version, first seen Jul 8, 2026
- GerardoRdz96/aios-starter-kittheir own version, first seen Jul 1, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- vellum-ai/vellum-assistant★ 1.5ksame name
- GerardoRdz96/aios-starter-kit★ 3same name
- beCyborg/jadlis-plugin-creator★ 0same name
- GerardoRdz96/claude-skills★ 0same name
- vi0let-dev/plugin-builder★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository24 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- analystSkill
- build-appSkill
- build-websiteSkill
- business-setupSkill
- content-pipelineSkill
- content-writerSkill
- email-assistantSkill
- email-digestSkill
- ksuite-setupSkill
- meeting-prepSkill
- memorySkill
- odooSkill
- qfieldcloudSkill
- qgisSkill
- quarto-slidesSkill
- research-leadSkill
- researchSkill
- r-sessionSkill
- schedulerSkill
- scrum-masterSkill
- skill-creatorSkill
- task-managerSkill
- weekly-reviewSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 6 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 4 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 26
If the user doesn't specify all inputs, ask for them conversationally.
- Distinctive: line 30
Follow these steps EXACTLY.
- Very specific: line 53
Only plugin.json and marketplace.json go inside .claude-plugin/
- Very specific: line 55
Do NOT put anything inside a .claude/ directory — that's workspace format, not plugin format
- Distinctive: line 61
Keep it MINIMAL. Anthropic's own plugins only use these 4 fields:
- Distinctive: line 74
Do NOT add: keywords, homepage, repository, license, custom paths, hooks, skills arrays, or anything else.
- Distinctive: line 115
REMOVE these fields (they are workspace-only, not recognized by plugins):
- Distinctive: line 211
Before declaring done, verify:
“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Plugin Builder
Package skills from this workspace into a properly structured Claude Code / Cowork plugin.
When to Use
- User wants to share skills with others
- User wants to upload skills to Cowork
- User wants to publish a plugin to GitHub
- User wants to bundle skills into a distributable package
Inputs Required
- Plugin name — kebab-case (e.g.,
sales-pack,content-toolkit) - Which skills to include — list of skill names from
.claude/skills/ - Author name — for plugin.json
- Description — one-line description of what the plugin does
- GitHub repo name — optional, for pushing to GitHub
If the user doesn't specify all inputs, ask for them conversationally.
Process
Follow these steps EXACTLY. This is the structure Anthropic requires.
Step 1: Create the Directory Structure
{plugin-name}/
├── .claude-plugin/
│ ├── plugin.json
│ └── marketplace.json
├── skills/
│ └── {each-skill}/
│ ├── SKILL.md
│ ├── scripts/ (if the skill has scripts)
│ └── references/ (if the skill has references)
├── commands/
│ └── {each-skill}.md
├── CONNECTORS.md
├── README.md
├── LICENSE
└── .gitignoreCRITICAL RULES:
- Only
plugin.jsonandmarketplace.jsongo inside.claude-plugin/ - Everything else (
skills/,commands/) goes at the PLUGIN ROOT - Do NOT put anything inside a
.claude/directory — that's workspace format, not plugin format
Step 2: Write plugin.json
File: .claude-plugin/plugin.json
Keep it MINIMAL. Anthropic's own plugins only use these 4 fields:
{
"name": "{plugin-name}",
"version": "1.0.0",
"description": "{description}",
"author": {
"name": "{author-name}"
}
}Do NOT add: keywords, homepage, repository, license, custom paths, hooks, skills arrays, or anything else. Auto-discovery handles component loading.
Step 3: Write marketplace.json
File: .claude-plugin/marketplace.json
This makes the repo installable via /plugin marketplace add:
{
"name": "{plugin-name}",
"description": "{description}",
"owner": {
"name": "{author-name}"
},
"plugins": [
{
"name": "{plugin-name}",
"source": ".",
"description": "{description}",
"version": "1.0.0"
}
]
}Step 4: Copy and Rewrite Skills
For EACH skill being packaged:
- Copy the skill directory from
.claude/skills/{name}/to{plugin}/skills/{name}/ - Include
scripts/,references/,assets/subdirectories if they exist - REWRITE the SKILL.md frontmatter to contain ONLY:
---
name: {skill-name}
description: {description with trigger phrases}
---REMOVE these fields (they are workspace-only, not recognized by plugins):
model:context:allowed-tools:user-invocable:
Fix script paths in the SKILL.md body. Replace:
.claude/skills/{name}/scripts/→${CLAUDE_PLUGIN_ROOT}/skills/{name}/scripts/- Any relative script paths →
${CLAUDE_PLUGIN_ROOT}/prefixed paths
${CLAUDE_PLUGIN_ROOT}is REQUIRED because installed plugins get copied to a cache directory. Without this prefix, script paths break after installation.
Step 5: Create Slash Commands
For EACH skill, create a command file at commands/{skill-name}.md:
---
description: {Short description under 60 chars}
argument-hint: "{expected arguments if any}"
---
{One paragraph explaining what the command does.}
$ARGUMENTSThe $ARGUMENTS variable captures everything the user types after the command name.
Step 6: Write CONNECTORS.md
List every external service the plugin's skills connect to. For each:
- Service name
- Which skill uses it
- Setup instructions (account creation, API key generation)
- Required environment variables
This file helps users set up the services their skills need.
Step 7: Write README.md
Include:
- Plugin name and one-line description
- Install instructions for Claude Code AND Cowork
- Table of skills (name, what it does, required API keys)
- Table of commands
- Requirements
- License
Step 8: Write Supporting Files
.gitignore:
.env
.env.local
credentials.json
token.json
data/
logs/
.tmp/
.DS_Store
__pycache__/
*.pycLICENSE: MIT (or ask the user)
Step 9: Package as .zip for Cowork
cd {plugin-dir} && zip -r ../{plugin-name}.zip . -x "*.DS_Store" -x ".git/*" -x "__pycache__/*" -x "*.pyc"The .zip file can be:
- Dragged into Cowork's plugin upload UI
- Uploaded by org admins via Organization Settings > Plugins
- Max size: 50MB (our plugins are typically 30-150K)
Step 10: Push to GitHub (Optional)
cd {plugin-dir}
git init && git branch -m main
git add -A
git commit -m "Initial release: {plugin-name} v1.0.0"
gh repo create {plugin-name} --public --description "{description}" --source . --pushUsers install via:
/plugin marketplace add {github-username}/{plugin-name}
/plugin install {plugin-name}@{plugin-name}Verification Checklist
Before declaring done, verify:
.claude-plugin/plugin.jsonhas ONLY name, version, description, author.claude-plugin/marketplace.jsonexists with correct source path- NO
.claude/directory exists (that's workspace format) - All skills are in
skills/at plugin root - All SKILL.md frontmatter has ONLY
nameanddescription - All script paths use
${CLAUDE_PLUGIN_ROOT}/ - Each skill has a matching command in
commands/ - CONNECTORS.md lists all external services
- .zip file created and under 50MB
- .zip can be uploaded to Cowork without errors
Common Mistakes to Avoid
- Putting skills inside
.claude/skills/— Plugin format usesskills/at root - Adding extra frontmatter fields — Plugins only recognize
nameanddescription - Relative script paths — MUST use
${CLAUDE_PLUGIN_ROOT}/prefix - Missing marketplace.json — Without this,
/plugin marketplace addfails - Missing commands — Skills work by description matching, but commands give users explicit
/slashaccess - Forgetting CONNECTORS.md — Users need to know which services to set up
Example
"Package email-digest, research-lead, and quarto-slides as a plugin called sales-toolkit"
Result:
sales-toolkit/
├── .claude-plugin/
│ ├── plugin.json
│ └── marketplace.json
├── skills/
│ ├── email-digest/
│ │ └── SKILL.md
│ ├── research-lead/
│ │ └── SKILL.md
│ └── quarto-slides/
│ ├── SKILL.md
│ └── scripts/
│ └── create_presentation.py
├── commands/
│ ├── email-digest.md
│ ├── research-lead.md
│ └── slides.md
├── CONNECTORS.md
├── README.md
├── LICENSE
└── .gitignoreDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

