Herramientas de usuario

Herramientas del sitio


cursos:sdd:09-skills-agentes-subagentes

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
cursos:sdd:09-skills-agentes-subagentes [2026/11/06 08:46] – Abrir la sección 2 con la nomenclatura skill/agente/subagente y cómo se nombra cada uno; El nombre se funde en ella claudecursos:sdd:09-skills-agentes-subagentes [2026/11/06 09:13] (actual) – Sección 4: el inconveniente del modelo y la opinión sobre unificar agentes y skills claude
Línea 72: Línea 72:
 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. 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 de la herramienta, por dos razones: +Es el ejemplo 2 del tema 8, generar los tests: **el trabajo de un agente**. Pero lo escribimos como //skill//, no como agente de la herramienta ([[#por_que_los_agentes_son_skills|por qué]]). 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:
- +
-  * **Un agente de la herramienta 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: +
- +
-<sxh bash> +
-@agent-crear-servicio R-12 +
-/do-crear-servicio R-12 +
-</sxh> +
- +
-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:+
  
 <sxh yaml;title:.claude/skills/do-crear-servicio/SKILL.md> <sxh yaml;title:.claude/skills/do-crear-servicio/SKILL.md>
Línea 110: Línea 100:
   * **La respuesta es cerrada**, ''PASS'' o ''FAIL'' en la primera línea, para que el agente la compare tal cual.   * **La respuesta es cerrada**, ''PASS'' o ''FAIL'' en la primera línea, para que el agente la compare tal cual.
  
-¿Por qué un subagente y no otro agente ''do-''? Porque el resultado lo necesita **el agente 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 agente que lo usa.+Por qué va dentro del agente y no en ''.claude/agents/'' ni en su propia carpeta ''do-'', en [[#por_que_los_subagentes_van_dentro_del_agente|la sección 4]].
  
 <note warning>**Nunca se lanza como ''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''.</note> <note warning>**Nunca se lanza como ''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''.</note>
- 
----- 
  
 ---- ----
Línea 131: Línea 119:
   * Crear un servicio a partir de un requisito → ''do-crear-servicio''.   * 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''.   * Comprobar que el test del servicio cubre el requisito, dentro de ''do-crear-servicio'' → ''subagents/verificador.md''.
 +
 +----
 +
 +===== 4. Por qué esta separación =====
 +
 +La herramienta ya trae //skills// y agentes. Tenerlos de otra manera, los agentes como //skill// y los subagentes como un fichero dentro del agente, es una decisión, y estas son las razones.
 +
 +==== Por qué los agentes son skills ====
 +
 +  * **Un agente de la herramienta no tiene carpeta propia.** Es un único fichero en ''.claude/agents/''. Nuestros agentes llevan plantillas, scripts, ejemplos, subagentes y //evals// ([[cursos:sdd:10-creando-skills#estructura_de_carpetas_y_ficheros|la estructura]]), y todo eso tiene que ir junto para poder mantenerlo. Una //skill// es una carpeta.
 +  * **Lanzarlo cuesta más.** En Claude Code un agente se lanza con ''agent-'' delante del nombre y una //skill// directamente, y ''/do-'' autocompleta solo lo que se puede lanzar:
 +
 +<sxh bash>
 +@agent-crear-servicio R-12
 +/do-crear-servicio R-12
 +</sxh>
 +
 +  * **Un agente se lanza solo en su conversación.** Lo normal con un trabajo cerrado es abrir una conversación, lanzar ''/do-crear-servicio R-12'', mirar el resultado y cerrarla. Eso ya es un agente ([[cursos:sdd:08-skills-agentes#un_caso_especial|el caso especial del tema 8]]): el contexto vacío lo da ''/clear'', no hace falta otro proceso. Y el día que quieras seguir hablando mientras trabaja, ''context: fork'' lo convierte en agente de la herramienta sin tocar el resto del fichero.
 +  * **Vale para las dos herramientas.** OpenCode lee ''.claude/skills/'' pero no ''.claude/agents/'', y su frontmatter de agente es otro ([[cursos:sdd:03-opencode#donde_se_guardan|tema 3]]). Un agente escrito como //skill// funciona igual en Claude Code y en OpenCode; escrito como agente, hay que mantener dos ficheros.
 +  * **Un solo formato que aprender.** Skill y agente tienen el mismo ''SKILL.md'', el mismo frontmatter y la misma forma de organizar la carpeta. Lo que cambia entre uno y otro es el cuerpo, no la mecánica.
 +
 +**El único inconveniente: el modelo.** Un agente de la herramienta elige su modelo en el frontmatter (''model: haiku'' para un revisor mecánico, el modelo grande para el que diseña). Una //skill// no: se ejecuta con el modelo de la conversación en la que se carga. La excepción es Claude Code, cuyo frontmatter de //skill// también admite ''model'', así que ahí el inconveniente desaparece:
 +
 +<sxh yaml;title:.claude/skills/do-revisar-pr/SKILL.md>
 +---
 +name: do-revisar-pr
 +description: Revisa un PR y deja la lista de problemas. Usar cuando se pida revisar un PR o una rama.
 +context: fork
 +model: haiku
 +---
 +</sxh>
 +
 +<note tip>Opinión personal: que Claude Code haya ido añadiendo al frontmatter de las //skills// lo que antes era solo de los agentes, ''context: fork'' y ''model'', dice por dónde va el camino: unificar agentes y //skills// en una sola carpeta y un solo formato. Es lo que hacemos en este curso.</note>
 +
 +==== Por qué los subagentes van dentro del agente ====
 +
 +  * **No son reutilizables.** El verificador de ''do-crear-servicio'' comprueba lo que genera ese agente, con las entradas que ese agente le pasa. Fuera de él nadie lo lanza, así que no tiene sentido que esté donde se buscan las cosas que se lanzan. Lo que solo usa uno va con ese uno.
 +  * **En ''.claude/agents/'' estorbaría.** Aparecería en la lista de agentes de la herramienta y en el autocompletado de ''@'', como si fuera para lanzarlo tú. Y en OpenCode, además, no existiría.
 +  * **Se mantiene con el agente.** Si cambia la fase que lo lanza, cambian sus ''Entradas'' y su ''Salida'': están en la misma carpeta y se cambian a la vez. Quien lee ''do-crear-servicio'' lo ve entero sin salir de su carpeta.
 +  * **Sí tiene que ser un agente de verdad**, con contexto vacío, porque el resultado lo necesita **el agente que sigue trabajando**, no tú, y porque lo que lee (la clase, el test, la salida de ''mvn test'') no tiene que llenar el contexto del agente. Un fichero de ''subagents/'' da justo eso: un prompt que se lanza en un contexto nuevo y devuelve una línea.
 +
 +Y la señal de que algo está mal clasificado: si un fichero de ''subagents/'' acaba lanzándose desde dos agentes, es que es un agente. Pasa a su propia carpeta ''do-'' y los dos lo cargan desde allí.
  
 ---- ----
cursos/sdd/09-skills-agentes-subagentes.1793951207.txt.gz · Última modificación: por claude