--- title: "Manifest JSON Schema" description: "smabar plugin reference: Manifest JSON Schema" canonical: "https://smabar.com/docs/plugin-ref-manifest-schema/" lang: en --- # Manifest JSON Schema > smabar plugin reference: Manifest JSON Schema Canonical HTML version: https://smabar.com/docs/plugin-ref-manifest-schema/ · Language: en · Publisher: smabar (https://smabar.com) --- [Build my plugin](https://smabar.com/build-my-plugin.md) · [All references](https://smabar.com/docs/plugin-ref-index.md) · [Install the ZIP](https://smabar.com/docs/install-plugin-zip.md) Source: smabar 1.5.0, revision `a019f2563965edc37a5e8d84742ea1ff2fa6f824`. [Export metadata and checksums](https://smabar.com/plugin-reference/export.json). This is an offline reference. MCP calls quoted below describe the connected workflow; use the linked documents and create local files instead. Live state, installed plugins, available providers and the user's active theme are unknown. Never claim a live check. Read with [styling](https://smabar.com/docs/plugin-ref-styling.md) and [examples](https://smabar.com/docs/plugin-ref-examples.md). ## $defs ```json { "PluginRuntime": { "description": "How a plugin process is launched.", "oneOf": [ { "const": "python", "description": "Python with uv-managed PEP 723 inline dependencies.", "type": "string" }, { "const": "exec", "description": "The manifest's `command` array, verbatim.", "type": "string" } ] }, "PluginTileDef": { "description": "One tile a plugin contributes to the bar.", "properties": { "accent": { "description": "Branding accent color for this tile (any simple CSS color value);\noverrides `--sb-accent` inside the plugin's tile, flyout and popup —\nonly while `appearance.pluginAccent` is `plugin`. The default `theme`\nkeeps every plugin on the active theme's accent.", "type": [ "string", "null" ] }, "accent2": { "description": "Secondary branding color (`--sb-accent-2`); falls back to `accent`.", "type": [ "string", "null" ] }, "accentFg": { "description": "Text color on accent surfaces (`--sb-on-accent`).", "type": [ "string", "null" ] }, "hasFlyout": { "default": false, "type": "boolean" }, "iconSvg": { "description": "Optional custom branding icon. The shell accepts exactly one SVG root\nand runs it through the plugin-markup sanitizer before rendering it.", "type": [ "string", "null" ] }, "id": { "type": "string" }, "name": { "type": "string" }, "tile": { "anyOf": [ { "$ref": "#/$defs/TileChrome" }, { "type": "null" } ], "description": "Optional tile chrome override; the global appearance setting applies\nwhen omitted." }, "tileScale": { "anyOf": [ { "$ref": "#/$defs/TileScale" }, { "type": "null" } ], "description": "Optional base text size for a two-line tile; `m` when omitted." }, "usePluginIcon": { "default": false, "description": "Prepend the plugin-folder icon to this cover. Defaults to false;\na usable `iconSvg` takes precedence. Settings use the icon independently.", "type": "boolean" } }, "required": [ "id", "name" ], "type": "object" }, "TileChrome": { "description": "Background chrome used for tile tiles.", "enum": [ "card", "flat" ], "type": "string" }, "TileScale": { "description": "Base text size of a two-line bar tile (`sb-tile-stack`), as a step rather\nthan a pixel value: the shell scales it against the height the bar\nactually grants a tile, so the text follows the bar's size.", "enum": [ "s", "m", "l" ], "type": "string" } } ``` ## $schema ```json "https://json-schema.org/draft/2020-12/schema" ``` ## description ```json "Parsed and validated `smabar.json`." ``` ## properties ```json { "command": { "default": [], "description": "Program plus arguments (exec runtime).", "items": { "type": "string" }, "type": "array" }, "description": { "default": null, "type": [ "string", "null" ] }, "entry": { "default": null, "description": "Script file relative to the plugin folder (python runtime).", "type": [ "string", "null" ] }, "id": { "description": "Stable plugin id, `[a-z0-9-]` — the key for settings, logs, events.", "type": "string" }, "name": { "type": "string" }, "protocolVersion": { "format": "uint32", "minimum": 0, "type": "integer" }, "runtime": { "$ref": "#/$defs/PluginRuntime" }, "settingsSchema": { "default": null, "description": "JSON Schema of the plugin's settings, for MCP and the settings UI." }, "tiles": { "items": { "$ref": "#/$defs/PluginTileDef" }, "type": "array" }, "version": { "type": "string" } } ``` ## required ```json [ "id", "name", "version", "protocolVersion", "runtime", "tiles" ] ``` ## title ```json "PluginManifest" ``` ## type ```json "object" ```