Skip to content

SkillsMP client

The SkillsMP client provides a typed interface for searching the SkillsMP registry. Discover a selected repository through a caller-owned RepositoryDiscoveryClient.

from skilly.skillsmp import ClientSettings, SkillsMp, SkillsMpSearchQuery

client = SkillsMp(
    settings=ClientSettings(
        base_url="https://skillsmp.com/api/v1",
    )
)

result = client.search(SkillsMpSearchQuery(text="python", limit=5))
for skill in result.data.skills:
    print(skill.name, skill.repository_url)

ClientSettings

Field Type Description
base_url str \| None SkillsMP API base URL.
api_key str \| None API key for authenticated requests.
proxy str \| None Proxy URL for API requests.

SkillsMp (synchronous)

client = SkillsMp(settings=ClientSettings(...))

# Search for skills
result: SkillsMpSearchResult = client.search("python")
result: SkillsMpSearchResult = client.search(
    SkillsMpSearchQuery(text="python", limit=10, page=1)
)

# AI-powered search
result: SkillsMpAiSearchResult = client.ai_search("code review skills")

# Discover through the provider-neutral repository API. The application
# supplies the transport that enforces its network policy.
from skilly import RepositoryDiscoveryClient

skills = RepositoryDiscoveryClient(application_transport).discover(
    result.data.skills[0].repository_url
)

AsyncSkillsMp

Same interface as SkillsMp but all methods are async, delegating to the synchronous client via asyncio.to_thread.

from skilly.skillsmp import AsyncSkillsMp

client = AsyncSkillsMp(settings=ClientSettings(...))
result = await client.search("python")

SkillsMpSearchQuery

Field Type Description
text str Search text.
page int \| None Page number for pagination.
limit int \| None Results per page.
sort_by str \| None Sort field.
category str \| None Filter by category.
occupation str \| None Filter by occupation.

SkillsMpSkill

Field Type Description
id str Unique skill identifier.
name str Display name.
author str Author name.
description str Description text.
repository_url str URL used with provider-neutral repository discovery.
skill_url str URL to the skill on SkillsMP.
stars int \| None Star count.
updated_at str \| int \| None Last update timestamp.

Result types

SkillsMpSearchResult

@dataclass(frozen=True)
class SkillsMpSearchResult:
    success: bool
    data: SkillsMpSearchData
    meta: SkillsMpMeta | None = None

SkillsMpSearchData

@dataclass(frozen=True)
class SkillsMpSearchData:
    skills: list[SkillsMpSkill]
    pagination: SkillsMpPagination
    filters: SkillsMpFilters

SkillsMpAiSearchResult

@dataclass(frozen=True)
class SkillsMpAiSearchResult:
    success: bool
    data: SkillsMpAiSearchData
    meta: SkillsMpMeta | None = None

SkillsMpAiSearchData

@dataclass(frozen=True)
class SkillsMpAiSearchData:
    skills: list[SkillsMpSkill]
    results: list[SkillsMpSkill]