PluginsPlugin commands

Plugin commands reference

Everything you can do with plugins from the shell lives under syntic plugin. Inside a session, /plugin and /reload-plugins cover the same ground interactively. This page lists every subcommand, argument and flag, plus the launch flags that bring in a plugin just for the current run.

Plugins are referred to as <plugin>@<marketplace>, for example formatter@acme. Names are case-sensitive.

Global flag

FlagEffect
--jsonAccepted by every syntic plugin subcommand. list, details and marketplace list print their own records. Every other subcommand prints {"ok": true, "code": 0, "messages": [...]}, or {"ok": false, "code": 1, "error": "..."} on failure.

Exit codes: 0 on success, 1 on any failure (including “not installed” and policy refusals), 2 for an unrecognised on/off value.

Install and manage

syntic plugin install <plugin@marketplace>

Installs a plugin from a saved catalog.

syntic plugin install formatter@acme
syntic plugin install release-helper@acme --scope project -y --config registry=https://registry.example.com
syntic plugin install formatter@acme --marketplace acme/acme-plugins
FlagEffect
--scope <user|project|local>Scope recorded for the install. Default user (global is accepted as another spelling). managed cannot be chosen here.
-y, --yesInstall missing dependencies without asking.
--config <KEY=VALUE>Set one of the plugin’s options. Repeatable.
--marketplace <SOURCE>If the catalog is not saved yet, add it from this source first.

Before installing, the catalog is refreshed so the newest listing is used. If the catalog is not saved, install adds it from --marketplace, or from a catalog of that name in your settings (extraKnownMarketplaces). Missing dependencies are offered for install (on a terminal you are asked; with -y they are installed). The output names any required options that are still unset, and ends with your organization’s install note if policy sets one.

syntic plugin uninstall <plugin@marketplace>

Removes the plugin and its files. If other enabled plugins depend on it, the output names them; they stay off until it returns. Plugins that were installed only as its dependencies, and that nothing needs any more, are removed too.

syntic plugin enable <plugin@marketplace>

Turns an installed plugin on. Its disabled dependencies are turned on with it. Refused when managed policy force-disables the plugin.

syntic plugin disable <plugin@marketplace>

Turns an installed plugin off without removing it. Names any enabled plugins that depend on it.

syntic plugin disable-all

Turns every installed plugin off and reports how many were on.

syntic plugin update <plugin@marketplace>

Fetches the plugin again from its catalog and records the new version. Its on/off state and scope are kept. Prints “already up to date” or the old and new versions. A failed fetch leaves the old copy in place.

syntic plugin configure <plugin@marketplace> [KEY=VALUE ...]

Sets the plugin’s options (userConfig in its manifest). With no pairs, asks for each option on the terminal. Plain values are saved under ~/.syntic/plugins/.options/; options marked sensitive go to your system’s credential store.

syntic plugin list

Lists installed plugins with version and [enabled] or [disabled].

FlagEffect
--availableList plugins your saved catalogs offer that are not installed, with descriptions.

With --json, installed plugins are printed as an array of objects with id, name, marketplace, version, enabled and scope. With --available --json: id, name, marketplace, description.

syntic plugin details <plugin>

Accepts plugin or plugin@marketplace. Lists what an installed plugin brings: skills, commands, agents, hooks, MCP servers and language servers, plus an estimate of how many tokens its listing adds to every request. With --json: id, skills, commands, agents, hooks, mcpServers, lspServers, listingTokens. See Measure a plugin.

syntic plugin prune

Removes plugins that were installed only as another plugin’s dependency and that nothing needs now.

syntic plugin reconcile

Lists installed plugins whose catalog is no longer saved.

FlagEffect
--pruneRemove those plugins. Plugins in the managed scope are reported but left in place.

Build and release

syntic plugin init <name>

Scaffolds a plugin in .syntic/skills/<name>/ of the current folder: a .syntic-plugin/plugin.json (version 0.1.0) and a first SKILL.md. The name may use letters, digits, ., _ and -. Never overwrites an existing folder. The plugin loads at the next start or /reload-plugins.

FlagEffect
--description <TEXT>One-line description for the manifest and the skill.

See Create a plugin.

syntic plugin validate <path>

Checks a manifest without installing anything. path is the file, or a folder holding .syntic-plugin/plugin.json or plugin.json. Prints each problem as error or warning with the field it concerns, then a valid or invalid verdict. Exits 1 on any error.

FlagEffect
--marketplaceTreat the file as a marketplace.json (a folder is searched for .syntic-plugin/marketplace.json, then marketplace.json).

syntic plugin eval <path>

Also available as syntic plugin test. Runs a plugin’s eval suite: path is the plugin folder (the suite is evals/evals.json) or the suite file itself. Each case runs as a one-shot session with the plugin loaded, and its answer is scored. Writes report.json and report.html and exits non-zero when a case fails.

