Diseñar el catálogo y migrar un sitio existente sin romper a nadie
Un buen catálogo tiene pocas tools, cada una con una intención, nombre con verbo, entrada mínima y un error que el agente entiende. En un sitio que ya existe, la regla sale de la interfaz hacia una función que atiende el clic y la tool. En esta clase revisas un catálogo malo con el validador y planeas la migración de tu sitio.
ERRO fazer tudo
erro: nome fora da regra (1–128: letras, números, _ - .)
aviso: descrição curta: diga o que faz, o que NÃO faz e quando usar
aviso: sem inputSchema
aviso: diga se só lê (readOnlyHint) ou se tem consequência (consequentialHint)
ERRO buscar
erro: anotação readOnlyHint não é true/false
aviso: descrição curta: diga o que faz, o que NÃO faz e quando usar
aviso: inputSchema aceita campo extra (use additionalProperties: false)
aviso: campo "q" sem description
ERRO cancelar_reserva
erro: nome de ação com efeito sem consequentialHint
ERRO ver_agenda
erro: descrição vazia
erro: anotação desconhecida: readOnly
aviso: sem inputSchema
aviso: diga se só lê (readOnlyHint) ou se tem consequência (consequentialHint)
CATÁLOGO: 4 ferramentas · 5 erros · 8 avisos
saída: 1
OK buscar_oficinas
OK listar_comentarios
OK reservar_vaga
OK minhas_reservas
CATÁLOGO: 4 ferramentas · 0 erros · 0 avisos
saída: 0
Reglas de la spec: nombre, descripción no vacía, nombres únicos. Reglas del curso: schema object cerrado y descrito, anotaciones conocidas y coherentes, nombre de acción con efecto marcado con consequentialHint.
04 · En un framework: registrar al montar, abortar al desmontar
Modelo para adaptar (no corre en el kit). Angular tiene soporte experimental, según la doc de Chrome del 07/10/2026; el patrón de abajo vale para cualquiera.
Modelo · componente React
useEffect(() => {
const mc = document.modelContext;
if (!mc) return; // sin la API: la pantalla sigue igual
const ciclo = new AbortController();
registrar(mc, catalogo(agenda, ui), ciclo.signal).catch(() => {});
return () => ciclo.abort(); // se desmontó: las herramientas salen
}, [agenda]);
Modelo · JavaScript sin framework
// entrar en la pantalla
const ciclo = new AbortController();
if (document.modelContext) await registrar(document.modelContext, defsDaTela, ciclo.signal);
// salir de la pantalla (ruta nueva, modal cerrado)
ciclo.abort();
05 · Práctica
Validador y el plan de tu sitio. Cada ejercicio termina con un listo cuando.
E1 · Ver cómo el validador reprueba
3 min
Ejecuta el bloque del validador.
Listo cuando:node scripts/validar-catalogo.mjs catalogos/ruim.mjs; echo "saída: $?" → CATÁLOGO: 4 ferramentas · 5 erros · 8 avisos y saída: 1; el del kit → 0 erros y saída: 0.
E2 · Arreglar el catálogo malo
15 min
Copia catalogos/ruim.mjs a catalogos/meu.mjs y corrige hasta dejar los errores en cero: nombre sin espacios, descripción útil, anotación booleana y conocida, cancelar_reserva con consequentialHint.
Para tu sitio, escribe el inventario (formulario → handler → servicio → endpoint) y elige 3 tools: 2 que solo leen y 1 con efecto, con la pantalla de confirmación.
Listo cuando: Un archivo catalogo-[tu sitio].md con las 3 tools (nombre, descripción, entrada, anotación) y la regla compartida de cada una.
06 · Prueba de la clase
La explicación aparece después de la respuesta.
Pregunta 1 de 4
El execute lanza Error('sem vaga'). ¿Qué recibe el agente en Chromium 156?
Correcto
Medido el 19/10/2026: UnknownError genérico. La spec del 16/10 lista OperationError para este caso; el build mide otra cosa. Un error de regla vuelve como { erro } para que el agente pueda corregirlo.
No es esa
Medido el 19/10/2026: UnknownError genérico. La spec del 16/10 lista OperationError para este caso; el build mide otra cosa. Un error de regla vuelve como { erro } para que el agente pueda corregirlo.Repasar: Reglas de un buen catálogo
Pregunta 2 de 4
¿Dónde vive la regla de reservar en un sitio migrado?
Correcto
La misma función atiende los dos caminos: así no hay dos reglas que puedan divergir. El execute es un wrapper delgado. Validar de nuevo en el servidor sigue siendo obligatorio.
No es esa
La misma función atiende los dos caminos: así no hay dos reglas que puedan divergir. El execute es un wrapper delgado. Validar de nuevo en el servidor sigue siendo obligatorio.Repasar: Migrar sin romper a quien no tiene la API
Pregunta 3 de 4
¿Cuál de estos catálogos tiene el problema de intención duplicada?
Correcto
Buscar oficinas y procurar cursos responden al mismo pedido: el agente tiene que adivinar. Los otros pares tienen intenciones distintas.
No es esa
Buscar oficinas y procurar cursos responden al mismo pedido: el agente tiene que adivinar. Los otros pares tienen intenciones distintas.Repasar: Reglas de un buen catálogo
Pregunta 4 de 4
¿Por qué la migración termina en el modo Sem?
Correcto
Sin fecha de estable y sin Safari ni Firefox, quien no tiene la API es la mayoría. Si el sitio se rompe para ellos, la migración falló, por más tools que tenga.
No es esa
Sin fecha de estable y sin Safari ni Firefox, quien no tiene la API es la mayoría. Si el sitio se rompe para ellos, la migración falló, por más tools que tenga.Repasar: Migrar sin romper a quien no tiene la API
Prueba completada
Acertaste {a} de {n}. Si aciertas todas, la clase se marca como completada.
Elige una alternativa. La explicación aparece después de tu intento.
07 · En tres frases
CatálogoPocas tools, una intención cada una, entrada cerrada y error devuelto como dato.
ValidadorReglas de la spec y del curso, sin navegador: ejecútalo antes de publicar.
MigraciónInventario, regla compartida, wrapper delgado y el sitio igual en el modo Sem.