Tabla de Contenidos
¡Esta es una revisión vieja del documento!
9. Skills, agentes y subagentes
En Skills y agentes vimos lo que dan las herramientas: la skill, que se carga en tu conversación, y el agente, que trabaja en un contexto vacío y devuelve un resultado. Aquí vamos a ver qué hacemos nosotros con eso: en este curso todo se escribe como skill, y hay tres tipos: las que saben, las que hacen y los subagentes que lanzan las que hacen. Cómo se organiza cada una por dentro (carpetas, secciones del SKILL.md) está en Estructura de un skill.
Más información:
- Specification - Agent Skills: el estándar de las skills: una carpeta con su
SKILL.mdy los ficheros que use. - Claude Code: subagents: qué es un subagente y cómo se le pasa el prompt.
1. Lo que da la herramienta
Dos ficheros con instrucciones, que se distinguen solo en dónde se carga su contenido (Skill o agente):
- Skill: su fichero se añade a tu conversación. Lo que lee y hace se queda en tu contexto.
- Agente: su fichero va a un contexto nuevo y vacío, junto con el prompt que le pasa el principal. A tu conversación solo vuelve su respuesta.
Y la frontera es más fina de lo que parece: una skill lanzada en una conversación recién abierta que cierras al terminar es un agente (el caso especial del tema 8). Claude Code lo hace explícito: una skill con context: fork en el frontmatter se ejecuta como agente, en un contexto aparte, sin cambiar nada más del fichero.
context: fork en las skills que lo necesiten, que es lo que ha acabado haciendo Claude Code.
2. Lo que hacemos nosotros: tres tipos
En este curso todo se escribe como skill. Lo que cambia es para qué sirve cada una, quién la lanza y dónde se carga:
| Skill de conocimiento | Skill de procedimiento | Subagente | |
|---|---|---|---|
| Qué es | Lo que hay que saber: las convenciones del proyecto | Lo que hay que hacer: un proceso por fases | Una comprobación cerrada dentro de un procedimiento |
| Quién la lanza | Una skill de procedimiento, o el modelo cuando la necesita | Tú, con / | La skill de procedimiento, en una de sus fases |
| Dónde se carga | En tu conversación | En tu conversación (o en una nueva con context: fork) | En un contexto nuevo y vacío |
| Qué devuelve | Nada: se queda cargada | El trabajo hecho y un mensaje final | Una respuesta cerrada: PASS o FAIL y una línea por problema |
| Nombre | k-servicios | do-crear-servicio | verificador.md |
| Dónde vive | .claude/skills/k-servicios/ | .claude/skills/do-crear-servicio/ | .claude/skills/do-crear-servicio/subagents/ |
.claude/skills/
├── k-servicios/
│ └── SKILL.md
└── do-crear-servicio/
├── SKILL.md
└── subagents/
└── verificador.md
Skill de conocimiento: k-
Describe cómo se hace algo en el proyecto: cómo son los servicios, cómo se escriben los tests, cómo se nombran los commits. No hace nada sola: la cargan las skills de procedimiento («carga k-servicios») o el modelo cuando ve en su description que la necesita.
Es el ejemplo 1 del tema 8, el repository JPA: conocimiento que tiene que quedarse en la conversación para que valga en el siguiente mensaje. Por eso es una skill y nunca un agente.
Skill de procedimiento: do-
Ejecuta un proceso por fases: crear un servicio, revisar un PR, generar los tests. La lanzas tú con /do-crear-servicio R-12 y al terminar te dice qué ha hecho.
Es el ejemplo 2 del tema 8, generar los tests: el trabajo de un agente. Pero lo escribimos como skill, no como agente, por dos razones:
- Un agente no tiene carpeta propia. Es un único fichero en
.claude/agents/, así que sus plantillas, scripts, ejemplos y subagentes no pueden ir junto a él. Una skill es una carpeta y lleva dentro todo lo que usa. - Lanzarla es más corto. En Claude Code un agente se lanza con
agent-delante del nombre; una skill, directamente:
@agent-crear-servicio R-12 /do-crear-servicio R-12
Lo que aporta el agente, empezar con el contexto vacío, se consigue lanzando la skill en una conversación limpia, con /clear antes. Y si quieres que se ejecute como agente de verdad, mientras tú sigues en tu conversación, en Claude Code basta con context: fork en el frontmatter:
--- name: do-crear-servicio description: Crea un servicio de Pedidos con su test a partir de un requisito de specs/. Usar cuando se pida crear, añadir o generar un servicio o una clase *Service. context: fork ---
Subagente
Un subagente es un trabajo cerrado dentro de una fase de una skill de procedimiento: comprobar que el test cubre el requisito, revisar el fichero generado, juzgar si cumple el checklist. Lo lanza la skill, no tú, y su respuesta la lee la skill para decidir si sigue o corrige.
Su prompt es un fichero .md en la carpeta subagents/ de la skill. Para la herramienta ese fichero no existe: no está en .claude/agents/ ni tiene frontmatter. Es la skill la que dice cuándo se lanza, qué fichero lee y qué le pasa, y Claude Code arranca un subagente genérico con ese prompt:
✅ Lanza un subagente con model: haiku que lea `subagents/verificador.md` y pásale `requisito` y `ruta_test`. ❌ Lanza un subagente que lea `subagents/verificador.md`. (no dice qué le pasa ni con qué modelo)
Es el agente del tema 8 (El fichero del agente), con las mismas tres secciones, Entradas, Proceso y Salida, y las mismas razones:
- Empieza vacío, así que todo lo que necesita le llega en
Entradas. «Revisa lo que hemos hecho» no funciona. - Lo que lee muere con él: la clase, el test, la salida de
mvn test. A la skill solo le vuelve la respuesta. - La respuesta es cerrada,
PASSoFAILen la primera línea, para que la skill la compare tal cual.
¿Por qué un subagente y no otra skill do-? Porque el resultado lo necesita la skill que sigue trabajando, no tú, y porque lo que lee no tiene que llenar tu contexto. Y es un trabajo demasiado pequeño para tener su propia carpeta: va con el procedimiento que lo usa.
fork. El fork hereda toda la conversación: el verificador ve razonar al que escribió el código y le da la razón. Además ignora el model.
3. El nombre
El nombre de la skill (su carpeta y su name) empieza por un prefijo que dice de qué tipo es:
k-, de knowledge, conocimiento en inglés: las que saben cosas:k-servicios,k-tests. Detrás del prefijo, el tema.do-, «hacer» en inglés: las que hacen cosas:do-crear-servicio,do-revisar-pr. Detrás del prefijo, un verbo.
Todo en kebab-case. Los subagentes no llevan prefijo: el fichero se llama por su rol, verificador.md, revisor.md, porque ya están dentro de la do- que los lanza.
Ventajas del prefijo:
- No chocan con los comandos de Claude Code, que también se lanzan con
/. Una skill llamadainitocontextse confunde con/inito/context;/do-revisar-prno coincide con ningún comando. - Escribiendo
/do-sale todo lo que se puede lanzar: el autocompletado enseña solo las skills que hacen cosas, sin las de conocimiento, que no se lanzan a mano.
4. Cuál de los tres
Tres preguntas, en este orden:
- ¿Son reglas o es una tarea? Si son reglas (cómo se hace algo),
k-. Si es una tarea, sigue. - ¿La lanzas tú? Si la pides tú y quieres ver cómo avanza,
do-. Si la lanza otra skill en medio de su proceso, sigue. - ¿El resultado es una comprobación cerrada que la skill compara? Entonces subagente. Si la skill necesita que lo que se ha leído siga en el contexto, no es un subagente: es una fase más de la
do-.
Con el ejemplo del curso:
- Cómo son los servicios →
k-servicios. - Crear un servicio a partir de un requisito →
do-crear-servicio. - Comprobar que el test del servicio cubre el requisito, dentro de
do-crear-servicio→subagents/verificador.md.
Ejercicios
Ejercicio 1
Di si cada cosa es una skill de conocimiento, una de procedimiento o un subagente, y por qué:
| Tarea | Tipo | Por qué |
|---|---|---|
| Las convenciones de los controladores REST del proyecto | ||
| Crear el controlador de un agregado a partir de su especificación | ||
| Comprobar que ningún controlador devuelve una entidad JPA, al final de crear uno | ||
| Cómo se escribe un mensaje de commit en el equipo | ||
| Revisar un PR entero y dejar la lista de problemas | ||
Contar cuántos requisitos de specs/ no tienen test, dentro de la revisión del PR |
Ejercicio 2
do-revisar-pr tiene estas fases: leer el PR, comprobar las convenciones de los servicios, comprobar que cada requisito tiene test, comprobar la cobertura y escribir el informe. Di qué skills k- carga, qué fases se hacen con un subagente y qué le pasa a cada uno en Entradas.
