1

Bienvenida: El Estado del Arte en 2026

⏱ 8 minutos
Logo 30X Hardcore AI
30X Hardcore AI
🎯 Entender la evolución del stack de desarrollo 🎯 Diferenciar Copiloto vs Agente Autónomo 🎯 Conocer las herramientas del ecosistema 2026

De LLM Wrappers a AI-Native IDEs

En 2023, las herramientas de IA para desarrollo eran "wrappers": interfaces de chat pegadas a un editor de código. En 2026, hemos llegado a los AI-Native IDEs — entornos donde la IA no es un complemento, sino el motor principal de la ingeniería.

🔧
2023: LLM Wrapper
Chatbot integrado en el editor. Genera snippets de código. El humano copia, pega y adapta manualmente.
🤖
2024: Copiloto
Autocompletado contextual. Sugiere código en tiempo real. Aún requiere guía constante del desarrollador.
🚀
2026: Agente Autónomo
Lee tu codebase, ejecuta comandos, edita archivos, crea PRs. Piensa, actúa, observa y corrige de forma iterativa.
💡
Concepto Clave

Ingeniería de Software Agéntica = Pasar de la generación de código (Code Gen) a la orquestación de sistemas (System Orchestration). Ya no le dices al agente QUÉ escribir, le diseñas el CONTEXTO para que tome buenas decisiones.

El Ecosistema de Herramientas

Herramienta Tipo Fortaleza Principal
Claude Code CLI / Terminal Agéntico Ejecución táctica directa en tu filesystem para la primera parte del taller
OpenCode TUI / Desktop / IDE Open Source Agente extensible para modelos locales o cloud, con MCP y Skills versionables
Antigravity Manager Surface (Web) Orquestación asíncrona y paralela
Codex CLI / Agente de Código Implementación y edición guiada desde terminal
Cursor AI-Native IDE Edición asistida con contexto visual
Copilot CLI CLI / Asistente Asistencia contextual en terminal y flujos de desarrollo
Gemini CLI CLI / Asistente Ejecución de tareas y automatización desde consola

Prompt de Práctica (Copiar y Pegar)

prompt
Prompt: Create a single-page app in a single HTML file with the following requirements:
- Name: Typing Rain
- Goal: Type falling words before they reach the bottom.
- Features: Increasing difficulty, accuracy tracker, score.
- The UI should be the city background with animated raindrop words.
2

El Bucle Agéntico (ReAct Loop)

⏱ 5 minutos
🎯 Comprender el ciclo Pensar → Actuar → Observar 🎯 Conocer las herramientas del agente

El corazón de toda herramienta de código agéntica es el Bucle Agéntico (también conocido como ReAct Loop). Es un ciclo iterativo que se repite hasta completar la tarea:

🧠 Pensar
📋 Planificar
🔧 Ejecutar Herramienta
👁 Observar Resultado
🔄 Corregir / Repetir

Herramientas del Agente

Claude Code tiene acceso a estas herramientas que le permiten interactuar con tu proyecto:

Herramienta Descripción Ejemplo de Uso
Read Lee contenido de archivos Leer un archivo de configuración
Edit Edita archivos existentes Corregir un bug en una función
Write Crea archivos nuevos Crear un nuevo componente
Bash Ejecuta comandos en terminal npm test, git diff
Glob Busca archivos por patrón Encontrar todos los *.test.ts
Grep Busca contenido dentro de archivos Buscar dónde se usa una función
Task Delega a un subagente Investigar en paralelo
WebFetch Obtiene contenido de la web Consultar documentación
💡
Para la clase

Abre una terminal, ejecuta claude y pide "dame un overview de este proyecto". Observa en tiempo real cómo Claude usa Glob para encontrar archivos, Read para leerlos, y construye un resumen.

3

Del "Commit" al "Artifact"

⏱ 5 minutos

La nueva unidad de trabajo ya no es solo el commit. Con agentes, trabajamos con Artifacts: paquetes completos de trabajo que incluyen:

📋
Planes de Implementación
El agente primero investiga, analiza y propone un plan antes de escribir código.
📝
Diffs y Cambios
Ediciones verificables con contexto de por qué se hizo cada cambio.
Verificaciones
Tests ejecutados, screenshots de validación, pruebas de que funciona.
⚠️
Máxima del Módulo

"No escribas código que puedas generar, pero nunca generes código que no sepas verificar."

El Problema de la Alucinación

Los agentes pueden generar código que parece correcto pero tiene errores sutiles. Por eso, la verificación automática mediante tests es más importante que nunca. El TDD (Test-Driven Development) se convierte en una necesidad, no solo una buena práctica.

4

Context Engineering vs Prompt Engineering

⏱ 5 minutos
💡
Diferencia Clave

Prompt Engineering = Escribir el mensaje correcto al chat.
Context Engineering = Diseñar tu sistema de archivos, reglas y configuración para que el agente entienda el contexto sin necesidad de explicárselo en cada mensaje.

En la ingeniería agéntica moderna, la calidad del output depende de:

  1. Contexto — Qué información tiene el agente sobre tu proyecto (CLAUDE.md, rules, memoria)
  2. Restricciones — Qué puede y no puede hacer (permisos, settings, hooks)
  3. Skills — Habilidades reutilizables empaquetadas (scripts versionados)
  4. Protocolos — Estándares de comunicación (MCP para conectar herramientas externas)

Checklist: "Agent-Ready Repo"

Tu repositorio está listo para la IA cuando tiene:

  • Contexto: CLAUDE.md o AGENTS.md con instrucciones del proyecto
  • Restricciones: .claude/settings.json con permisos configurados
  • Linting: Herramientas de calidad de código configuradas
  • Tests: Suite de tests automatizados que el agente pueda ejecutar
  • Documentación: README actualizado con comandos y arquitectura
5

Requisitos Técnicos

⏱ 2 minutos

Software Necesario

Requisito Detalle
Terminal macOS Terminal, Linux, o WSL2 en Windows
Node.js Versión 20+ (recomendado)
Git Para control de versiones
VS Code Editor de código (o Cursor)
Claude Code CLI Se instala durante la clase

Cuentas y Accesos

🚀 Proyecto Base: CRM

Durante todo el taller trabajaremos sobre un CRM real construido con Next.js, Prisma y Tailwind CSS. Clona el repositorio antes de empezar:

bashClonar el proyecto
git clone https://github.com/hardcore-ai/basic_crm_30x.git
cd basic_crm_30x
npm install
📦
Repositorio del Proyecto

Este CRM incluye gestión de clientes, interacciones y un dashboard. Todas las prácticas del taller (prompts, flujos, Hooks, Subagentes, Agent Teams, MCPs y Skills) se aplican sobre este proyecto.
🔗 github.com/hardcore-ai/basic_crm_30x

Nivel Requerido

Intermedio: conocimiento de Git, línea de comandos (CLI), y ciclo de vida de desarrollo de software.

💡
Cita de Cierre

"En 2026, la calidad de tu software ya no depende de tu capacidad para escribir sintaxis, sino de tu capacidad para especificar, restringir y verificar el trabajo de sistemas inteligentes."

1

Instalación y Primeros Pasos

⏱ 5 minutos
🎯 Instalar Claude Code CLI 🎯 Completar autenticación 🎯 Ejecutar primera exploración
Pantalla de Claude Code con login exitoso
Claude Code: login exitoso y sesión lista para iniciar.

¿Qué es Claude Code?

Claude Code es una herramienta de código agéntica que lee tu codebase, edita archivos y ejecuta comandos. Funciona en tu terminal, IDE, navegador y como app de escritorio.

Instalación

bashmacOS / Linux / WSL
curl -fsSL https://claude.ai/install.sh | bash
bashHomebrew
brew install --cask claude-code
powershellWindows PowerShell
irm https://claude.ai/install.ps1 | iex

Primera Sesión

bash
cd tu-proyecto
claude
# Se te pedirá iniciar sesión la primera vez
# Usa /login si necesitas cambiar de cuenta

Modelos Disponibles

Modelo Caso de Uso Costo
Opus 4.7 Razonamiento complejo, arquitectura $$$
Sonnet 4.6 Tareas diarias, balance costo/capacidad $$
Haiku Tareas simples, búsquedas rápidas $

Primer Prompt: Explorar tu Proyecto

💬 Prompt
dame un overview de este CRM, su arquitectura en Next.js y esquema de datos en Prisma
💡
Observa el Bucle

Claude usará Glob para encontrar archivos, Read para leerlos, y construirá un resumen arquitectónico. Observa las herramientas que usa en la terminal.

2

Modo Interactivo: Atajos y Permisos

⏱ 5 minutos
🎯 Dominar atajos de teclado 🎯 Entender los 3 modos de permisos 🎯 Usar menciones con @

Los 3 Modos de Permisos

Alterna entre modos con Shift+Tab:

