Skills Service | Kamiwaza Docs

This is documentation for Kamiwaza 1.0.1, which is no longer actively maintained. For the current GA release, see 1.0.1.

Version: 1.0.1

Quick Start

from kamiwaza_sdk import KamiwazaClient

from kamiwaza_sdk.schemas.skills import SkillLibraryUpdateRequest

client = KamiwazaClient(base_url="https://kamiwaza.test/api")

# ... authenticate ...

# Browse the library

skills = client.skills.list_skills(status="published", page_size=20)

for item in skills.items:
    
    print(item.name, item.category, item.tags)

# Import a new draft skill package

with open("pdf-generator.zip", "rb") as handle:
    
    created = client.skills.import_skill_package(
        
        filename="pdf-generator.zip",
        
        file_content=handle,
    )

# Publish the imported skill

published = client.skills.update_skill_metadata(
    
    created.id,
    SkillLibraryUpdateRequest(status="published"),
)

# Download the published package bytes

download = client.skills.download_skill_package(published.id)

print(download.filename, len(download.content))

Methods

list_skills(...) -> SkillLibraryListResponse

List skills visible to the current caller.

skills = client.skills.list_skills(
    
    q="pdf",
    category="export",
    tag="reporting",
    status="published",
    page=1,
    page_size=50,
)

Notes:

get_skill(skill_id) -> SkillLibraryDetailResponse

Fetch detail for a single skill.

detail = client.skills.get_skill("5b7f0d58-0dbf-4786-9d7f-8a815bb1a8a8")

print(detail.display_name)

print(detail.package_summary.entries)

import_skill_package(...) -> SkillLibraryDetailResponse

Create a new draft skill by uploading an Agent Skills-compatible zip package.

created = client.skills.import_skill_package(
    
    filename="chart-generator.zip",
    file_content=package_bytes,
)

assert created.status == "draft"

update_skill_metadata(skill_id, update) -> SkillLibraryDetailResponse

Update mutable metadata for a skill.

updated = client.skills.update_skill_metadata(
    
    created.id,
    SkillLibraryUpdateRequest(
        status="published",
        metadata={"tags": ["charts", "export"]},
    ),
)

Mutable fields currently supported:

download_skill_package(skill_id) -> SkillPackageDownload

Download the published package for a skill.

download = client.skills.download_skill_package(skill_id)

with open(download.filename, "wb") as handle:
    
    handle.write(download.content)

export_skill_package(skill_id) -> SkillPackageDownload

Export the current skill package for operator/admin workflows.

exported = client.skills.export_skill_package(skill_id)

print(exported.filename)

export_skills_bundle(skill_ids) -> SkillPackageDownload

Export one or more skill packages as a single zip bundle.

bundle = client.skills.export_skills_bundle([first_skill_id, second_skill_id])

print(bundle.filename)  # skills-export.zip

delete_skill(skill_id) -> bool

Soft-delete a skill.

client.skills.delete_skill(skill_id)

Returns True on success and raises NotFoundError if the skill does not exist.

Schemas

Common models live in kamiwaza_sdk.schemas.skills:

All response models allow extra fields so the SDK stays forward-compatible with backend additions.