cursos:sdd:08-skills
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Próxima revisión | Revisión previa | ||
| cursos:sdd:08-skills [2026/10/26 14:14] – Nuevo tema: Skills, con skills y AGENTS.md de Skills, Agentes y MCP claude | cursos:sdd:08-skills [2026/10/26 15:55] (actual) – Enlace roto a la sección de AGENTS.md de OpenCode, que ya no existe: apunta a /init claude | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== Skills ====== | ====== Skills ====== | ||
| - | Qué es una //skill// en dos líneas está en [[cursos: | + | Qué es una //skill// en dos líneas está en [[cursos: |
| ---- | ---- | ||
| Línea 31: | Línea 31: | ||
| Lo que hace que esto escale es **cómo se cargan**: de todas las //skills// instaladas, el agente lleva siempre en contexto solo el nombre y la descripción —dos líneas—, y el cuerpo entra únicamente cuando la tarea encaja. Por eso se pueden tener veinte sin llenar la ventana de contexto. | Lo que hace que esto escale es **cómo se cargan**: de todas las //skills// instaladas, el agente lleva siempre en contexto solo el nombre y la descripción —dos líneas—, y el cuerpo entra únicamente cuando la tarea encaja. Por eso se pueden tener veinte sin llenar la ventana de contexto. | ||
| - | <note important> | + | La **descripción** es lo único que el modelo lee para decidir si la usa: [[# |
| Dónde viven: | Dónde viven: | ||
| Línea 44: | Línea 44: | ||
| ---- | ---- | ||
| - | ===== 2. AGENTS.md ===== | + | ===== 2. Cómo se escribe una skill ===== |
| + | |||
| + | ==== Skill o agente ==== | ||
| + | |||
| + | Una //skill// y un [[cursos: | ||
| + | |||
| + | ^ Qué es ^ Skill ^ Agente ^ | ||
| + | | Convenciones, | ||
| + | | Ejemplos ✅/❌, plantillas, documentación de terceros | ✓ | | | ||
| + | | Procedimiento de una tarea sin delegar («cómo se revisa un PR aquí») | ✓ | | | ||
| + | | Rol, sesgo que evitar y criterio de bien o mal | | ✓ | | ||
| + | | Herramientas permitidas y modelo | | ✓ | | ||
| + | | Lanzar subagentes y juntar lo que devuelven | | ✓ | | ||
| + | | Cuándo para: límite de vueltas y condiciones de parada | | ✓ | | ||
| + | | Formato cerrado de la respuesta ('' | ||
| + | | '' | ||
| + | | Ejecutar scripts | ✓ | ✓ | | ||
| + | |||
| + | Un agente es **un solo fichero '' | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== El frontmatter ==== | ||
| + | |||
| + | Dos campos, los dos obligatorios: | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | <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: | ||
| + | </ | ||
| + | |||
| + | ==== La carpeta ==== | ||
| + | |||
| + | Solo el '' | ||
| + | |||
| + | <sxh plain> | ||
| + | .claude/ | ||
| + | ├── SKILL.md | ||
| + | ├── transacciones.md | ||
| + | ├── templates/ | ||
| + | ├── examples/ | ||
| + | ├── references/ | ||
| + | └── scripts/ | ||
| + | </ | ||
| + | |||
| + | * **''< | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | |||
| + | ==== El SKILL.md ==== | ||
| + | |||
| + | Detrás del frontmatter, | ||
| + | |||
| + | <sxh markdown; | ||
| + | --- | ||
| + | name: servicios | ||
| + | description: | ||
| + | errores de negocio). Usar al escribir, revisar o probar una clase *Service. | ||
| + | --- | ||
| + | |||
| + | # servicios | ||
| + | |||
| + | Reglas de las clases `*Service` del servidor. | ||
| + | |||
| + | ## Índice | ||
| + | |||
| + | | Fichero | Qué contiene | Cuándo cargarlo | | ||
| + | |---|---|---| | ||
| + | | `transacciones.md` | Qué métodos son transaccionales y cómo | Al escribir un método que guarda | | ||
| + | | `templates/ | ||
| + | |||
| + | ## Convenciones | ||
| + | |||
| + | - Un servicio por agregado: `PedidoService`, | ||
| + | - Valida al entrar y lanza `ErrorDeNegocio` con el código de `specs/`. | ||
| + | - No devuelve entidades: devuelve DTOs. | ||
| + | |||
| + | ## Ejemplos | ||
| + | |||
| + | - ✅ `throw new ErrorDeNegocio(" | ||
| + | - ❌ `throw new IllegalStateException(" | ||
| + | |||
| + | ## Nunca | ||
| + | |||
| + | - Llamar a un repositorio de otro agregado: se pasa por su servicio. | ||
| + | </ | ||
| + | |||
| + | ==== Cómo se redacta ==== | ||
| + | |||
| + | Una //skill// se lee **para el modelo**, no para una persona, y cada línea cuesta tokens cada vez que se carga. | ||
| + | |||
| + | * **La prueba de cada línea**: ¿cambiaría lo que hace el modelo si la quito? Si no, sobra. | ||
| + | * **Nada que ya sepa**: qué es JPA o cómo funciona git. Solo lo propio del proyecto. | ||
| + | * **Nada que se deduzca del código**: la lista de clases o de paquetes se queda vieja; se dice dónde mirarla. | ||
| + | * **Listas, no párrafos**: | ||
| + | * **Ejemplos ✅/❌**, y cada ❌ con su porqué entre paréntesis. Si una regla cabe en un ejemplo, va como ejemplo. | ||
| + | * **Números, no adjetivos**: | ||
| + | * **'' | ||
| + | * **Cada regla en un solo fichero**: los demás la citan con un puntero, no la repiten. | ||
| + | * **Máximo unas 2.500 palabras por fichero**: si pasa, se parte por temas. | ||
| + | |||
| + | ==== Scripts ==== | ||
| + | |||
| + | Lo que es determinista (validar un fichero, calcular una tabla, contar) va en un script de '' | ||
| + | |||
| + | * Se cita con **el comando exacto** y la palabra «ejecuta». | ||
| + | <sxh plain> | ||
| + | ✅ Ejecuta `python3 .claude/ | ||
| + | ❌ Lee scripts/ | ||
| + | ❌ Usa el script de transacciones. (sin el comando, el modelo se inventa los argumentos) | ||
| + | </ | ||
| + | * **Los errores dicen cómo arreglarlo**: | ||
| + | * **Lo que necesita** (intérprete, | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 3. AGENTS.md ===== | ||
| '' | '' | ||
| Línea 112: | Línea 240: | ||
| <note important> | <note important> | ||
| - | Cómo generar un primer '' | + | Cómo generar un primer '' |
| ==== CLAUDE.md: no usarlo ==== | ==== CLAUDE.md: no usarlo ==== | ||
| Línea 141: | Línea 269: | ||
| ---- | ---- | ||
| - | ===== 3. Cómo se organiza AGENTS.md ===== | + | ===== 4. Cómo se organiza AGENTS.md ===== |
| - | La [[# | + | La [[# |
| ==== Qué entra ==== | ==== Qué entra ==== | ||
| Línea 212: | Línea 340: | ||
| La condición se escribe con **las palabras con las que se pedirá la tarea** («antes de escribir o revisar una especificación»), | La condición se escribe con **las palabras con las que se pedirá la tarea** («antes de escribir o revisar una especificación»), | ||
| - | Lo mismo vale para la '' | + | Lo mismo vale para la '' |
| ---- | ---- | ||
cursos/sdd/08-skills.1793020481.txt.gz · Última modificación: por claude
