From skill-manage
Loads external skills into the local plugins directory and automatically configures plugin.json, marketplace.json, and related metadata. Use when a user asks to load, install, or register a skill from a local path into the project's plugin system. Trigger phrases: "loader skill", "加载 skill", "加载xxx skill 路径是xxx", "load skill from path", "install skill".
How this skill is triggered — by the user, by Claude, or both
Slash command
/skill-manage:skill-loaderThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Automatically integrates external skills into the project's plugin system by creating proper directory structure, plugin metadata, and marketplace registration.
Automatically integrates external skills into the project's plugin system by creating proper directory structure, plugin metadata, and marketplace registration.
The skill activates when the user says something like:
User invokes skill-loader
│
▼
┌─────────────────────┐
│ Step 1: Discover │ ← Identify source directory and skill name
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Step 2: Determine │ ← Decide plugin name and category group
│ group │
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Step 3: Copy files │ ← Copy skill files to plugins/{plugin-name}/
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Step 4: Create/ │ ← Create or update plugin.json
│ update │
│ plugin.json │
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Step 5: Register │ ← Add entry to .claude-plugin/marketplace.json
│ in │
│ marketplace │
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Step 6: Verify │ ← Confirm structure and display summary
└─────────────────────┘
Determine the source directory of the skills to load:
SKILL.md file.# Validate source contains valid skills
find <source-path> -name "SKILL.md" -maxdepth 2
Plugin name: Derive from the source directory name. Convert to kebab-case if needed.
Category group: Determine which category the plugin belongs to:
| Category | Description | Examples |
|---|---|---|
workflow | Multi-step workflow skills | openspec-workflow, tdd-workflow |
documentation | Code analysis, docs, knowledge base | openspec-trace |
content | Content creation, illustration, media | baoyu-skills |
devops | Build, publish, deploy, CI/CD | publish |
official | Official vendor skills | anthropics |
utility | General-purpose utilities | — |
Ask the user to confirm the category if ambiguous.
Copy the entire source directory into plugins/{plugin-name}/:
cp -r <source-path> plugins/<plugin-name>/
Preserve the internal structure. If the source is already structured as a plugin (has SKILL.md directly inside or under a named subdirectory), copy as-is.
Two common source structures:
Single-skill plugin (like openspec-workflow):
source/
├── plugin.json (optional)
└── skills/
└── skill-name/
└── SKILL.md
Multi-skill collection plugin (like baoyu-skills):
source/
├── plugin.json (optional)
├── README.md (optional)
└── skill-1/
├── SKILL.md
└── references/
Copy the entire source tree as the plugin directory.
If plugin.json does not exist in the plugin directory, create it:
{
"name": "<plugin-name>",
"description": "<description from SKILL.md or user-provided>",
"author": { "name": "<author or project default>" },
"license": "<MIT or Proprietary or user-provided>",
"keywords": ["<relevant-keywords>"],
"category": "<category>"
}
If plugin.json already exists, update only missing fields (never overwrite user-edited values).
Derive fields:
name: From directory name or user inputdescription: From SKILL.md frontmatter or user inputauthor: Default to project author from marketplace.json, or asklicense: Default to "MIT" for own skills, "Proprietary" for third-party, or askkeywords: Extract from SKILL.md description and directory structurecategory: From Step 2Read .claude-plugin/marketplace.json and add a new plugin entry to the plugins array:
{
"name": "<plugin-name>",
"source": "./plugins/<plugin-name>",
"description": "<from plugin.json>",
"author": { "name": "<from plugin.json>" },
"license": "<from plugin.json>",
"keywords": ["<from plugin.json>"],
"category": "<from plugin.json>"
}
Rules:
After registration, verify:
# Check plugin directory exists
ls plugins/<plugin-name>/
# Check plugin.json is valid JSON
python3 -c "import json; json.load(open('plugins/<plugin-name>/plugin.json'))"
# Check marketplace.json is valid JSON and contains new entry
python3 -c "import json; d=json.load(open('.claude-plugin/marketplace.json')); print(any(p['name']=='<plugin-name>' for p in d['plugins']))"
Display summary to user:
Skill loaded successfully!
Plugin: <plugin-name>
Category: <category>
Skills: <list of SKILL.md files found>
Location: plugins/<plugin-name>/
Files created/updated:
- plugins/<plugin-name>/plugin.json
- .claude-plugin/marketplace.json
If the source is just a single SKILL.md file without a directory structure:
plugins/<skill-name>/skills/<skill-name>/SKILL.mdplugins/<skill-name>/plugin.jsonIf a plugin with the same name already exists:
If the source has multiple directories each containing SKILL.md (like baoyu-skills):
plugin.json at the plugin root level.If the user asks to load into a specific plugin directory or subdirectory:
plugins/<plugin-name>/.npx claudepluginhub kunge2013/skills --plugin skill-manageBuilds a throwaway prototype to answer a design question about UI appearance or state/logic behavior. Guides you through two branches: interactive terminal app for logic validation, or multiple UI variations for visual exploration.