Skill library
skillsList, save, delete, and run reusable Luau programs by name, passing arguments to them. Get source and parameters to inspect before executing.
Instructions
Luau program library on disk (/skills/.luau with a --[[ studio-live skill … ]] header holding name, description and params). Save programs you will run again; run them with args (ARGS), same environment and result shape as run.
action: list → [{name, description, params, builtin}]; get {name} → {source, …}; save {name, source | source_file (absolute path), description, params}; delete {name}; run {name, args, dm, undo_label, dry_run, geometry_policy, timeout_ms, response_format, wait_ms, session} → the run result (geometry checked exactly as for run).
Builtins ship read-only (builtin: true): settle_physics, device_sim, profile_scripts, bulk_attributes, insert_asset, lighting_preset, list_scripts, remote_map — get one to read its params. Saving a skill with a builtin name overrides it; deleting the override restores it; builtins themselves cannot be deleted.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| dm | No | Target DataModel: 'edit' (default) | 'server' | 'client' (lowest-numbered) | 'client:N' | |
| args | No | Available to the program as ARGS | |
| name | No | Skill name: letters, digits, _ or - (max 64) | |
| action | Yes | ||
| params | No | save: JSON describing the expected ARGS | |
| source | No | save: Luau program (same environment as run) | |
| dry_run | No | run: edit DM only: run, then roll back | |
| session | No | Studio session GUID or unique prefix (default: the active hub; required for writes when several Studios are connected) | |
| wait_ms | No | Wait this long for completion before returning a {job_id,status:"running"} handle (default 25000) | |
| timeout_ms | No | Executor deadline in ms (default 30000) | |
| undo_label | No | run: ChangeHistory waypoint name (default "skill: <name>") | |
| description | No | save: one-line description | |
| source_file | No | save: instead of source: absolute path of a file holding the Luau (read by the bridge; UTF-8, BOM ok, ≤ 4 MB). No shell/JSON escaping touches it | |
| geometry_policy | No | warn (default; env STUDIO_LIVE_GEOMETRY_POLICY): overlapping/nested parts → result.geometry + warnings; reject: such a run is rolled back (error geometry_violation); off: no check. Play DMs check only when set | |
| response_format | No | run: as for the run tool |