Herramientas de usuario

Herramientas del sitio


cursos:sdd:19-creando-skills

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:19-creando-skills [2026/10/30 08:30] – Nueva sección «El nombre»: prefijos k- y do-; ejemplos renombrados con do- claudecursos:sdd:19-creando-skills [2026/10/30 13:56] (actual) – Lorenzo
Línea 8: Línea 8:
   * [[https://github.com/github/spec-kit|GitHub Spec Kit]]: de sus comandos sale la estructura de las //skills// de procedimiento (User Input, Outline).   * [[https://github.com/github/spec-kit|GitHub Spec Kit]]: de sus comandos sale la estructura de las //skills// de procedimiento (User Input, Outline).
   * [[https://github.com/anthropics/skills/tree/main/skills/skill-creator|skill-creator]]: la //skill// de Anthropic para crear y evaluar //skills//.   * [[https://github.com/anthropics/skills/tree/main/skills/skill-creator|skill-creator]]: la //skill// de Anthropic para crear y evaluar //skills//.
 +
 +
 +Cada //skill// es una carpeta dentro de la carpeta de //skills// del proyecto. La carpeta en concreto depende de la herramienta:
 +
 +  * **OpenCode**: ''.opencode/skills/''.
 +  * **Claude Code**: ''.claude/skills/''.
 +
 +OpenCode también lee ''.claude/skills/'', así que con esa carpeta una misma //skill// vale para las dos.
  
 ---- ----
Línea 25: Línea 33:
   * **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.   * **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.
  
----- 
- 
-===== 2. La carpeta ===== 
  
-Solo el ''SKILL.md'' es obligatorio; cada carpeta aparece únicamente si la //skill// tiene ese tipo de contenido.+===== 2. Estructura de carpetas y ficheros de un skill que "Sabe" ===== 
 +Para explicar la estructura de carpetas de un skill , lo vamos a hacer con un ejemplo de un skill que "sabe" como son los servicios en Spring [[https://anilr9.medium.com/understanding-service-in-spring-boot-a-complete-guide-with-examples-b08825e8ccd8|Understanding @Service in Spring Boot: A Complete Guide with Examples]]
  
 <sxh text;gutter:false> <sxh text;gutter:false>
-.claude/skills/k-servicios/ +.opencode/k-servicios/ 
-├── SKILL.md                    <- obligatorio: instrucciones e índice de los demás ficheros +├── SKILL.md 
-├── transacciones.md            <- un tema que solo hace falta a veces+├── transacciones.md
 ├── templates/ ├── templates/
-│   └── service-impl.md         <- texto literal para copiar y rellenar+│   └── service-impl.md
 ├── examples/ ├── examples/
-│   └── pedido-service.md       <- un caso resuelto, para ver el resultado+│   └── pedido-service.md
 ├── references/ ├── references/
-│   └── spring-transactional.md <- documentación de terceros copiada tal cual+│   └── spring-transactional.md
 ├── scripts/ ├── scripts/
-│   └── sin-transaccion.py      <- código que se ejecuta, no se lee+│   └── sin-transaccion.py
 ├── assets/ ├── assets/
-│   └── errores.schema.json     <- ficheros que no son markdown+│   └── errores.schema.json
 └── evals/ └── evals/
-    └── update-sin-filtrar/     <- casos de prueba de la propia skill+    └── update-sin-filtrar/
 </sxh> </sxh>
  
 Qué hace cada pieza está en [[cursos:sdd:08-skills#la_carpeta|Skills]]. Lo que distingue a cada carpeta es **quién la lee y cuándo entra en contexto**: Qué hace cada pieza está en [[cursos:sdd:08-skills#la_carpeta|Skills]]. Lo que distingue a cada carpeta es **quién la lee y cuándo entra en contexto**:
  
-^ Carpeta ^ Contiene ^ Lo lee ^ Se carga ^ +^ Carpeta o fichero ^ Contiene ^ Ejemplo ^ 
-| ''SKILL.md'' | Instrucciones e índice | El agente | Al usar la //skill// | +| ''SKILL.md'' | Instrucciones e índice |  | 
-| ''<tema>.md'' | Reglas del proyecto sobre un tema | El agente | Cuando la tarea toca ese tema | +| ''<tema>.md'' | Son ficheros extra que deberían estar en SKILL.md pero que los sacamos fuera para que el agente no tenga que leer todo si no lo necesita | transacciones.md | 
-| ''templates/'' | Plantillas literales con huecos | Quien escribe el fichero | Al escribirlo | +| ''templates/'' | Plantillas literales con huecos. Es para cuando el skill debe generar algún tipo de fichero para que tenga una guia de como debe ser. | service-impl.md | 
-| ''examples/'' | Un caso resuelto; no es normativo | Quien necesita ver el resultado | Bajo demanda | +| ''examples/'' | Ejemplo de como queda lo que tiene que generar. Un buen ejemplo siempre ayuda mucho al agente a hacer su trabajo. Mejor un buen ejemplo que una buena descripción | pedido-service.md | 
-| ''references/'' | Documentación de terceros sin adaptar. Puede ir en inglés | Quien necesita el catálogo completo | Bajo demanda | +| ''references/'' | Documentación de referencia. Podría ser la documentación oficial de Spring que ponemos aqui | spring-transactional.md | 
-| ''scripts/'' | Operaciones deterministas | Nadie: se ejecuta | Al ejecutarlo | +| ''scripts/'' | Script en bash o python , etc que ejecuta el skill para hacer su tarea. Si algo se puede hacer con un script en vez de usar más tokens, es mejor crear un script. | sin-transaccion.py | 
-| ''assets/'' | Esquemas, XSD, HTML, imágenes | Los scripts | Bajo demanda | +| ''assets/'' | Esquemas, XSD, imágenes, etc | errores.schema.json | 
-| ''evals/'' | Casos de prueba | Quien evalúa la //skill// | Solo al evaluarla |+| ''evals/'' | Dentro hay carpetas con los test unitarios para probar el skill | update-sin-filtrar/ |
  
-Reglas de la carpeta: 
  
-  * **La carpeta se llama igual que el ''name''** del frontmatter, y dentro hay **un solo ''SKILL.md''**, con ese nombre exacto. +===== 3. SKILL.md ===== 
-  * **En la raíz, solo las carpetas del árbol.** Un tema es un fichero ''<tema>.md'', no una carpeta ''transacciones/''. +En el fichero ''SKILLS.md'' está toda la explicación/descripción de lo que debe saber o hacer el skill, sin embargo no es adecuado tener ficheros demasiado largos. Por ese motivo están los ficheros ''<tema>.md'' que son simplemete secciones del fichero ''SKILLS.md'' y que se referencian desde ''SKILLS.md''.
-  * **Nombres en //kebab-case// y sin repetir la carpeta.** Las excepciones son ''SKILL.md'' y ''README.md''. +
-<sxh text;gutter:false> +
-✅ scripts/sin-transaccion.py, templates/service-impl.md +
-❌ scripts/sin_transaccion.py   (no es kebab-case) +
-❌ templates/service-template.md (repite la carpeta) +
-</sxh>+
  
-<note important>**Una //skill// no lleva ''agents/''.** Si una fase lanza subagentes y junta lo que devuelven, ya no es una //skill//: es un [[cursos:sdd:07-agentes#la_carpeta_del_agente|agente]], y los roles de sus subagentes van en la carpeta del agente ([[cursos:sdd:08-skills#skill_o_agente|skill o agente]]).</note>+El motivo de hace esto es paa ahorrar contexto. A veces un skill trata de varios temas relacionados. Por ejemplo, si vamos a cear un CRUD, podríamos tener un skill que sepa hacer CRUDs y en ese caso hablaría sobre controladores, servicios y repositorios. Cuando la IA está programando el controlador no necesita saber como se hace un servicio o un repositorio. 
  
----- 
  
 ===== 3. El índice ===== ===== 3. El índice =====
cursos/sdd/19-creando-skills.1793345446.txt.gz · Última modificación: por claude