Create a new Skrun agent.
skrun init [dir]
skrun init my-agent
skrun init --from-skill ./existing-skillOptions:
| Flag | Description |
|---|---|
--from-skill <path> |
Import an existing Agent Skill directory |
--force |
Overwrite existing files |
--name <name> |
Agent name (non-interactive) |
--description <desc> |
Agent description (non-interactive) |
--model <provider/name> |
Model (non-interactive) |
--namespace <ns> |
Namespace (non-interactive) |
Start a local development server with POST /run.
skrun dev
skrun dev --port 8080Options:
| Flag | Description |
|---|---|
--port <n> |
Server port (default: 3000) |
The dev server validates the agent, starts an HTTP server, and watches for file changes. POST /run returns mock responses — no real LLM calls, no cost. Use this to iterate on your SKILL.md prompt and test your integration (curl, frontend, SDK) without spending tokens. When you're ready to validate with a real LLM, use skrun test.
Run tests defined in agent.yaml.
skrun testReads the tests array from agent.yaml, runs each test, evaluates assertions, and prints results. Exits with code 1 if any test fails.
Assertion syntax: output.<field> <op> <value>
- Operators:
>=,<=,==,!=,>,< - Examples:
output.score >= 0,output.status == "success"
Package the agent into a .agent bundle.
skrun build
skrun build --output ./dist/Options:
| Flag | Description |
|---|---|
--output <path> |
Output directory |
Creates a {slug}-{version}.agent tar.gz archive containing SKILL.md, agent.yaml, scripts/, references/, and assets/. Excludes node_modules, .git, .env, and hidden files.
One-command deployment: validate, build, push, get live URL.
skrun deployRequires authentication (skrun login first). Runs the full pipeline and prints the live POST /run URL with a curl example.
Push a built .agent bundle to the registry.
skrun pushRequires authentication and a built .agent bundle (skrun build first).
Download an agent from the registry.
skrun pull acme/seo-audit
skrun pull acme/[email protected]Downloads and extracts the agent into a local directory.
Authenticate with the Skrun registry.
skrun login
skrun login --token <token>Options:
| Flag | Description |
|---|---|
--token <token> |
API token (non-interactive) |
Saves the token to ~/.skrun/config.json.
Remove stored authentication.
skrun logoutView recent execution logs for a deployed agent.
skrun logs acme/seo-audit
skrun logs acme/seo-audit -n 20Options:
| Flag | Description |
|---|---|
-n, --lines <n> |
Number of recent runs (default: 10) |
skrun init my-agent && cd my-agent
# Edit SKILL.md and agent.yaml
skrun dev # Iterate on prompt (mock, free)
skrun test # Validate with real LLM
skrun deploy # Ship itskrun init --from-skill ./my-existing-skill
skrun test
skrun deployskrun init my-linter && cd my-linter
# 1. Create your tools
mkdir scripts
cat > scripts/eslint-check.sh << 'EOF'
#!/bin/bash
echo "$1" > /tmp/code.js
npx eslint /tmp/code.js --format json 2>/dev/null
EOF
chmod +x scripts/eslint-check.sh
# 2. Declare them in agent.yaml (filename matches the tool name)
# tools:
# - name: eslint-check
# description: "Run ESLint on JavaScript code"
# input_schema:
# type: object
# properties:
# code: { type: string }
# required: [code]
# additionalProperties: false
# 3. Build, test, deploy
skrun dev # Iterate on SKILL.md prompt
skrun test # LLM calls eslint_check tool, verify results
skrun deploy # Scripts bundled in .agent archiveskrun init my-scraper && cd my-scraper
# Add to agent.yaml:
# mcp_servers:
# - name: browser
# transport: stdio
# command: npx
# args: ["-y", "@playwright/mcp", "--headless"]
skrun test # LLM uses MCP tools (navigate, click, etc.)
skrun deploy # npx installs MCP server at runtime# Edit SKILL.md or agent.yaml
skrun test # Verify changes
skrun deploy # Re-deploy (bump version in agent.yaml first)