skilly.
DEVELOPER API / V1

The skill index,
at your fingertips.

Build agent tooling on top of the Skilly catalog. Search what skills do, fetch complete instructions, and inspect separate security and static maturity assessments through one public API.

BASE URLhttps://skilly.sh API v1 · JSON over HTTPS
QUICKSTART

One request to start exploring.

Every endpoint is public and every response is JSON. Use the OpenAPI document to generate a typed client, or call the public search endpoint directly. Search supports broad q queries and targeted field parameters. Use type=official or type=community for upstream provenance; use /api/v1/skills/curated for Editor’s picks.

curlSEARCH
curl \
  "https://skilly.sh/api/v1/skills/search?q=typography&limit=10"

Rate limits are applied per requester IP at each edge destination. If you receive 429, wait for the interval in Retry-After before retrying.

ENDPOINTS

Everything you need to build on the index.

ALTERNATIVE SEARCH

Use the normal search URL.

For a lightweight option without the /api prefix, query the main directory directly. Add format=json or format=text when the response should be machine-readable.

NO API PREFIXJSON · TEXT
curl 'https://skilly.sh/?q=typography&format=json'

Use curl 'https://skilly.sh/?q=typography&format=text' for plain text, or omit format for the regular browser search. The API endpoint above remains the recommended integration surface.

SEARCH RESPONSES

Handle the result envelope consistently.

Search responses contain result summaries, including each skill’s canonical URL and install URL. Fetch the public skill detail endpoint when an integration needs the complete SKILL.md content.

200 · APPLICATION/JSON
{
  "data": [
    {
      "name": "frontend-design",
      "description": "...",
      "category": "Design",
      "source": "anthropics/skills",
      "url": "https://skilly.sh/anthropics/skills/frontend-design"
    }
  ],
  "query": "frontend",
  "searchType": "fuzzy",
  "count": 1,
  "durationMs": 3
}
Errors use { "error": "invalid_query", "message": "..." }. A missing query returns 400; search itself does not require authentication.
ERRORS

Predictable when something goes wrong.

Error responses use one stable shape so clients can handle failures consistently.

{
  "error": "invalid_query",
  "message": "Search query must be at least 2 characters."
}
400Invalid parameters
404Skill or audit not found
429Rate limit exceeded