Skill Store SDK
Python client for the Universal Skill Kit (USK) Skill Store API.
Zero external dependencies — uses Python stdlib only.
Install
pip install aiskillstore
Or copy the skillstore_sdk/ directory into your project.
Quick Start
from skillstore_sdk import SkillStore
store = SkillStore() # defaults to https://aiskillstore.io
# Search for skills
results = store.search(capability="web_search", min_trust="community")
for skill in results:
print(skill.name, skill.trust_level, skill.capabilities)
# Get full schema before installing
schema = store.schema(results[0].skill_id)
print(schema.call_example()) # {'query': 'Search query string'}
print(schema.permissions) # {'network': True, 'filesystem': False, ...}
print(schema.interface) # {'type': 'cli', 'call_pattern': 'stdin_stdout', ...}
# Download for your platform
path = store.download(results[0].skill_id, platform="OpenClaw", target_dir="./skills/")
print(f"Downloaded to {path}")
# One-liner: search + download
path = store.find_and_download("web_search", platform="ClaudeCode", target_dir="./skills/")
Authentication
Read operations (search, schema, download) require no authentication.
Upload requires an API key obtained from your Skill Store account:
store = SkillStore(api_key="sk_your_key_here")
# or via env var:
# export SKILLSTORE_API_KEY=sk_your_key_here
result = store.upload("./my-skill-1.0.0.skill")
print(result["vetting_report"]["status"])
Configuration
| Parameter | Env var | Default |
|---|---|---|
base_url |
SKILLSTORE_URL |
https://aiskillstore.io |
api_key |
SKILLSTORE_API_KEY |
(none) |
timeout |
— | 30 seconds |
store = SkillStore(
base_url="https://aiskillstore.io",
api_key="sk_...",
timeout=60,
)
API Reference
store.info() → dict
Returns service metadata including USK spec version and supported platforms.
store.search(...) → SearchResult
Search for skills by capability, keyword, platform, or trust level.
results = store.search(
capability="translation", # semantic capability tag
q="korean", # keyword search
platform="OpenClaw", # filter by platform
usk_v3=True, # only auto-convertible skills
trust="verified", # exact trust level
min_trust="community", # minimum trust level
limit=10, # max results (default 20, max 50)
)
# SearchResult is iterable
for skill in results:
print(skill) # <Skill my-skill v1.0.0 | verified [USK v3] ⚡>
store.schema(skill_id) → SkillSchema
Fetch the full USK schema for a skill. Use this to evaluate a skill before installing.
s = store.schema("abc123")
s.call_example() # minimal valid input dict
s.interface # {'type': 'cli', 'entry_point': 'main.py', ...}
s.input_schema # JSON Schema dict
s.output_schema # JSON Schema dict
s.permissions # {'network': bool, 'filesystem': bool, ...}
s.platform_compatibility # ['OpenClaw', 'ClaudeCode', 'CustomAgent']
store.download(skill_id, platform, target_dir, filename) → str
Download a skill package. Returns the absolute path to the saved file.
Supported platforms: "OpenClaw" | "ClaudeCode" | "CustomAgent" | "original"
store.upload(skill_file_path) → dict
Upload a .skill package. Requires api_key.
Returns {"status": ..., "skill_name": ..., "version_number": ..., "vetting_report": {...}}.
store.find_and_download(capability, platform, target_dir, trust) → str | None
Convenience: search by capability and download the top result. Returns None if no match.
Trust Levels
| Level | Meaning |
|---|---|
verified |
Admin-approved, manually reviewed |
community |
Auto-scan passed, community-trusted |
sandbox |
Unchecked — use with caution |
Supported Platforms
| Platform | Package Type |
|---|---|
OpenClaw |
openclaw_wrapper.py + openclaw_manifest.json |
ClaudeCode |
Markdown slash command + runner.py |
CustomAgent |
HTTP adapter (/invoke) + openapi.json |
original |
Original uploaded package |
USK v3 skills with can_auto_convert: true are automatically available for all platforms.
Agent Usage Pattern
Agents typically follow this discovery-evaluate-install flow:
from skillstore_sdk import SkillStore
store = SkillStore(base_url="https://aiskillstore.io")
# 1. Discover
results = store.search(capability="web_search", min_trust="community", usk_v3=True)
if not results:
raise RuntimeError("No web_search skill available")
# 2. Evaluate — check permissions before installing
top = results[0]
schema = store.schema(top.skill_id)
if schema.permissions.get("filesystem"):
raise RuntimeError("Skill requests filesystem access — not allowed")
# 3. Install
path = store.download(top.skill_id, platform="OpenClaw", target_dir="./skills/")
print(f"Installed: {path}")
Metadata
Release files for aiskillstore 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aiskillstore-1.0.0.tar.gz | 3.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aiskillstore-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.8 kB
Release files / aiskillstore-1.0.0.tar.gz
| Download URL | aiskillstore-1.0.0.tar.gz |
|---|---|
| Size | 3.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
159d564aaa467cc573699cb3b64b2eb8e12a90393daea0c60c71a2f33a2e2297
|
|
BLAKE2b-256 checksum How to use checksums |
de06d43cb4c228258bfc6f74af622ae05991ad90217a10bd97fa187cc94aeba8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / aiskillstore-1.0.0-py3-none-any.whl
| Download URL | aiskillstore-1.0.0-py3-none-any.whl |
|---|---|
| Size | 3.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
787a2eaceba5ceed90a81b370cf81555b5df22253da5c8a809bd36b7a26831ca
|
|
BLAKE2b-256 checksum How to use checksums |
53c605dc09ac20621fa7f927377abd9e66ce35e8794ded541a2ebd8756e37fc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|