Agent Skills y SKILL.md: progressive disclosure, medido
Cinco skills reales con 128.374 tokens de instrucciones ocupan 253 tokens de contexto. Recorta sus descripciones y el agent deja de encontrarlas.
En esta página
Toma un proyecto que tiene instalados cinco skills publicados. Este es su coste.
ls .claude/skills/next-best-practices next-cache-components vercel-composition-patterns
vercel-react-best-practices vercel-react-native-skillsskill level 1 level 2 level 3 files
next-best-practices 40 966 19,374 19
next-cache-components 28 2,334 0 0
vercel-composition-patterns 59 533 10,667 13
vercel-react-best-practices 68 1,670 53,670 75
vercel-react-native-skills 58 950 37,957 41
------ ------- --------
total 253 6,453 121,668Ciento veintiocho mil tokens de instrucciones, ejemplos y reglas —más de lo que cabe en una context window de 128.000 tokens—, y el coste permanente de tener los cinco disponibles es de 253 tokens, dos décimas de un uno por ciento. Nada más en este curso tiene esa forma. Una definición de herramienta se paga en cada solicitud tanto si se usa como si no, y el Capítulo 26 midió un servidor MCP en 1.619 tokens antes de que haga absolutamente nada: treinta y dos veces la línea media de nivel 1 de la tabla anterior.
Este capítulo trata sobre el mecanismo que produce esa proporción, sobre las dos formas en que se rompe y sobre la pregunta que el mecanismo obliga a plantear y que casi nadie responde: dada una pieza de conocimiento, a cuál de cuatro lugares pertenece.
Por qué este capítulo no tiene lenguaje de programación
Enlace a la sección: Por qué este capítulo no tiene lenguaje de programaciónEl Capítulo 14 fijó la regla para la segunda mitad de este curso —conexiones, reintentos y cancelación son TypeScript— y declaró cinco excepciones. Esta es una de ellas, y la razón no es una preferencia.
Un skill es un archivo Markdown. No un archivo que configura un programa, no un archivo que un programa compila: un documento que el modelo lee, del mismo modo que lee el mensaje que has escrito. Darle a este capítulo un lenguaje de programación significaría no haber entendido el formato, y ese malentendido es el más común sobre los skills. Todo lo que sigue es Markdown y YAML, más un pequeño script de shell que existe precisamente para mostrar dónde pertenece el código dentro de un skill y dónde no.
La factura que resuelve, y es la aritmética del Capítulo 16
Enlace a la sección: La factura que resuelve, y es la aritmética del Capítulo 16Aquí tienes una instrucción real: cómo escribe una empresa sus notas de lanzamiento. Es un procedimiento, no una preferencia: tiene un conjunto ordenado de pasos, una taxonomía, una voz, una plantilla y un script que recoge el material bruto.
Ponlo todo en el system prompt, como hace la mayoría de equipos, y la aritmética del Capítulo 16 toma el control. Un system prompt es un prefijo, y un prefijo se paga en cada llamada. Medido con o200k_base sobre la carpeta escrita para este capítulo:
whole thing pasted into the system prompt 1,716 x 40 = 68,640 input tokens $0.1373
as a skill, activated once on turn 12 46 x 40
+ 324 (SKILL.md body)
+ 665 (two reference files read)
= 2,829 input tokens $0.0057
as a skill, never activated at all 46 x 40 = 1,840 input tokens $0.0037Veinticuatro veces más barato cuando se usa, treinta y siete veces más barato cuando no se usa. Las tarifas son las del Capítulo 16: $2,00 por millón de input tokens.
Ahora la objeción honesta, porque un capítulo que se la saltara sería publicidad. El prompt caching cierra casi toda la brecha económica. Un system prompt es estable y va al principio, lo que lo convierte en el mejor candidato de caché posible; a $0,20 por millón de input en caché, los mismos 68.640 tokens cuestan $0,0168 en vez de $0,1373. Sigue siendo tres veces el skill, pero ya no está en otro orden de magnitud.
El dinero nunca fue el argumento más fuerte. Este lo es:
El caching abarata un prefijo permanente. No lo hace más pequeño.
En el turno 40, la versión con system prompt sigue teniendo 1.716 tokens de política de notas de lanzamiento dentro de la ventana durante una conversación sobre cualquier otra cosa, compitiendo por lo que el Capítulo 24 llamó el presupuesto de attention del modelo. La versión con skill tiene 46. Cachea lo equivocado y habrás comprado un descuento sobre una distracción.
Escrito como fórmula, con turnos, los metadatos, el cuerpo, el paquete completo y el conjunto de archivos empaquetados que realmente se leen:
Todo este capítulo es la diferencia entre multiplicar el segundo término por y multiplicarlo por uno o por cero.
Qué es realmente un skill
Enlace a la sección: Qué es realmente un skillUn skill es un directorio. La especificación es lo bastante breve como para enunciarla completa:
release-notes/
├── SKILL.md # required: YAML frontmatter + Markdown instructions
├── scripts/ # optional: executable code
├── references/ # optional: documentation read on demand
├── assets/ # optional: templates, schemas, examples
└── ... # anything else you likeSKILL.md debe empezar con frontmatter YAML, y solo se requieren exactamente dos campos: name y description.1 Otros cuatro son opcionales y no se define ningún otro:
| Campo | Obligatorio | Restricción |
|---|---|---|
name | sí | 1–64 caracteres, letras minúsculas, dígitos y guiones; sin guion inicial, final ni doble; debe coincidir con el nombre del directorio |
description | sí | 1–1024 caracteres, no vacío; dice qué hace el skill y cuándo usarlo |
license | no | un nombre de licencia, o el nombre de un archivo de licencia incluido |
compatibility | no | hasta 500 caracteres: producto previsto, paquetes necesarios, acceso a red |
metadata | no | un mapa libre de claves string a valores string, para tus propias herramientas |
allowed-tools | no | lista separada por espacios de herramientas preaprobadas; marcada como experimental |
Aquí está el skill de notas de lanzamiento, completo, con su cuerpo por debajo de treinta líneas:
---
name: release-notes
description: Write the release notes for a tagged version in this company's house style. Use when preparing a release, drafting a changelog entry, or when someone asks for the notes for a version number or a tag.
allowed-tools: Bash(git log:*) Bash(git tag:*) Read
---
# Release notes
## Procedure
1. Run `scripts/collect.sh <previous-tag> <new-tag>`. It prints one line per merged
pull request: number, title, author and the labels.
2. Drop every line whose labels contain `internal`, `ci` or `chore`.
3. Put each surviving line into exactly one of the four categories in
[references/categories.md](references/categories.md). A change that seems to fit two
belongs in the higher one; the order in that file is the order of precedence.
4. Rewrite each line as a sentence in the voice defined in
[references/voice.md](references/voice.md). The pull request title is a note to
the team; the release note is a note to a stranger.
5. Check the result against [references/examples.md](references/examples.md).
## The one rule that is not negotiable
Every note says what a person can now do, or what stopped happening to them. If a
sentence can only be understood by someone who has read the diff, it is not finished.Lee qué es ese cuerpo. No es la política: es un índice con un orden de operaciones. La política vive en tres archivos que nombra y no incluye. Y el primer paso entrega trabajo a un script, porque el código de un script nunca entra en la context window: solo lo hace su salida.2
Tres niveles, y cuánto cuesta cada uno
Enlace a la sección: Tres niveles, y cuánto cuesta cada unoEl modelo de carga tiene un nombre y tres etapas. La especificación las enuncia con un presupuesto de tokens asociado:1
- Metadatos, unos 100 tokens:
nameydescription, cargados al inicio para cada skill instalado. - Instrucciones, recomendado por debajo de 5.000 tokens: el cuerpo de
SKILL.md, cargado cuando se activa el skill. - Recursos, según se necesiten: archivos incluidos, cargados solo cuando algo los requiere.
La documentación de referencia añade una cuarta columna a la misma tabla —cuándo se carga, coste en tokens, contenido—, y la fila que importa es la tercera: ninguno hasta que se accede.3 La frase que resume todo el capítulo también está ahí:
Los archivos no consumen contexto hasta que se accede a ellos, así que los Skills pueden incluir documentación de API exhaustiva, grandes datasets o ejemplos extensos. No hay penalización de contexto por el contenido incluido que no se usa.3
La tabla medida al principio de este capítulo es esa afirmación comprobada contra cinco skills que nadie escribió para este artículo. Dos filas merecen leerse una frente a la otra.
next-best-practices tiene un cuerpo de 966 tokens que enlaza a diecinueve archivos con 19.374 tokens. Pídele que arregle un error de hydration y el agent lee el cuerpo más hydration-error.md: 1.409 tokens de 20.340, un factor de catorce, y los otros dieciocho archivos nunca se abren.
next-cache-components tiene un cuerpo de 2.334 tokens y ningún archivo incluido. Es un skill válido y bien escrito, y no tiene nivel 3 que revelar. Ese es el límite honesto de la técnica: la progressive disclosure solo ahorra si hay algo que diferir. Un skill cuyo conocimiento no se descompone paga todo su cuerpo al activarse, y la única palanca que queda es no activarlo.
Rómpelo: la descripción es toda la interfaz
Enlace a la sección: Rómpelo: la descripción es toda la interfazEl nivel 1 es una decisión de routing tomada a partir de una frase. Nada más de un skill influye en si alguna vez se abre: ni la calidad del cuerpo, ni los ejemplos, ni los scripts. Así que la descripción no es documentación. Es la superficie de consulta, y puede estar mal.
La especificación lo dice en forma de un buen ejemplo y uno malo, y el malo son cuatro palabras: description: Helps with PDFs.1 Merece la pena medirlo en vez de aceptarlo.
Seis skills, cada uno con una descripción plausible que dice qué hace y cuándo usarlo. Veinticuatro solicitudes, cuatro por skill, formuladas como las formularía una persona y sin nombrar nunca el skill. El modelo ve las seis líneas en su system prompt y debe responder con un nombre o con NONE. Greedy decoding, así que reproduce. Después, las mismas veinticuatro solicitudes con los mismos seis skills, y las descripciones recortadas hasta su asunto desnudo.
rich - sql-review: Review a SQL migration for locks, missing indexes and unsafe
defaults before it runs on the production database. Use when someone adds
or changes a migration, an index, or a table column.
thin - sql-review: Helps with SQL.rich 295 tokens of level 1 for six skills 18/24 correct = 75.0 % [55.1, 88.0]
thin 81 tokens of level 1 for six skills 10/24 correct = 41.7 % [24.5, 61.2]
paired: rich only 9, thin only 1, two-sided sign test p = 0.0215
answered NONE: rich 1 of 24, thin 9 of 24Lee primero los intervalos, como insistió el Capítulo 4 y volverá a insistir el Capítulo 29: se solapan, y veinticuatro casos no pueden ordenar dos sistemas solo por sus agregados. La comparación pareada es lo que lo resuelve, y es el instrumento del Capítulo 15: de los diez casos en los que las dos ramas discreparon, nueve fueron para las descripciones ricas y uno para las pobres. Eso queda establecido en el umbral habitual.
Ahora lee la última línea, que es el hallazgo real. Con descripciones pobres, el modelo respondió NONE en nueve de veinticuatro solicitudes. No el skill equivocado: ningún skill. Aquí tienes cuatro de ellas, literalmente:
"Check this migration before I run it against production." -> release-notes
"Will this CREATE INDEX lock writes?" -> NONE
"Is this ALTER TABLE safe to deploy at peak traffic?" -> NONE
"Is 'seamless and powerful' allowed in the app store listing?" -> next-best-practicesHabía instalado un skill sql-review perfecto, con cuerpo, ejemplos y checklist, y nunca se abrió, tres veces seguidas, ante las tres preguntas para las que fue escrito. Los niveles 2 y 3 son irrelevantes para un skill al que el nivel 1 nunca llega.
El coste de arreglarlo: 214 tokens, la diferencia entre 295 y 81, repartida entre seis skills. Es el hallazgo del Capítulo 18 llegando desde el otro lado. Allí, cambiar solo la descripción de una herramienta llevó el formateo de fechas de 2 aciertos de 24 a 24 de 24. Aquí, cambiar solo la descripción de un skill lleva la activación de 10 de 24 a 18. En ambos casos, el arreglo más barato del sistema es una frase, y en ambos casos la frase tiene que nombrar el disparador y no solo el tema: no qué es la cosa, sino qué habrá dicho justo el usuario cuando aplica.
Una salvedad que este capítulo debe a sus propios estándares. Este es un modelo de medio millardo de parámetros, y un modelo de frontera hace routing mucho mejor que el 75 %. Lee el mecanismo, no la magnitud: la señal de routing tiene una sola frase sea cual sea el modelo que la lea, y ningún modelo puede seleccionar según información que no pusiste en esa frase.
Rómpelo otra vez: la vía de escape que cuesta 26.362 tokens
Enlace a la sección: Rómpelo otra vez: la vía de escape que cuesta 26.362 tokensEl segundo fallo es lo opuesto al primero. El skill se encuentra, los niveles están correctamente separados, y el agent lo lee entero de todos modos.
vercel-react-best-practices es un skill genuinamente bien construido. Su cuerpo de 1.670 tokens es una tabla de prioridades de ocho categorías y una referencia rápida que nombra 70 archivos de reglas, una línea cada uno. Las reglas están en disco junto a él: 70 archivos, el más pequeño de 132 tokens, mediana de 319, el mayor de 1.052. Hazle una pregunta sobre barrel imports y el coste honesto es el cuerpo más un archivo: menos de 2.400 tokens frente a un paquete de 53.670.
Entonces la última línea del cuerpo dice esto:
## Full Compiled Document
For the complete guide with all rules expanded: `AGENTS.md`AGENTS.md son 26.362 tokens. Es la concatenación de los 70 archivos de reglas: su suma es 25.784, y la diferencia son los encabezados entre ellos. Así que el skill le ofrece al agent elegir entre leer una regla mediana de 319 tokens y leer el mismo contenido, todo él, a ochenta y tres veces el precio, y le ofrece esa elección en una frase sin coste asociado y sin condición sobre cuándo tomarla.
Eso no es un bug y el archivo no está mal; un documento compilado es genuinamente útil para una persona, y para un agent al que se le ha pedido auditar una codebase completa. Es un archivo de nivel 3 con una invitación de nivel 2, y la lección se generaliza más allá de este skill: cada ruta que salga de un SKILL.md debería decir qué cuesta y cuándo merece la pena, porque el modelo no tiene forma de saber que un nombre de archivo es ochenta y tres veces más caro que el nombre de archivo que tiene encima.
La misma carpeta contiene una lección menor sobre obsolescencia. El cuerpo dice «70 rules across 8 categories» y enumera 70; el directorio rules/ contiene 72 archivos, de los cuales dos son andamiaje (_template.md y _sections.md); y el sidecar metadata.json dice «40+ rules». Tres recuentos del mismo conjunto en una carpeta, uno correcto, uno aritmético y uno sobrante de una versión anterior. Un skill es un documento, y los documentos se pudren exactamente como un comentario de código que se ha desviado del código que tiene al lado, con la diferencia de que este lo lee una máquina que no levantará una ceja.
Los campos que añade la implementación de referencia, y la trampa de portabilidad
Enlace a la sección: Los campos que añade la implementación de referencia, y la trampa de portabilidadLa especificación abierta define seis campos de frontmatter. La implementación de referencia, Claude Code, acepta veinte.2 Merece la pena conocer cinco grupos por su nombre, porque ahí es donde el formato deja de ser solo un documento:
Permiso e invocación. allowed-tools preaprueba herramientas para el turno que invocó el skill y la concesión se borra en el siguiente mensaje; disallowed-tools las elimina. disable-model-invocation impide que el modelo lo cargue por sí solo, lo que convierte el skill en un comando que ejecuta una persona. user-invocable: false hace lo contrario: oculto para las personas, disponible solo para el modelo, para conocimiento de fondo.
Aislamiento y coste. context: fork ejecuta el skill en un contexto de sub-agent separado con su propia ventana —el límite de sub-agent del Capítulo 25 como una línea de YAML—, con agent eligiendo qué tipo y background decidiendo si el turno espera. model y effort cambian qué modelo se ejecuta mientras el skill está activo, solo para ese turno.
Argumentos (arguments, argument-hint) permiten que una persona pase valores que se sustituyen en el cuerpo, que es lo que hace que un skill sea usable como slash command. Ámbito (paths) limita la activación a archivos que coinciden con un glob. Y inyección dinámica de contexto es la que cambia el modelo mental: una línea de la forma !`git diff HEAD` se ejecuta antes de enviar el cuerpo, y su salida se sustituye en el texto. El documento es una plantilla, y parte de él se calcula en el momento de lectura.
Ahora la trampa, y está enunciada en la misma documentación: fuera de Claude Code —en el producto web, a través de la Skills API, en el empaquetado— solo se permiten los seis campos especificados, y cualquier otro campo es un error bloqueante al subir.2 Así que un skill que funciona perfectamente en un producto falla al instalarse en otro del mismo proveedor, y falla en el frontmatter en vez de en algo que podrías probar leyendo la prosa. Si pretendes que un skill sea portable, los seis campos son todo el presupuesto. Si no, dilo en compatibility, que existe exactamente para eso.
La tabla por la que existe este capítulo
Enlace a la sección: La tabla por la que existe este capítuloCuatro cosas se confunden constantemente entre sí, y la confusión no es pedantería terminológica: elegir mal cuesta dinero en cada turno, o te cuesta una garantía que creías tener.
| System prompt | Skill | Herramienta | Servidor MCP | |
|---|---|---|---|---|
| Qué es | texto en cada solicitud | una carpeta cuya raíz es un SKILL.md | un JSON Schema más un endpoint en tu código | un proceso o servicio que habla un protocolo |
| Qué hace el modelo | lo lee, siempre | lo lee, cuando decide que la descripción coincide | la llama, y espera tu resultado | lo llama, a través del host, un cliente por servidor |
| Qué cuesta | toda su longitud, cada turno, para siempre | unos 50 tokens por turno; el cuerpo una vez, si se usa | su schema, cada turno; ejecución cuando se llama | cada schema más el instructions del servidor, cada turno |
| Qué puede garantizar | nada: es consejo | nada: es consejo que el modelo puede saltarse | todo lo que tu código impone antes de actuar | todo lo que el servidor impone |
| Quién lo escribe | tú | tú, un compañero o un proveedor | tú | otra persona, para muchos hosts |
| Capítulo | 15 | este | 18 | 26 y 27 |
Las dos filas en negrita son toda la distinción. Un skill se lee; una herramienta se invoca. Un skill es prosa que llega a la context window y compite por attention con todo lo demás que hay ahí; el modelo puede seguirlo, malinterpretarlo o ignorarlo, y nada en el sistema se entera. Una herramienta es una llamada que sale por completo de las manos del modelo: tu código recibe argumentos, los valida, comprueba permisos y decide. El Capítulo 18 lo formuló como que el modelo propone y tu código dispone, y esa división es exactamente lo que un skill no tiene.
Así que seis casos reales, resueltos:
«Responde en el idioma del usuario. Nunca indiques un precio que no se te haya dado.»
Enlace a la sección: «Responde en el idioma del usuario. Nunca indiques un precio que no se te haya dado.»System prompt. Aplica en cada turno, es una restricción más que un procedimiento y tiene dos frases. Algo que siempre aplica no tiene nada que revelar progresivamente, y pagar una línea de descubrimiento en cada turno para evitar pagar dos frases en cada turno no es un ahorro.
«Cómo escribimos aquí las notas de lanzamiento.»
Enlace a la sección: «Cómo escribimos aquí las notas de lanzamiento.»Skill. Procedimental, necesario quizá en un turno de cada cuarenta, descomponible en voz, taxonomía y ejemplos, y es prosa que una persona editará. Esta es la forma para la que se diseñó el formato, y la medición anterior es lo que ahorra.
«Busca un pedido por su identificador en la base de datos del almacén.»
Enlace a la sección: «Busca un pedido por su identificador en la base de datos del almacén.»Herramienta. Hay una función determinista detrás y el modelo no debe improvisar la consulta. Escribir esto como un skill —un documento que explica cómo consultar el almacén— le entrega al modelo el schema y espera. Un schema más un endpoint le entrega una respuesta.
«Lee y escribe issues en nuestro tracker, desde cada producto de agent que usa la empresa.»
Enlace a la sección: «Lee y escribe issues en nuestro tracker, desde cada producto de agent que usa la empresa.»Servidor MCP. La capacidad no es tuya, varios hosts la necesitan y tiene una historia de autenticación. Ese es el problema con el que abrió el Capítulo 26, un protocolo es la respuesta, y el Capítulo 27 entrega uno dos veces. Un skill no puede ser descubierto por un host que nunca ha visto tu sistema de archivos, que es precisamente la brecha que el trabajo de estándares al final de este capítulo está cerrando.
«El manual de marca de cuatrocientas páginas.»
Enlace a la sección: «El manual de marca de cuatrocientas páginas.»Ninguna de las cuatro. Es conocimiento que consultar, no un procedimiento que seguir, y pertenece a un índice que el agent busca: Capítulo 19. Incluirlo como nivel 3 está permitido y es tentador y equivocado, porque el modelo tendría que adivinar cuál de cuarenta archivos contiene la respuesta solo por sus nombres. Lo que sí es un buen skill es el procedimiento de dos páginas que le dice al agent cuándo buscar en ese índice, qué significa una puntuación de similitud baja y cómo citar lo que encuentre.
«Nunca reembolses más de doscientos euros sin una persona.»
Enlace a la sección: «Nunca reembolses más de doscientos euros sin una persona.»Una herramienta con una puerta de aprobación, y nunca un skill. Este es el caso que importa. Escrito en un SKILL.md, el límite es una frase que el modelo lee y normalmente respeta; escrito en la herramienta de reembolso, es una rama que se ejecuta antes de que se mueva dinero. Un límite que te avergonzaría si se cruzara no es documentación. La regla, que merece memorizarse: si la consecuencia de ignorar la instrucción es peor que una respuesta mal formateada, la instrucción no pertenece a un documento.
De jerga interna a estándar, con los números
Enlace a la sección: De jerga interna a estándar, con los númerosLa historia es breve, está inusualmente bien fechada y es la parte que casi nadie cuenta.
Agent Skills se publicó el 16 de octubre de 2025 como función de un proveedor, definida en aquel anuncio como «carpetas organizadas de instrucciones, scripts y recursos que los agents pueden descubrir y cargar dinámicamente para rendir mejor en tareas concretas», con los tres niveles descritos mediante una analogía que merece conservarse: «como un manual bien organizado que empieza con un índice, luego capítulos concretos y, por último, un apéndice detallado».4
El 18 de diciembre de 2025, la misma página se actualizó para anunciar el formato como un estándar abierto, con una especificación propia en agentskills.io, gobernanza abierta a contribuciones y un validador de referencia.3 Leído el 7 de septiembre de 2026, el escaparate de clientes del estándar enumera cuarenta y seis productos —editores, terminales, plataformas cloud y runtimes móviles, incluidos los coding agents first-party de Anthropic, OpenAI, Google y Mistral—, cada uno enlazando a su propia documentación de configuración.1
La convergencia con MCP se está haciendo en abierto, con números que puedes comprobar:
| Qué es | Abierto | Estado el 7 sep 2026 | |
|---|---|---|---|
| SEP-2076 | Agent Skills as a First-Class MCP Primitive: nuevos métodos skills/list y skills/get, una capacidad skills, una notificación list_changed | 13 de enero de 2026 | cerrado, 24 de febrero de 2026 |
| Skills Over MCP working group | define cómo los skills se «descubren, distribuyen y consumen a través de MCP»; se reúne semanalmente; diecisiete miembros listados, dos de ellos leads | interest group 1 de febrero de 2026; working group 16 de abril de 2026 | activo |
| SEP-2640 | Skills Extension, Extensions Track: una convención de recursos skill://, identificador de extensión io.modelcontextprotocol/skills, descubrimiento mediante skills/list y contenido mediante resources/read | 23 de abril de 2026 | en revisión |
Lo interesante es el cierre, no las propuestas. SEP-2076 pedía una cuarta primitiva junto a tools, resources y prompts. El working group que surgió de ella decidió que la respuesta era no: los skills van sobre la primitiva de resources que ya existe, como extensión opt-in.5 El Capítulo 26 midió el mismo instinto en el propio changelog del protocolo, donde sampling, roots y logging se deprecaron en vez de conservarse. Un organismo de estandarización que elimina una propuesta que él mismo redactó se está comportando bien, y la razón para contar esta historia con los números delante es que los resúmenes que leerás en otros sitios siguen describiendo los skills como una primitiva MCP.
Adónde va esto ahora
Enlace a la sección: Adónde va esto ahoraAhora puedes escribir un SKILL.md, dividirlo en tres niveles que se pagan solos, leer el frontmatter del skill de otra persona y saber qué campos no sobrevivirán a una subida en otro sitio, y responder a la pregunta alrededor de la cual se construyó todo el capítulo —system prompt, skill, herramienta o servidor— con una razón en vez de con un hábito.
Lo que no puedes hacer es saber si el tuyo funciona.
Toda afirmación importante en este capítulo fue una medición, y la más importante fue una exactitud: 18 de 24 frente a 10 de 24, con un intervalo sobre cada uno y una prueba pareada entre ellos, porque dos agregados que se solapan no deciden nada. Ese instrumento fue prestado. La descripción de un skill es una clave de routing, su cuerpo es un procedimiento que el modelo puede seguir o no, y ambas son propiedades que solo puedes averiguar ejecutando la cosa muchas veces y puntuando lo que vuelve: un conjunto dorado, un grader que escribiste antes de la ejecución y la métrica que pregunta si funcionó cada vez en vez de al menos una vez.
El Capítulo 29 es eso, y abre con el número del que depende el método de este capítulo: un agent que tiene éxito siete veces de cada diez parece un 70 %, y su pass^10 —la probabilidad de que tenga éxito en las diez— es cero. También mide tres graders sobre las mismas doscientas transcripciones y obtiene 0 %, 13 % y 26 % sin regenerar un solo token. Antes de confiar en la frase que acabas de escribir en un description, necesitas el instrumento que pueda decirte que es peor que la que sustituiste.
Fuentes y método
Enlace a la sección: Fuentes y métodoTodos los recuentos de tokens de este capítulo se produjeron localmente con tiktoken 0.14.0 y la codificación o200k_base, el 7 de septiembre de 2026: sobre los cinco skills de terceros enumerados al principio de este capítulo, y sobre el skill release-notes escrito para este capítulo, cuyo texto completo se reproduce arriba en parte. El nivel 1 se mide como la línea única - name: description que un host renderiza en el system prompt; el nivel 2 es el cuerpo de SKILL.md después del frontmatter; el nivel 3 es cualquier otro archivo de la carpeta. Los costes usan las tarifas medidas del Capítulo 16 para gpt-5.6-terra, $2,00 por millón de input tokens y $0,20 por millón de input tokens en caché, aplicadas a esos recuentos: son aritmética sobre tokens medidos, no observaciones de una factura real. No se llamó a ninguna API de pago para escribir este capítulo.
El experimento de activación ejecutó Qwen/Qwen2.5-0.5B-Instruct en media precisión sobre una GPU de consumo, greedy decoding, 24 solicitudes sobre seis skills, dos veces: una con descripciones que indican qué hace el skill y cuándo aplica, otra con las descripciones recortadas hasta un tema desnudo al estilo del propio «poor example» de la especificación. Los intervalos son Wilson al 95 %; la comparación pareada es una prueba exacta bilateral de signos sobre los diez casos discordantes; el intervalo de Wilson es el del Capítulo 4 y la prueba exacta pareada de signos es la del Capítulo 15, ambos reutilizados sin cambios. Lee las magnitudes como propiedad de un modelo muy pequeño y el método como transferible.
Los cinco skills medidos aquí son paquetes de terceros, no escritos para este capítulo: next-best-practices y next-cache-components de vercel-labs/next-skills, y vercel-composition-patterns, vercel-react-best-practices y vercel-react-native-skills de vercel-labs/agent-skills. Sus recuentos internos —70 archivos de reglas, AGENTS.md con 26.362 tokens, metadata.json fechado en enero de 2026 y afirmando «40+ rules»— se leyeron de los archivos en disco el 7 de septiembre de 2026 y son propiedades de esa versión publicada, no críticas a sus autores: cada una de ellas es el tipo de deriva que aparece en cualquier árbol de documentación que se edita más a menudo de lo que se cuenta.
Referencias
Enlace a la sección: Referencias-
Agent Skills Specification y Overview,
agentskills.io/specificationyagentskills.io, leídos el 7 de septiembre de 2026. Fuente del diseño de directorio; de la tabla de frontmatter reproducida arriba con todas sus restricciones (name1–64 caracteres y coincidente con el directorio,description1–1024 caracteres,compatibilityhasta 500,allowed-toolsmarcado como experimental); de los buenos y malos ejemplos dedescription; de la descripción de progressive disclosure en tres etapas con su presupuesto de tokens (metadatos alrededor de 100 tokens, instrucciones por debajo de 5.000 recomendado, recursos según se necesiten) y el consejo de mantenerSKILL.mdpor debajo de 500 líneas; de la nota de que «el agent cargará todo este archivo una vez haya decidido activar un skill»; de las convencionesscripts/,references/yassets/; del comandoskills-ref validate; de la afirmación de que el formato «fue desarrollado originalmente por Anthropic, publicado como estándar abierto y adoptado por un número creciente de productos de agent»; y del escaparate de clientes, que listaba cuarenta y seis productos en la fecha de lectura. ↩ ↩2 ↩3 ↩4 -
Skills en la documentación de Claude Code,
code.claude.com/docs/en/skills, leída el 7 de septiembre de 2026. Fuente de la tabla completa de campos usada en la sección «los campos que añade la implementación de referencia»:when_to_use,argument-hint,arguments,disable-model-invocation,user-invocable,allowed-tools,disallowed-tools,model,effort,context,agent,background,hooks,paths,shell,metadata,license,compatibility; de la descripción de la inyección dinámica de contexto con!`command`ejecutándose antes de enviar el cuerpo; de la regla de que una concesiónallowed-toolsse borra en el siguiente mensaje; y de la nota de cumplimiento de que fuera de Claude Code solo se aceptan los seis campos especificados y cualquier otro causa un error bloqueante al subir o empaquetar. ↩ ↩2 ↩3 -
Vista general de Agent Skills,
platform.claude.com/docs/en/agents-and-tools/agent-skills/overview, leída el 7 de septiembre de 2026. Fuente de la tabla de niveles con sus cuatro columnas (Nivel 1 metadatos, siempre, unos 100 tokens por skill; Nivel 2 instrucciones, cuando se dispara, menos de 5k tokens; Nivel 3+ recursos, según se necesiten, ninguno hasta que se accede); de la frase citada íntegramente sobre el contenido incluido que no conlleva penalización de contexto; de «hasta que se dispara un Skill, solo su nombre y descripción ocupan contexto»; de la afirmación de que el código de un script nunca entra en la context window y solo lo hace su salida; y de la sección de seguridad, que te dice que uses skills solo de fuentes de confianza y advierte de que un skill malicioso «puede dirigir a Claude para invocar herramientas o ejecutar código de formas que no coinciden con el propósito declarado del Skill»: el tema del Capítulo 30, llegando a través de un documento en vez de a través de una descripción de herramienta. ↩ ↩2 ↩3 -
Anthropic, Equipping agents for the real world with Agent Skills, 16 de octubre de 2025,
anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills, leído el 7 de septiembre de 2026. Fuente de la definición citada arriba, de la analogía índice/capítulos/apéndice, de los tres niveles tal como se describieron originalmente y del encuadre de que los agents necesitan formas «más componibles, escalables y portables» de recibir conocimiento experto de dominio. El anuncio de producto complementario enclaude.com/blog/skillscontiene la fecha de publicación del 16 de octubre de 2025 y la actualización del 18 de diciembre de 2025 que introdujo la gestión para toda la organización y el estándar abierto. ↩ -
Skills Over MCP Charter,
modelcontextprotocol.io/community/working-groups/skills-over-mcp, leído el 7 de septiembre de 2026. Fuente de la declaración de misión citada arriba, de las fechas del changelog (interest group formado el 1 de febrero de 2026, charter inicial el 14 de abril de 2026, convertido en working group el 16 de abril de 2026, SEP-2640 enlazado el 25 de abril de 2026), del liderazgo y los diecisiete miembros listados, de la cadencia semanal de reuniones y del criterio de éxito que nombra el borrador de Skills Extension como «una extensión formal usando primitivas Resources existentes». SEP-2076, Agent Skills as a First-Class MCP Primitive,github.com/modelcontextprotocol/modelcontextprotocol/pull/2076, se abrió el 13 de enero de 2026 y se cerró el 24 de febrero de 2026; proponíaskills/list,skills/get, una capacidad de servidorskillsy una notificaciónskills/list_changed, y definía un skill como «un paquete con nombre de instrucciones más referencias a tools, prompts y resources que juntas enseñan a un agent cómo ejecutar un workflow específico de dominio». SEP-2640, Skills Extension,.../pull/2640, se abrió el 23 de abril de 2026 en el Extensions Track y contiene la convención de recursosskill://y el identificador de extensiónio.modelcontextprotocol/skills. El Capítulo 26 enumera el mismo working group entre las extensiones opcionales del protocolo. ↩