Help us improve
Share bugs, ideas, or general feedback.
From jylhis-plugins
This skill should be used when the user asks to "import skills", "add skills from repo", "import from GitHub", "pull skills from", "fetch skills from", "copy skills from", "add external skills", "merge skills into plugin", or provides a GitHub repository URL containing Claude Code skills to import into this marketplace. Handles license validation, plugin creation/merging, source attribution, and quality review.
npx claudepluginhub jylhis/claude-marketplace --plugin cpp-devHow this skill is triggered — by the user, by Claude, or both
Slash command
/jylhis-plugins:import-skillsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Import Claude Code skills from external GitHub repositories into this marketplace. Handle license validation, plugin creation or merging, README source attribution, and quality review.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Import Claude Code skills from external GitHub repositories into this marketplace. Handle license validation, plugin creation or merging, README source attribution, and quality review.
Before starting, verify GitHub CLI authentication:
gh auth status
If not authenticated, inform the user and ask them to run ! gh auth login.
Fetch the repository structure to identify available skills. If API calls return 404 or 403, verify the repo URL is correct and accessible.
# List repo contents
gh api "repos/{owner}/{repo}/git/trees/HEAD?recursive=1" --jq '.tree[] | .path'
# Check for metadata
gh api "repos/{owner}/{repo}/contents/metadata.json" -q '.content' | base64 -d
# Check for license
gh api "repos/{owner}/{repo}/license" -q '.license.spdx_id'
gh api "repos/{owner}/{repo}/contents/LICENSE" -q '.content' | base64 -d | head -5
Identify skills by looking for skills/*/SKILL.md paths in the tree. Also check for commands/, agents/, and other plugin components that may need to come along.
Before importing, verify the source repository has an acceptable open-source license.
Allowed licenses (compatible with redistribution):
Blocked licenses (require user confirmation):
Check using the GitHub API:
gh api "repos/{owner}/{repo}" -q '.license.spdx_id'
If the license is blocked or missing, inform the user and ask whether to proceed. Do not import without explicit confirmation.
Also check individual skill files for per-skill license fields in frontmatter (e.g., license: MIT).
For the full compatibility matrix and attribution requirements, see references/license-guide.md.
Present the full list of discovered skills to the user with a summary table:
| # | Skill Name | Description (short) |
|---|------------|---------------------|
| 1 | skill-a | Does X |
| 2 | skill-b | Does Y |
Ask the user which skills to import, or whether to import all. Also identify skills that should be excluded — typically framework-specific meta skills (e.g., routers, skill creators, dynamic loaders) that depend on the source project's infrastructure.
Decide whether to create a new plugin or merge into an existing one.
Check existing plugins:
ls plugins/
Merge criteria — merge into an existing plugin when:
rust-dev)--plugin <name>Create new plugin when:
--new-plugin <name>If unclear, ask the user:
"These skills could fit into the existing
{plugin}plugin or become a new plugin. Which do you prefer?"
When creating a new plugin, use the plugin-dev:create-plugin skill by invoking the Skill tool:
Skill(skill: "plugin-dev:create-plugin", args: "<plugin-name>")
For each selected skill, fetch the SKILL.md and any supporting files.
# Fetch SKILL.md
gh api "repos/{owner}/{repo}/contents/skills/{skill-name}/SKILL.md" -q '.content' | base64 -d
# Check for supporting directories
gh api "repos/{owner}/{repo}/contents/skills/{skill-name}" -q '.[].name'
# Fetch references, examples, scripts, assets if they exist
gh api "repos/{owner}/{repo}/contents/skills/{skill-name}/references" -q '.[].name'
Write each skill to plugins/{plugin-name}/skills/{skill-name}/SKILL.md. Preserve the original content exactly — do not modify skill bodies.
For supporting files (references/, examples/, scripts/, assets/), fetch and write them too.
Use parallel Agent calls to fetch multiple skills simultaneously for speed.
After importing, update (or create) the plugin README with:
/plugin install {plugin-name}@jylhis-pluginsExample Sources section:
## Sources
Skills are sourced from:
- [{owner}/{repo}](https://github.com/{owner}/{repo}) — {count} skills by {author} ({license})
## License
Skills retain the licenses of their original sources. See the repositories above.
When merging into a plugin that already has sources, append to the existing Sources list rather than replacing it.
If a new plugin was created, add it to .claude-plugin/marketplace.json:
{
"name": "{plugin-name}",
"source": "./plugins/{plugin-name}",
"description": "{description}",
"version": "1.0.0",
"tags": [...],
"category": "development"
}
Read the current marketplace.json first and append the new entry to the plugins array.
After importing, run the skill-reviewer agent on a sample of imported skills (at least 3, or all if fewer than 5):
Agent(subagent_type: "plugin-dev:skill-reviewer", prompt: "Review the skill at plugins/{plugin}/skills/{skill}/SKILL.md")
Also run the plugin-validator agent:
Agent(subagent_type: "plugin-dev:plugin-validator", prompt: "Validate the plugin at plugins/{plugin}/")
Report any issues found and offer to fix them.
references/license-guide.md — Detailed license compatibility rules and edge cases