reskate-plugin.json, the file that makes a mod a plugin, and the one field of the mod’s manifest.json that plugins use. Neither needs a permission; the manifest is where you ask for them.
reskate-plugin.json
Putreskate-plugin.json at the top of the mod folder, beside manifest.json. ReSkate reads it when it loads the plugin, and again each time the plugin reloads.
api
integer
required
The plugin API version the plugin was written for. This ReSkate has API 1. It must be a whole number, 1 or more, and no newer than the ReSkate running it.
reskate.api_version.
entry
string
required
The Luau file to run when the plugin loads, as a path inside the mod folder, such as
"plugin/main.lua". It must end in .lua or .luau./between folders, never\.- Inside the mod folder: not starting with
/, no..,.or empty segments, and no:(no drive letters or streams). - Printable ASCII only, at most 260 characters.
- No segment ending in a dot or a space.
require looks for modules: with "plugin/main.lua", require("rules") loads plugin/rules.luau or plugin/rules.lua. The entry file itself can be at most 1 MB.
side
string
default:"client"
Where the plugin runs:
"client", "server" or "both"."client": on each player’s game."server": as the session’s authority, on a lobby host’s game and on a dedicated server."both": in both places, as two copies. Each copy readsreskate.sideto know which it is.
not loaded (it is a server plugin). See client and server copies.
permissions
string[]
default:"[]"
The permissions the plugin uses, by name, such as
["console", "overlay"].tick, timers, its own files, JSON, and the functions and events plugins share.
The log names the permissions a plugin loaded with:
domains
string[]
The host names
reskate.http.request may reach, such as ["api.example.com"]. At most 16. Needs the net.http permission.- letters, digits,
.and-, at most 253 characters, with at least one dot; - not starting or ending with a dot, and no
..; - no scheme, port, path or
*.
example.com does not cover api.example.com.
Errors
When the manifest breaks a rule, the plugin does not load. The log says why, and so doesplugin list (as the plugin’s reason):
Problems with the entry file itself come after the manifest passed. The plugin stops, and its reason starts with the entry’s path:
plugin/main.lua not found, plugin/main.lua is larger than 1 MB, a syntax error, or plugin/main.lua raised an error as it ran (the error itself is in the log line before).
manifest.json and the plugin’s channel
manifest.json is the mod’s own description, as Thunderstore packages carry it. ReSkate’s plugin host reads one field of it: name.
string
The plugin’s channel: the name its messages go under. When
manifest.json has no name, or it is empty, the mod’s folder name is used.reskate.net.senddelivers only to the same channel on other games, compared without case. Two players can name the folder differently, and their copies still hear each other.- Other plugins can find yours by its channel or by its folder name, without case, in
reskate.require_pluginandreskate.on_plugin.