A skill is a package of instructions for a kind of work — how to build a spreadsheet that opens cleanly in Excel, how to validate a chart before claiming it is done, which library to install and at which version. A plugin bundles related skills under one name.
Skills are what make the agent's document work reliable. Without them, a model asked for a PowerPoint improvises.
What ships with the app
| Plugin | Skills |
|---|---|
| Documents | Word documents, PDF documents, presentations |
| Spreadsheets | Spreadsheets |
| Charts | Charts |
Built-in plugins and skills you write yourself are enabled by default. A plugin installed from a public archive starts off — turn it on in the Plugins panel before the agent can use its skills or launch any bundled MCP server. The agent sees a catalog of the enabled skills and reads a skill's full instructions when it decides to use one.
Using one explicitly
Type / in the composer to open the plugin library and pick a skill. It
attaches to the message as a chip, telling the agent to use that skill for
this request. The Plugins entry in the sidebar opens the same library as a
full panel, with search.
You do not have to do this — the agent picks skills on its own. Invoking one explicitly is for when it picked wrong, or you want a specific output format.
Enabling and disabling
Disabling is install-wide, not per chat. A disabled skill is not staged into the sandbox and not advertised to the model, so it is genuinely gone rather than discouraged. Disabling a plugin disables its member skills without forgetting your per-skill choices — re-enable the plugin and they come back as they were.
Prompts
Saved prompts live alongside skills in the same library and are also reachable
with /. A prompt is text inserted into your message. It is never added to
the agent's operating instructions and never staged into the sandbox — it is
a shortcut for you, not an instruction to the model.
Writing your own
Skills, plugins, and prompts are Markdown files with YAML frontmatter, read from your application data directory:
<data dir>/skills/<name>/SKILL.md
<data dir>/plugins/<name>/PLUGIN.md
<data dir>/prompts/<name>/PROMPT.md
A SKILL.md needs a name and a description, and may declare dependencies
the sandbox should install:
---
name: charts
description: Produce charts as interactive native figures, or as PNG/SVG when an image file is needed.
deps: { python: ["matplotlib==3.9.4"] }
---
# Charts
Instructions the agent reads when it uses this skill…
deps takes python, npm, and host lists. Pin versions.
A PLUGIN.md names the skills it groups:
---
name: documents
display-name: Documents
description: Word, PDF, and PowerPoint deliverables, each validated before delivery.
category: documents
skills: ["word-documents", "pdf-documents", "presentations"]
---
Your skills are loaded after the built-in ones and cannot shadow a built-in name. Pick a different name if it collides.
The description is what the model sees in the catalog when it is deciding whether to use your skill. Write it as selection criteria, not as a summary.
Capability badges
The app labels each package with what it actually does — whether it writes to the workspace, needs network access, requires a host program, or brings an MCP server. Those labels are derived by reading the package. A package cannot declare its own badges, and a manifest that tries to is rejected.