TL;DR Una skill en
<carpeta>/.claude/skills/no entra en el listado hasta que Claude toca un archivo de esa carpeta, y entonces se carga sola sin reiniciar la sesión. Deja en global solo las que usas en todos los repos.
Cada skill instalada tiene una línea en tu system prompt. No el SKILL.md entero, solo su nombre y su descripción (recortada a 1.536 caracteres), pero esa línea se manda en cada turno, uses la skill o no.
Con dos o tres skills es irrelevante. Con cincuenta y siete, no. Esto es mi máquina, con /skill-doctor desde la terminal:
$ claude -p "/skill-doctor"
Skills loaded this session
skill source context uses last used
carousel userSettings ~130 0× never
tip-board userSettings ~50 0× never
figma:figma-generate-design figma ~290 0× never
anthropic-skills:computer-use claude.ai sync ~320 0× never
claude-code-tip userSettings ~30 220× today
...
context = this skill's one-line listing in the system prompt, included every turn
Cincuenta y siete filas, 7.590 tokens en cada turno, y 5.950 de ellos son de skills que no he invocado nunca. Es un peaje fijo: lo pagas al escribir un prompt de dos palabras igual que en un refactor de tres horas.
La carpeta decide quién se carga
Una skill no tiene por qué vivir en ~/.claude/skills/. Puede vivir dentro de la carpeta donde tiene sentido:
mi-repo/
├── .claude/skills/deploy/SKILL.md ← todas las sesiones del repo
└── apps/web/
└── .claude/skills/storybook/SKILL.md ← solo cuando se trabaja ahí
La de apps/web/ no aparece en una sesión arrancada en la raíz. Y no es que no funcione: es que ni siquiera está en el listado, así que no te cuesta un token. Aparece la primera vez que Claude lee o edita un archivo de esa carpeta, a media sesión y sin reiniciar nada, y se queda hasta que cierres.
Lo he probado con una skill de usar y tirar dentro de deep/:
| Sesión arrancada en | ¿Está en el listado? |
|---|---|
| la raíz del repo | No |
deep/ |
Sí, desde el arranque |
la raíz, y le pido que lea deep/nota.txt |
Sí, aparece después de esa lectura |
Esa tercera fila es lo que lo hace útil: coste cero mientras no hace falta, y disponible en cuanto hace falta.
Cómo mover una
1. Mira lo que estás pagando
claude -p "/skill-doctor"
La columna context es lo que cuesta cada fila en cada turno. Empieza por las que tienen 0× y más coste. El desglose completo y dónde se apaga cada una está en su propio tip.
2. Llévala a su carpeta
mkdir -p apps/web/.claude/skills/storybook
mv ~/.claude/skills/storybook/SKILL.md apps/web/.claude/skills/storybook/
3. Comprueba que ha desaparecido de donde no pinta nada
cd mi-repo && claude -p "/skill-doctor" | grep storybook # sin resultados
cd apps/web && claude -p "/skill-doctor" | grep storybook # ahí está
Si la anidada acaba llamándose igual que otra de la raíz, no se pisan: el listado enseña una como probe-widget y la otra como deep:probe-widget, con la ruta por delante y los dos puntos como separador, así que invocas la que quieras por su nombre. Eso es distinto del choque entre tu carpeta personal y la del proyecto, donde una sí tapa a la otra y no siempre en la dirección que esperas: ahí manda la tabla de precedencias.
Lo que esto no arregla
La palanca solo sirve con skills tuyas, que puedas mover. En mi caso arregla poco: de esos 5.950 tokens muertos, 370 son míos y 5.120 son de plugins y de skills sincronizadas desde claude.ai. Un plugin no se apaga skill a skill, se apaga entero en /plugin; una skill sincronizada vuelve a bajarse si la borras, así que se apaga en claude.ai.
Por eso el orden importa: primero el diagnóstico, después la palanca que toque. Y si lo que quieres es ver la foto completa de tu ventana, no solo las skills, eso es /context.
Referencia
Dónde vive el SKILL.md |
Quién la carga |
|---|---|
~/.claude/skills/<nombre>/ |
Todas tus sesiones, en cualquier repo |
.claude/skills/<nombre>/ (raíz del proyecto) |
Todas las sesiones de ese proyecto |
<carpeta>/.claude/skills/<nombre>/ |
Las sesiones arrancadas ahí o por debajo, y las de arriba en cuanto Claude toca un archivo de esa carpeta |
.claude/skills/<nombre>/ en un --add-dir |
Las sesiones que añaden ese directorio |
<plugin>/skills/<nombre>/ |
Mientras el plugin esté activo |
| Sincronizadas desde claude.ai | Todas, hasta que las apagues en claude.ai |
Documentación oficial: Extend Claude with skills
Requisitos
- Nada externo.
/skill-doctornecesita la v2.1.252 o superior; lo de arriba está ejecutado en la v2.1.276.