From skill-fetch
Searches 9 skill registries like SkillsMP, GitHub, and Anthropic Skills for AI agent skills, scores with quality/security labels, paginates, and installs locally/globally. Use on 'fetch skill' requests or missing external skill hooks.
npx claudepluginhub girofu/skill-fetch --plugin skill-fetchThis skill is limited to using the following tools:
Search, score, and install agent skills from multiple registries in parallel.
Implements Clean Architecture in Android and Kotlin Multiplatform projects: module layouts, dependency rules, UseCases, Repositories, domain models, and data layers with Room, SQLDelight, Ktor.
Enforces code quality on file edits via Plankton hooks: auto-formats, lints, Claude-powered fixes with model tiering, config protection, and legacy package manager blocks.
Enforces C++ Core Guidelines for writing, reviewing, and refactoring modern C++ code (C++17+), promoting RAII, immutability, type safety, and idiomatic practices.
Share bugs, ideas, or general feedback.
Search, score, and install agent skills from multiple registries in parallel.
skillsmp_get_skill_content to preview before deciding — search descriptions are sufficient. Only use as a fallback if installation fails.This skill works across 6+ AI coding agents (Claude Code, Cursor, Codex, Gemini CLI, Windsurf, Amp). Tool names adapt automatically. See references/platform-adapters.md for the full mapping table.
Before searching, verify that the SkillsMP MCP server is available:
ToolSearch("skillsmp") to load any deferred SkillsMP MCP tools. In Claude Code, MCP tools are often deferred (not loaded until requested) and have namespaced names like mcp__skillsmp__skillsmp_search. The ToolSearch call resolves these.skillsmp_* or mcp__skillsmp__* tool is now availableclaude mcp add --scope user skillsmp -- npx -y skillsmp-mcp-serverTool name note: SkillsMP tools may appear with MCP namespace prefix:
mcp__skillsmp__skillsmp_searchinstead ofskillsmp_search. Both forms work — use whichever is available.
Non-Claude Code agents: Skip this step. SkillsMP tools are Claude Code-specific.
Sources 8-9 require API keys. Read the config file to determine availability:
~/.claude/skills/.fetch-config.json NOW — do not assume keys are absent without reading the file{
"SKILLHUB_API_KEY": "sk-sh-...",
"SKILLS_DIRECTORY_API_KEY": "sk_live_..."
}
HAS_SKILLHUB_KEY: true/falseHAS_SKILLS_DIR_KEY: true/false⚠️ COMMON FAILURE MODE: LLM skips reading the config file and assumes "no key". This causes Sources 8-9 to be incorrectly skipped even when keys ARE configured. Always read the file first.
URL mode: If $ARGUMENTS is a URL (starts with https://github.com/... or any https://), skip directly to Step 3 installation flow.
Search mode:
$ARGUMENTS: Use directly as search termsSuggested search terms from hook output, otherwise extract 2-3 queries from task context⚠️ MANDATORY: You MUST fire ALL 9 sources. Do NOT proceed to scoring until all 9 sources have returned or failed.
⚠️ COMMON FAILURE MODE: LLM fires sources 1-2 (SkillsMP), gets results, then skips sources 3-9. This is WRONG. SkillsMP results alone are insufficient — GitHub, ClawhHub, skills.sh, and PolySkill contain different skills not indexed by SkillsMP.
⚠️ EXECUTION ORDER: You MUST complete BOTH Step 2a AND Step 2b before proceeding to Step 2.5. Step 2a alone is NOT sufficient.
| # | Source | Tool Call | Fallback |
|---|---|---|---|
| 1 | SkillsMP AI | skillsmp_ai_search × 3 query variants (parallel) | Skip if MCP unavailable |
| 2 | SkillsMP keyword | skillsmp_search(query) | Skip if MCP unavailable |
⚠️ You MUST fire these sources even if Step 2a already returned results. These sources contain skills NOT in SkillsMP.
| # | Source | Tool Call | Fallback |
|---|---|---|---|
| 3 | GitHub repos | gh search repos "{query}" --json name,description,url,stargazersCount,updatedAt --limit 5 --sort stars (do NOT append "skill SKILL.md") | gh search code "{query}" --filename SKILL.md --limit 5 |
| 4 | Anthropic Skills | gh search code "{query}" --repo anthropics/skills --filename SKILL.md --limit 5 | gh api tree fallback |
| 5 | ClawhHub | npx -y clawhub search "{query}" | Skip on failure |
| 6 | skills.sh | WebFetch("https://skills.sh/api/search?q={query}&limit=5") | curl -s via Bash |
| 7 | PolySkill | npx -y @polyskill/cli search "{single_keyword}" --limit 5 (extract most specific single keyword from query — multi-word queries return 0) | Skip on failure (no REST API) |
| 8 | SkillHub | If HAS_SKILLHUB_KEY = true (from Step 0.5): bash {SKILL_BASE_DIR}/scripts/fetch-skillhub.sh "{query}". If false: npx -y @skill-hub/cli search "{query}" --limit 5 (timeout: 10000) | CLI fallback on failure |
| 9 | Skills Directory | If HAS_SKILLS_DIR_KEY = true (from Step 0.5): bash {SKILL_BASE_DIR}/scripts/fetch-skills-directory.sh "{query}". If false: skip. Never use curl directly or WebFetch. | Skip only if key is confirmed absent in Step 0.5 |
⚠️ Sources 8-9 REQUIRE Step 0.5 to have been executed. If Step 0.5 was skipped, go back and read
~/.claude/skills/.fetch-config.jsonNOW before marking Sources 8-9 as skipped.{SKILL_BASE_DIR}= the base directory of this skill (shown at the top when skill loads).
See
references/search-sources.mdfor detailed parameters, response formats, query variant examples, and curl fallback commands.
⚠️ POST-SEARCH CHECKLIST (mandatory before proceeding to Step 2.5):
Before scoring, output this checklist with actual status for EVERY source:
Step 0.5 config: HAS_SKILLHUB_KEY={true/false} HAS_SKILLS_DIR_KEY={true/false}
Sources queried: [1] SkillsMP AI ✅ [2] SkillsMP KW ✅ [3] GitHub ✅/❌ [4] Anthropic ✅/❌ [5] ClawhHub ✅/❌ [6] skills.sh ✅/❌ [7] PolySkill ✅/❌ [8] SkillHub ✅/❌ [9] Skills Dir ✅/❌
Validation rules — go back and fix before proceeding:
HAS_SKILLHUB_KEY=true but [8] is ❌ → execute bash {SKILL_BASE_DIR}/scripts/fetch-skillhub.sh NOWHAS_SKILLS_DIR_KEY=true but [9] is ❌ → execute bash {SKILL_BASE_DIR}/scripts/fetch-skills-directory.sh NOW~/.claude/skills/.fetch-config.json NOW, then re-evaluate sources 8-9After ALL sources return → deduplicate (see references/search-sources.md) → proceed to Step 2.5.
Round strategy (max 5 rounds): The "≥1 result → stop" rule applies to rounds, not individual sources. Within a single round, ALL 9 sources must be queried. Only if ALL 9 sources return 0 results in a round should you proceed to the next round with broader keywords. If any source returns ≥1 result in a round, proceed to scoring (do NOT start another round).
Calculate a quality score (0-100) for each deduplicated result. See references/quality-signals.md for details.
Scoring formula: Total = Relevance(0-40) + Freshness(0-25) + Community(0-20) + Trust(0-15) + External Bonus(0-5)
Supplementary lookup: For the top 5 results, use gh api repos/{owner}/{repo} --jq '{pushed_at,stargazers_count}' to get update time and GitHub stars. Skip lookup for high-star (≥50) results with precisely matching descriptions. Maximum 3 gh api calls.
Grade labels: 🟢 85+ Strongly Recommended | 🟢 70-84 Recommended | 🟡 55-69 Worth Considering | 🟡 40-54 Marginal | 🔴 <40 Not Recommended
See references/installation-guide.md for the complete installation workflow.
Quick reference — flow:
c for next page, skip to end)scripts/fetch-skill-bundle.sh for GitHub URLs.~/.claude/skills/.fetch-metadata.json⚠️ Critical: When installing from GitHub, the skill is its entire directory —
SKILL.mdplusreferences/,scripts/,assets/,templates/,prompts/,data/, etc. Downloading onlySKILL.mdwill produce a broken install for any skill that delegates to those files. Always fetch the complete bundle.
An installed skill is a directory, not a single SKILL.md. Many skills split their content across subdirectories — references/ (docs), scripts/ (helpers), assets/, templates/, prompts/, data/, examples/, etc. If you only read SKILL.md you may miss instructions the skill author expects you to load on demand.
{install-path}/{skill-name}/**/*.bash scripts/foo.sh, See references/bar.md, Load assets/template.json) and those files are missing, the install is incomplete — re-run the GitHub bundle fetch (see references/installation-guide.md §3d).references/ — the relevant file may live under prompts/, templates/, or another subdir.After completion, output: External skill installed successfully: {skill-name}
External skill installed successfully: {name}External skill fetch: user chose to skip installation.Rationalization Table and Red Flags are in
references/interaction-patterns.md. Consult when rationalizing skipping steps.
references/interaction-patterns.md — Output templates, user reply handling, security reviewreferences/quality-signals.md — Quality assessment dimensions, lookup methods, ranking algorithmreferences/search-sources.md — Source-specific commands, error handling, deduplication rulesreferences/platform-adapters.md — Cross-platform tool mapping, installation paths, fallback strategiesreferences/installation-guide.md — Complete Step 3 installation workflow (3a-3g)references/local-index.md — Local skill/plugin scan implementation for pre-search deduplicationscripts/fetch-skillhub.sh — SkillHub API search (reads key from ~/.claude/skills/.fetch-config.json)scripts/fetch-skills-directory.sh — Skills Directory API search (reads key from config)scripts/fetch-skill-bundle.sh — Download a complete skill bundle (SKILL.md + all sibling files/subdirs) from any GitHub blob/tree/raw URL, preserving directory layout