Capitulo 13: Agent Skills

Por: Artiko
opencodeaiskillsautomatizacionreutilizacion

Capitulo 13: Agent Skills

< Volver al Indice del Tutorial

Que son Agent Skills

Los Agent Skills son instrucciones reutilizables escritas en Markdown que OpenCode descubre y carga automaticamente cuando el agente las necesita. A diferencia de los agentes o comandos, los skills son pasivos: el agente los busca y los lee on-demand a traves de la herramienta nativa skill.

Piensa en los skills como documentacion ejecutable. En lugar de repetir las mismas instrucciones en cada conversacion, defines un skill una vez y el agente lo consulta cuando enfrenta una tarea relacionada.

Como Funcionan

El flujo es simple:

  1. Defines un archivo SKILL.md en una ubicacion reconocida
  2. OpenCode detecta los skills disponibles al iniciar
  3. Cuando el agente necesita instrucciones especificas, usa la herramienta skill para cargar el contenido
  4. El skill se inyecta en el contexto del agente como instrucciones adicionales

Los skills se cargan on-demand, lo que significa que no consumen tokens hasta que el agente decide que los necesita.

Ubicaciones de Skills

OpenCode busca skills en dos ubicaciones:

Skills del Repositorio

tu-proyecto/
  .opencode/
    skills/
      mi-skill/
        SKILL.md
      otro-skill/
        SKILL.md

Estos skills son especificos del proyecto. Se comparten con el equipo a traves del repositorio y contienen instrucciones relevantes para ese proyecto en particular.

Skills Globales

~/.config/opencode/
  skills/
    mi-skill-global/
      SKILL.md
    review/
      SKILL.md

Estos skills estan disponibles en todos tus proyectos. Son utiles para convenciones personales o estandares que aplicas en cualquier codebase.

Formato del Archivo SKILL.md

Un skill es simplemente un archivo Markdown con instrucciones claras para el agente:

# Generar Tests

Cuando generes tests para este proyecto, sigue estas reglas:

## Convenciones
- Usa vitest como framework de testing
- Los archivos de test van en `__tests__/` junto al archivo original
- Nombra los archivos como `nombre.test.ts`
- Usa `describe` para agrupar por funcionalidad
- Usa `it` (no `test`) para cada caso

## Estructura
- Arrange: prepara datos y mocks
- Act: ejecuta la funcion
- Assert: verifica resultados

## Mocks
- Usa vi.mock() para modulos externos
- Nunca mockees la funcion que estas testeando
- Prefiere inyeccion de dependencias sobre mocks globales

Las instrucciones deben ser:

Crear un Skill Propio

Paso 1: Crear la estructura

mkdir -p .opencode/skills/review-pr

Paso 2: Escribir el SKILL.md

Crea .opencode/skills/review-pr/SKILL.md:

# Review de Pull Requests

Al revisar un PR, sigue este checklist:

## Seguridad
- Verificar que no se expongan secretos o credenciales
- Validar inputs del usuario
- Revisar permisos y autorizacion

## Calidad
- Funciones de maximo 30 lineas
- Sin codigo duplicado
- Nombres descriptivos para variables y funciones
- Sin console.log o debuggers

## Tests
- Cobertura para los cambios nuevos
- Tests de edge cases
- No tests fragiles que dependan de implementacion

## Performance
- Sin queries N+1
- Uso apropiado de memoizacion
- Lazy loading donde aplique

Genera un reporte con:
1. Lista de problemas encontrados (critico/medio/bajo)
2. Sugerencias de mejora
3. Lo que esta bien hecho

Paso 3: Verificar

El skill estara disponible la proxima vez que inicies OpenCode. El agente podra cargarlo cuando se le pida hacer un review.

Ejemplo: Skill para Documentacion

.opencode/skills/docs/SKILL.md
# Generar Documentacion

Al documentar codigo en este proyecto:

## Formato
- Usa JSDoc para funciones publicas
- Documenta parametros con @param y tipos
- Documenta retorno con @returns
- Incluye @example con uso basico

## README de modulos
- Proposito del modulo en una linea
- Instalacion si aplica
- Ejemplo de uso minimo
- API publica con descripcion breve

## No documentar
- Funciones privadas obvias
- Getters/setters simples
- Re-exports

Skills vs Agents vs Commands

Estos tres conceptos se complementan pero tienen propositos distintos:

Skills (instrucciones pasivas)

Agents (entidades activas)

Commands (atajos a prompts)

Cuando usar cada uno

NecesidadUsa
Estandarizar como se hacen los testsSkill
Un agente especializado en seguridadAgent
Ejecutar un review rapido con un comandoCommand
Convenciones de codigo del proyectoSkill
Agente que solo usa herramientas de DBAgent
Generar changelog con un atajoCommand

En la practica, se combinan. Un command puede triggear un agente que internamente carga un skill para seguir las convenciones del proyecto.

Buenas Practicas


Siguiente: Capitulo 14: Comandos Custom —>