🔍
Plan Mode
Solo lee y analiza. Nunca modifica archivos. Ideal para exploración segura y diagnóstico.
Normal Mode
Claude pide aprobación antes de cada acción que modifica archivos o ejecuta comandos.
Auto-Accept
Claude ejecuta sin preguntar. Usar con precaución — ideal para tareas de confianza.

Atajos Esenciales

Atajo Función
Ctrl+C Cancelar acción actual
Ctrl+R Buscar en historial de prompts
Ctrl+O Ver pensamiento extendido (verbose)
Ctrl+L Limpiar pantalla
Shift+Enter Prompt multilínea
Esc+Esc Rewind — revertir al checkpoint anterior
Shift+Tab Cambiar modo de permisos

Menciones con @

Da contexto directo incluyendo archivos o directorios en tu prompt:

💬 Prompt — @ Mención en el CRM
@src/app/api/customers/route.ts ¿hay alguna vulnerabilidad de seguridad en esta ruta de API? ¿Se valida el input antes de hacer queries a Prisma?

Comandos Integrados

Comando Descripción
/help Mostrar ayuda y comandos disponibles
/clear Limpiar historial de conversación
/usage Ver costo acumulado de la sesión
/context Ver uso de la ventana de contexto
/compact Compactar contexto preservando lo esencial
/model sonnet Cambiar modelo mid-session
/resume Reanudar conversación anterior
/rename Nombrar la sesión actual
!comando Ejecutar comando bash directamente
3

Settings y Permisos

⏱ 3 minutos
🎯 Entender la jerarquía de scopes 🎯 Configurar reglas de permisos 🎯 Proteger archivos sensibles

Jerarquía de Scopes (Precedencia)

Las configuraciones se aplican de mayor a menor prioridad:

Scope Ubicación ¿Compartido? Uso
Managed Sistema (/etc/claude-code/) Sí (IT) Políticas corporativas
User ~/.claude/settings.json No Preferencias personales
Project .claude/settings.json Sí (Git) Reglas del equipo
Local .claude/settings.local.json No (gitignored) Overrides personales

Ejemplo: settings.json del Proyecto

json.claude/settings.json
{
  "permissions": {
    "deny": [
      "Read(.env)",
      "Read(no_leer.txt)",
      "Read(**/*.pem)",
      "Edit(.env)",
      "Bash(rm -rf *)",
      "Bash(DROP TABLE *)"
    ],
    "allow": [
      "Bash(npm run *)",
      "Bash(npx prisma *)",
      "Bash(git *)",
      "Read",
      "Edit",
      "Write"
    ]
  }
}
🔒
Seguridad

Las reglas deny siempre tienen prioridad sobre allow. Si un archivo está en deny, Claude NO podrá leerlo ni editarlo, sin importar las reglas de allow.

Ejercicio Práctico

  1. Crea el archivo .claude/settings.json con las reglas de arriba
  2. Abre claude e intenta: "lee el archivo secrets.env"
  3. Verifica que Claude bloquea el acceso
  4. Usa /config para explorar la configuración interactiva
4

Memoria: CLAUDE.md y Auto Memory

⏱ 5 minutos
🎯 Escribir un CLAUDE.md efectivo 🎯 Entender Auto Memory 🎯 Usar reglas modulares
💡
Dos Tipos de Memoria

CLAUDE.md = Instrucciones que TÚ escribes para Claude (reglas, stack, convenciones)
Auto Memory = Notas que CLAUDE escribe para sí mismo (patrones aprendidos, insights)

