Quickstart

Learn the recommended workflow for using the Skills Protocol through practical examples. This guide covers discovering, inspecting, and executing skills.

Bootstrap

When first connecting to a Skills Runtime, load the protocol guide to understand available tools:

import requests

def call_rpc(method, params=None):
    response = requests.post('http://localhost:8080/rpc', json={
        "jsonrpc": "2.0",
        "id": "1",
        "method": method,
        "params": params or {}
    })
    return response.json()["result"]

# First call: load the guide
guide = call_rpc("load_skills_protocol_guide")
print(guide["content"])

This returns the canonical Skills Protocol Guide, which provides instructions on using the 8 core tools.

Discover skills

List available skills, optionally filtering by namespace:

skills = call_rpc("list_skills", {
    "detail": "summary",
    "limit": 50
})

for skill in skills["skills"]:
    print(f"{skill['name']}: {skill['description']}")

Inspect a skill

Before executing a skill, retrieve its documentation:

skill_info = call_rpc("describe_skill", {
    "name": "salesforce.leads.sync",
    "detail": "summary"
})

print("Manifest:", skill_info["skill"]["manifest"])

Execute a skill

Once you understand the skill's requirements, execute it:

result = call_rpc("execute_skill", {
    "name": "salesforce.leads.sync",
    "args": {
        "sheet_blob": "blob:sheet-123",
        "env": "prod"
    },
    "input_blobs": ["blob:sheet-123"]
})

if result["status"] == "completed":
    print(f"Success: {result['summary']}")
    print(f"Details: {result['output']}")
else:
    print(f"Failed: {result['error']['message']}")

Use blobs

For large data, create and manage blobs:

csv_data = """name,email,company
John Doe,john@example.com,Acme Inc
Jane Smith,jane@example.com,Tech Corp"""

blob = call_rpc("create_blob", {
    "content": csv_data,
    "kind": "text/csv"
})

blob_id = blob["blob_id"]

Write custom code

For multi-step workflows, write custom code that composes multiple skills:

code = """
from skills.salesforce.leads import sync_leads
from runtime import blobs, log

def main(args):
    log.info("Starting sync workflow...")

    # Read blob content
    sheet_data = blobs.read_text(args['sheet_blob'])

    # Sync to Salesforce
    result = sync_leads(sheet_data, env='prod')

    return {
        'synced': result['count'],
        'errors': result['errors']
    }
"""

result = call_rpc("run_code", {
    "language": "python",
    "code": code,
    "entrypoint": "main",
    "args": {"sheet_blob": "blob:abc123"},
    "mount_skills": ["salesforce.leads.sync"],
    "input_blobs": ["blob:abc123"]
})

What's next?

Great, you're now familiar with the basic workflow. Here are some helpful next steps:

Was this page helpful?