Skills: tareas concretas que ejecutan contexto específico
Si los Agentes son el "quién" y las Reglas son el "cómo se gobierna", los Skills son el "qué se hace concretamente." Son el elemento del trípode que convierte la visión en acción.
Un Skill es una tarea autocontenida que un Agente ejecuta respetando las Reglas. Contiene todo el contexto necesario para que el Agente la complete sin ambigüedad y sin información adicional más allá del project-context.md.
El problema del Context Loss
Cuando un Agente ejecuta un Skill, solo "ve" lo que está en su ventana de contexto. Si información relevante está en otro Skill, en una conversación anterior o en la cabeza de un humano, el Agente toma decisiones sin ella. Con total confianza.
El resultado: Context Debt. Skills que producen outputs correctos aisladamente pero incoherentes como sistema. La autocontención de cada Skill, combinada con las Reglas globales, es el antídoto.
Los cinco elementos de un Skill
| Elemento del Skill | Qué incluye | Conexión con Agentes y Reglas |
|---|---|---|
| Objetivo | Qué debe lograrse. No cómo, sino qué. | El Agente usa el objetivo para tomar decisiones ante ambigüedades, dentro de las Reglas. |
| Contexto específico | Extractos del PRD, arquitectura. Solo lo que este Skill necesita. | Complementa las Reglas globales con información específica. El Agente combina ambos. |
| Criterios de aceptación | Condiciones verificables. Escritas como assertions. | El QA Agent usa estos criterios para validar el output, aplica Reglas de calidad globales. |
| Dependencias | Qué otros Skills deben estar completos. | Los Agentes no ejecutan Skills fuera de secuencia. Las Reglas definen el orden. |
| Restricciones específicas | Limitaciones de esta tarea, adicionales a las Reglas globales. | El Agente aplica Reglas globales + restricciones del Skill. Si hay conflicto, las Reglas ganan. |
La jerarquía: Reglas > Skills
Cada Skill opera dentro del espacio definido por las Reglas. La relación es jerárquica e innegociable: si las Reglas dicen "todos los endpoints devuelven JSON { data, error, meta }", un Skill que define un endpoint hereda esa restricción automáticamente. El Skill no necesita repetirla, pero el Agente que lo ejecuta sí necesita tener las Reglas cargadas.
Si un Skill pide algo que contradice una Regla, la Regla gana. Siempre. El Agente debe señalar la contradicción al Context Engineer en lugar de resolver el conflicto por su cuenta. Esta jerarquía es lo que protege la coherencia global.
Tipos de Skills
| Tipo | Granularidad | Relación con Agentes y Reglas | Ejemplo |
|---|---|---|---|
| Skill atómico | Una tarea, un output. | Un solo Agente lo ejecuta. Aplica Reglas globales + restricciones propias. | "Crear endpoint GET /inventory/{sku}." |
| Skill compuesto | Múltiples sub-tareas coordinadas. | Un Agente ejecuta todas las sub-tareas con contexto compartido. Las Reglas aplican a cada sub-tarea. | "Módulo de alertas: modelo + lógica + notificación." |
| Skill de integración | Conecta outputs de otros Skills. | Las Reglas de integración del project-context.md son especialmente críticas aquí. | "Integrar inventario con alertas, validar flujo e2e." |
Test de autocontención: Para cada Skill: "¿Un Agente que solo lee este Skill y el project-context.md (Reglas) puede completar la tarea sin preguntar nada?" Si no, falta contexto. Añádelo al Skill; no asumas que el Agente lo sabe.
Qué es: Un Skill que no referencia el project-context.md. El Agente que lo ejecuta no carga las Reglas, o asume contexto que no está escrito.
Qué produce: Outputs inconsistentes. El mismo Skill produce resultados diferentes según qué Agente lo ejecute o en qué momento, porque las Reglas no estaban presentes.
Cómo prevenirlo: Cada Skill incluye una referencia explícita: "Reglas aplicables: ver project-context.md." El Agente carga ambos documentos.
Un Skill bien escrito es un acto de empatía con el Agente que lo ejecutará. Si el Agente necesita información que no está en el Skill ni en las Reglas, no la buscará, la inventará. La autocontención no es burocracia. Es la diferencia entre un output fiel al contexto y un output que parece correcto pero no lo es.