08. Extending Matcha
Local plugins
A plugin is a folder that can bundle skills, slash commands, sub-assistants, hooks, and MCP servers. You install from a **local path you trust**.
Install from a folder
matcha plugin install ./my-plugin --trustRun once **without** --trust to read the warning. Add --trust to activate hooks, MCP servers, and skills. Only install a folder you would run as your own user.
A plugin stays **off** until you enable it. Trust is separate: even when enabled, hooks and MCP servers stay inactive until the plugin is trusted. Plugins under ~/.matcha/plugins/ are trusted automatically. Project plugins in .matcha/plugins/ need an explicit trust grant.
After install, press r on the Plugins tab or start a new session. Skills from the plugin appear in the slash menu. If a name collides, use the qualified form (/deploy-tools:release).
Manage from the shell
matcha plugin list
matcha plugin list --json
matcha plugin enable <name>
matcha plugin disable <name>
matcha plugin details <name>
matcha plugin update [<name>]
matcha plugin uninstall <name> --confirmuninstall aliases: rm, remove. --keep-data leaves the plugin's writable data directory.
Validate a folder you are authoring:
matcha plugin validate ./my-pluginmatcha plugin tag writes a git tag from the manifest version. That is for your own repo; it is not a store publish.
In the TUI: `/plugins`
/pluginsOpens the extensions modal on the **Plugins** tab. Outside the VS Code family, Ctrl+L opens the same modal. A Marketplace tab may still **draw**; it cannot install from a product catalog.
| Key | Action |
|---|---|
Enter | Expand name, version, scope, skills, sub-assistants, hooks, MCP |
Space | Enable or disable |
a | Add from a local path |
x | Uninstall (confirm with y) |
r | Reload |
f | Filter by status |
/ | Search by name |
The shell also accepts /plugins list, /plugins install <path> --trust, /plugins uninstall <name>, /plugins update, /plugins reload. In the pager, prefer the modal.
Turn plugins on in config when you want them every session:
[plugins]
paths = ["~/my-plugins/custom-tools"]
enabled = ["team-tools"]
disabled = ["noisy-plugin"]Entries are a plain name (matcha plugin list) or a full ID (<scope>/<hash>/<name>). To hide the plugins and hooks UI, set disable_plugins = true in ~/.matcha/pager.toml.
What a plugin folder contains
my-plugin/
plugin.json # optional
skills/gdrive/SKILL.md
commands/
agents/
hooks/hooks.json
.mcp.jsonplugin.json is optional; without it Matcha CLI discovers the standard directories. The on-disk index name .grok-plugin/marketplace.json is an upstream filename for a **local** multi-plugin checkout. It is not an official MatchaCode store.
Share the folder (or a git checkout you already have on disk) and install it locally. Do not treat GitHub shorthand or [[marketplace.sources]] as a first-release channel.
What you should see
| You ran | Result |
|---|---|
matcha plugin install ./my-plugin --trust | Plugin on disk; enable it if it stays off |
/plugins then Space | Enabled / disabled |
/marketplace | Error: remote marketplace unavailable |
matcha plugin marketplace add … | Same fail-closed error |