Jerarquía de Memoria

}
Archivo Propósito Compartido
~/.claude/CLAUDE.md Preferencias personales globales No
./CLAUDE.md Instrucciones del proyecto Sí (Git)
./CLAUDE.local.md Preferencias por proyecto (gitignored) No
.claude/rules/*.md Reglas modulares por tema Sí (Git)
~/.claude/projects/<proyecto>/memory/ Auto Memory (notas de Claude) No

Template: CLAUDE.md Efectivo

markdownCLAUDE.md
# CRM Proyecto - Instrucciones para Claude

## Stack
- Runtime: Node.js 20+ con TypeScript y React 19
- Framework: Next.js 16 (App Router)
- Estilos: Tailwind CSS v4
- ORM: Prisma con PostgreSQL (Neon DB)
- Pruebas: Vitest

## Comandos
- Dev server: `npm run dev`
- Build: `npm run build`
- DB generate: `npx prisma generate`
- Linter: `npm run lint`

## Convenciones
- Componentes de UI van en `src/components/` (usamos Lucide React para íconos)
- Lógica de backend y endpoints en `src/app/api/`
- Páginas de la app van en `src/app/`
- Componentes de servidor (RSC) por defecto. Usa `"use client"` solo si necesitas interactividad o hooks de React
- Las mutaciones a la base de datos se hacen usando Server Actions o en rutas de API

## Seguridad
- NUNCA commitear archivos `.env.local` ni secrets
- NUNCA retornar objetos Prisma completos al frontend, filtra datos sensibles
- Valida entradas de usuario antes de tocar la DB

Reglas Modulares

markdown.claude/rules/testing.md
# Convenciones de Testing

- Framework: Vitest + Supertest para tests de integración
- Cada test debe cubrir: happy path, errores, edge cases
- Nombrar tests descriptivamente:
  "should return 404 when product not found"
- Usar factories para datos de prueba, no hardcodear

Auto Memory

Puedes decirle a Claude que recuerde algo específico:

💬 Prompt
recuerda que siempre usamos componentes de servidor (RSC) en Next.js por defecto

Usa /memory para revisar y editar lo que Claude ha guardado.

Generar CLAUDE.md Automáticamente

bash
# Dentro de una sesión de Claude Code:
/init
# Claude analizará tu proyecto y generará un CLAUDE.md base
5

Flujos de Trabajo Reales

⏱ 7 minutos
🎯 Debug agéntico con stack traces 🎯 Refactorización incremental 🎯 Commits y PRs conversacionales

Debug Agéntico

Pega el error directamente en Claude y deja que trace la causa raíz:

💬 Prompt — Debug del CRM
Tengo este error en el CRM: TypeError: Cannot read properties of undefined (reading 'name') at GET (src/app/api/customers/route.ts:15) Diagnostica la causa raíz en la ruta de clientes y corrígelo. Verifica con npm run build

Refactorización Incremental

💡
Regla de Oro

Pide cambios en pasos pequeños y verificables. Siempre incluye un comando de verificación.

💬 Prompt — Refactorización del CRM
refactoriza src/components/Sidebar.tsx para usar iconos de Lucide React en lugar de emojis o SVG, manteniendo el mismo comportamiento visual. Agrega hover effects con Tailwind. Después de cada cambio, corre npm run lint

Checkpoints y Rewind

Claude crea checkpoints automáticos antes de cada cambio. Si algo sale mal:

  • Esc+Esc — Revertir al estado anterior (Rewind)
  • Restore: Revierte código al checkpoint
  • Summarize: Mantiene los cambios pero limpia el contexto

Git y Pull Requests

💬 Prompt — Code Review del CRM
revisa todos mis cambios contra main buscando problemas de seguridad en las rutas de API del CRM y rendimiento en las queries de Prisma
💬 Prompt
commitea los bug fixes en un commit y la refactorización en otro, con mensajes descriptivos
💬 Prompt — PR del CRM
crea un PR con título descriptivo, descripción detallada de los cambios al CRM de clientes, y un test plan que incluya los endpoints de /api/customers y /api/interactions

Gestión de Sesiones

bash
# Nombrar la sesión actual
/rename bugfix-authentication

# Continuar la sesión más reciente
claude -c

# Seleccionar sesión para reanudar
claude -r

# Reanudar por nombre
claude --resume bugfix-authentication
6

Hooks — Automatización por Eventos

⏱ 5 minutos
🎯 Configurar hooks en settings.json 🎯 Usar matchers para filtrar herramientas 🎯 Auto-formatear y bloquear archivos
ℹ️
Skills vs Hooks

Skills = Claude decide cuándo usarlas (o tú las invocas con /nombre).
Hooks = Comandos deterministas que siempre se ejecutan en eventos específicos.

¿Qué hace un Hook y cómo se estructura?

Un hook ejecuta lógica automática en puntos concretos del ciclo de Claude Code. La estructura oficial es: evento → matcher → hooks[]. En hooks de comando, Claude envía JSON por stdin con el contexto del evento, y tu script decide si permite, bloquea o solo registra.

jsonEstructura mínima en settings.json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-risky-commands.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/format.sh"
          }
        ]
      }
    ]
  }
}
bash.claude/hooks/block-risky-commands.sh
#!/usr/bin/env bash
INPUT="$(cat)"
CMD="$(echo "$INPUT" | jq -r '.tool_input.command // empty')"

if echo "$CMD" | grep -Eq 'rm -rf|sudo rm'; then
  jq -n '{
    hookSpecificOutput: {
      hookEventName: "PreToolUse",
      permissionDecision: "deny",
      permissionDecisionReason: "Comando destructivo bloqueado por policy"
    }
  }'
  exit 0
fi

exit 0

Tipos de Hook Handler

  • type: "command": corre scripts/comandos shell (determinista)
  • type: "prompt": validación de una condición con modelo (single-turn)
  • type: "agent": delega validación a subagente con herramientas

Eventos del Ciclo de Vida

Evento Cuándo se ejecuta Uso típico
PreToolUse Antes de usar una herramienta Bloquear ediciones a archivos protegidos
PostToolUse Después de usar una herramienta Auto-formatear código
Stop Cuando Claude termina de responder Validación final
Notification Cuando Claude espera input Notificaciones de escritorio
SessionStart Al iniciar sesión Inyectar variables de entorno
PreCompact Antes de compactar contexto Re-inyectar info crítica

Ejemplo Completo de Hooks

json.claude/settings.json (sección hooks)
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "file=$(jq -r '.tool_input.file_path // empty'); [ -n \"$file\" ] && npx prettier --write \"$file\" 2>/dev/null || true"
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "file=$(jq -r '.tool_input.file_path // empty'); if echo \"$file\" | grep -q 'prisma/schema.prisma'; then echo 'Blocked: No editar prisma/schema.prisma directamente.' >&2; exit 2; fi"
          }
        ]
      }
    ],
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "notify-send 'Claude Code' 'Necesita tu atención' 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}

Ejemplos para probar

  1. Crea un archivo test.js mal formateado.
  2. Edita prisma/schema.prisma agregando un comentario.
💡
Tip

Usa /hooks dentro de Claude Code para crear y gestionar hooks visualmente sin editar JSON manualmente.

🏪 Marketplaces y Repositorios de Hooks

🐙
GitHub: Claude Code Hooks Examples
Ejemplos oficiales de Hooks para distintos flujos de trabajo. GitHub Repo
📖
Anthropic Docs: Hooks
Guía oficial de configuración y eventos disponibles. Documentación
🔧
Community Hook Recipes
Recetas de la comunidad para auto-formateo, linting, notificaciones y protección de archivos. Discord #claude-code
🧩
AITMPL
Plantillas de automatización que puedes adaptar como Hooks de validación y flujo. aitmpl.com
7

Subagentes — Delegación Inteligente

⏱ 3 minutos
🎯 Conocer los subagentes built-in 🎯 Crear subagentes personalizados 🎯 Decidir cuándo delegar

Subagentes Integrados

🔍
Explore
Modelo Haiku, solo lectura. Optimizado para búsqueda rápida en el codebase. Económico.
📋
Plan
Hereda modelo, solo lectura. Investiga para construir planes detallados de implementación.
🤖
General-purpose
Hereda modelo, todas las herramientas. Para tareas complejas multi-paso.

Crear un Subagente Personalizado

markdown.claude/agents/test-writer.md
---
name: "test-writer"
description: Genera tests unitarios e integración para componentes React y rutas API
model: sonnet
color: red
tools:
  - Read
  - Edit
  - Write
  - Bash
  - Glob
  - Grep
---

# Test Writer Agent

Especialista en escribir tests completos y confiables con Vitest + React Testing Library.

## Stack de Testing

- **Framework**: Vitest (con `vitest.config.ts`)
- **Testing Library**: React Testing Library para componentes
- **Assertions**: expect() de Vitest
- **HTTP Testing**: Supertest para rutas API
- **Cobertura mínima**: 80% de líneas

## Reglas de Testing

### Componentes React (`src/components/`)

- Renderizar sin errores (render + expect)
- Testear interacciones: clics, inputs, cambios de estado
- Usar `screen.getByRole()`, `getByTestId()` solo si necesario
- Mockear `next/navigation`: `useRouter`, `usePathname`, `useSearchParams`
- Mockear llamadas a APIs: fetch, POST, DELETE
- Evitar mockear la lógica interna (test del comportamiento, no la implementación)

### Rutas API (`src/app/api/`)

- Testear status codes (200, 404, 400, 500)
- Validar payload de request/response
- Mockear Prisma: `prismock` o manual `jest.mock()`
- Probar casos de error: registros no encontrados, validación fallida
- Usar Supertest: `request(app).get('/api/...')`

### Estructura de Archivos

```
src/
  components/
    Sidebar.tsx
  __tests__/
    components/
      Sidebar.test.tsx
    api/
      customers.test.ts
```

### Nombres Descriptivos

- ✅ "debe renderizar la tabla con filas de clientes"
- ✅ "retorna 404 cuando cliente no existe"
- ❌ "test 1", "works", "basic test"

## Proceso

1. **Leer el código**: Entiende el componente/ruta
   - Props, estado, efectos secundarios
   - Dependencias externas (APIs, librerías)

2. **Identificar escenarios**:
   - Happy path (caso exitoso)
   - Casos de error (validación, no encontrado)
   - Edge cases (entrada vacía, valores extremos)

3. **Escribir tests**:
   - Describe: agrupar tests por funcionalidad
   - It/test: un comportamiento por test
   - Arrange-Act-Assert pattern

4. **Mockear dependencias**:
   - Prisma: crear mock del cliente
   - APIs externas: mockear fetch/axios
   - Next.js: mockear `next/navigation`

5. **Ejecutar y validar**:
   - `npm run test` para ejecutar todos
   - `npm run test:watch` durante desarrollo
   - Verificar cobertura: `npm run test:coverage`

## Ejemplo: Componente

```tsx
// src/components/CustomerTable.test.tsx
import { render, screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { CustomerTable } from "./CustomerTable";

describe("CustomerTable", () => {
  it("debe renderizar tabla con clientes", () => {
    const customers = [{ id: "1", name: "Juan", email: "juan@example.com" }];
    render();
    expect(screen.getByText("Juan")).toBeInTheDocument();
  });

  it("debe llamar onDelete cuando se hace clic en eliminar", async () => {
    const onDelete = vi.fn();
    render(
      ,
    );
    await userEvent.click(screen.getByRole("button", { name: /eliminar/i }));
    expect(onDelete).toHaveBeenCalledWith("1");
  });
});
```

## Ejemplo: Ruta API

```ts
// src/app/api/customers/[id]/route.test.ts
import { describe, it, expect, beforeEach, vi } from "vitest";
import { GET } from "./route";

describe("GET /api/customers/[id]", () => {
  it("debe retornar cliente cuando existe", async () => {
    const response = await GET(
      new Request("http://localhost:3000/api/customers/123"),
      { params: { id: "123" } },
    );
    expect(response.status).toBe(200);
  });

  it("debe retornar 404 cuando cliente no existe", async () => {
    const response = await GET(
      new Request("http://localhost:3000/api/customers/999"),
      { params: { id: "999" } },
    );
    expect(response.status).toBe(404);
  });
});
```

Otro Ejemplo: Code Reviewer

markdown.claude/agents/code-reviewer.md
---
name: "code-reviewer"
description: Revisa código buscando bugs, seguridad, performance y code smells
model: haiku
tools:
  - Read
  - Grep
  - Glob
  - Bash
color: green
---

# Code Reviewer Agent

Especialista en auditoría de código con enfoque en seguridad, calidad y performance.

## Áreas de Revisión

### 🔴 CRITICAL (Bloquea merge)

- **Seguridad**: SQL injection, XSS, CSRF, autenticación ausente
- **Datos sensibles**: secrets en código, logs de contraseñas
- **Crashes**: null dereferences, tipos incorrectos, missing null checks
- **DB**: N+1 queries, migraciones sin rollback, deadlocks

### 🟠 HIGH (Revisar antes de merge)

- **Bugs lógicos**: race conditions, estado inconsistente, edge cases
- **Performance**: queries sin índices, renders innecesarios, memory leaks
- **Code smells**: funciones >50 líneas, complejidad ciclomática >10
- **Testing**: rutas críticas sin tests, cobertura <60%

### 🟡 MEDIUM (Nice to have)

- **Duplicación**: código repetido, DRY violations
- **Naming**: variables confusas, funciones genéricas
- **Documentación**: APIs sin JSDoc, lógica no documentada
- **Imports**: unused, circular dependencies

### 🔵 LOW (Cosmético)

- **Estilo**: formatting, trailing spaces, imports no ordenados
- **Logging**: verbosidad, nivel de detalle
- **Comments**: obvios, desactualizados

## Proceso

1. **Recibir archivos/ruta**: Usuario indica qué revisar.
2. **Analizar línea por línea**: Buscar vulnerabilidades, performance issues, y code smells.
3. **Documentar hallazgos**: Generar un reporte claro por severidades.
💡
¿Cuándo delegar?

Usa subagentes cuando quieras: preservar contexto principal, controlar costos (Haiku para tareas simples), y especializar comportamiento.

8

Headless, Costos y CI/CD

⏱ 2 minutos
🎯 Usar modo headless (-p) en scripts 🎯 Monitorear y optimizar costos 🎯 Configurar GitHub Actions con Claude

Modo Headless (-p)

Ejecuta Claude en modo no-interactivo para integrarlo en scripts y pipelines:

bashScripts de ejemplo
# Query simple
claude -p "explica qué hace la función processPayment"

# Piping: analizar logs
cat error.log | claude -p "explica este error y sugiere la solución"

# Output JSON estructurado
claude -p "lista los endpoints de la API" --output-format json

# Limitar presupuesto
claude -p "revisa seguridad del proyecto" --max-budget-usd 2.00

# Linter semántico con Claude
git diff main --name-only -- '*.ts' | while read file; do
  cat "$file" | claude -p \
    "Busca bugs lógicos y vulnerabilidades. Formato: ARCHIVO:LINEA - PROBLEMA" \
    --output-format text --max-budget-usd 0.50
done

Monitoreo de Costos

Comando Información
/cost Costo total de la sesión, duración, cambios
/context Qué consume espacio en la ventana de contexto
/compact Compactar contexto (preservar lo esencial)
/model sonnet Cambiar a modelo más económico
💰
Optimización de costos

opusplan: Opus planifica → Sonnet ejecuta. Mejor balance calidad/costo.
/clear entre tareas no relacionadas.
Mover instrucciones largas de CLAUDE.md a skills (se cargan bajo demanda).

GitHub Actions — Claude como Revisor de PRs

yaml.github/workflows/claude-review.yml
name: Claude Code Review
on:
  pull_request:
    types: [opened, synchronize]
  issue_comment:
    types: [created]

jobs:
  claude-review:
    if: |
      (github.event_name == 'pull_request') ||
      (github.event_name == 'issue_comment' &&
       contains(github.event.comment.body, '@claude'))
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
      issues: write
    steps:
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          model: sonnet

Con esta configuración, puedes escribir @claude revisa este código en cualquier PR y Claude lo revisará automáticamente según las reglas del CLAUDE.md del repo.

9

Agent Teams — Equipos de Agentes en Paralelo

⏱ 8 minutos
🎯 Entender cuándo usar Agent Teams vs Subagentes 🎯 Configurar y lanzar un equipo de agentes 🎯 Controlar, comunicar y coordinar teammates 🎯 Aplicar mejores prácticas en proyectos reales
🤝
¿Qué son los Agent Teams?

Agent Teams te permiten orquestar múltiples sesiones de Claude Code trabajando en paralelo como un equipo coordinado. Un agente líder gestiona a varios teammates, cada uno con su propio contexto y tareas asignadas, comunicándose entre sí mediante mensajes.

¿Cuándo Usar Agent Teams?

Agent Teams es ideal para tareas que se benefician del trabajo paralelo y coordinado:

🔍
Investigación y Revisión
Múltiples teammates investigan diferentes aspectos de un problema simultáneamente, comparten hallazgos y desafían las conclusiones del otro.
🧩
Nuevos Módulos o Features
Cada teammate trabaja en una pieza independiente sin interferir con los demás. Ej: frontend, backend y tests en paralelo.
🐛
Debugging con Hipótesis Competidoras
Teammates prueban diferentes teorías en paralelo y convergen en la respuesta más rápido.
🔗
Coordinación Cross-Layer
Cambios que abarcan frontend, backend y tests — cada uno gestionado por un teammate diferente.

Agent Teams vs Subagentes

Característica Subagentes Agent Teams
Contexto Comparten la sesión del padre Cada uno tiene su propia ventana de contexto
Comunicación Retornan resultado al padre Mensajes bidireccionales entre teammates
Paralelismo Limitado (dentro de la sesión) Verdadero paralelismo (sesiones separadas)
Mejor para Tareas ligeras de investigación o verificación Trabajo complejo que requiere coordinación
Costos Compartidos con la sesión principal Cada teammate consume tokens independientemente

Habilitar Agent Teams

Agent Teams es una feature experimental. Actívala con la variable de entorno o en settings:

bashVariable de entorno
export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
json.claude/settings.json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

Lanzar tu Primer Equipo

Simplemente describe la tarea y pide un equipo. Claude creará los teammates automáticamente:

💬 Prompt — Agent Team para el CRM
Necesito agregar un módulo de reportes al CRM. Crea un agent team con: un teammate para diseñar el esquema de datos en Prisma, otro para crear las rutas de API en Next.js, y otro para construir los componentes de UI con Tailwind. Coordinen entre sí para asegurar consistencia.
💡
¿Qué pasa al crear un equipo?

Claude analiza tu petición, crea una lista de tareas compartida, y spawna los teammates necesarios. Cada teammate recibe su contexto inicial y comienza a trabajar de forma autónoma. El líder coordina y tú puedes monitorear el progreso.

Controlar tu Equipo

Modos de Visualización

📺
In-Process
Todos los teammates corren dentro de tu terminal principal. Usa Shift+Down para navegar entre ellos. Funciona en cualquier terminal.
🪟
Split Panes (tmux)
Cada teammate tiene su propio panel. Ves el output de todos simultáneamente. Requiere tmux o iTerm2.
json.claude/settings.json
// Forzar modo in-process (sin tmux)
{ "teammateMode": "in-process" }

// O desde la línea de comandos:
// claude --teammate-mode in-process

Comunicarte con Teammates

Acción In-Process Split Panes
Navegar teammates Shift+Down para ciclar Click en el panel del teammate
Enviar mensaje Navega al teammate y escribe Click en su panel y escribe
Ver sesión Enter para ver, Escape para interrumpir Visible directamente en el panel
Ver lista de tareas Ctrl+T Ctrl+T

Especificar Modelos y Pedir Aprobación

💬 Prompt — Equipo con modelos específicos
Crea un equipo con 3 teammates para refactorizar estos módulos en paralelo. Usa Sonnet para cada teammate.
💬 Prompt — Requerir aprobación de plan
Crea un teammate arquitecto para refactorizar el módulo de autenticación. Requiere aprobación del plan antes de hacer cambios.

Gestionar el Equipo

bashComandos de gestión
# Pedir a un teammate que se detenga
"Pide al teammate investigador que se detenga"

# Limpiar el equipo completo cuando termines
"Limpia el equipo"

# Esperar a que terminen antes de continuar
"Espera a que tus teammates completen sus tareas antes de continuar"

Hooks para Quality Gates

Usa hooks específicos de Agent Teams para controlar calidad:

Hook Cuándo se ejecuta Uso
TeammateIdle Cuando un teammate va a quedar inactivo Exit code 2 → envía feedback y mantiene al teammate trabajando
TaskCompleted Cuando una tarea se marca como completada Exit code 2 → previene completar y envía feedback

Arquitectura Interna

ℹ️
¿Cómo funciona por dentro?

El Lead (tu sesión principal) spawna teammates como sesiones independientes de Claude Code. Todos comparten un directorio de configuración del equipo y una lista de tareas compartida:

  • ~/.claude/teams/{team-name}/config.json — Configuración del equipo
  • ~/.claude/tasks/{team-name}/ — Lista de tareas compartida

Comunicación y Contexto

  • 📨 Entrega automática — Cuando un teammate envía un mensaje, se entrega automáticamente al destinatario
  • 🔔 Notificaciones idle — Cuando un teammate termina, notifica automáticamente al líder
  • 📋 Lista de tareas compartida — Todos los agentes ven el estado y pueden reclamar trabajo disponible
  • 💬 message — Envía a un teammate específico
  • 📣 broadcast — Envía a todos simultáneamente (usar con moderación por costos)

Casos de Uso Prácticos

Code Review en Paralelo

💬 Prompt — Review paralelo del CRM
Crea un agent team para revisar el PR #42 del CRM. Spawn tres revisores: - Uno enfocado en implicaciones de seguridad de las rutas de API - Uno verificando impacto en rendimiento de las queries de Prisma - Uno validando cobertura de tests Que cada uno revise y reporte sus hallazgos.

Debugging con Hipótesis Competidoras

💬 Prompt — Debugging paralelo
Los usuarios reportan que el dashboard del CRM tarda más de 10 segundos en cargar. Spawn 3 teammates para investigar diferentes hipótesis: - Teammate 1: queries N+1 en Prisma y problemas de índices - Teammate 2: renderizado excesivo en componentes React - Teammate 3: tamaño del bundle y carga de assets Que hablen entre sí para refutar las teorías del otro y converjan en un diagnóstico.

Feature Cross-Layer para el CRM

💬 Prompt — Feature completa con team
Necesito agregar un módulo de "Notas" al CRM (cada cliente puede tener múltiples notas). Crea un agent team: - Teammate "schema": agrega el modelo Note en Prisma y corre la migración - Teammate "api": crea las rutas CRUD en src/app/api/notes/ - Teammate "ui": crea el componente NotesPanel en src/components/ - Teammate "tests": escribe tests para la API y componentes Coordinen para usar los mismos nombres de campos y tipos.

Mejores Prácticas

📝
Da Contexto Suficiente
Los teammates no comparten la ventana de contexto del líder. Al spawnearlos, incluye paths relevantes, convenciones del proyecto y reglas.
📏
Tamaño Apropiado del Equipo
2-5 teammates es ideal. Los costos escalan linealmente y la coordinación se complica con equipos grandes. Más no siempre es mejor.
📦
Dimensiona las Tareas
Ni muy pequeñas (el overhead no vale la pena) ni muy grandes (mucho tiempo sin check-ins). Unidades autocontenidas: una función, un archivo de test, una review.
📂
Evita Conflictos de Archivos
Asigna archivos diferentes a cada teammate. Si dos teammates editan el mismo archivo, habrá conflictos de merge.
🔬
Empieza con Research
Los equipos funcionan mejor cuando empiezan con investigación y luego pasan a implementación, en lugar de saltar directo a escribir código.
👀
Monitorea y Dirige
Revisa el progreso periódicamente. Envía mensajes para redirigir si algún teammate va por mal camino.

Troubleshooting

Problema Solución
Teammates no aparecen En in-process, presiona Shift+Down. Si usas split panes, verifica que tmux esté instalado: which tmux
Demasiados prompts de permisos Configura permisos adecuados en .claude/settings.json con reglas de allow
Teammates se detienen por errores Envíales instrucciones adicionales directamente, o spawna un reemplazo
El líder termina antes que el equipo Pide al líder: "Espera a que tus teammates completen sus tareas"
Sesiones tmux huérfanas tmux ls para listar y tmux kill-session -t <nombre> para limpiar

Limitaciones Actuales

⚠️
Ten en cuenta
  • Sin /resume para teammates in-process — Al reanudar sesión, los teammates ya no existen. Spawna nuevos si es necesario.
  • Un equipo por sesión — Limpia el equipo actual antes de crear uno nuevo.
  • Sin equipos anidados — Solo el líder puede crear y gestionar el equipo.
  • Líder fijo — La sesión que crea el equipo es el líder de por vida.
  • Permisos al spawn — Todos los teammates inician con el modo de permisos del líder.
  • Split panes requiere tmux/iTerm2 — No soportado en terminal integrada de VS Code ni Windows Terminal.
🚀
Próximos Pasos

Ahora que conoces Agent Teams, combínalos con Subagentes para delegación ligera, Git Worktrees para sesiones paralelas manuales, y Hooks para quality gates automáticos. Documentación completa: code.claude.com/docs/en/agent-teams

1

OpenCode: Agente Open Source para Modelos Locales o Cloud

⏱ 8 minutos
🎯 Entender dónde encaja OpenCode en el stack agéntico 🎯 Instalar y abrir una sesión en el proyecto 🎯 Diferenciar TUI, Desktop, IDE y modo servidor
🟣
¿Qué es OpenCode?

OpenCode es un agente de codificación open source que puede correr en terminal, app de escritorio, IDE o modo cliente/servidor. Su valor para este taller es que permite practicar flujos agénticos con proveedores cloud y también con modelos locales.

Instalación Rápida

bash
# Instalación recomendada con npm
npm install -g opencode-ai

# Abrir OpenCode en el proyecto actual
opencode

# Ver opciones disponibles
opencode --help

Superficies de Uso

⌨️
Terminal TUI
Interfaz principal para trabajar desde el repositorio, revisar cambios y aprobar acciones.
🖥️
Desktop
Cliente visual para sesiones locales, útil cuando quieres una experiencia más cercana a un IDE.
🧩
IDE
Integración con editor para usar OpenCode mientras navegas archivos y cambios.
🔌
Client/Server
Modo servidor para separar el agente de la interfaz y conectarte desde otros clientes.

Documentación Base

RecursoUso en el taller
Introducción OpenCodeInstalación, configuración inicial y formas de ejecutar el agente.
MCP ServersConexión de herramientas externas en opencode.json.
SkillsCreación de habilidades reutilizables en .opencode/skills/.
2

Modelos locales o cloud

⏱ 7 minutos
🎯 Configurar proveedores en OpenCode 🎯 Comparar privacidad, costo y latencia 🎯 Elegir modelo según la tarea

Configuración de Proveedor

OpenCode usa un archivo opencode.json para declarar configuración del proyecto. En esta clase lo usaremos para fijar proveedor, modelo y herramientas compartidas.

jsonopencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "openai/gpt-oss-120b",
  "provider": {
    "openai": {
      "apiKey": "$OPENAI_API_KEY"
    }
  }
}

Ejemplo con Modelo Local

jsonopencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "ollama/qwen2.5-coder:14b",
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "http://localhost:11434/v1"
      }
    }
  }
}
OpciónCuándo usarlaTrade-off
CloudFeatures complejas, refactors grandes, revisión de arquitectura.Mejor calidad y contexto, mayor costo y dependencia de red.
LocalExploración, privacidad, tareas repetitivas o repos con datos sensibles.Menor costo marginal, pero más límites de capacidad y velocidad.
3

AGENTS.md y flujo de trabajo

⏱ 7 minutos
🎯 Definir reglas del repositorio 🎯 Guiar al agente con contexto estable 🎯 Practicar prompts orientados a artifacts

AGENTS.md funciona como memoria de proyecto: convenciones, comandos, rutas críticas, criterios de calidad y estilo de respuesta. En OpenCode lo usamos antes de MCP y Skills para que el agente tenga un contrato claro.

markdownAGENTS.md
# Reglas del proyecto

## Comandos
- Instalar: npm install
- Desarrollo: npm run dev
- Verificación: npm run lint && npm test

## Convenciones
- Mantén cambios pequeños y revisables.
- Antes de editar, explica el plan en máximo 5 bullets.
- Después de editar, ejecuta la verificación aplicable.
- Nunca incluyas secretos ni credenciales en archivos del repo.

## Criterios de entrega
- Resumen de cambios
- Comandos ejecutados
- Riesgos o trabajo pendiente

Prompt de práctica

💬 Prompt — OpenCode con contexto
Lee AGENTS.md y revisa la estructura del proyecto. Luego propón un plan para agregar un endpoint de búsqueda al CRM, indicando archivos a tocar, riesgos y pruebas necesarias. No edites todavía.
4

MCP en OpenCode

⏱ 18 minutos
🎯 Configurar MCP locales y remotos en opencode.json 🎯 Descubrir marketplaces y repositorios útiles 🎯 Instalar un top de MCPs para flujos reales
🔌
MCP = herramientas externas bajo contrato

En OpenCode, MCP se declara dentro de opencode.json bajo la clave mcp. Cada servidor tiene un nombre estable, un tipo de conexión (local o remote) y puede habilitarse, deshabilitarse o limitarse por agente.

Modelo mental: local vs remoto

Tipo Cómo corre Cuándo usarlo Riesgo principal
Local OpenCode levanta un comando como npx, bunx o un binario local. Filesystem, Postgres local, herramientas internas o servidores que necesitan credenciales del entorno. Puede ejecutar código en tu máquina; revisa el paquete antes de instalarlo.
Remoto OpenCode llama una URL MCP y, si aplica, maneja OAuth o headers. Servicios SaaS como Sentry, Context7, GitHub, Vercel o gateways empresariales. Puede sumar muchos tokens al contexto; habilita solo lo necesario.

Ejemplo completo: MCP local y remoto

Este ejemplo combina servidores MCP remotos y locales. La idea es copiarlo y llevarlo al archivo opencode.json, reemplazando los tokens de ejemplo por credenciales reales cuando aplique.

jsonopencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp",
      "enabled": true
    },
    "sentry": {
      "type": "remote",
      "url": "https://mcp.sentry.dev/mcp",
      "oauth": {},
      "enabled": true
    },
    "Neon_db": {
      "type": "remote",
      "url": "https://mcp.neon.tech/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      }
    },
    "github": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@modelcontextprotocol/server-github",
        "--GITHUB_PERSONAL_ACCESS_TOKEN",
        "xxxxxxxxxxxxxxxxxxxxxxxxx"
      ],
      "enabled": true
    },
    "sequential_thinking": {
      "type": "local",
      "command": ["npx", "-y", "@modelcontextprotocol/server-sequential-thinking"],
      "enabled": true
    }
  }
}

Gestión de MCPs en OpenCode

bash
# Listar servidores MCP y estado de autenticación
opencode mcp list

# Autenticar un servidor remoto con OAuth
opencode mcp auth sentry

# Ver estado OAuth de servidores remotos
opencode mcp auth list

# Depurar conexión y flujo OAuth
opencode mcp debug sentry

# Cerrar sesión de un servidor
opencode mcp logout sentry

Limitar herramientas MCP por agente

Los MCPs agregan herramientas al contexto. En repos grandes conviene declararlos, pero deshabilitarlos globalmente y activarlos solo en agentes especializados.

jsonopencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp",
      "enabled": true
    }
  },
  "tools": {
    "context7_*": false
  },
  "agent": {
    "plan": {
      "tools": {
        "context7_*": true
      }
    }
  }
}

Prompts con MCP

💬 Prompt — MCP + documentación
Usa Context7 para consultar la documentación actual de Next.js App Router y dime qué patrón conviene para agregar paginación server-side.
💬 Prompt — MCP + base de datos
Usa el MCP postgres para revisar el esquema de Customer. Verifica si existe índice para email y propón la migración mínima si falta.
💬 Prompt — MCP + producción
Usa Sentry para encontrar los errores abiertos más recientes del proyecto, agrúpalos por causa probable y genera un plan de fix con archivos candidatos.

Marketplaces y Repositorios MCP para OpenCode

🏪
MCP Registry Oficial
Registro oficial en preview para descubrir servidores públicos, metadata e instrucciones estandarizadas. registry.modelcontextprotocol.io
📚
MCP Docs
Documentación del protocolo, registry y guías de implementación. modelcontextprotocol.io
🐙
modelcontextprotocol/servers
Servidores de referencia: filesystem, git, memory, fetch, time y sequential thinking. GitHub Repo
🔎
Glama
Directorio amplio con verificación, health checks y herramientas para probar MCPs en navegador. glama.ai
📦
Smithery
Marketplace comunitario para buscar servidores MCP por categoría y revisar opciones de instalación. smithery.ai
🧭
MCP Atlas
Agregador que cruza Registry, Smithery, Glama, PulseMCP y GitHub para explorar el ecosistema. mcp-atlas.com

Top 6 MCPs para OpenCode

📌
Recomendación práctica

Instala pocos MCPs, pero que abran capacidades reales: documentación actual, repos, errores de producción, base de datos, búsqueda de ejemplos y razonamiento estructurado.

# MCP Server Uso en OpenCode Instalación sugerida
1 Context7 Traer documentación actualizada de librerías antes de editar código. remote o npx ctx7 setup --opencode
2 GitHub Issues, PRs, revisiones, Actions y trazabilidad de cambios. remote con OAuth si tu organización lo permite
3 PostgreSQL / Neon Inspeccionar esquemas, índices y datos de desarrollo sin salir del agente. local con connection string por variable de entorno
4 Sentry Convertir errores reales de producción en planes de fix verificables. remote con opencode mcp auth sentry
5 Grep by Vercel Buscar ejemplos de código en GitHub cuando la documentación no alcanza. remote con https://mcp.grep.app
6 Sequential Thinking Descomponer debugging, arquitectura y migraciones con razonamiento explícito. local con @modelcontextprotocol/server-sequential-thinking

Cómo instalar MCP en OpenCode

1. Context7 remoto

jsonopencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp",
      "enabled": true
    }
  }
}

2. Context7 setup automático

bash
npx ctx7 setup --opencode

3. GitHub remoto

jsonopencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "github": {
      "type": "remote",
      "url": "https://api.githubcopilot.com/mcp/",
      "enabled": true
    }
  }
}

4. PostgreSQL / Neon

jsonopencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "neon_pg": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@modelcontextprotocol/server-postgres",
        "{env:DATABASE_URL}"
      ],
      "enabled": true
    }
  }
}

5. Sentry remoto con OAuth

jsonopencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sentry": {
      "type": "remote",
      "url": "https://mcp.sentry.dev/mcp",
      "oauth": {},
      "enabled": true
    }
  }
}
bash
opencode mcp auth sentry

6. Grep by Vercel

jsonopencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gh_grep": {
      "type": "remote",
      "url": "https://mcp.grep.app",
      "enabled": true
    }
  }
}

7. Sequential Thinking local

jsonopencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sequential_thinking": {
      "type": "local",
      "command": ["npx", "-y", "@modelcontextprotocol/server-sequential-thinking"],
      "enabled": true
    }
  }
}
⚠️
Regla de seguridad

No pegues tokens ni connection strings reales en opencode.json. Usa variables de entorno como {env:DATABASE_URL} y versiona solo configuración que el equipo pueda compartir.

5

Skills en OpenCode

⏱ 20 minutos
🎯 Crear skills versionables para el repo 🎯 Controlar permisos e invocación 🎯 Combinar Skills + MCP para flujos repetibles

Las Skills de OpenCode siguen el estándar abierto de Agent Skills: carpetas versionables que contienen instrucciones, metadatos y recursos para que un agente ejecute una tarea especializada de forma consistente. OpenCode las descubre en el repo o en tu home y las carga bajo demanda con la herramienta nativa skill. Para la clase usaremos .opencode/skills/<nombre>/SKILL.md porque esa ruta se versiona con el proyecto.

Qué es una Skill

🧠
Procedimiento reusable, no prompt suelto

Una skill empaqueta conocimiento operativo: cuándo usarla, qué pasos seguir, qué archivos consultar, qué scripts ejecutar y cómo verificar el resultado. El agente solo ve name y description al inicio; cuando la tarea coincide, carga el SKILL.md completo y los recursos necesarios. Esto mantiene bajo el contexto base y vuelve repetibles los flujos del equipo.

Ubicaciones que OpenCode puede descubrir

Ubicación Uso recomendado
.opencode/skills/<name>/SKILL.md Skills del proyecto, revisadas por el equipo y compartidas por Git.
~/.config/opencode/skills/<name>/SKILL.md Skills personales para todos tus repos.
.claude/skills/<name>/SKILL.md Compatibilidad cuando el repo ya trae skills de Claude Code.
.agents/skills/<name>/SKILL.md Compatibilidad con repos que estandarizan instrucciones de agentes.

Estructura oficial de una Skill

OpenCode reconoce frontmatter YAML con name y description como campos requeridos. El nombre debe coincidir con la carpeta, estar en minúsculas y usar guiones simples.

textestructura
my-skill/
├── SKILL.md       # requerido: metadata + instrucciones
├── scripts/       # opcional: comandos o utilidades ejecutables
├── references/    # opcional: documentación, guías, specs
├── assets/        # opcional: plantillas, ejemplos, recursos
└── ...            # opcional: archivos adicionales del workflow
markdown.opencode/skills/review-pr/SKILL.md
---
name: review-pr
description: Revisa un PR y reporta riesgos, regresiones y faltantes de test.
license: MIT
compatibility: opencode
metadata:
  audience: developers
  workflow: code-review
---

# Review PR

Revisa el PR indicado por el usuario.

1. Resume los cambios clave.
2. Identifica bugs, regresiones y riesgos de seguridad.
3. Señala gaps de testing.
4. Entrega hallazgos por severidad con archivos afectados.
5. No modifiques archivos durante la revisión.

Permisos por agente

jsonopencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "agent": {
    "plan": {
      "permission": {
        "skill": {
          "docs-check": "allow",
          "db-migration": "ask"
        }
      }
    }
  }
}

Instalar Skills útiles en OpenCode

Reinicia OpenCode después de instalar skills: el catálogo se carga al iniciar la sesión. Luego verifica con list installed skills o pidiendo explícitamente usar la herramienta skill.

bashfrontend-design
# Buscar skills disponibles por palabra clave
npx skills search frontend
npx skills search design

# Instalar la skill de UI/UX y frontend de Anthropic
npx skills add https://github.com/anthropics/skills --skill frontend-design

# Verificar dentro de OpenCode
opencode
# Prompt: list installed skills
# Prompt: usa la skill frontend-design para revisar esta interfaz
jsonopencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "plugin": [
    "superpowers@git+https://github.com/obra/superpowers.git"
  ]
}
⚙️
Superpowers se instala como plugin

En OpenCode, Superpowers recomienda agregar el plugin a opencode.json, reiniciar OpenCode y verificar con el prompt Tell me about your superpowers. Si ya usas Superpowers en Claude Code o Codex, instálalo aparte para OpenCode porque cada harness gestiona sus plugins y skills por separado.

Marketplaces y Repositorios de Skills para OpenCode

📖
OpenCode Docs: Agent Skills
Referencia de ubicación, frontmatter, permisos y troubleshooting de skills. Documentación
🌐
Agent Skills
Estándar abierto para SKILL.md, estructura de carpetas y progressive disclosure. Ver estándar
🧰
skills CLI
Instalador práctico para buscar con npx skills search, traer skills desde repos públicos y detectarlas en agentes compatibles. Guía OpenCode School
🐙
Repos con .opencode/skills
Busca en GitHub ejemplos reales de .opencode/skills/*/SKILL.md para adaptar workflows de equipos. Buscar ejemplos
🧩
Compatibilidad .agents/skills
Útil si tu organización comparte skills entre diferentes agentes CLI. Buscar en GitHub
🔁
Compatibilidad .claude/skills
OpenCode puede leer skills Claude-compatible, útil para migrar repos existentes sin duplicar contenido. Buscar en GitHub
🛠️
Tu repo como marketplace interno
La mejor fuente para equipos suele ser un directorio versionado con reviews, owners y changelog.

