cursos:sdd:02-skills-agentes-mcp
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previa | |||
| cursos:sdd:02-skills-agentes-mcp [2026/10/19 16:21] – La skill desplegar pasa a llamarse despliegue: es documentación, no una acción claude | cursos:sdd:02-skills-agentes-mcp [2026/10/26 14:18] (actual) – Borrado: dividido en 02-conceptos-basicos, 07-agentes y 08-skills claude | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== Skills, Agentes y MCP ====== | ||
| - | |||
| - | Son tres cosas distintas que se confunden porque aparecen juntas en cualquier conversación sobre IA, y porque las tres «amplían» lo que puede hacer el modelo. No compiten: son **capas de la misma pila**. | ||
| - | |||
| - | <note tip> | ||
| - | |||
| - | ^ ^ Skills ^ MCP ^ Agentes ^ | ||
| - | | Para qué | Que la salida sea consistente | Conectar con sistemas externos | Ejecutar una tarea de principio a fin | | ||
| - | | Qué es | Un fichero de instrucciones | Un protocolo y un servidor | Un modelo en un bucle con herramientas | | ||
| - | | Quién define la lógica | Quien escribe el fichero | Quien programa el servidor | El desarrollador y el modelo, a medias | | ||
| - | | Esfuerzo de montaje | Bajo: un markdown | Medio: hay un servidor que mantener | Alto | | ||
| - | | Estado | No tiene | No tiene | Puede mantenerlo | | ||
| - | | Depuración | Leer el fichero | Red y protocolo | Prompts, código y servicios a la vez | | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 1. AGENTS.md ===== | ||
| - | |||
| - | '' | ||
| - | |||
| - | ==== Pequeño: el detalle va en skills ==== | ||
| - | |||
| - | Como se paga en cada petición, '' | ||
| - | |||
| - | <sxh plain> | ||
| - | AGENTS.md | ||
| - | .claude/ | ||
| - | ├── producto/ | ||
| - | │ | ||
| - | ├── tecnologia/ | ||
| - | │ | ||
| - | ├── arquitectura/ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | └── despliegue/ | ||
| - | ├── SKILL.md | ||
| - | ├── desarrollo.md | ||
| - | └── produccion.md | ||
| - | </ | ||
| - | |||
| - | Las que tiene que haber como mínimo: | ||
| - | |||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | Si hay varias arquitecturas, | ||
| - | |||
| - | <sxh markdown; | ||
| - | --- | ||
| - | name: arquitectura | ||
| - | description: | ||
| - | cualquier clase o fichero. | ||
| - | --- | ||
| - | |||
| - | # Arquitectura | ||
| - | |||
| - | - Un paquete por funcionalidad (`pedidos`, `clientes`), | ||
| - | - Los controladores solo validan y delegan: la lógica va en los servicios. | ||
| - | |||
| - | Lee además `servidor.md` si tocas `servidor/` y `cliente.md` si tocas `cliente/`. | ||
| - | </ | ||
| - | |||
| - | '' | ||
| - | |||
| - | <sxh markdown; | ||
| - | # Pedidos | ||
| - | |||
| - | API REST de pedidos con cliente web. Compilar y probar: `./mvnw verify`. | ||
| - | |||
| - | ## Skills del proyecto | ||
| - | |||
| - | Antes de empezar, lee la skill que necesite la tarea: | ||
| - | |||
| - | - `.claude/ | ||
| - | - `.claude/ | ||
| - | - `.claude/ | ||
| - | - `.claude/ | ||
| - | </ | ||
| - | |||
| - | <note important> | ||
| - | |||
| - | Cómo generar un primer '' | ||
| - | |||
| - | ==== CLAUDE.md: no usarlo ==== | ||
| - | |||
| - | <note important> | ||
| - | |||
| - | Como basta con que alguien cree un '' | ||
| - | |||
| - | <sxh java; | ||
| - | class SinClaudeMdTest { | ||
| - | |||
| - | @Test | ||
| - | void noHayNingunClaudeMd() throws IOException { | ||
| - | try (Stream< | ||
| - | List< | ||
| - | .filter(f -> !f.startsWith(" | ||
| - | .filter(f -> f.getFileName().toString().equalsIgnoreCase(" | ||
| - | .toList(); | ||
| - | |||
| - | assertThat(claudeMd) | ||
| - | .as(" | ||
| - | .isEmpty(); | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 2. Skills ===== | ||
| - | |||
| - | Una //skill// es una carpeta con un fichero de instrucciones que le dice al agente **cómo se hace** una tarea concreta en tu equipo. No es código: es contexto empaquetado y versionado. | ||
| - | |||
| - | <sxh plain> | ||
| - | .claude/ | ||
| - | ├── SKILL.md | ||
| - | └── checklist.md | ||
| - | </ | ||
| - | |||
| - | <sxh markdown; | ||
| - | --- | ||
| - | name: revisar-pr | ||
| - | description: | ||
| - | --- | ||
| - | |||
| - | # Revisión de pull request | ||
| - | |||
| - | 1. Leer la descripción del PR y comprobar que hay una issue enlazada. | ||
| - | 2. Revisar contra checklist.md, | ||
| - | 3. Clasificar cada hallazgo: bloqueante, recomendable o nota. | ||
| - | 4. No comentar estilo: de eso ya se encarga el formateador. | ||
| - | </ | ||
| - | |||
| - | 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> | ||
| - | |||
| - | Dónde viven: | ||
| - | |||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | Los comandos ''/ | ||
| - | |||
| - | **Cuándo escribir una**: cuando algo se repite y sale distinto cada vez, cuando hay un procedimiento del equipo que hoy solo está en la cabeza de alguien, o para el detalle del proyecto que solo hace falta en algunas tareas ([[# | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 3. Agentes ===== | ||
| - | |||
| - | Un agente es un modelo metido en un **bucle con herramientas**: | ||
| - | |||
| - | <uml> | ||
| - | start | ||
| - | :peticion; | ||
| - | repeat | ||
| - | :decidir el paso siguiente; | ||
| - | if (hay una skill que aplica) then (si) | ||
| - | :cargarla y seguirla; | ||
| - | else (no) | ||
| - | endif | ||
| - | :usar una herramienta; | ||
| - | :observar el resultado; | ||
| - | backward: | ||
| - | repeat while (objetivo cumplido) is (no) not (si) | ||
| - | :responder; | ||
| - | stop | ||
| - | </ | ||
| - | |||
| - | En este curso los agentes aparecen de dos formas: | ||
| - | |||
| - | * **El agente de terminal** que usas tú: Claude Code, OpenCode, Codex (tema 3). El bucle lo lleva la herramienta. | ||
| - | * **Los subagentes**: | ||
| - | |||
| - | Montar un agente es decidir cuatro cosas, y ninguna es el prompt: | ||
| - | |||
| - | - **Qué herramientas** puede usar, y cuáles no. | ||
| - | - **Cuándo para**: el criterio de terminado, comprobable (tema 4). | ||
| - | - **Qué presupuesto** tiene: vueltas, tiempo, dinero. | ||
| - | - **Qué pasa cuando falla** un paso: reintento, vuelta atrás o persona. | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 4. MCP ===== | ||
| - | |||
| - | //Model Context Protocol// es un protocolo abierto para conectar agentes con sistemas externos a través de una interfaz común. La analogía es el USB-C: antes cada herramienta escribía su propio conector para cada servicio; con MCP se escribe **un servidor** y lo usa cualquier cliente que hable el protocolo. | ||
| - | |||
| - | Un servidor MCP expone tres cosas: | ||
| - | |||
| - | ^ Qué expone ^ Qué es ^ Ejemplo ^ | ||
| - | | **Herramientas** | Acciones que el agente puede ejecutar | Crear una incidencia en Jira | | ||
| - | | **Recursos** | Datos que puede leer | El esquema de la base de datos | | ||
| - | | **Prompts** | Plantillas de petición preparadas | «Analiza esta consulta lenta» | | ||
| - | |||
| - | **Cuándo hace falta**: el agente necesita datos vivos que no están ni en su entrenamiento ni en el repositorio —el estado de un pedido, una consulta a la base de datos de preproducción, | ||
| - | |||
| - | **Cuándo no**: si lo que hace falta es leer un fichero, buscar en el proyecto o lanzar un comando, el agente **ya lo hace** con sus herramientas nativas. Montar un servidor MCP para eso es infraestructura que mantener a cambio de nada. | ||
| - | |||
| - | <note warning> | ||
| - | |||
| - | ---- | ||
| - | |||
| - | ===== 5. Cómo se combinan ===== | ||
| - | |||
| - | En un sistema montado del todo trabajan las tres capas a la vez: **MCP** le da acceso a los sistemas, las **skills** le dicen cómo usarlos bien, y el **agente** lleva el hilo de lo que hay que hacer. | ||
| - | |||
| - | ^ El problema que tienes ^ Lo que necesitas ^ | ||
| - | | «Cada vez lo hace distinto» | Una //skill// | | ||
| - | | «Se inventa los datos» o «no puede consultarlo» | Un servidor MCP | | ||
| - | | «Son doce pasos y hay que decidir sobre la marcha» | Un agente | | ||
| - | | «No sé por dónde empieza» | Ninguna de las tres: falta especificación (tema 10) | | ||
| - | |||
| - | <note important> | ||
| - | |||
| - | ===== 6. Cómo se organiza AGENTS.md ===== | ||
| - | |||
| - | La [[# | ||
| - | |||
| - | ==== Qué entra ==== | ||
| - | |||
| - | El agente **obedece** lo que pone el fichero: en el [[https:// | ||
| - | |||
| - | * **Una frase** con qué es el proyecto. | ||
| - | * **Órdenes** para compilar, probar y comprobar, si no son las habituales. | ||
| - | * **Convenciones que se apartan de lo normal**: las que el agente no adivinaría leyendo el código. | ||
| - | * **Límites**: | ||
| - | * **El índice de // | ||
| - | |||
| - | Fuera: la descripción general del proyecto, el árbol de carpetas, la lista de dependencias y las reglas de estilo. Las tres primeras el agente las saca del propio código, y en el estudio no le ayudaron a encontrar antes los ficheros que tenía que tocar. El estilo lo impone el formateador, | ||
| - | |||
| - | <note important> | ||
| - | |||
| - | <sxh markdown; | ||
| - | # Pedidos | ||
| - | |||
| - | API REST de pedidos con cliente web. | ||
| - | |||
| - | ## Órdenes | ||
| - | - Compilar y probar: `./mvnw verify` | ||
| - | - Solo los tests del servidor: `./mvnw -pl servidor test` | ||
| - | |||
| - | ## Convenciones | ||
| - | - Los importes son `BigDecimal` con escala 2; nunca `double`. | ||
| - | - Los errores de negocio heredan de `ErrorDeNegocio`; | ||
| - | - Cada requisito de `specs/` tiene al menos un test que cita su identificador (`R-12`). | ||
| - | |||
| - | ## Límites | ||
| - | - No modifiques una migración ya aplicada: crea una nueva. | ||
| - | - Pregunta antes de añadir una dependencia o de cambiar un requisito de `specs/`. | ||
| - | |||
| - | ## Skills del proyecto | ||
| - | Explora primero el código que toca la tarea. Después lee la skill que necesite: | ||
| - | - `.claude/ | ||
| - | - `.claude/ | ||
| - | - `.claude/ | ||
| - | - `.claude/ | ||
| - | </ | ||
| - | |||
| - | Cabe en una pantalla, y así tiene que seguir: **menos de 200 líneas**, mejor menos de 60. Cada instrucción de más hace que el modelo cumpla peor todas las demás, no solo la nueva. | ||
| - | |||
| - | ==== Dónde va lo demás ==== | ||
| - | |||
| - | ^ Qué es ^ Dónde va ^ Ejemplo ^ | ||
| - | | Lo que vale en todas las tareas | '' | ||
| - | | Lo que vale solo en una carpeta | '' | ||
| - | | El detalle que solo hace falta en algunas tareas | Una //skill// | '' | ||
| - | | Un procedimiento que se lanza para una tarea concreta | Una //skill// | '' | ||
| - | | Lo que tiene que cumplirse siempre | Un test, el linter o un //hook// | '' | ||
| - | |||
| - | * **'' | ||
| - | * **Lo que tiene que cumplirse siempre** no va en '' | ||
| - | |||
| - | ==== Cómo se escriben las referencias ==== | ||
| - | |||
| - | Cada referencia lleva **la ruta entre comillas invertidas** y **cuándo leerla**. Nunca con '' | ||
| - | |||
| - | ^ Referencia ^ Claude Code ^ OpenCode ^ | ||
| - | | '' | ||
| - | | '' | ||
| - | | '' | ||
| - | |||
| - | <note warning> | ||
| - | |||
| - | 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 '' | ||
| - | |||
| - | ===== 7. Fuentes ===== | ||
| - | |||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
cursos/sdd/02-skills-agentes-mcp.1792419666.txt.gz · Última modificación: por claude
