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 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" }