Top 5 Skills para OpenCode

📌
Skills que sí cambian el resultado

Prioriza skills que codifican criterios del equipo, no prompts genéricos. Cada una debe mejorar consistencia, trazabilidad o seguridad.

# Skill ¿Para qué la uso? Referencia
1 Superpowers Metodología completa para agentes: brainstorming, specs, TDD, ejecución por planes, subagentes y verificación antes de cerrar trabajo. obra/superpowers
2 frontend-design Diseñar y revisar interfaces reales: layout, UX, accesibilidad, estados, responsive y polish visual antes de entregar UI. frontend-design
3 mcp-builder Construir servidores MCP propios para exponer APIs, datos internos y herramientas del equipo con un contrato reusable. mcp-builder
4 skill-creator Crear nuevas skills bien estructuradas: objetivo claro, frontmatter correcto, recursos de apoyo y verificación de uso. skill-creator
5 document-toolkit Manejar documentos de negocio y clase: leer, transformar, resumir, auditar y generar archivos Word, PDF, PowerPoint y Excel. docx · pdf · pptx · xlsx

Buenas prácticas

  • Una skill, una intención: revisión, documentación, migración, incidente o release.
  • Description específica: explica cuándo usarla; eso mejora el descubrimiento automático.
  • Nombre estable: usa kebab-case, máximo 64 caracteres y sin guiones dobles.
  • Versiona las skills del equipo: usa .opencode/skills/ dentro del repo.
  • Controla permisos: configura permission.skill en opencode.json.
  • Combina con MCP: una skill puede exigir documentación, issues, errores o DB antes de decidir.
  • Evita efectos secundarios ocultos: si la skill revisa, no edita; si edita, verifica.

