SkillKit

Python Client

Async Python SDK for skill discovery

Python Client

Not everything runs on Node. The skillkit-client package gives Python apps the same skill discovery capabilities as the REST API — async, typed, and ready to go.

Install

pip install skillkit-client

Requires Python 3.10+.

Quick start

from skillkit import SkillKitClient

async with SkillKitClient() as client:
    results = await client.search("react performance", limit=5)
    for skill in results.skills:
        print(f"{skill.name}: {skill.description}")

The client connects to http://localhost:3737 by default. Make sure the API server is running:

skillkit serve

Search with filters

results = await client.search_with_filters(
    "authentication",
    tags=["security"],
    category="backend",
    limit=10,
)

Get a specific skill

skill = await client.get_skill("anthropics/skills", "pdf-processing")
print(skill.name, skill.description, skill.tags)
trending = await client.trending(limit=10)
categories = await client.categories()

for skill in trending:
    print(f"{skill.name} ({skill.source})")

for cat in categories:
    print(f"{cat.name}: {cat.count} skills")

Health and cache

health = await client.health()
print(f"v{health.version}{health.skill_count} skills loaded")

stats = await client.cache_stats()
print(f"Cache hit rate: {stats.hit_rate:.0%}")

Connect to a remote server

async with SkillKitClient("https://my-server.example.com:3737") as client:
    results = await client.search("deployment")

Models

The client returns typed dataclasses:

Skill(name, source, description, tags, category, content, score)
SearchResponse(skills, total, query, limit)
HealthResponse(status, version, skill_count, uptime)
Category(name, count)
CacheStats(hits, misses, size, max_size, hit_rate)

All fields except name and source on Skill are optional — they depend on what the server returns and whether you requested include_content.

Prerequisites

The Python client talks to the SkillKit REST API. You need a running server:

skillkit serve

Then run your Python script in another terminal. The client handles connection management, retries, and cleanup automatically when used with async with.

On this page