Discovery API
Cross-catalog search and browse feeds.
Base URL: https://skillet.md/api/v1
Auth, errors, caching, pagination, and rate limits are in the API overview. Every endpoint here is also described in /openapi.json.
Endpoints
GET /search— Search skills, kits, and peopleGET /discover/feed— Read the public activity feed
GET /search
One query across every public object type. This is the right first call for "is there already a skill for X" — it ranks skills, kits, authors, and teams together.
Auth — none. This endpoint is anonymous. A bearer token with the read scope also works.
Operation ID — search
| Parameter | Description |
|---|---|
q string · query · required | The search query. An empty query returns no results. |
types string · query · optional | Comma-separated object types to include. Defaults to all of skills,kits,people. |
limit integer · query · optional | Maximum results per type. |
curl -s "https://skillet.md/api/v1/search?q=code%20review"
Returns ranked results grouped by type.
{
"skills": [
{
"author": "shadcn",
"slug": "shadcn",
"skill_id": "shadcn:shadcn",
"description": "Manages shadcn components and projects: adding, searching, fixing, and composing UI.",
"visibility": "public",
"latest_hash": "sha256:c57e3cc8688fe5f0956c8e91ee02d1ee97fb5b0e8115e2d6ca6447c1ade69686",
"version": 3,
"version_label": "1.2.0",
"install_count": 412,
"created_at": 1787163766,
"category": "frontend",
"signatureStatus": "verified",
"scanStatus": "clean",
"moderationStatus": "none",
"deprecated": false,
"used_by": [
"gtm"
],
"used_by_count": 12
}
],
"kits": [
{
"id": "…",
"owner": "…",
"slug": "…",
"name": "…",
"description": "…",
"skill_count": 0,
"subscriber_count": 0,
"category": "…"
}
],
"people": [
{
"handle": "…",
"name": "…",
"avatar_url": "https://skillet.md/…"
}
]
}
| Status | Meaning |
|---|---|
400 | The request was malformed (bad parameter, missing field). |
404 | No such resource, or it is not readable by this caller. |
429 | Rate limited. Retry after the window in Retry-After. |
GET /discover/feed
Registry-wide public activity — publishes, new kits, new profiles — newest first. Poll it to track what changed since a previous read.
Auth — none. This endpoint is anonymous. A bearer token with the read scope also works.
Operation ID — listActivity
| Parameter | Description |
|---|---|
limit integer · query · optional | Page size. Clamped server-side to 1-100. |
offset integer · query · optional | Zero-based offset into the result set. |
curl -s "https://skillet.md/api/v1/discover/feed"
Returns a page of public activity events.
{
"events": [
{
"kind": "…",
"actor": "…",
"skill_id": "…",
"kit_id": "…",
"created_at": 0
}
]
}
| Status | Meaning |
|---|---|
400 | The request was malformed (bad parameter, missing field). |
404 | No such resource, or it is not readable by this caller. |
429 | Rate limited. Retry after the window in Retry-After. |