Skills Directory API
Search secure Claude skills and agent skills programmatically.
Authentication
All API requests require an API key. Pro members get a 1,000-a-day key from their membership page. Include it in your request headers:
# Using Authorization header curl -H "Authorization: Bearer sk_live_your_key_here" \ https://www.skillsdirectory.com/api/v1/skills # Using x-api-key header curl -H "x-api-key: sk_live_your_key_here" \ https://www.skillsdirectory.com/api/v1/skills
MCP server
Pro members can connect Claude Code to Skills Directory. Claude can then search skills, read a skill's grade and findings, scan the skill you're writing, and download ZIPs. Use your Pro key from your membership page:
claude mcp add --transport http skills-directory https://www.skillsdirectory.com/api/mcp --header "Authorization: Bearer YOUR_API_KEY"
Tools: search_skills, get_skill, scan_skill, audit_skills (check what you already have installed), download_skill, and my_library. Each tool call counts as one request against your daily limit.
Scan a skill in CI
POST /api/v1/scan grades a skill with the same rules as the directory and returns every finding with its line and a fix. Send a ZIP (zip), SKILL.md text (content), or a public GitHub link (url). Add fail_below=B and a worse grade returns 422, so the step fails. Pro keys only.
# .github/workflows/skill-scan.yml
on: pull_request
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cd skills && zip -qr ../skill.zip my-skill
- run: >
curl -sf -H "Authorization: Bearer ${{ secrets.SKILLS_DIRECTORY_KEY }}"
-F zip=@skill.zip "https://www.skillsdirectory.com/api/v1/scan?fail_below=B"A ZIP or repo with several skills returns 409 with their folders. Pass folder=path/to/skill for one, or folder=* to grade them all (then fail_below applies to the worst).
Rate Limits
Rate limits reset daily at midnight UTC. Every response includes rate limit headers:
X-RateLimit-RemainingRequests left todayX-RateLimit-TierYour current tierEndpoints
GET /api/v1/skills
List skills with filtering, sorting, and pagination.
qstringSearch by name or descriptioncategorystringFilter by category slugsortstringrecent | votes | starslimitintegerResults per page (max 100)offsetintegerPagination offsetverifiedbooleanFilter verified skills onlysecurityGradestringMax grade (A-F, default: A, 'all' to disable)minSecurityScoreintegerMinimum security score (0-100)GET /api/v1/skills/:slug
Get a single skill by its slug.
GET /api/v1/skills/searchPro+
Semantic search using AI embeddings. Requires Pro or Enterprise tier.
qstringSearch query (required)limitintegerMax results (default 20, max 100)categorystringFilter by categorythresholdfloatMin similarity (0-1, default 0.5)Each result includes _score (combined relevance) and _similarity (vector similarity) fields.
GET /api/v1/categories
List all skill categories.
GET /api/v1/stats
Get your API key usage statistics, including a 7-day history.
{
"data": {
"key": {
"prefix": "sk_live_abcd1234",
"name": "My Key",
"tier": "free",
"status": "active",
"createdAt": "2025-01-15T00:00:00.000Z"
},
"usage": {
"today": 42,
"remaining": 58,
"limit": 100,
"resetAt": "2025-02-12T00:00:00.000Z"
},
"history": [
{ "date": "2025-02-05", "requests": 87 },
{ "date": "2025-02-06", "requests": 64 }
]
}
}Response Format
All responses follow a consistent JSON structure:
{
"data": [ ... ],
"pagination": {
"page": 1,
"limit": 20,
"totalCount": 44000,
"totalPages": 2200,
"hasNextPage": true,
"hasPrevPage": false
},
"meta": {
"requestsRemaining": 99,
"tier": "free"
}
}Error Codes
MISSING_PARAMETERRequired parameter missingMISSING_API_KEYNo API key providedINVALID_API_KEYInvalid or expired keyTIER_RESTRICTEDEndpoint requires higher tierNOT_FOUNDResource not foundRATE_LIMIT_EXCEEDEDDaily limit reachedError responses use the format:
{
"error": {
"code": "NOT_FOUND",
"message": "Skill \"my-skill\" not found."
}
}Data Access by Tier
Higher tiers get access to more skill fields:
Security Scanning
Every skill in the directory is automatically scanned for security issues using 120 detection patterns across 11 threat categories.
Grade Scale
A90-100No significant issues foundB75-89Minor concerns, generally safeC60-74Some issues, review recommendedD40-59Significant concernsF0-39Critical security issues detectedDefault Filtering
The skills listing defaults to securityGrade=A. Pass securityGrade=all to see all grades. For full details about our scanning methodology, see the Security page.
Ready to get started?