license field before redistributing.
Quick start
Every endpoint is GET-only, JSON, no auth, CORS open. Hit any URL straight from a browser, curl, or an LLM tool-call:
curl https://claudskills.com/api/v1/skills?limit=5
curl https://claudskills.com/api/v1/skills/seo
curl https://claudskills.com/api/v1/categories
curl https://claudskills.com/api/v1/openapi.json
Or in JavaScript:
const r = await fetch('https://claudskills.com/api/v1/skills?category=engineering&limit=20');
const {data, next, total} = await r.json();
// data: array of Skill objects; next: URL for the next page (null if last)
Endpoints
{data, next, total, limit, offset}. Default limit 50, max 200.- limit
- 1–200, default 50
- offset
- 0-based
- category
- engineering, security, growth, sales, content, science, product, tools, ads, general
- tag
- e.g.
lang:python - daily_eligible
trueto filter to the daily-eligible bucket only
404 if not found.url field pointing at the category hub page./skills.tag, count, slug (URL-safe form for /tag/<slug>/ pages)./data/stats.json with API context.Skill schema
Every Skill object in API responses has this stable shape:
{
"slug": "seo",
"name": "SEO",
"description": "Run a broad SEO audit across…",
"category": "general",
"subcategory": "general-misc",
"tags": ["type:audit"],
"daily_eligible": false,
"featured": false,
"author": null,
"author_url": null,
"license": null,
"url": "https://claudskills.com/skills/seo/",
"og_image": "https://claudskills.com/og/seo.png"
}
Fields will only be added in v1 — never removed or renamed. Breaking changes will mount at /api/v2/ in parallel with v1 still running.
Caching & rate limits
There is no enforced per-key rate limit. The Worker is fronted by Cloudflare's edge cache with a 1-hour TTL, so even high-volume callers hit the upstream catalog rarely. The catalog itself only changes daily (01:00 local miner run; typically settled by ~05:00 local).
Every response carries Cache-Control: public, max-age=3600, s-maxage=3600. Please respect it on your end — repeating identical requests inside the TTL window is wasted bandwidth.
If you need to enumerate the full catalog (all ~69,000 skills), prefer the bulk dataset at github.com/claudskills/catalog-public — one daily-refreshed file in JSON, NDJSON, CSV, and Parquet formats, plus an Atom feed of recent additions. Cheaper, faster, and Git-versioned.
Related surfaces
The API is one of four programmatic surfaces over the same catalog:
- /api/v1/ — this REST API (what you're reading)
- catalog-public — daily bulk dataset (JSON, NDJSON, CSV, Parquet, Atom). CC BY 4.0. Best for full-catalog ingest.
- HuggingFace dataset — same data, parquet-native, suitable for LLM training and dataset tooling.
- /llms.txt — flat-text index optimised for LLM crawl ingestion. Top 500 indexed skills + tracked LLM citation queries.
Plus two browsing-flavoured embed surfaces:
- /embed/<slug>.js — one-line
<script>snippet that injects a styled skill card into any blog post or docs page. - /badge/<slug>.svg — shields.io-style SVG badge for skill authors to drop into their GitHub README.
License & attribution
The catalog data (what the API returns) is licensed CC BY 4.0 — free for any use including commercial, attribution required. The minimal attribution is a link to claudskills.com somewhere near where the data is displayed.
The per-skill SKILL.md content is the property of the original author and carries whatever license the author chose. Each Skill object's license field reflects what the upstream repo declares. If a skill's license is null we couldn't determine it — treat as restrictive until you check the upstream repository.
We do not require notification of API use, registration, or revenue share. If you build something interesting on top of the API, we'd love to hear about it: [email protected].
Versioning
The API is mounted at /api/v1/ with a stable contract — fields will only be added, never removed or renamed within v1. Breaking changes will mount at /api/v2/ in parallel. We will announce v2 at least 6 months before sunsetting v1, with a clear migration guide and dual-running period.
FAQ
No. Read-only and CORS-open by design. Anyone can call it from the browser, curl, a server, or an LLM tool-call without authentication. Please cache responses — the upstream catalog only refreshes daily and the worker is edge-cached for an hour.
No enforced per-key limit. The 1-hour edge cache makes the upstream catalog effectively immune to high-volume callers. If you need to enumerate the full catalog, prefer the bulk dataset at catalog-public.
Yes — catalog data is CC BY 4.0. Attribute ClaudSkills with a link to claudskills.com somewhere near where the data appears. Per-skill SKILL.md license is separate; check each skill's license field before redistributing the SKILL.md content itself.
Daily at 01:00 local time. Typically settled by ~05:00 local. New skills land on the API the same day they're discovered. The /api/v1/stats endpoint surfaces the current schedule and last refresh timestamp.
The API surface is small enough that hand-written fetch calls are usually clearer than an SDK. If you maintain a Claude Code skill that wraps this API as a tool-call, ping us — we'll link it from the related-surfaces section.
Not in v1. The daily refresh cadence makes polling cheap (the bulk dataset's Atom feed is the most cost-effective push proxy — subscribe to it for new-skill notifications). If polling for new skills becomes a common need, we'll consider WebSub on a future major version.