FlagEffect
--out <DIR>Where to write the reports. Default <plugin>/evals/results.

See Test a plugin.

syntic plugin tag [path]

Creates the annotated git tag <name>--v<version> from the manifest of the plugin in path (default: the current folder). Tags locally only; the output shows the git push to run.

FlagEffect
--dry-runPrint the tag that would be created.

See Release a plugin.

Marketplaces

syntic plugin marketplace add <source>

Saves a catalog and reads its listing. The catalog is saved under the name it declares. Accepted sources:

FormExample
GitHub owner/repo, optional @ref or #refacme/acme-plugins@stable
Git URL (https ending in .git, ssh://, git://, git+https://, user@host:path)git@git.example.com:team/plugins.git
A GitHub web URLhttps://github.com/acme/acme-plugins
GitLab projectgitlab:group/project#v2
Local folder or file (./, ../, /, ~, a drive letter, or file://)~/src/acme-plugins
Any other https URL, serving the JSONhttps://plugins.example.com/marketplace.json
npm packagenpm:@acme/plugins or @acme/plugins

Refused when managed policy blocks the source, or when it needs git and git is missing.

syntic plugin marketplace list

Lists saved catalogs with their plugin counts, marking ones whose auto-update is off. With --json: name, source, plugins, pluginCount, note, autoUpdate.

syntic plugin marketplace remove <name>

Forgets a catalog. Plugins installed from it stay installed; use syntic plugin reconcile --prune to remove them.

syntic plugin marketplace refresh [name]

Fetches catalog listings again. With a name, refreshes that one even if its auto-update is off. Without a name, refreshes every saved catalog. Each catalog is reported separately (refreshed (N plugins, +2), skipped, or refresh failed), and one failure does not stop the others. If a catalog now declares a new name, it is saved under that name and its installed plugins follow. Installed plugins the catalog no longer lists are flagged.

FlagEffect
--auto-onlyWith no name, refresh only catalogs whose auto-update is on.

syntic plugin marketplace auto-update <name> <on|off>

Turns a catalog’s background refresh on or off. Also accepts true/false, yes/no, 1/0, enable/disable. New catalogs start with it on.

In a session

/plugin

Opens the plugin manager (also /plugins). Tab or the arrow keys switch between three tabs. Esc or q closes it.

TabKeys
InstalledEnter shows what a plugin contains. Space turns it on or off. r updates it. u removes it. f cycles between all, enabled only and disabled only. / searches by name and description.
DiscoverPlugins your catalogs offer that are not installed. Enter or i installs for you; p installs with project scope. / searches.
Marketplacesa adds a catalog (type its source, then Enter). u refreshes the selected one. x twice removes it. r re-reads catalogs named in your settings.

In the details view of a plugin, Space toggles it, r updates it, u removes it and Esc goes back. When the manager opens, catalogs named in settings (extraKnownMarketplaces) are added if they are not saved yet. Installs and toggles take effect after /reload-plugins or at the next start.

/reload-plugins

Scans plugins again without restarting and reports what was added and removed: commands, skills, agents and hooks. Use it after installing, enabling, disabling or editing a plugin.

Flags that load plugins for one run

These are flags on syntic itself, not on syntic plugin.

FlagEffect
--plugin-dir <PATH>Use a plugin from a folder or .zip for this session only, without installing it. A folder of plugins loads each one inside. Repeatable.
--plugin-url <URL>Download a plugin .zip for this session only. Only https:// is fetched (plain http:// is allowed for localhost). A failed download falls back to the last good copy. Repeatable.
--plugin <NAME@MARKETPLACE>Install a plugin before the run without prompting, then continue. Meant for scripted and --print runs. The catalog must already be saved. Results are printed to standard error. Repeatable.
--plugin-scope <SCOPE>Scope for --plugin installs. Default user.
--bareSkip installed and pre-seeded plugins. --plugin-dir folders still load.
--safe-modeTurn plugins off, along with instruction files, skills, hooks and MCP servers, for troubleshooting.

A --plugin-dir or --plugin-url plugin whose name matches an installed plugin is skipped; the installed copy wins. Disable or uninstall the installed one while you test.

Environment variables

VariableEffect
SYNTIC_PLUGIN_GIT_PROTOCOLssh clones GitHub owner/repo sources over SSH.
SYNTIC_PLUGIN_AUTO_UPDATE0/off stops the daily catalog refresh; 1/on/force refreshes every catalog at every start.
SYNTIC_PLUGIN_SEED_DIRFolders of plugins that load in every session without being installed.
SYNTIC_PLUGIN_DIRSSet by --plugin-dir; passes session plugin folders to child processes.
SYNTIC_PLUGIN_LOCKDOWN1 loads only plugins on the trust list.
SYNTIC_TRUSTED_PLUGINSComma-separated plugin or catalog names to add to the trust list.
SYNTIC_SKILLS_PLUGIN_ONLYOffer only skills that come from plugins.

More in Environment variables.