skrun

A small local runtime for agent skills.

skrun scaffolds, builds, installs and runs skills: directories that package guidance text (SKILL.md) or an executable program behind a fixed JSON contract. The agent framework you already use, such as LangChain, LangGraph, PydanticAI or OpenAI Agents, can then call a Rust binary or a uv-managed Python script as an ordinary function: one JSON in, one JSON object out.

Install

  • Python SDK pip install skrun
  • CLI cargo install skrun

What it does

  • Three kinds of skill: guidance text, a Rust binary or a uv Python script.
  • One fixed contract: a JSON value on stdin, a JSON object on stdout.
  • No planning, chat, state or credentials, so you keep your own agent loop.
skrun
skrun skill new --kind python_uv --id slugify --name Slugify slugify
Created python_uv skill `slugify` at slugify
cat > slugify/skill.py <<'PY'
import json, re, sys

text = json.load(sys.stdin)["text"]
slug = re.sub(r"[^a-z0-9]+", "-", text.lower()).strip("-")
print(json.dumps({"slug": slug}))
PY
skrun skill install-local --root skills slugify
Installed skill `slugify` into skills
skrun skill list --root skills
slugify	python_uv	0.1.0	Slugify
skrun skill run --id slugify --root skills --input '{"text": "Hello, Agent World!"}'
{
  "slug": "hello-agent-world"
}
skrun skill run --id slugify --root skills --input '{"text": "One JSON in, one JSON out"}'
{
  "slug": "one-json-in-one-json-out"
}
Real session; output unedited except for redacted local paths