El composer de Cursor es donde sucede la mayor parte del trabajo pesado de IA — edits multi-archivo, refactors, scaffolding de una nueva feature. También es donde el tecleo se cae más rápido. Los prompts que producen buenos edits son largos: contexto, restricciones, qué tocar, qué no tocar, por qué. Teclear 200 palabras a mitad de tarea es fricción.

Esta es una guía para usar voz con Cursor específicamente — composer, inline chat, ask mode — en Mac.

Por qué la voz encaja mejor con Cursor que con otras herramientas IA

Cursor usa tu prompt para decidir qué archivos cargar al contexto. Cuanto más largo y específico, mejor su selección de archivos. Un prompt tecleado de dos líneas da una ventana de contexto de dos archivos. Un párrafo hablado con paths, comportamientos y restricciones da los diez archivos correctos.

La otra razón: los prompts del composer son operaciones batch. Describes una unidad de trabajo, no tienes una conversación. Las batches favorecen contexto front-loaded. La voz lo hace naturalmente — empiezas con la situación, llegas al request, terminas con restricciones. Esa es la forma que Cursor quiere.

Cómo se ve un buen prompt de Cursor hablado

Tecleado (43 palabras):

Refactoriza el AuthGuard para usar el nuevo sistema de permisos. Ahora verifica roles directamente lo que no escalará.

Hablado (180 palabras):

El componente AuthGuard en src/components/auth/AuthGuard.tsx verifica roles de usuario directamente vía user.role equals admin o user.role equals editor. Acabamos de lanzar un nuevo sistema de permisos en src/lib/permissions.ts que expone hasPermission y useHasPermission. Quiero refactorizar AuthGuard para que acepte un permission como prop en vez de comprobar roles. Mira cómo el nuevo sistema se usa en src/components/admin/UserList.tsx para el patrón. Mantén la API existente compatible permitiendo prop roles o permission — si pasan ambos, prefiere permission. Actualiza los tres callsites en src/pages que usan AuthGuard con roles para que usen permission. No toques el panel admin legacy en src/pages/admin-legacy — se borrará el próximo sprint y no vale migrar.

Cursor maneja el segundo en una pasada. Con el primero, te devuelve un diff que hace algo mal en tres archivos y se salta los callsites.

La diferencia no es inteligencia tuya — es si la fricción de teclear te obligó a comprimir.

Configurar voz para Cursor en Mac

Cursor es Electron, así que cualquier cosa que pegue texto al cursor funciona. Tres opciones:

Dictado integrado de Apple

Gratis, on-device en macOS Tahoe. Actívalo en Ajustes > Teclado > Dictado. Pulsa atajo, habla, púlsalo otra vez. Funciona en cualquier panel de Cursor.

Donde lucha: vocabulario técnico. Paths, nombres de variable, librería, comandos CLI — Apple los destroza. "src slash components slash auth guard dot tsx" se convierte en algo inusable. Bien para lenguaje natural, doloroso para prompts code-heavy.

Wispr Flow, Superwhisper u otras apps de dictado

Estas corren el reconocimiento con mejor manejo de vocabulario técnico. Pegan al cursor como Apple Dictation pero con limpieza, mejor precisión y (según app) cloud o local.

Vext con YOLO Mode

Vext es la opción que hacemos. $49 una vez, corre Parakeet localmente en Apple Silicon y tiene una feature específica para herramientas IA: YOLO Mode auto-envía el prompt tras pegar. Hablas, sueltas la hotkey y el composer ya está corriendo.

Setup de Vext para Cursor:

  1. Instala: brew install muvon/tap/vext
  2. Concede permiso de Accesibilidad
  3. Abre Settings > Modes, activa Enhance para dictado (limpieza)
  4. Activa YOLO Mode si quieres auto-envío
  5. Abre Cursor, clic en el panel composer, mantén la hotkey, habla

El paso de Enhance importa más de lo que crees. La transcripción cruda da al composer entrada desordenada que cuesta tokens y confunde la selección de archivos. La entrada limpia ("el problema es..." en vez de "o sea el problema es como uh...") transmite el mismo intent con menos ruido.

Dónde usar voz en Cursor

Prompts del composer — mayor payoff. Edits multi-archivo donde describes situación, cambio y restricciones.

Inline chat (Cmd+K) — funciona para prompts medianos. "Convierte esta función a async/await, manten la forma del error handling" lee natural hablado.

Ask mode — bueno para preguntas exploratorias. "¿Por qué se re-renderiza este componente cada vez que el usuario teclea? Traza por los props y mira los context providers de los que depende."

Tab autocomplete — no te molestes. El flujo es demasiado rápido para que la voz ayude.

Panel de chat para follow-ups — voz para respuestas sustanciales ("mira la implementación en fooService.ts y explica por qué cogemos el error de validación allí"), teclea las cortas ("sí", "intenta otra vez", "otro enfoque").

Flujos que cambian con voz

El prompt de arranque en frío

El primer mensaje en una sesión de Cursor es el más high-leverage. Cursor lo usa para sembrar contexto. Con tecleo comprimes. Con voz front-loadas:

Construyo la página de billing settings. Usamos TanStack Query para fetching, Zustand para client state, y el design system en src/ui. El flujo del Stripe customer portal hay que embeber — hay un stripeService.ts con createPortalSession pero nada cableado al frontend. Quiero una página billing en app/settings/billing que muestre el plan actual, tenga botón para abrir el portal Stripe en pestaña nueva, y muestre fecha y monto de la próxima factura. Usa los card components del design system. No añadas dependencias nuevas.

Eso da a Cursor suficiente para scaffoldear toda la página en una pasada.

Bug reports a la IA

Los bugs son narrativos — pasaron en secuencia. Hablar la línea de tiempo es más rápido y preciso que teclearla:

La feature autosave del editor a veces guarda contenido stale. Reproducirlo es duro pero creo que lo tengo. Cuando el usuario teclea rápido y la petición de red es lenta, el optimistic update pone el local state al contenido nuevo, pero si la respuesta de un save previo vuelve después del nuevo, sobreescribe local state con el viejo. La race está en el hook useAutoSave en src/hooks/useAutoSave.ts. Mira el orden de requests y arréglalo. Usa un número de secuencia incremental para que respuestas fuera de orden se descarten.

Code review en PR de compañero

Abre la vista de diff de Cursor, dicta comentarios por el composer con "deja un comentario que diga..." — mucho más rápido que teclear feedback. Especialmente bueno cuando quieres articular razonamiento, no solo señalar líneas.

Preguntas comunes

¿Cursor tiene voz integrada?

No realmente. No hay dictado nativo en Cursor — te apoyas en macOS o tercero. Cursor es solo una superficie Electron desde el punto de vista de las herramientas de voz, lo que conviene porque cualquier cosa que escriba en una app Mac escribe en Cursor.

¿No se confunde la IA con frases habladas?

GPT-4o y Claude Sonnet manejan habla conversacional sin problema. Muletillas y reinicios llevan en data de entrenamiento siempre. El riesgo no es comprensión — es tokens desperdiciados. Eso lo soluciona la limpieza tipo Enhance de Vext.

¿Debería dictar código?

No. Dicta lo natural — contexto, intent, restricciones. Cuando necesites incluir código real, pégalo. La voz es para lo que tarda más en teclear que en pensar.

El trade-off honesto

El dictado a nivel sistema cuesta algo — dinero, una descarga de modelo, permiso de accesibilidad, la primera semana incómoda de hablarle al ordenador. Wispr Flow son $15/mes multiplataforma. Vext son $49 una vez y solo local en Apple Silicon. Apple Dictation es gratis pero limitado.

Si vives en Cursor — es decir, escribes más prompts que emails — una herramienta de dictado de pago se paga sola en un par de semanas de tecleo ahorrado. Si solo usas Cursor ocasionalmente, Apple Dictation basta.

Sea como sea, el unlock es el mismo: los prompts se alargan porque hablar es más fácil que teclear, y Cursor responde mejor a prompts largos. La limpieza es gravy.