cursos:sdd:08-skills-agentes
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| cursos:sdd:08-skills-agentes [2026/11/05 23:58] – Apartado 3: los cuatro ficheros en sxh yaml para que se vea el título con la ruta (SyntaxHighlighter no procesa markdown) claude | cursos:sdd:08-skills-agentes [2026/11/06 08:37] (actual) – Renumerar el curso: Estructura de un skill pasa al 10 y los temas siguientes suben un número claude | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== 8. Skills y agentes ====== | ====== 8. Skills y agentes ====== | ||
| - | Las //skills// y los agentes son los dos ficheros markdown con instrucciones, | + | Las //skills// y los agentes son los dos ficheros markdown con instrucciones, |
| Más información: | Más información: | ||
| Línea 23: | Línea 23: | ||
| El subagente **empieza con el contexto vacío**: solo tiene su fichero y el prompt que le escribe el principal. Al terminar, al principal solo le vuelve su respuesta. | El subagente **empieza con el contexto vacío**: solo tiene su fichero y el prompt que le escribe el principal. Al terminar, al principal solo le vuelve su respuesta. | ||
| - | ===== 3. Skill o agente ===== | + | ===== 3. Dónde se guardan ===== |
| + | |||
| + | En OpenCode, dentro de '' | ||
| + | |||
| + | <sxh text; | ||
| + | .opencode | ||
| + | ├── skills | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | └── agents | ||
| + | ├── revisor-tests.md | ||
| + | └── verificador-spec.md | ||
| + | </ | ||
| + | |||
| + | * **Cada //skill// va en su propia carpeta**, con el nombre de la //skill//, y dentro el fichero se llama siempre '' | ||
| + | * **Todos los agentes van en una única carpeta**, '' | ||
| + | |||
| + | <note warning> | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 4. El frontmatter ===== | ||
| + | |||
| + | Los dos ficheros empiezan con una **cabecera en YAML entre dos líneas '' | ||
| + | |||
| + | <sxh yaml; | ||
| + | --- | ||
| + | name: servicios | ||
| + | description: | ||
| + | errores de negocio). Usar al escribir, revisar o probar una clase *Service. | ||
| + | --- | ||
| + | </ | ||
| + | |||
| + | <sxh yaml; | ||
| + | --- | ||
| + | description: | ||
| + | Usar después de escribir o cambiar los tests de una clase *Service, antes del commit. | ||
| + | mode: subagent | ||
| + | permission: | ||
| + | edit: deny | ||
| + | --- | ||
| + | </ | ||
| + | |||
| + | En la // | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | En el agente no hay '' | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ==== La descripción ==== | ||
| + | |||
| + | **La '' | ||
| + | |||
| + | Tiene que decir **qué hace y cuándo usarlo**, con las palabras con las que se pedirá la tarea: | ||
| + | |||
| + | <sxh yaml> | ||
| + | # ✅ qué cubre, cuándo usarla y con qué palabras se pide | ||
| + | description: | ||
| + | errores de negocio). Usar al escribir, revisar o probar una clase *Service. | ||
| + | |||
| + | # ❌ no dice cuándo: no se carga nunca | ||
| + | description: | ||
| + | |||
| + | # ❌ cuenta el proceso, que va en el cuerpo, y no dice cuándo | ||
| + | description: | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 5. Skill o agente ===== | ||
| ^ ^ Skill ^ Agente ^ | ^ ^ Skill ^ Agente ^ | ||
| Línea 129: | Línea 206: | ||
| ==== Ejemplo 1 como agente ==== | ==== Ejemplo 1 como agente ==== | ||
| - | No pasa absolutamente nada útil. El principal lanza el agente, que arranca con el contexto vacío, lee su fichero | + | No pasa absolutamente nada. El principal lanza el agente, que arranca con el contexto vacío |
| - | Lo único que se ha conseguido es gastar tokens | + | En el mejor de los casos, el agente devuelve las reglas |
| ==== Ejemplo 2 como agente ==== | ==== Ejemplo 2 como agente ==== | ||
| Línea 141: | Línea 218: | ||
| El trabajo también se hace, y se hace igual de bien: el principal carga el fichero y hace lo mismo que haría el agente. La diferencia es **dónde se queda todo eso**: la clase leída, el test escrito, la salida de '' | El trabajo también se hace, y se hace igual de bien: el principal carga el fichero y hace lo mismo que haría el agente. La diferencia es **dónde se queda todo eso**: la clase leída, el test escrito, la salida de '' | ||
| - | <note important> | ||
| ==== Resumen ==== | ==== Resumen ==== | ||
| ^ ^ Como skill ^ Como agente ^ | ^ ^ Como skill ^ Como agente ^ | ||
| - | | Ejemplo 1: cómo se hace un repository JPA | ✓ Las reglas se quedan y valen para el resto de la conversación | Las reglas mueren con el agente: tu conversación sigue sin saberlas | + | | Ejemplo 1: cómo se hace un repository JPA | ✓ Las reglas se quedan y valen para el resto de la conversación | No hay nada que hacer: el fichero son reglas, no una tarea. Como mucho las recita, y mueren con él | |
| - | | Ejemplo 2: generar los tests de una clase | Funciona, pero los ficheros leídos, las salidas de '' | + | | Ejemplo 2: generar los tests de una clase | Funciona, pero los ficheros leídos, las salidas de '' |
| ==== Un caso especial ==== | ==== Un caso especial ==== | ||
| Línea 154: | Línea 230: | ||
| Piensa qué tienes: un contexto vacío al que se le añade el fichero y tu mensaje, trabaja, y lo que haya acumulado desaparece al cerrar porque nadie sigue hablando ahí. **Es exactamente un agente**, con la diferencia de que el resultado se lo has dado tú al principal en vez de leerlo él. La //skill// no ha llenado nada que vayas a pagar después. Así que la pregunta de fondo no es «¿esto es una skill o un agente?», sino «**¿voy a seguir trabajando en esta conversación con lo que quede en el contexto? | Piensa qué tienes: un contexto vacío al que se le añade el fichero y tu mensaje, trabaja, y lo que haya acumulado desaparece al cerrar porque nadie sigue hablando ahí. **Es exactamente un agente**, con la diferencia de que el resultado se lo has dado tú al principal en vez de leerlo él. La //skill// no ha llenado nada que vayas a pagar después. Así que la pregunta de fondo no es «¿esto es una skill o un agente?», sino «**¿voy a seguir trabajando en esta conversación con lo que quede en el contexto? | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 4. Dónde se guardan ===== | ||
| - | |||
| - | En OpenCode, dentro de '' | ||
| - | |||
| - | <sxh text; | ||
| - | .opencode | ||
| - | ├── skills | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | └── agents | ||
| - | ├── revisor-tests.md | ||
| - | └── verificador-spec.md | ||
| - | </ | ||
| - | |||
| - | * **Cada //skill// va en su propia carpeta**, con el nombre de la //skill//, y dentro el fichero se llama siempre '' | ||
| - | * **Todos los agentes van en una única carpeta**, '' | ||
| - | |||
| - | <note warning> | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 5. El frontmatter ===== | ||
| - | |||
| - | Los dos ficheros empiezan con una **cabecera en YAML entre dos líneas '' | ||
| - | |||
| - | <sxh yaml; | ||
| - | --- | ||
| - | name: servicios | ||
| - | description: | ||
| - | errores de negocio). Usar al escribir, revisar o probar una clase *Service. | ||
| - | --- | ||
| - | </ | ||
| - | |||
| - | <sxh yaml; | ||
| - | --- | ||
| - | description: | ||
| - | Usar después de escribir o cambiar los tests de una clase *Service, antes del commit. | ||
| - | mode: subagent | ||
| - | permission: | ||
| - | edit: deny | ||
| - | --- | ||
| - | </ | ||
| - | |||
| - | En la //skill//: | ||
| - | |||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | En el agente no hay '' | ||
| - | |||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | ==== La descripción ==== | ||
| - | |||
| - | **La '' | ||
| - | |||
| - | Tiene que decir **qué hace y cuándo usarlo**, con las palabras con las que se pedirá la tarea: | ||
| - | |||
| - | <sxh yaml> | ||
| - | # ✅ qué cubre, cuándo usarla y con qué palabras se pide | ||
| - | description: | ||
| - | errores de negocio). Usar al escribir, revisar o probar una clase *Service. | ||
| - | |||
| - | # ❌ no dice cuándo: no se carga nunca | ||
| - | description: | ||
| - | |||
| - | # ❌ cuenta el proceso, que va en el cuerpo, y no dice cuándo | ||
| - | description: | ||
| - | </ | ||
| ---- | ---- | ||
| Línea 261: | Línea 260: | ||
| </ | </ | ||
| - | Cómo se organiza por dentro una //skill// grande está en [[cursos: | + | Cómo se organiza por dentro una //skill// grande está en [[cursos: |
| ---- | ---- | ||
| Línea 340: | Línea 339: | ||
| | Comprobar que cada requisito de '' | | Comprobar que cada requisito de '' | ||
| | Cómo se escribe un mensaje de commit en el equipo | | | | | Cómo se escribe un mensaje de commit en el equipo | | | | ||
| - | | Revisar el servicio que acaba de escribir | + | | Revisar el servicio que se acaba de escribir | | | |
| ==== Ejercicio 2 ==== | ==== Ejercicio 2 ==== | ||
| - | Escribe el agente '' | + | Escribe la //skill// '' |
| + | |||
| + | Abre **una conversación nueva** y pide «crea el controlador de '' | ||
| + | |||
| + | ==== Ejercicio 3 ==== | ||
| + | |||
| + | Escribe el agente '' | ||
| + | |||
| + | Abre **una conversación nueva** y lánzalo | ||
cursos/sdd/08-skills-agentes.1793919517.txt.gz · Última modificación: por claude