Taller práctico: comparar con y sin Skill

💬 Prompt sin Skill
Revisa este PR y dime si está bien.
💬 Prompt con Skill
Usa la skill review-pr para revisar el PR 42. Prioriza bugs, regresiones, seguridad y gaps de testing. No edites archivos.
🎯
Resultado esperado

La respuesta con skill debe ser más consistente: hallazgos ordenados por severidad, referencias a archivos, riesgos explícitos y pruebas faltantes. Ese es el valor de convertir prompts repetidos en infraestructura.

1

¿Qué es Google Antigravity?

⏱ 5 minutos
🎯 Entender el cambio de paradigma 🎯 Diferenciar síncrono vs asíncrono 🎯 Conocer la "Manager Surface"
Pantalla de bienvenida de Google Antigravity
Google Antigravity: vista de introducción de la plataforma.

De "Pair Programming" a "Delegación de Tareas"

Google Antigravity es el AI-Native IDE de Google — una herramienta de desarrollo donde la IA no es un complemento, sino el motor principal. Su lema es "Build the new way".

👥
Antes: Pair Programming (Síncrono)
Tú y el agente trabajan juntos en tiempo real. Tú escribes, el agente sugiere. Requiere tu atención constante.
📋
Ahora: Delegación (Asíncrono)
Defines la tarea, el agente trabaja de forma autónoma. Tú revisas los artefactos resultantes cuando termina.

Antigravity como "Mission Control"

Antigravity es la superficie de gestión (Manager Surface) de Google para orquestar agentes de código de forma asíncrona. Piénsalo como un "Mission Control" donde:

  • 🚀 Lanzas tareas — Define qué quieres que el agente haga en lenguaje natural
  • 📊 Monitorizas progreso — Ves artefactos en tiempo real sin leer logs de chat
  • Revisas resultados — Apruebas planes de implementación, diffs visuales, PRs
  • 🔄 Iteras — Das feedback y el agente ajusta automáticamente

Dos Componentes Principales

🧠
Agent Manager
La vista de gestión donde creas workspaces, lanzas agentes, monitoreas sesiones y revisas resultados. Es tu "centro de mando".
✏️
Editor
Editor de código integrado basado en Monaco (VS Code). Edita archivos, navega el proyecto y trabaja con el agente en contexto visual.
🔑
Concepto Clave

Dejamos de leer logs de chat y empezamos a revisar Artifacts: planes de implementación, diffs visuales, screenshots de validación. El output del agente es un documento estructurado, no una conversación.

2

Instalación y Setup

⏱ 3 minutos
🎯 Descargar e instalar Antigravity 🎯 Autenticarse con cuenta Google 🎯 Conocer requisitos del sistema

Descarga

