Core Concepts
The Skills Protocol is built on four fundamental concepts that work together to enable LLM agents to discover and execute skills safely and efficiently.
Skill
A Skill is a versioned bundle containing:
skill.toml— machine-readable manifest (id, runtime, permissions, metadata)SKILL.md— instructions & examples for the LLMcode/— optional executable implementationresources/— optional supporting files (extra docs, schemas, etc.)
Skill Types
Skills come in two kinds:
- Name
Action skills- Description
Skills that have a runtime and can be executed. They include executable code and can perform actions like API calls, data processing, or file operations.
- Name
Instruction skills- Description
Skills that only provide context and instructions to the LLM. They have no runtime and cannot be executed, serving purely as documentation or guidance.
Example Skill Structure
salesforce.leads.sync/
skill.toml # Manifest with metadata and permissions
SKILL.md # LLM-readable instructions
code/
main.py # Executable implementation
resources/
schema.json # Supporting files
Blob
A Blob is an opaque handle (blob:<id>) to large data (text, binary, JSON). Blobs live in the runtime's storage and can be mounted into sandboxes.
Why Use Blobs?
Large documents, logs, CSVs, and other substantial data should be represented as blobs rather than inline JSON. This approach:
- Reduces token usage — Large data doesn't pass through the LLM context
- Improves performance — Skills operate on blobs without serialization overhead
- Enables streaming — Blobs can be read partially or sampled
- Supports binary data — Images, PDFs, and other non-text formats
Blob Operations
Creation
{
"method": "create_blob",
"params": {
"content": "Large CSV data...",
"kind": "text/csv"
}
}
Returns: blob:abc123
Reading
{
"method": "read_blob",
"params": {
"blob_id": "blob:abc123",
"mode": "sample_head",
"max_bytes": 2000
}
}
Returns truncated preview
Run
A Run is a single ephemeral sandbox execution with a stable identifier and status tracking.
Run Triggers
Via execute_skill
Run a skill's entrypoint with provided arguments
Via run_code
Run LLM-written code that can import skills
Run Properties
Each run has:
- Name
run_id- Type
- string
- Description
Stable identifier for the run (e.g.,
run_9f2a)
- Name
status- Type
- string
- Description
Either
"completed"or"failed"
- Name
summary- Type
- string
- Description
Short human-readable description of the result
- Name
output- Type
- object
- Description
Small JSON output (must be < 4KB). Large data goes in output_blobs
- Name
output_blobs- Type
- array
- Description
List of blob IDs created during execution
- Name
logs_preview- Type
- string
- Description
Truncated execution logs (typically < 2KB)
- Name
error- Type
- object
- Description
Error details if status is "failed"
Run Example
{
"status": "completed",
"run_id": "run_9f2a",
"summary": "Synced 742 leads (5 failed).",
"output": {
"updated_count": 742,
"failed_count": 5
},
"output_blobs": [
"blob:sync-log-42",
"blob:failed-rows-1"
],
"logs_preview": "Connected to Salesforce...\nSynced 742 leads...\n"
}
Skills Runtime
A Skills Runtime is a server implementing the Skills Protocol specification. It provides the infrastructure for skill discovery, storage, and execution.
Runtime Responsibilities
Storage
- Stores Skills and Blobs
- Manages skill versions
- Handles blob lifecycle
Execution
- Creates sandboxed environments
- Enforces resource limits
- Manages permissions
API
- Exposes JSON-RPC 2.0 endpoint
- Provides LLM tool surface
- Handles authentication
Runtime Features
The runtime provides:
- Skill Registry — Discover and retrieve skill metadata
- Execution Engine — Run skills in isolated sandboxes
- Blob Storage — Efficient handling of large data
- Permission System — Control network access and secrets
- Resource Limits — Enforce CPU, memory, and timeout constraints
Architecture
┌─────────────────────────────────────────┐
│ LLM Agent │
│ (Uses 8 protocol tools) │
└──────────────┬──────────────────────────┘
│ JSON-RPC 2.0 over HTTP
┌──────────────▼──────────────────────────┐
│ Skills Runtime │
│ ┌────────────┬──────────┬────────────┐ │
│ │ Skills │ Blobs │ Sandbox │ │
│ │ Registry │ Storage │ Engine │ │
│ └────────────┴──────────┴────────────┘ │
└─────────────────────────────────────────┘
Next Steps
Now that you understand the core concepts, learn about the LLM tool interface: