Por qué el camino del correo necesita una revisión real
El agente de Cursor es bueno con el código en torno a la autenticación: formularios, rutas, manejo de tokens y plantillas de correo. Pero un cambio puede pasar todas las pruebas y aun así enviar un correo que enlaza a localhost, que nunca llega porque el remitente no está configurado o que contiene un código que caduca antes de que alguien pueda escribirlo. Eso solo se ve cuando un correo real llega a una bandeja de entrada real.
¿Qué inicio de sesión creará?
El que pidas, o el que tu código ya use. Supabase Auth, Clerk, Firebase Authentication, Auth.js y Better Auth envían correos distintos: Clerk envía un código por defecto, Firebase un enlace y Auth.js solo magic links a menos que construyas el resto. Indica los métodos que quieres en tu prompt o regla de proyecto y luego prueba cada correo que envía el cambio del agente. Qué correos envía cada servicio de inicio de sesión.
Revísalo después de cada cambio de autenticación
- Ejecuta la app localmente o abre el despliegue de vista previa de tu rama.
- Crea una dirección en Proxy Mail QA, una por escenario: usuario nuevo, usuario invitado, restablecimiento de contraseña.
- Recorre el flujo que tocó el cambio, usando el código o enlace de la fila de la dirección.
- Lee el correo completo una vez en la vista de la bandeja de entrada: remitente, asunto, redacción y cada enlace.
- Anota lo que encontraste en la dirección, para que quede con la cuenta de prueba.
Los enlaces a localhost en un despliegue de vista previa o de staging se marcan en la fila. Así se corrigen en Supabase, Firebase, Auth.js y otros stacks.
Deja que el agente de Cursor revise el correo por sí mismo
Añade Proxy Mail QA desde el Cursor Directory: Add to Cursor instala el MCP server y una skill que guía al agente en una prueba de registro. Luego inicia sesión desde la sección MCP de la configuración de Cursor: inicias sesión en Proxy Mail QA en tu navegador y eliges un proyecto, sin ninguna clave de API que copiar.
Luego pídelo con palabras sencillas: “Regístrate en localhost:3000 con una nueva dirección de Proxy Mail QA y confirma el correo”. El agente crea la dirección, completa tu formulario, espera el código o enlace y termina el registro. Para usar una clave de API en .cursor/mcp.json, consulta la configuración de MCP server.
Prompts para copiar y pegar en Cursor
List every email this app sends: sign-up confirmation, magic link, password reset, invite and email change. For each, show where it's triggered in the code, which service sends it, how its link URL is built, and how long its code or link is valid. Flag hard-coded localhost URLs.Build every link in auth emails from an environment variable for the app's public URL, with localhost only as the development default. Add the variable to .env.example and the deployment settings.The email says the code is valid for 10 minutes. Make the server enforce the same expiry, and make requesting a new code invalidate the old one.Una regla de proyecto que evita los errores habituales
Guarda esto como regla de proyecto (por ejemplo .cursor/rules/auth-emails.mdc) para que el agente la siga siempre que toque la autenticación:
When changing sign-up, login, password reset, invites or any email-sending code:- Build links from the app's public URL setting, never a hard-coded localhost.- Keep the expiry stated in an email equal to the one the server enforces.- Make single-use links and codes stop working once used or replaced.- Tell me which emails to test by hand after the change.