Visita antigravity.google/download para descargar Google Antigravity.

Requisitos del Sistema

Plataforma Requisito Mínimo
macOS Versión 12 (Monterey) o posterior. Solo Apple Silicon (ARM). x86 no soportado.
Windows Windows 10 (64 bit) o posterior
Linux glibc ≥ 2.28, glibcxx ≥ 3.4.25 (Ubuntu 20+, Debian 10+, Fedora 36+, RHEL 8+)

Autenticación

Antigravity requiere una cuenta personal de Google (@gmail.com). Las cuentas de Workspace pueden tener restricciones según la organización.

⚠️
Requisitos de Autenticación
  • Debes ser mayor de 18 años — si tu edad no está verificada, hazlo en myaccount.google.com/age-verification
  • Tu cuenta debe estar en un país aprobado (la mayoría de América, Europa, África, Asia y Oceanía)
  • Si tienes problemas con cuentas Workspace, prueba con una cuenta @gmail.com personal

Actualizaciones

La aplicación muestra una notificación cuando hay actualizaciones disponibles. Solo necesitas hacer clic en "Restart to Update" para aplicar la última versión.

Primer Inicio

  1. Descarga e instala Antigravity para tu plataforma
  2. Abre la aplicación — se abrirá el Agent Manager
  3. Inicia sesión con tu cuenta de Google
  4. Crea tu primer Workspace conectando un repositorio
3

Navegación Básica

⏱ 3 minutos
🎯 Navegar entre Agent Manager y Editor 🎯 Dominar atajos de teclado esenciales 🎯 Entender la relación Workspace → Sesión

Dos Vistas Principales

Antigravity tiene dos vistas que se complementan:

📋
Agent Manager
Vista de gestión. Aquí creas workspaces, lanzas agentes, monitorizas sesiones y revisas artefactos. Es tu vista "macro".
✏️
Editor
Vista de código. Editor Monaco con terminal integrada, diffs, y chat lateral con el agente. Es tu vista "micro".

Atajos de Navegación

Atajo Acción
Cmd+E Alternar entre Agent Manager ↔ Editor
Cmd+K Abrir Command Palette (buscar cualquier acción)
Cmd+P Buscar archivos rápidamente (Quick Open)
Cmd+Shift+P Paleta de comandos del Editor
Cmd+J Abrir/cerrar terminal integrada
💡
Tip: Flujo recomendado

Usa el Agent Manager para lanzar y monitorear tareas. Cuando necesites ver los cambios en detalle o editar manualmente, cambia al Editor con Cmd+E. Puedes abrir el Editor desde cualquier workspace haciendo clic en "Focus Editor" en el menú dropdown del workspace.

Flujo de Navegación

📋 Agent Manager
✏️ Editor
🖥 Terminal

Desde el Agent Manager, selecciona un workspace y haz clic en "Open Editor" — o usa Cmd+E. Desde el Editor, el botón en la barra superior o Cmd+E te regresa al Agent Manager.

4

Agent Manager

⏱ 5 minutos
🎯 Crear y configurar Workspaces 🎯 Lanzar sesiones de agente 🎯 Entender checkpoints y revisión

¿Qué es un Workspace?

Un Workspace es la unidad de trabajo en Antigravity. Conecta un repositorio Git y proporciona el contexto donde el agente opera.

Crear un Workspace

  1. Abre el Agent Manager
  2. Haz clic en "New Workspace"
  3. Conecta un repositorio: GitHub, GitLab, o repositorio local
  4. El agente clonará e indexará el repositorio automáticamente

Lanzar una Sesión

Una vez creado el workspace, describe tu tarea en lenguaje natural:

💬 Tarea CRM — Agent Manager
Analiza el schema de Prisma del CRM (modelos Customer e Interaction) y agrega validación de email y teléfono al endpoint POST /api/customers. Incluye mensajes de error claros y tests.

El agente seguirá un flujo estructurado:

🧠 Analiza el codebase
📋 Crea un plan
✅ Espera aprobación
⚙️ Implementa cambios
🧪 Verifica y entrega

Gestión de Sesiones

Acción Descripción
Detener Pausa la sesión del agente. Puedes reanudarla después.
Checkpoint El agente crea snapshots automáticos antes de cada cambio mayor.
Rewind Revierte al checkpoint anterior si los cambios no son satisfactorios.
Branching Cada sesión trabaja en una rama separada para no afectar main.
💡
Múltiples Sesiones

Puedes lanzar múltiples sesiones simultáneas en el mismo workspace o en diferentes workspaces. Cada sesión tiene su propia rama y contexto independiente — esto es lo que permite el paralelismo real.

5

Editor y Worktrees

⏱ 3 minutos
🎯 Usar el editor integrado 🎯 Entender el chat lateral del agente 🎯 Conocer las limitaciones actuales

El Editor de Antigravity

El editor está basado en Monaco (el mismo motor de VS Code), lo que significa que ya conoces la mayoría de los atajos:

