TL;DR If
/contextlists skills under claude.ai sync that you never use in the terminal, add"syncClaudeAiSkills": falseto~/.claude/settings.json, plus"syncClaudeAiPlugins": falseif you don't want the plugins either. On the next launch Claude Code stops downloading them and moves the ones it already has to the trash.
Since v2.1.273, every terminal session you sign in to with your claude.ai account downloads the skills and plugins that account has turned on. Skills land in ~/.claude/skills/synced/, and plugins in ~/.claude/plugins/synced/, where they load as <name>@synced. There's no prompt to accept: a /login with your subscription is enough (for plugins, a recent one: a sign-in from an older version doesn't cover them until it renews).
They come from three places: Anthropic's own skills (pdf and xlsx always sync), the ones you created or turned on in claude.ai, and the ones your organization hands out. The download is one way only: edit a copy inside synced/ and the next sync overwrites it.
What they cost
Here's how they show up in /context, in a Claude Code 2.1.325 session carrying the 13 skills one claude.ai account syncs (trimmed):
### Skills
| Skill | Source | Tokens |
|-------|--------|--------|
| ai-infra:claude-code-tip | Plugin (ai-infra) | ~80 |
| dataviz | Built-in | ~480 |
| built-in-browser | claude.ai sync | ~290 |
| computer-use | claude.ai sync | ~320 |
| anthropic-skills:deep-research | claude.ai sync | ~200 |
| docs | claude.ai sync | ~340 |
| docx | claude.ai sync | ~320 |
| google-workspace | claude.ai sync | ~330 |
| pptx | claude.ai sync | ~330 |
| xlsx | claude.ai sync | ~320 |
All 13 are Anthropic's; nobody created them on that account. To measure their weight: the same message in the same folder, sent at the same time with and without the skill sync, twice, reading the input tokens that actually reached the API:
| Sync | Input tokens per request |
|---|---|
| On (the default) | 37,929 and 38,441 |
"syncClaudeAiSkills": false |
34,779 and 35,288 |
In this test that's about 3,150 tokens on every request, used or not, because Claude reads each skill's description to be able to pick it. Prompt caching makes the repeats cheaper, but they hold context turn after turn. In /context, read the Skills row, not the total: here the total read 27.5k both ways, because System tools rose by as much as Skills fell.
Plugins go further: a synced plugin loads its skills, agents, hooks and MCP servers with the same trust as one you installed yourself. A hook your organization adds to a plugin runs on your machine.
How to remove them
1. See what arrived
/skills groups them under claude.ai sync, same as /context. For plugins, run claude plugin list in your shell (output trimmed):
Synced from claude.ai:
‼ "ai-infra@synced" from claude.ai not loaded — "ai-infra@ai-infra" on this machine has the same name and takes precedence
When a plugin on your account shares a name with one you installed, yours wins and the synced copy doesn't load. Skills work the same way: if another command already owns the short name, the synced skill only answers to its full name, like anthropic-skills:deep-research above.
2. Turn off skills on that machine
In ~/.claude/settings.json:
{
"syncClaudeAiSkills": false
}
On the next launch Claude Code stops downloading, moves the ones it already has to ~/.claude/skills/.trash/ and stops loading them. Remove the key later and they download again; nothing comes back from the trash. Only false counts: true is the same as leaving the key out.
3. Turn off plugins, all or one
All of them with "syncClaudeAiPlugins": false in the same file. One, keeping the rest:
claude plugin disable name@synced
That saves "name@synced": false under enabledPlugins in your user settings. A plugin your organization marks as required refuses with Plugin "name@synced" is required by your organization and can't be disabled here. Contact your admin to change it.
4. Or only in one project
Put "syncClaudeAiSkills": false in that repository's .claude/settings.local.json. There it blocks and hides them only for sessions in that folder, without sending anything to the trash. It does nothing in the .claude/settings.json you commit: a repository can't turn the sync off for you.
Removing a single skill
| What you see | How to remove it |
|---|---|
| A skill you created or turned on in claude.ai | Turn it off in your claude.ai skill settings; the next sync removes it |
pdf, xlsx and the other Anthropic skills that always sync |
Only syncClaudeAiSkills: false, which removes all of them |
| A plugin from your account or your organization | claude plugin disable name@synced |
| A plugin your organization marks as required | Not from your machine |
Deleting the folder by hand doesn't stick: while it's still on in claude.ai, the next sync downloads it again.
When to keep them
- You ask Claude for documents in the terminal.
docx,xlsx,pptxandpdfare the ones that know how to produce a Word file, a spreadsheet, a deck or a PDF. If you use them, those tokens are working. - You write skills in claude.ai and want them identical in the chat, in Cowork and in the terminal.
If neither is you, turn them off and audit the rest with /skill-doctor, which gives you each skill's cost and when you last used it. For the plugins you did install yourself, there's the unused plugins cleanup.
One catch if you write skills in claude.ai: in a terminal session on your machine, a synced skill doesn't run its ! lines or attach the files it names with @. They reach Claude as plain text. In the cloud they work, so the same skill can behave differently in each place.
Official docs: Skills synced from claude.ai · Plugins synced from claude.ai
Requirements
Claude Code v2.1.273 or later, signed in through /login with your claude.ai account. Nothing syncs when you authenticate with an API key, ANTHROPIC_AUTH_TOKEN, CLAUDE_CODE_OAUTH_TOKEN or an apiKeyHelper, on Bedrock, with CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, in --bare or --safe-mode, or with a --setting-sources list that leaves out user.