Skip to main content
SkillPlus

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

query gives a binary answer: is there a report, or not.

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":
    print(result.report.verdict)  # "safe" | "medium" | "high" | "unknown" — UI labels: Safe / Caution / High Risk / Unrated
else:
    print("no report yet", "(scan in progress)" if result.scanning else "")

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

The three integration patterns

1. Show a report (frontend page) — pure read, instant:

result = client.query(url)          # found | not_found, never blocks

2. Scan in the background (batch pipelines) — fire-and-forget, or wait:

ack = client.scan(url)              # returns immediately: ack.accepted / ack.scanning
report = client.scan(url, wait=True)   # blocks until the report completes, returns it

3. Query-and-scan (skill detail pages) — if it was never scanned, scan it:

result = client.query(url, scan_if_missing=True)   # triggers a scan, still returns immediately
result = client.query(url, wait=True)              # scans if needed AND waits for the report

wait=True implies scan_if_missing; a failing scan raises SkillPlusError (errors travel on the exception channel, never as a status value).

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
)

Waiting calls accept wait_interval (default 5 s) and wait_timeout (default 600 s).

Context manager

from skillplus import SkillPlus

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

Methods

Method Use case
query(url, ...) Binary check: found (report attached) or not_found. Options: scan_if_missing, wait.
scan(url, ...) Trigger a scan: fire-and-forget ack, or wait=True for the finished report. force=True re-scans fresh reports.
get_report(scan_id) Retrieve a report by id: 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

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.2.1.tar.gz (11.3 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.2.1-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: skillplus-0.2.1.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for skillplus-0.2.1.tar.gz
Algorithm Hash digest
SHA256 6b3adbce6bbd69e7bcc41a941edd7e55f43d13dde7af8c8e5b007a0d2b3b37d6
MD5 6b5b10ea05c85091db76c8a461f82fa8
BLAKE2b-256 c1db8c6023d6290da49b659930ca0be27bec03f3b415cd328e85ffebc5df58e1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skillplus-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for skillplus-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7d629878887aace4775549777fdd3bd8443c1dc44a277c05f903f517acbd38db
MD5 8522281ea4a28a28a71c4bb6fa7bc8be
BLAKE2b-256 864fa9ddae0f4c82f5e859d3d8db01718fe482331804cfe262c9e2237d356cc4

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

This release

0.2.1 This release

2 files

0.2.0

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page