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+.

Quick start

One call that always ends with a completed report — scanning first if the skill has never been seen:

from skillplus import SkillPlus

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

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

print(report.verdict)  # "safe" | "medium" | "high" | "unknown" — UI labels: Safe / Caution / High Risk / Unrated
print(report.summary.total_issues)
if report.supply_chain:
    print(report.supply_chain.blacklist_hits)  # poisoned-dependency hits

Prefer verdict over the legacy rating field — it folds historical values onto the current three-tier scale.

Lower-level: check without waiting

query returns immediately with the current state (found / queued / running / not_found / failed) and never blocks:

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

if result.status == "found" and result.report:
    print(result.report.verdict)

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.2.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.2-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: skillplus-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 9a4543b220c0388aeb6a41dce88557ce6d77b35b6d9551badc2e2321d9d28869
MD5 5fb4a1439dce5dc4f342f9ab867d78d3
BLAKE2b-256 ae0fb0009d93d3cf102b4dfe899ff55a94d920c8befa78c1aaa668264234050a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skillplus-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 eb9546ace0791dcbe19483de401574d64165aa9a2be92ccbf5f5c65c3f9284d3
MD5 dc47f405b14b169dae929256ce8238ac
BLAKE2b-256 55ab587b0b410ebad2f7880cf86208292c41263fdee071885e668ffe55cd1a2d

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