Skip to main content
Kova’s extensibility comes in three layers: tools (what the agent can call), skills (how the agent knows to do something), and panels (a UI a human can open). A plugin can supply any combination of them.

The bundled workspaces

Office

Per-slide editing, presentation mode, and .pptx export. The agent collaborates on the deck through <name>.deck.canvas.json.
Powered by the Univer engine, with formulas, styles, merged cells, and frozen panes. The agent collaborates through <name>.sheet.univer.json.
Export goes through pptxgenjs and exceljs.

Canvas

An Excalidraw-style infinite space: text, shapes, images, Mermaid, tables, charts, and embedded web pages placed freely, exportable as one SVG. The agent collaborates on <name>.canvas.json — meaning the canvas contents are structured data, not a picture, which is precisely why the agent can actually edit it.

UI Design

A Figma-style page / artboard / layer tree with a full property inspector (fills, gradients, strokes, radii, shadows, type). Documents are standalone *.uidesign.json. This one goes further than the others: it ships its own .mcp.json, so the agent can drive the canvas through MCP tools — adding, editing, and deleting nodes, aligning, distributing, stacking, and grouping. Three design-system skill packs (iOS, Material, and a generic mobile set) ship for use_skill to load.

How the agent uses a plugin

What lets a plugin do real work rather than just show more screenshots is that its output is structured data.
A Canvas board is <name>.canvas.json, a deck is .deck.canvas.json, a spreadsheet is .sheet.univer.json, a design file is .uidesign.json. The agent edits those JSON documents and the UI renders them — so it can add a shape or change a cell style, rather than only redrawing the whole thing for you to look at.
You open a panel to inspect and nudge; the agent keeps working on the same document. Both are views of one file, so there is no screenshot round-trip to confirm what happened.
Each of the three layers engages differently:
ui-design takes one step further by shipping its own .mcp.json, so the agent drives canvas nodes through MCP tools — add, edit, delete, align, distribute, stack, and group all become parameterised calls. That is far more reliable than having the model emit a large JSON blob and hoping it parses, and it is the argument for the “a plugin ships its own MCP server” path.

Skills

A skill is a knowledge pack loaded into the agent’s context. Skills are loaded and managed under Settings → Skills, and plugins contribute them via the manifest’s skills field. The three design-system packs in UI Design are distributed exactly this way.

Local marketplace

plugins/marketplace.json is the repo’s marketplace manifest, installable from the in-app plugin marketplace. Plugins live under plugins/ and are described by .kova-plugin/plugin.json.
Optional manifest fields combine as you like: skills/ contributes skills, panels.json registers panels, and mcpServers contributes an MCP server.

About build artifacts

Panel HTML files (plugins/<name>/<name>.html) and built-in plugin zips are build artifacts and are not committed. Generate them once after cloning, or panels will not open:
build:sidecar, test, and smoke fill in missing artifacts automatically, but run the commands by hand the first time. build:plugins accepts --force to rebuild.
Beyond the workspaces above, settings include sections for MCP servers, skills, subagent definitions, computer control, observability, usage statistics with heatmaps, and backup and restore.

Want to write your own plugin?

The developer docs cover the manifest shape, directory conventions, and build flow.