Find the best Claude Code Skills for any goal. Searches 117,000+ skills, scores quality with GitHub data, returns a ranked workflow plan.
SaferSkills independently audited skill-curator (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Discover the right Skills for any task from 117,000+ options, with quality verification powered by GitHub enrichment.
Unlike basic keyword search, every result is enriched with GitHub data and scored across 4 axes:
| Axis | Weight | What It Measures |
|---|---|---|
| Popularity | 25% | GitHub stars (logarithmic scale) |
| Freshness | 25% | Days since last push |
| Documentation | 35% | SKILL.md quality (frontmatter, description, examples) |
| License | 15% | Open-source license presence |
Required: Apify MCP configured in your Claude Code environment.
Add the following to your Claude Code MCP settings (~/.claude/settings.json or project-level .claude/settings.json):
{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server"],
"env": {
"APIFY_TOKEN": "apify_api_YOUR_TOKEN_HERE"
}
}
}
}After restarting, you can verify by asking Claude: "List available MCP tools". You should see mcp__apify__call_actor in the list.
/skill-curator [your goal]/skill-curator Build a REST API with authentication and deploy to AWS
/skill-curator 技術書を執筆してPDF出版したい
/skill-curator Analyze CSV data and create interactive visualizations
/skill-curator Set up a CI/CD pipeline for a monorepoEach search costs approximately $0.15 on your Apify account (Pay-Per-Event billing). A typical invocation runs 1–3 searches depending on goal complexity.
| Goal Complexity | Searches | Estimated Cost |
|---|---|---|
| Simple (single task) | 1 | ~$0.15 |
| Moderate (3-5 tasks) | 1–2 | ~$0.15–$0.30 |
| Complex (6+ tasks) | 2–3 | ~$0.30–$0.45 |
When the user invokes this skill with $ARGUMENTS, follow these steps precisely.
Before searching, confirm Apify MCP is available by checking that you have access to the mcp__apify__call_actor tool. If the tool is not available, inform the user:
Apify MCP is not configured. Please follow the setup instructions:
>
1. Get a free Apify API token at https://apify.com (Settings → Integrations) 2. Add the Apify MCP server to your Claude Code settings (see README for details) 3. Restart Claude Code
>
Need help? See: https://github.com/apify/actors-mcp-server
Do NOT proceed without mcp__apify__call_actor access.
Analyze the user's goal: $ARGUMENTS
Identify:
Based on the analysis, generate 1 to 3 search queries in English:
Guidelines for query generation:
includeAiSearch: true)For each query, call the Apify Actor using the mcp__apify__call_actor tool:
Parameters:
actorId: "C5SaxR8oWbctCy0Ai"input: JSON object with:query (string, required): The search querylimit (number, optional, default 10): Max results (1-20)includeAiSearch (boolean, optional, default false): Enable AI semantic search for better relevance (adds ~8s latency)minStars (number, optional, default 0): Minimum GitHub stars filterExample call:
mcp__apify__call_actor({
actorId: "C5SaxR8oWbctCy0Ai",
input: {
"query": "REST API authentication middleware",
"limit": 10,
"includeAiSearch": true,
"minStars": 0
}
})Cost optimization:
limit: 10limit: 10limit: 10-15includeAiSearch only when keyword results are likely insufficient (natural language queries, niche domains)If multiple searches are needed and they are independent, run them in parallel.
The Actor returns enriched results with this structure per item:
{
"name": "skill-name",
"author": "author-name",
"description": "...",
"githubUrl": "https://github.com/...",
"skillUrl": "https://skillsmp.com/...",
"qualityScore": {
"overall": 72,
"popularity": 65,
"freshness": 80,
"documentation": 75,
"license": 100
},
"repoMetadata": {
"stars": 234,
"forks": 12,
"openIssues": 3,
"license": "MIT",
"lastPush": "2026-01-15T...",
"topics": ["claude", "skill"]
},
"skillMdAnalysis": {
"hasFrontmatter": true,
"hasName": true,
"hasDescription": true,
"hasAllowedTools": true,
"bodyLength": 2450,
"hasExamples": true
},
"searchSource": "keyword"
}Processing:
author/name (keep the one with higher qualityScore.overall)qualityScore.overall descendingFor each task in the workflow, select the best skill:
Selection criteria (in order of priority):
qualityScore.overall is betterqualityScore.documentation ≥ 50 preferred (well-documented skills)qualityScore.freshness ≥ 60 preferred (actively maintained)anthropics (official) > well-known authors > othersQuality tiers:
CRITICAL: Language matching rule. Detect the language of the user's original prompt ($ARGUMENTS). The ENTIRE output — section headings, table headers, labels, and prose — MUST be written in that same language. Do NOT copy Japanese labels when the prompt is in English, and vice versa.
Below are two template variants. Use the one matching the detected language. For languages other than English or Japanese, follow the English template structure but translate all labels into the detected language.
#### Template A: English (use when prompt is in English)
[1-2 sentence summary of the recommended approach]
| # | Task | Recommended Skill | Quality | Stars | Reason | Depends |
|---|---|---|---|---|---|---|
| 1 | [task] | /[skill-name] | 🟢 85 | ⭐ N | [brief reason] | - |
| 2 | [task] | /[skill-name] | 🟡 62 | ⭐ N | [brief reason] | #1 |
| ... | ... | ... | ... | ... | ... | ... |
#### 1. [skill-name] — Quality: [score]/100
| Metric | Score | Details |
|---|---|---|
| Overall | [score]/100 | [tier emoji] |
| Popularity | [score]/100 | ⭐ [stars] stars |
| Freshness | [score]/100 | Last updated: [date] |
| Documentation | [score]/100 | [frontmatter/description/examples status] |
| License | [score]/100 | [license name or "None"] |
/[skill-name] [typical arguments][Repeat for each recommended skill]
| Task | Alternative Skill | Quality | Notes |
|---|---|---|---|
| [task] | /[alt-skill] | [score] | [when to use instead] |
| Item | Value |
|---|---|
| Searches | N |
| Search mode | Keyword / AI / Both |
| Results | N (after dedup) |
| Recommended | N skills |
| Est. cost | ~$X.XX |
#### Template B: Japanese (use when prompt is in Japanese)
[1-2 sentence summary of the recommended approach]
| # | タスク | 推奨Skill | Quality | Stars | 理由 | 依存 |
|---|---|---|---|---|---|---|
| 1 | [task] | /[skill-name] | 🟢 85 | ⭐ N | [brief reason] | - |
| 2 | [task] | /[skill-name] | 🟡 62 | ⭐ N | [brief reason] | #1 |
| ... | ... | ... | ... | ... | ... | ... |
#### 1. [skill-name] — Quality: [score]/100
| 指標 | スコア | 詳細 |
|---|---|---|
| Overall | [score]/100 | [tier emoji] |
| Popularity | [score]/100 | ⭐ [stars] stars |
| Freshness | [score]/100 | Last updated: [date] |
| Documentation | [score]/100 | [frontmatter/description/examples status] |
| License | [score]/100 | [license name or "None"] |
/[skill-name] [typical arguments][Repeat for each recommended skill]
| タスク | 代替Skill | Quality | 備考 |
|---|---|---|---|
| [task] | /[alt-skill] | [score] | [when to use instead] |
| 項目 | 値 |
|---|---|
| 検索回数 | N 回 |
| 検索方式 | Keyword / AI / Both |
| ヒット数 | N 件 (重複除外後) |
| 推薦Skill数 | N 件 |
| 推定コスト | ~$X.XX |
"mcp__apify__call_actor not available"
Actor errors?
No relevant results?
Unexpected quality scores?
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.