From skill-manager
Migrate skills (and their script dependencies) from the current project into a plugin in the team-skills marketplace repo.
npx claudepluginhub vm0-ai/team-skills --plugin skill-managerThis skill uses the workspace's default tool permissions.
You are a Claude Code skill migration specialist. Your role is to extract skills (and any bash scripts they depend on) from the current project's `.claude/skills/` directory into a new or existing plugin in the `vm0-ai/team-skills` marketplace repository.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
You are a Claude Code skill migration specialist. Your role is to extract skills (and any bash scripts they depend on) from the current project's .claude/skills/ directory into a new or existing plugin in the vm0-ai/team-skills marketplace repository.
Your args are: $ARGUMENTS
Parse the args to determine:
coding-team)--with-scripts (optional flag): Also migrate bash scripts from scripts/ that are exclusively depended on by the listed skills# Migrate two skills into a new plugin
/skill-migrate my-plugin issue-handoff pr-handoff
# Migrate skills and their exclusive script dependencies
/skill-migrate my-plugin issue-handoff pr-handoff --with-scripts
# Migrate a single skill
/skill-migrate dev-tools dev-server
For each skill name in args, verify .claude/skills/<name>/SKILL.md exists in the current project.
for skill in <skill-names>; do
ls ".claude/skills/$skill/SKILL.md" || echo "MISSING: $skill"
done
If any are missing, report and stop.
--with-scripts)For each skill, find bash script references in its SKILL.md:
grep -oE 'scripts/[a-zA-Z0-9_.-]+\.sh' .claude/skills/<name>/SKILL.md
Then for each referenced script, recursively find its script dependencies (look for source and "$SCRIPT_DIR/" calls):
grep -oE '"\$SCRIPT_DIR/[a-zA-Z0-9_.-]+\.sh"' scripts/<name>.sh
Build the full transitive closure of script dependencies.
For each script to be migrated, verify no code outside the migrating skills references it:
# Search entire repo for references, excluding the skills being migrated
grep -r '<script-name>.sh' --include='*.sh' --include='*.md' . | grep -v '.claude/skills/<migrating-skills>'
If a script has callers outside the migration set, warn the user and exclude it (it cannot be safely moved).
Scan each SKILL.md for references to other skills (/skill-name patterns). Report these as soft dependencies that will NOT be migrated — they must exist in the target project for full functionality.
Show the user:
--with-scripts)Ask for confirmation before proceeding.
cd /tmp && rm -rf team-skills && gh repo clone vm0-ai/team-skills
<plugin-name>/
├── .claude-plugin/
│ └── plugin.json
├── skills/
│ ├── <skill-1>/SKILL.md
│ ├── <skill-2>/SKILL.md
│ └── ...
└── scripts/ (only if --with-scripts)
├── <script-1>.sh
└── ...
{
"name": "<plugin-name>",
"description": "<auto-generated from skill descriptions>",
"version": "1.0.0"
}
Copy each SKILL.md from .claude/skills/<name>/SKILL.md to <plugin-name>/skills/<name>/SKILL.md.
--with-scripts)Copy each script from scripts/<name>.sh to <plugin-name>/scripts/<name>.sh. Preserve executable bits.
Replace all scripts/<name>.sh references in SKILL.md files with ${CLAUDE_PLUGIN_ROOT}/scripts/<name>.sh.
Important: ${CLAUDE_PLUGIN_ROOT} resolves to the plugin's installation directory at runtime. Do NOT use ${CLAUDE_SKILL_DIR} for scripts outside the skill's own directory.
Add the new plugin entry to .claude-plugin/marketplace.json:
{
"name": "<plugin-name>",
"description": "<description>",
"source": "./<plugin-name>",
"strict": true
}
cd /tmp/team-skills
git add -A
git commit -m "feat: add <plugin-name> plugin with <skill-list> skills"
git push origin main
rm -rf .claude/skills/<skill-1> .claude/skills/<skill-2> ...
--with-scripts)rm scripts/<script-1>.sh scripts/<script-2>.sh ...
Search the project for references to deleted skill names or scripts:
grep -r '<skill-name>\|<script-name>' .claude/skills/ scripts/
Report any findings — these may need updating to use the <plugin-name>:<skill-name> namespaced format.
Output a summary:
Migration complete!
Plugin: <plugin-name>@team-skills
Skills migrated: <list>
Scripts migrated: <list>
Soft dependencies: <list> (remain in project)
Source cleanup:
Deleted: <count> skills, <count> scripts
Remaining references: <list or "none">
Next steps:
1. Install: /plugin install <plugin-name>@team-skills
2. Verify: /plugin → check <plugin-name> is listed
3. Commit cleanup: the source project deletions are uncommitted
${CLAUDE_PLUGIN_ROOT} for script paths — not ${CLAUDE_SKILL_DIR}strict: true — each plugin owns its own plugin.json