Skip to main content

Official Python SDK for SkillPlus

Project description

SkillPlus Python SDK

Official Python SDK for the hosted SkillPlus API.

SkillPlus provides security intelligence for AI skills and agent-facing software, helping developers, teams, and platforms scan, understand, and trust AI skills before installation, approval, or integration.

Install

pip install skillplus

Requires Python 3.10+.

Basic usage

from skillplus import SkillPlus

client = SkillPlus(api_key="skp_...")

result = client.query("https://www.skills.sh/vercel-labs/skills/find-skills")
# GitHub repositories work the same way: "https://github.com/owner/repo"

if result.status == "found" and result.report:
    print(result.report.verdict)  # "safe" | "medium" | "high" | "unknown"

Prefer verdict over the legacy rating field — it folds historical values onto the current three-tier scale (UI labels: safe→Safe, medium→Caution, high→High Risk, unknown→Unrated).

One call that always ends with a report

When you just want the final answer — scanning first if the skill has never been seen — use the wait helper. It polls internally and returns the completed report:

report = client.wait_for_report("https://www.skills.sh/vercel-labs/skills/find-skills")

print(report.verdict)
print(report.summary.total_issues)
if report.supply_chain:
    print(report.supply_chain.blacklist_hits)  # poisoned-dependency hits

Advanced options

For repositories containing many skills, or to queue a scan automatically when no report exists yet:

result = client.query(
    "https://github.com/owner/repo",       # multi-skill repos are usually on GitHub
    skill_path="skills/example",           # pick one skill in the repo
    scan_if_missing=True,                  # queue a scan if no report exists
)

Client options:

client = SkillPlus(
    api_key="skp_...",
    base_url="https://skillplus.xyz",  # staging / self-hosted override
    timeout=30.0,                      # per-request timeout (seconds)
    max_retries=2,                     # retries on 429/502/503, honoring Retry-After
)

Context manager

from skillplus import SkillPlus

with SkillPlus(api_key="skp_...") as client:
    result = client.scan("https://www.skills.sh/vercel-labs/skills/find-skills")
    print(result.status)

Methods

Method Use case
query(...) Check whether SkillPlus already has a report for a skill.
scan(...) Request a scan when a report is missing or when a fresh check is needed.
wait_for_report(...) Query-and-wait: scans if missing, polls, and returns the completed report.
get_report(scan_id) Retrieve structured report data: verdict, findings, AI audit, supply-chain snapshot.
get_badge(scan_id) Fetch the badge SVG for embedding.
get_badge_url(scan_id) Generate a badge URL for READMEs, marketplaces, or internal portals.

Error handling

from skillplus import SkillPlus, SkillPlusError

client = SkillPlus(api_key="skp_...")

try:
    result = client.query("https://www.skills.sh/vercel-labs/skills/find-skills")
except SkillPlusError as error:
    print(error.status_code)
    print(error.message)

Development

uv sync --extra dev
uv run pytest
uv build

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skillplus-0.1.1.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skillplus-0.1.1-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file skillplus-0.1.1.tar.gz.

File metadata

  • Download URL: skillplus-0.1.1.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for skillplus-0.1.1.tar.gz
Algorithm Hash digest
SHA256 118364b70cdcf8e7d8e4780a4cb5c10288c27b243aba66979f29baafcb0f60e9
MD5 c3955024ac137fe4b8dbc06a0dcd40ba
BLAKE2b-256 77d850d14e7decb9097a9dff9c879002c434ab092eed3bc16612b714ab671a7d

See more details on using hashes here.

File details

Details for the file skillplus-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: skillplus-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for skillplus-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b42378e3573f75a9d9414afa2d6adbe23be21d8968acb6e6cef3459ff46b59d2
MD5 e2d95ea35fcae3784b4a52dbcf0dcdea
BLAKE2b-256 f48884c55aa3532595d6066f26c1f8a92958590ddbbda6b91827a9af6147de43

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page