acbc8ef629
Registra los nuevos issues pendientes en el indice y excluye la carpeta worktrees/ del control de versiones. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
7.5 KiB
7.5 KiB
0032 — E2E: verificar skill /create-agent con agente de prueba
Objetivo
Crear un agente de prueba con personalidad muy marcada usando la skill /create-agent y escribir tests E2E con Playwright que verifiquen que el agente se creo correctamente y responde en Matrix con la personalidad esperada. Esto valida el pipeline completo: scaffold → build → register → verify → respuesta funcional.
Contexto
- La skill
/create-agentexiste en.claude/skills/create-agent/y ejecutacreate-full.shinternamente - Ya hay E2E tests para
assistant-botyasistente-2ene2e/tests/ - Los tests E2E usan Playwright contra Element Web + homeserver real
- No hay tests que validen el pipeline de creacion de agentes — solo se testean agentes ya existentes
- El agente de prueba tendra una personalidad exagerada y facilmente verificable (ej: habla como pirata, responde siempre con rimas, etc.) para que los assertions sean robustos
Arquitectura
agents/test-personality/ NEW — agente creado por /create-agent
agents/test-personality/agent.go NEW — reglas puras (llm-all)
agents/test-personality/config.yaml NEW — config con personalidad marcada
agents/test-personality/prompts/ NEW — system prompt con personalidad exagerada
cmd/launcher/main.go MOD — registro del agente en rulesRegistry
e2e/tests/test-personality.spec.ts NEW — tests E2E del agente
e2e/tests/create-agent-pipeline.spec.ts NEW — tests E2E del pipeline de creacion
Patron pure core / impure shell
pkg/— sin cambiosshell/— sin cambiosagents/test-personality/— composicion: agent.go puro (reglas) + config YAML + system prompttools/— sin cambiose2e/— tests Playwright (fuera del modulo Go)
Tareas
Fase 1: Crear agente de prueba con /create-agent
- 1.1 Ejecutar
/create-agent test-personality "Test Personality"con los siguientes inputs:agent-id:test-personalitydisplay-name:"Test Personality"description:"Agente de prueba con personalidad de pirata espacial para validar el pipeline de creacion"llm.provider:openai(default)llm.model:gpt-4o(default)tool_use:false- System prompt: personalidad de pirata espacial — siempre habla con jerga pirata mezclada con terminos de ciencia ficcion, usa emojis de calavera y cohetes, empieza cada respuesta con "¡Arrr, cosmonauta!" o variante, y termina con "¡Que la marea estelar te acompane!"
- 1.2 Verificar que
create-full.shcompleta las 4 etapas sin errores (scaffold, build, register, verify) - 1.3 Personalizar
agents/test-personality/prompts/system.mdcon la personalidad de pirata espacial (bien exagerada para que sea facilmente detectable en tests) - 1.4 Verificar compilacion:
go build -tags goolm ./... - 1.5 Arrancar el servidor y verificar que el agente responde en Matrix:
./dev-scripts/server/start.sh
Fase 2: E2E tests del agente
- 2.1 Crear
e2e/tests/test-personality.spec.tscon los siguientes tests:- Responde a saludo: enviar "Hola" → verificar que la respuesta contiene jerga pirata/espacial (keywords: "arrr", "cosmonauta", "estelar", "marea", o similares)
- Personalidad consistente: enviar pregunta seria ("Que es la gravedad?") → verificar que responde con contenido correcto pero manteniendo la personalidad (jerga pirata/espacial presente)
- !help funciona: enviar
!help→ verificar que lista comandos (built-in commands) - !ping funciona: enviar
!ping→ verificar respuesta - Sin errores de descifrado: verificar
assertNoDecryptionErrorsen cada test
- 2.2 Seguir el patron de los tests existentes (
assistant-bot.spec.ts) para fixtures, imports y estructura - 2.3 Ejecutar los tests y verificar que pasan:
./dev-scripts/e2e/run.sh test-personality
Fase 3: E2E test del pipeline de creacion (validacion estructural)
- 3.1 Crear
e2e/tests/create-agent-pipeline.spec.ts(o un test dentro detest-personality.spec.ts) que valide la estructura generada por el pipeline:- Verificar que
agents/test-personality/agent.goexiste y exportaRules() - Verificar que
agents/test-personality/config.yamltieneagent.id: test-personality - Verificar que
agents/test-personality/prompts/system.mdcontiene la seccion de seguridad obligatoria - Verificar que
cmd/launcher/main.gocontiene el import y la entrada enrulesRegistry
- Verificar que
- 3.2 Estos tests pueden ser scripts bash o tests de Node.js que lean los archivos — no requieren Playwright
Fase 4: Tests
- 4.1 Ejecutar suite E2E completa:
./dev-scripts/e2e/run.sh(todos los tests, incluyendo los nuevos) - 4.2 Verificar que los tests existentes de
assistant-botyasistente-2siguen pasando (no regresion) - 4.3 Verificar build completo:
go build -tags goolm ./...ygo test -tags goolm ./...
Fase 5: Cleanup y docs
- 5.1 Actualizar
CLAUDE.mdtabla de agentes contest-personality - 5.2 Documentar en
e2e/README.mdel nuevo spec y la estrategia de personalidad para tests
Ejemplo de uso
# 1. Crear el agente con la skill
> /create-agent test-personality "Test Personality"
(skill ejecuta create-full.sh, personaliza archivos)
# 2. Arrancar y probar manualmente
> ./dev-scripts/server/start.sh
> (en Matrix) Hola!
< ¡Arrr, cosmonauta! 🏴☠️🚀 Bienvenido a bordo de la nave...
¡Que la marea estelar te acompane!
# 3. Correr E2E
> ./dev-scripts/e2e/run.sh test-personality
✓ responde con personalidad de pirata espacial (15s)
✓ personalidad consistente en respuestas serias (18s)
✓ !help muestra comandos (3s)
✓ !ping responde (2s)
4 passed
Decisiones de diseno
- Pirata espacial como personalidad: es suficientemente exagerada para generar keywords detectables (arrr, cosmonauta, estelar, marea) pero no tan absurda como para que el LLM la ignore. Las assertions buscan presencia de al menos una keyword de un set, no matching exacto.
- Assertions flexibles para LLM: las respuestas LLM son no-deterministicas, asi que verificamos presencia de keywords del tema pirata/espacial, no texto exacto. Para
!helpy!pingsi usamos assertions estrictas (son comandos deterministicos). - Test de pipeline como script separado: la validacion estructural (archivos existen, config correcto) no necesita Playwright, asi que puede ser un test de Node.js simple o bash script. Esto lo hace mas rapido y mas facil de debuggear.
- Agente permanente: el agente de prueba se queda en el repo como agente real. Sirve como referencia de creacion y como target permanente para E2E tests del pipeline.
Prerequisitos
- E2E infrastructure funcionando (issue 0022 completado)
- Skill
/create-agentfuncionando (ya existe en.claude/skills/create-agent/) - Variables de entorno del homeserver configuradas (
MATRIX_ADMIN_TOKEN, etc.) - Element Web disponible para tests Playwright
Riesgos
- LLM no respeta personalidad: mitigacion — system prompt muy explicito y exagerado, keywords amplias (buscar cualquiera de un set, no todas)
- Rate limits del LLM: mitigacion — pocos tests con respuesta LLM (2-3), el resto son comandos directos
- create-full.sh falla por estado previo: mitigacion — verificar que no exista
agents/test-personality/antes de ejecutar, o limpiar si existe - Flakiness en E2E por timing: mitigacion — timeouts generosos (60s para LLM), reintentos en el pipeline de Playwright