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.
get_report_page_url(scan_id) The report page a person can read. The report_url field is the API endpoint and returns JSON — use this for links you show a human.

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.3.0.tar.gz (12.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.3.0-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for skillplus-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5c53008b2748938cbdfc6687306e0ecf0d60223c904bc2221a3b9d08a10aa7be
MD5 26adc3f1ba4d821e530139b4d8a9f8df
BLAKE2b-256 7f19de80c8056dbc6e1e5fe10eefb838fb2eb950f5211e8659ca0182d59b9ed2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skillplus-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 11.0 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.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0c51e18c0c97a17521fc7b60a3dd0832df65000035708882f82ad71b4c2fb724
MD5 793dbba132a6080165f1ed3018d9a495
BLAKE2b-256 5df08c8127b7aaceecea8ce3ef77fd4a0742fa23bb16f3ebbc88495892d41e89

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 files

0.2.1

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