Skyll provides three interfaces: a Python client, a REST API, and an MCP server.
All interfaces return a ranked list of skills with relevance scores (0-100), giving agents and developers multiple options to choose from. This enables dynamic filtering, custom selection logic, or letting agents pick based on context.
The recommended way to use Skyll in Python agents. Uses the hosted API by default.
pip install skyllfrom skyll import Skyll
async with Skyll() as client:
# Search for skills
skills = await client.search("react performance", limit=5)
for skill in skills:
print(f"{skill.title}: {skill.description}")
print(skill.content) # Full SKILL.md content| Method | Description |
|---|---|
search(query, limit=10, include_content=True, include_references=False) |
Search for skills |
get(source, skill_id, include_references=False) |
Get a specific skill |
health() |
Check API health status |
from skyll import Skyll
async with Skyll() as client:
# Basic search
skills = await client.search("react performance", limit=5)
# Get a specific skill
skill = await client.get("anthropics/skills", "skill-creator")
# Include reference files
skills = await client.search("react native", include_references=True)
for skill in skills:
for ref in skill.references:
print(f"Reference: {ref.name}")
# Health check
status = await client.health()
print(f"API status: {status['status']}")async with Skyll(base_url="http://localhost:8000") as client:
skills = await client.search("testing")from skyll import search_skills
# Simple function for quick searches
skills = await search_skills("python testing", limit=5)The hosted API is available at https://api.skyll.app. For self-hosted, replace with your server URL.
| Method | Endpoint | Description |
|---|---|---|
| GET | /search?q={query} |
Search skills |
| POST | /search |
Search skills (JSON body) |
| GET | /skill/{name} |
Get skill by name (latest version) |
| GET | /skills/{source}/{skill_id} |
Get specific skill by source/ID |
| POST | /mcp/ |
MCP server endpoint |
| GET | /health |
Health check |
| GET | /docs |
OpenAPI documentation |
| Parameter | Type | Default | Description |
|---|---|---|---|
q |
string | required | Search query |
limit |
int | 10 | Maximum results (1-50) |
include_content |
bool | true | Fetch full SKILL.md content |
include_references |
bool | false | Include reference files |
# Basic search (hosted API)
curl "https://api.skyll.app/search?q=react+performance&limit=5"
# Include reference files
curl "https://api.skyll.app/search?q=react+native&limit=1&include_references=true"
# Get specific skill
curl "https://api.skyll.app/skills/anthropics/skills/skill-creator"
# POST search with JSON body
curl -X POST "https://api.skyll.app/search" \
-H "Content-Type: application/json" \
-d '{"query": "react performance", "limit": 5}'
# Health check
curl "https://api.skyll.app/health"The /skill/{name} endpoint fetches the latest version of a skill by name. Similar to npx skills add but for runtime context injection.
# Get by simple name (searches for best match)
curl "https://api.skyll.app/skill/react-best-practices"
# Get by full path (direct lookup)
curl "https://api.skyll.app/skill/vercel-labs/agent-skills/vercel-react-best-practices"
curl "https://api.skyll.app/skill/anthropics/skills/frontend-design"
# Include reference files
curl "https://api.skyll.app/skill/react-best-practices?include_references=true"This endpoint always fetches fresh content from GitHub, ensuring you have the latest version.
# Start your own server
uvicorn src.main:app --port 8000
# Then use localhost
curl "http://localhost:8000/search?q=react+performance&limit=5"
curl "http://localhost:8000/skill/react-best-practices"Interactive API docs: api.skyll.app/docs
Built with FastMCP - a framework for building MCP servers.
For Claude Desktop, Cursor, or other MCP clients, add to your configuration:
{
"mcpServers": {
"skyll": {
"url": "https://api.skyll.app/mcp"
}
}
}No installation required - the hosted server is always up-to-date.
| Tool | Description |
|---|---|
search_skills |
Search for skills by query |
add_skill |
Get a skill by name (like npx skills add) |
get_skill |
Get a specific skill by source and ID |
get_cache_stats |
Get cache hit/miss statistics |
search_skills:
query(string, required): Search querylimit(int, default 5): Maximum resultsinclude_references(bool, default false): Include reference files
add_skill:
name(string, required): Skill name or full path. Supports:- Simple name:
"react-best-practices"(searches and returns top match) - Full path:
"vercel-labs/agent-skills/vercel-react-best-practices"
- Simple name:
include_references(bool, default false): Include reference files
get_skill:
source(string, required): Repository inowner/repoformatskill_id(string, required): Skill identifierinclude_references(bool, default false): Include reference files
{
"name": "add_skill",
"arguments": {
"name": "react-best-practices"
}
}{
"name": "search_skills",
"arguments": {
"query": "react performance optimization",
"limit": 5,
"include_references": true
}
}If you prefer to run your own MCP server:
{
"mcpServers": {
"skyll": {
"command": "/path/to/skyll/venv/bin/python",
"args": ["-m", "src.mcp_server"],
"cwd": "/path/to/skyll"
}
}
}stdio (default, for Claude Desktop and Cursor):
python -m src.mcp_serverHTTP (for web clients and hosted deployments):
python -m src.mcp_server --transport http --port 8080SSE (legacy, for older web clients):
python -m src.mcp_server --transport sse --port 8080{
"query": "react performance",
"count": 1,
"skills": [
{
"id": "react-best-practices",
"title": "React Best Practices",
"description": "Performance optimization for React and Next.js...",
"version": "1.0.0",
"allowed_tools": ["Bash", "Read", "Write"],
"source": "vercel-labs/agent-skills",
"refs": {
"skills_sh": "https://skills.sh/...",
"github": "https://github.com/...",
"raw": "https://raw.githubusercontent.com/..."
},
"install_count": 1250,
"relevance_score": 85.5,
"content": "# React Best Practices\n\nFull markdown content...",
"references": [
{
"name": "flatlist-optimization.md",
"path": "references/flatlist-optimization.md",
"content": "Full reference content...",
"raw_url": "https://raw.githubusercontent.com/..."
}
],
"metadata": {}
}
]
}| Field | Type | Description |
|---|---|---|
id |
string | Unique skill identifier |
title |
string | Human-readable title |
description |
string | Skill description from YAML frontmatter |
version |
string | Skill version |
allowed_tools |
array | Tools the skill is allowed to use |
source |
string | GitHub repository (owner/repo) |
refs |
object | URLs for skills.sh, GitHub, and raw content |
install_count |
int | Number of installations from skills.sh |
relevance_score |
float | 0-100 relevance score (see Ranking) |
content |
string | Full SKILL.md markdown content |
references |
array | Additional reference files (when requested) |
metadata |
object | Additional metadata from YAML frontmatter |