Skip to main content

Directory layout

New packages created by init use this layout. The host still reads the earlier liveboard/ format, and updating an old package doesn’t require converting it.

Plugin manifest: plugin.json

.minimax-plugin/plugin.json is the single source of truth for plugin identity, metadata, icon, Skills, MCP, and Apps. Mini App authoring never reinterprets or clears these fields.
.minimax-plugin/plugin.json
  • name is a lowercase machine name of up to 80 characters that starts with a letter and may use digits and . _ - as separators. It is the Mini App’s pluginId.
  • version uses SemVer. description, author, and every exampleQueries entry must be non-empty.
  • icon points to a PNG, JPEG, or WebP inside the package. init provides a default icon.
  • apps, mcpServers, and skills keep their ordinary plugin meaning; use empty arrays for capabilities you don’t have.

Entry declaration: package.json

package.json
The root package.json only needs this extension. The host never reads or runs engineering metadata such as packageManager, lockfiles, build scripts, or dependencies.

Mini App declaration: miniapp.json

miniapp/miniapp.json
See miniapp.json fields for every field. Key points:
  • artifacts.client and artifacts.node are both required. They define what the host hashes, adopts, and publishes; they can be source directories rather than build output, and they may overlap.
  • runtime.entry is the Node entry, ending in .js, .mjs, or .cjs, inside the Node payload. lifecycle is always on-demand: enabling or scanning a plugin never starts the service.
  • surface.path is the page route served by the Node service.
  • hostConnectorAccess and agentAccess are explicit grants; leave them out and you don’t get them. Declare them only when the runtime really needs them.

Payload rules

  • The host doesn’t install dependencies or run builds. Ship something ready to run, and bundle or vendor third-party runtime dependencies into a payload directory. Prefer Node built-ins and browser APIs.
  • node_modules is build state: it is never published and must not sit inside a declared payload.
  • Use portable relative paths: no absolute paths, .., backslashes, or symlinks, and nothing outside the package.
  • Every file in a payload except node_modules goes into the digest. Delete logs, caches, temporary files, and anything else you don’t want published before you publish.