Safe, reusable automation authored by agents.
Skillscript is a constrained language and runtime for turning agent reasoning into persistent, inspectable automation.
It is built for teams that want agents to create and run recurring workflows without giving them unrestricted shell access, arbitrary package installation, or direct control of production credentials.
An agent writes a skill. A human reviews and approves it. The runtime executes it through configured connectors, allowlists, and security policies.
npm install -g skillscript-runtime
skillfile init
skillfile dashboardThen connect your agent to http://localhost:7878/rpc and ask it to author a skill.
Agents usually re-derive routine tasks from scratch. That increases cost, latency, and behavioral drift.
Skillscript lets an agent crystallize a learned procedure into a named, reusable artifact that can be:
- executed repeatedly without re-planning the entire task;
- inspected and versioned by humans;
- validated before it is admitted;
- limited to approved tools, files, commands, and credentials;
- composed with other skills.
Skillscript is orchestration-only. Computation stays inside tools and connectors; skills coordinate those capabilities through a small declarative grammar.
Python and Bash remain useful for implementation work. The risk is allowing agent-authored scripts to run unattended with unrestricted access to the host.
Skillscript narrows that execution surface:
- no arbitrary imports, package installation,
eval, or subprocess escape; - connector-mediated access to external systems;
- default-deny shell and filesystem allowlists;
- static validation before execution;
- optional operator signatures for effectful skills;
- credentials held by the runtime rather than embedded in the skill.
The goal is not to replace scripts. It is to place scripts and APIs behind capabilities the operator explicitly exposes.
A skill is a typed, declarative workflow with variables, operations, dependencies, and an output template.
# Skill: hello
# Status: Approved
# Description: Greet someone by name.
# Vars: WHO=world
Hello, ${WHO}!
That is a complete runnable skill. The body is rendered as its output.
Skills can also call connectors, branch, loop, run other skills, respond to events, and execute on schedules:
# Skill: daily-disk-check
# Status: Approved
# Triggers: cron:"0 6 * * *"
# Autonomous: true
Snapshot written for ${NOW}.
snapshot:
shell(command="df -h --output=source,pcent,target") -> USAGE
file_write(
path="/var/log/skillscript/disk-${EVENT.fired_at_unix}.txt",
content="${USAGE}"
)
default: snapshot
The runtime will refuse the shell command and file write until the operator allowlists the binary and path.
- Author: An MCP-connected agent discovers the available tools and writes a skill as
Draft. - Review: A human inspects, lints, and approves the skill. Secured mode signs the approved content with an operator-held key.
- Run: The skill executes from the CLI, MCP, cron, an HTTP event, or another skill.
- Observe: The runtime records traces, outputs, failures, and blocked operations.
Skills can serve three roles:
| Kind | Purpose |
|---|---|
| Headless | Runs autonomously and sends output to a system or human |
| Augmenting | Prepares context for a frontier agent |
| Template | Gives an agent a reusable procedure to follow |
npm install -g skillscript-runtime
skillfile init
skillfile dashboard --host 127.0.0.1 --port 7878Open http://localhost:7878.
Use --host 0.0.0.0 only when another container or machine must reach the runtime, and protect exposed ingress appropriately.
{
"mcpServers": {
"skillscript": {
"type": "http",
"url": "http://localhost:7878/rpc"
}
}
}Author a skill that greets someone by name.
The agent writes a draft through MCP. Approve it in the dashboard or CLI:
skillfile approve hello
skillfile execute helloSkills access external systems through configured connectors rather than direct credentials. Connectors can expose MCP tools, data stores, local models, agent delivery channels, or custom runtime capabilities.
Important operator controls:
| Setting | Default |
|---|---|
SKILLSCRIPT_SHELL_ALLOWLIST |
deny all binaries |
SKILLSCRIPT_FS_ALLOWLIST |
deny all paths |
SKILLSCRIPT_SECURED_MODE |
off |
SKILLSCRIPT_SECRET_<NAME> |
unset |
Secrets are resolved by the runtime and passed only to approved sinks. Skills cannot print or inspect their raw values.
See the configuration guide and connector reference.
skillfile lint <skill>
skillfile compile <skill>
skillfile execute <skill>
skillfile approve <skill>
skillfile diagram <skill>
skillfile fires <skill>
skillfile replay <trace_id>
skillfile healthRun skillfile <command> --help for options.
Skillscript is pre-1.0. The core language and connector contracts are stabilizing; external adoption and distribution work are ongoing.
Bug reports and feature requests are welcome through Issues. Open an Issue before proposing grammar changes so the design can be discussed first.
MIT. See LICENSE.