Measure a plugin
Every enabled plugin has a running cost, even when nobody uses it: its skills are described to the model on every turn so the model knows it can call them. A plugin with many skills, or long descriptions, makes every request a little larger, which uses more of your plan and leaves less room in the context window. This page shows how to see that cost, how to find plugins and skills nobody uses, and how plugin authors can keep the figure small.
The always-on cost
On each turn, the model gets one line per skill it may call: the skill’s name and its “when to use” hint (or its description when there is no hint). Plugin commands are offered the same way. Those lines are the plugin’s always-on cost. Everything else, like the skill’s full instructions, is only read when the skill is actually used.
Token figures on this page are estimates at about four characters per token.
Per plugin, from the shell
syntic plugin details release-helper@acmeThe last line gives the estimate for that plugin’s skills and commands:
Adds about 140 tokens to every request (skill and command list)Add --json to get it as listingTokens for scripts.
All plugins, in a session
Run /usage and switch to the Plugins tab (Tab or the arrow keys). It lists each plugin that adds skills, with how many skills and the estimated tokens per turn, largest first, and a total line with its share of your model’s context window:
Plugin skills in every request
Plugin Skills Tokens/turn
release-helper 4 ~140
formatter 2 ~60
All plugins 6 ~200 (0.1% of a 200k context)When one plugin adds 500 tokens or more, the tab points it out. Skills that are hidden from the model (disable-model-invocation) or that only apply to certain paths are not counted, because they are not in the list.
Per skill, with usage
/skill-doctor lists every loaded skill by what it costs, marks the ones not used in this session, and says when each was last used in any session. Use it to find the expensive skills that never run.
Check whether a plugin is used
Syntic Code counts each run of a skill, whether the model called it or you typed /name, in skill-usage.json in its data folder. /skill-doctor reads those counts. A plugin whose skills all show as never used is a good candidate to disable:
syntic plugin disable formatter@acmeDisabling keeps it installed, so turning it back on later is instant.
For plugins that only add hooks, MCP servers or language servers, there is no listing cost, but their programs still run. syntic plugin details shows what each one starts.
Lower the always-on figure (for authors)
| Technique | Why it helps |
|---|---|
Write short, specific when_to_use hints | The hint is what goes out every turn. One clear sentence is enough for the model to choose the skill. |
| Move detail into the skill body | The body is read only when the skill runs, so it costs nothing until then. |
| Merge near-duplicate skills | Ten narrow skills cost ten lines; one skill with clear steps costs one. |
Use disable-model-invocation: true for skills meant to be typed | They stay available as /name but leave the model’s list. |
Use paths for skills that only matter for some files | They are listed only when they apply. |
| Split rarely used pieces into a separate plugin | People can enable the extra plugin only when they need it, and pull it in through dependencies if it is required. |
Check the effect with syntic plugin details after each change. The skill frontmatter keys are described on the skills page.
The token figures are estimates of the listing alone. The real cost of a turn also depends on your conversation, memory files and tool results. /usage shows the full picture for the current session.
Plugins and session start-up
Plugins can also slow down start-up: MCP servers connect when the session starts, and launch monitors start right away. Language servers start only when first used. If start-up feels slow:
- Turn plugins off one at a time in
/pluginand restart. - Or start once with
--safe-modeto rule all of them out together.
See Performance for other causes.