Beta software, written entirely by AI.Nothing has been reviewed line by line by a human or security-audited. No warranty, no liability: you use it at your own risk.Read more
Skip to content

Manifest (plugin.json) ​

Every plugin folder has a plugin.json at its root. This is the JavaScript example's:

json
{
  "id": "hellojs",
  "name": "Hello (JavaScript example)",
  "description": "A minimal JavaScript plugin: a counter variable, a settings page, one action and a status item.",
  "author": "Deccoyi",
  "homepage": "https://github.com/Deccoyi/macro-grid-plugin/tree/main/HelloJs",
  "version": "0.1.2",
  "minMacroGrid": "1.0.0",
  "sdkVersion": "^0.4.0",
  "minServerVersion": "0.3.2",
  "entry": "index.js",
  "kind": "js",
  "permissions": ["variables", "actions"]
}

Fields ​

FieldRequiredMeaning
idyesUnique, stable id. Used in the folder name, in action types and variable names, and for approvals. The server refuses a second plugin with the same id.
nameyesDisplay name in the Plugins window.
versionyesThe plugin's own semantic version, independent of the server's.
minMacroGridyesThe oldest Macro Grid the plugin runs on, as MAJOR.MINOR.PATCH such as 1.3.0. It is a minimum, not an exact match: the plugin runs on every Macro Grid from that version up to, but not including, the next MAJOR — an older server (say 1.2.1 written but the server is 1.1.1) does not run it. Macro Grid and the plugin SDK share one version, so use the SDK version you build against, or an older one if you use nothing newer. A server that does not fit lists the plugin as Incompatible and does not load it. Was called macroGrid up to Macro Grid 1.2.x; that name still works, read only when minMacroGrid is absent, and stays readable for at least one MAJOR after the rename.
macroGridnoLegacy: the earlier name of minMacroGrid, same meaning and format. Read only when minMacroGrid is missing. A plugin that must still run on Macro Grid up to 1.2.x (which reads only this name) writes both, with the same value.
sdkVersionnoLegacy, from before Macro Grid 1.0.0. Read only when neither minMacroGrid nor macroGrid is present: ^0.4.x then counts as minMacroGrid: 1.0.0, older ranges are incompatible. Keep it next to minMacroGrid only if the plugin must still load on servers older than 1.0.0.
minServerVersionnoLegacy, the same as sdkVersion. Macro Grid 1.0.0 and newer ignore it.
entryyesJavaScript: the script (usually index.js). For an official C# plugin: the entry DLL's file name.
kindyes"js" for every plugin except the official ones. "csharp" is used only by the official plugins, and the server loads such a plugin only when it carries the official signature (signature.json and signature.sig); a plugin that claims "csharp" without it is shown as Not allowed.
defaultLanguagenoThe language the plugin's own texts are written in, such as "en" (the default). Translations come from locales/<language>.json next to plugin.json; a missing language or text falls back to the text as written.
permissionsnoJavaScript only: the permissions the script needs (see Permissions).
descriptionnoA one-line summary shown in Discover and the Store. Additive; older hosts ignore it.
authornoThe plugin's author, shown next to description. Additive.
homepagenoA URL to the plugin's page or source, shown as a link. Additive.

JSON schema ​

The manifest maps to the PluginManifest record in the SDK (property names are camelCase in the file). A schema you can use in an editor:

json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["id", "name", "version", "minMacroGrid", "entry", "kind"],
  "properties": {
    "id": { "type": "string" },
    "name": { "type": "string" },
    "version": { "type": "string" },
    "minMacroGrid": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+$" },
    "macroGrid": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+$" },
    "sdkVersion": { "type": "string" },
    "minServerVersion": { "type": "string" },
    "entry": { "type": "string" },
    "kind": { "enum": ["csharp", "js"] },
    "defaultLanguage": { "type": "string" },
    "permissions": { "type": ["array", "null"], "items": { "type": "string" } },
    "description": { "type": "string" },
    "author": { "type": "string" },
    "homepage": { "type": "string" }
  },
  "additionalProperties": true
}

The server does not read this schema; it is provided for convenience and is derived from the SDK's PluginManifest.

Example ​

A JavaScript plugin:

json
{
  "id": "hellojs",
  "name": "Hello (JavaScript example)",
  "description": "A minimal JavaScript plugin: a counter variable, a settings page, one action and a status item.",
  "author": "Deccoyi",
  "homepage": "https://github.com/Deccoyi/macro-grid-plugin/tree/main/HelloJs",
  "version": "0.1.2",
  "minMacroGrid": "1.0.0",
  "sdkVersion": "^0.4.0",
  "minServerVersion": "0.3.2",
  "entry": "index.js",
  "kind": "js",
  "permissions": ["variables", "actions"]
}

See Compatibility for what counts as a breaking change.

Macro Grid sites: PC · Phone · Plugins
Released under the MIT License. Beta software, written entirely by an AI assistant, provided as is without warranty.