Característica Descripción
Sintaxis highlighting Soporte para todos los lenguajes populares
Terminal integrada Ejecuta comandos directamente desde el editor
Diffs visuales Visualiza los cambios del agente como diffs lado a lado
Chat lateral Comunícate con el agente mientras ves el código
Quick Open Cmd+P para navegar archivos rápidamente

Chat del Agente en el Editor

En el panel lateral del editor puedes interactuar con el agente en contexto:

💬 Tarea CRM — Editor
@src/components/CustomerTable.tsx la tabla de clientes no muestra el status con colores diferenciados. Agrega badges con colores para LEAD (amarillo), ACTIVE (verde) y CHURNED (rojo) usando clases de Tailwind.

Revisando Cambios del Agente

Cuando el agente hace cambios, los verás como:

  • 📝 Diffs inline — Cambios resaltados directamente en el archivo
  • Botón "Accept" — Para aceptar los cambios propuestos
  • ↩️ Botón "Revert" — Para rechazar y volver al estado anterior
  • 💬 Comentar — Pide ajustes sin aceptar ni rechazar
⚠️
Limitación Actual

Google Antigravity no soporta Git worktrees en este momento. Cada workspace opera con un solo working directory. Si necesitas trabajar en múltiples ramas simultáneamente, crea workspaces separados.

Sleep y Sesiones Activas

Si un agente está ejecutándose, Antigravity evitará que tu computadora entre en modo sleep para no interrumpir la tarea. Esto sucede automáticamente mientras haya una sesión activa.

6

Artefactos y Paralelismo

⏱ 5 minutos
🎯 Entender los tipos de artefactos 🎯 Lanzar agentes en paralelo 🎯 Resolver silos de contexto

Tipos de Artefactos

En la orquestación asíncrona, el agente produce artefactos — documentos estructurados que contienen su trabajo:

📋
Plan de Implementación
Análisis del problema, propuesta de cambios organizados por componente, plan de verificación. Tú lo apruebas antes de que el agente ejecute.
📝
Diffs Visuales
Cambios de código mostrados como diffs con contexto: qué se cambió, por qué, y cómo afecta al sistema.
📸
Screenshots de Validación
Capturas que demuestran que los cambios funcionan. El agente puede tomar screenshots del UI o de resultados de tests.
📊
Walkthrough
Resumen final de qué se hizo, qué se probó, y resultados de validación. Documentación del trabajo completado.

Flujo de Trabajo con Artefactos

📝 Defines Tarea
📋 Agente Planifica
✅ Apruebas Plan
⚙️ Agente Ejecuta
📊 Revisas Artefactos

Paralelismo de Agentes

Una de las ventajas más poderosas de Antigravity es lanzar múltiples agentes en paralelo:

🐛
Agente 1: Fix Bug #42
Investiga y corrige el bug reportado en el issue de GitHub.
🧪
Agente 2: Escribir Tests
Genera tests para el módulo de pagos.
📄
Agente 3: Documentación
Actualiza la documentación de la API.

Cada agente trabaja de forma independiente con su propia rama y ventana de contexto. Los resultados se entregan como PRs independientes que puedes revisar y aprobar.

El Problema del "Silo de Contexto"

Cuando cada desarrollador tiene su propio historial de chat, la IA no aprende del equipo. La solución:

  • Project Knowledge (Harness): Fuentes de verdad compartidas (.claude/rules, CLAUDE.md a nivel de organización)
  • Prompts como Infraestructura: Versionado de Skills en el repositorio para que todo el equipo use los mismos estándares
  • Artefactos Compartidos: El equipo colabora sobre el output generado (comentarios, iteraciones, hand-off humano-máquina)
💡
Para la Clase

La diferencia clave con un chat es que los artefactos son documentos colaborativos: puedes comentar, pedir cambios, y el agente los actualiza — similar a Google Docs pero para código.

7

FAQ, Planes y Soporte

⏱ 3 minutos
🎯 Conocer los planes disponibles 🎯 Resolver problemas comunes 🎯 Saber sobre límites de uso y privacidad

Planes de Acceso

Google Antigravity está vinculado al ecosistema de Google AI. Existen varias formas de acceder:

Plan Acceso Límites
Google One AI Premium Cuenta personal con suscripción Cuota estándar de uso
Google Workspace AI Ultra Cuentas empresariales con add-on Cuotas incrementadas para equipos
GCP Project Solo por invitación a equipos seleccionados Configuración personalizada

Para más detalles sobre rate limits específicos, consulta la documentación de Planes.

Preguntas Frecuentes

¿Por qué no puedo autenticarme?

  • Antigravity está disponible para cuentas personales de Google en geografías aprobadas
  • Si tienes problemas con cuentas Workspace, prueba con un @gmail.com
  • Debes ser mayor de 18 años. Verifica tu edad aquí

¿Puedo usar Antigravity con herramientas de terceros?

🔒
Importante

Usar software de terceros (como Claude Code, OpenClaw, OpenCode) con tu login de Antigravity es una violación de los Términos de Servicio y puede resultar en la suspensión de tu cuenta. Si quieres usar un agente de terceros con Gemini, usa una API key de Vertex o AI Studio.

Privacidad y Datos

Puedes optar por no compartir datos en cualquier momento desde el panel de Settings. Consulta los Términos de Servicio para detalles completos.

¿Se soportan Git Worktrees?

No por el momento. Cada workspace opera con un solo working directory.

¿Qué pasa cuando mi computadora entra en modo sleep?

Si un agente está activo, Antigravity previene automáticamente que tu computadora entre en modo sleep para no interrumpir la ejecución.

Soporte

Visita la página de soporte y las comunidades oficiales.

8

Taller Práctico: Tu Primera Sesión en Antigravity

⏱ 8 minutos
🎯 Crear tu primer workspace 🎯 Lanzar y monitorear una sesión de agente 🎯 Revisar artefactos y aprobar cambios

Ejercicio 1: Setup del Workspace

  1. Abre Antigravity y accede al Agent Manager
  2. Crea un nuevo workspace conectando un repositorio de GitHub o un proyecto local
  3. Espera a que el agente indexe el código base
  4. Explora la interfaz: sidebar de archivos, vista de sesiones, panel de artefactos

Ejercicio 2: Tu Primera Tarea

Lanza una tarea sencilla para ver el flujo completo:

💬 Tarea CRM — Análisis Inicial
Analiza la arquitectura del CRM: el schema de Prisma (Customer, Interaction, User), las rutas de API en src/app/api/, y los componentes en src/components/. Dame un resumen del stack y sugiere 3 mejoras prioritarias.

Observa cómo el agente:

  • 📂 Escanea la estructura de archivos
  • 📖 Lee archivos clave (package.json, configs, entry points)
  • 📋 Genera un Plan de Implementación como artefacto
  • 🧪 Propone cambios verificables

Ejercicio 3: Tarea con Implementación

💬 Tarea CRM — Implementación
Agrega validación de input al endpoint POST /api/interactions del CRM. Debe validar que el customerId exista en la base de datos, que el campo 'type' sea uno de EMAIL/CALL/MEETING/NOTE, y que 'notes' no esté vacío. Retorna errores 400 descriptivos.

Para este ejercicio, practica:

  1. Revisar el plan — ¿El agente entendió correctamente los requisitos?
  2. Aprobar con ajuste — Comenta pidiendo un cambio antes de aprobarlo
  3. Revisar diffs — Cambia al Editor con Cmd+E y revisa los cambios
  4. Verificar tests — Confirma que los tests fueron creados y pasan

Ejercicio 4: Paralelismo

Lanza dos sesiones simultáneas en el mismo workspace:

📊
Sesión A: Dashboard del CRM
"Implementa un dashboard en src/app/page.tsx que muestre KPIs: total de clientes, clientes activos vs churned, e interacciones de la última semana. Usa Server Components y queries de Prisma"
🔍
Sesión B: Búsqueda de Clientes
"Agrega filtrado por status (LEAD/ACTIVE/CHURNED) y búsqueda por nombre/email al endpoint GET /api/customers. Incluye query params y paginación"

Observa cómo cada sesión trabaja en su propia rama sin interferir con la otra.

Checklist Final: ¿Completaste el Taller?

  • ☐ Workspace creado y repositorio conectado
  • ☐ Primera tarea de análisis completada y artefactos revisados
  • ☐ Tarea de implementación con plan aprobado y código verificado
  • ☐ Dos sesiones paralelas lanzadas exitosamente
  • ☐ Navegación fluida entre Agent Manager y Editor (Cmd+E)
🎯
Entregables del Taller

1. Al menos un artefacto revisado y aprobado (plan de implementación o walkthrough)
2. Código implementado por el agente con tests pasando
3. Experiencia navegando entre Agent Manager ↔ Editor


Recursos Adicionales

Recurso Link
Documentación Oficial Antigravity antigravity.google/docs
Página de Descarga antigravity.google/download
FAQ y Soporte FAQ
Términos de Servicio Términos
Planes y Precios Planes
Soporte / Comunidades Soporte
Documentación Oficial Claude Code code.claude.com/docs
Discord Anthropic Community Discord