Trabajar con bases de código grandes introduce un nuevo conjunto de desafíos comparado con trabajar en proyectos más pequeños. Basándonos tanto en nuestra experiencia escalando la propia base de código de Cursor como en las perspectivas de clientes que gestionan bases de código masivas, hemos descubierto algunos patrones útiles para manejar la complejidad aumentada. En esta guía, repasaremos algunas de estas técnicas que hemos encontrado útiles para bases de código grandes.

Usa Chat para ponerte al día rápidamente con código desconocido

Navegar por una base de código grande, especialmente si es nueva para ti, puede ser desafiante. A menudo usas grep, buscas y haces clic por todas partes para encontrar las partes específicas de la base de código que estás buscando. Con Chat, puedes comenzar a hacer preguntas para encontrar lo que buscas y obtener una explicación detallada de cómo funciona. Aquí estamos obteniendo ayuda para encontrar detalles de implementación de la indexación de la base de código en Cursor, e incluso pidiendo algunos ejemplos para que sea más fácil de entender.
Para darle a Cursor una comprensión mejorada de la estructura de tu base de código, asegúrate de habilitar Include Project Structure desde Settings para un mejor rendimiento.

Escribir reglas para conocimiento específico del dominio

Si estuvieras incorporando a un nuevo colaborador en tu base de código, ¿qué contexto le darías para asegurar que pueda comenzar a hacer contribuciones significativas? Tu respuesta a esta pregunta probablemente también sea información valiosa para que Cursor la entienda. Para cada organización o proyecto, hay conocimiento latente que podría no estar completamente capturado en tu documentación. Usar reglas de manera efectiva es la mejor forma de asegurar que Cursor obtenga el panorama completo. Por ejemplo, si estás escribiendo instrucciones sobre cómo implementar una nueva característica o servicio, considera escribir una regla corta para documentarla para la posteridad.
Boilerplate
---
description: Agregar un nuevo servicio frontend de VSCode
---

1. **Definición de Interfaz:**
   - Define una nueva interfaz de servicio usando `createDecorator` y asegúrate de que `_serviceBrand` esté incluido para evitar errores.

2. **Implementación del Servicio:**
   - Implementa el servicio en un nuevo archivo TypeScript, extendiendo `Disposable`, y regístralo como singleton con `registerSingleton`.

3. **Contribución del Servicio:**
   - Crea un archivo de contribución para importar y cargar el servicio, y regístralo en el punto de entrada principal.

4. **Integración de Contexto:**
   - Actualiza el contexto para incluir el nuevo servicio, permitiendo acceso a través de toda la aplicación.
Si hay patrones de formato comunes que quieres asegurar que Cursor siga, considera auto-adjuntar reglas basadas en patrones glob.
Formatting
---
globs: *.ts
---
- Usa bun como gestor de paquetes. Ver [package.json](mdc:backend/reddit-eval-tool/package.json) para scripts
- Usa kebab-case para nombres de archivos
- Usa camelCase para nombres de funciones y variables
- Usa UPPERCASE_SNAKE_CASE para constantes hardcodeadas
- Prefiere `function foo()` sobre `const foo = () =>`
- Usa `Array<T>` en lugar de `T[]`
- Usa exportaciones nombradas sobre exportaciones por defecto, ej (`export const variable ...`, `export function `)

Mantente cerca del proceso de creación de planes

Para cambios más grandes, dedicar una cantidad de reflexión superior al promedio para crear un plan preciso y bien delimitado puede mejorar significativamente la salida de Cursor. Si encuentras que no estás obteniendo el resultado que deseas después de algunas variaciones diferentes del mismo prompt, considera alejarte y crear un plan más detallado desde cero, como si estuvieras creando un PRD para un compañero de trabajo. A menudo la parte difícil es descubrir qué cambio debe hacerse, una tarea que se adapta bien a los humanos. Con las instrucciones correctas, podemos delegar algunas partes de la implementación a Cursor. Una forma de usar IA para aumentar el proceso de creación de planes es usar el modo Ask. Para crear un plan, activa el modo Ask en Cursor y vuelca cualquier contexto que tengas de tus sistemas de gestión de proyectos, documentos internos o pensamientos sueltos. Piensa en qué archivos y dependencias tienes en la base de código que ya sabes que quieres incluir. Esto puede ser un archivo que incluye piezas de código con las que quieres integrar, o tal vez una carpeta completa. Aquí tienes un ejemplo de prompt:
Planning prompt
- crear un plan para cómo deberíamos crear una nueva característica (justo como @existingfeature.ts)
- hazme preguntas (máximo 3) si algo no está claro
- asegúrate de buscar en la base de código

@Past Chats (mis prompts de exploración anteriores)

aquí hay más contexto de [herramienta de gestión de proyectos]:
[descripción del ticket pegada]
Estamos pidiendo al modelo que cree un plan y recopile contexto haciendo preguntas al humano, referenciando cualquier prompt de exploración anterior y también las descripciones de tickets. Se recomienda usar un modelo de pensamiento como claude-3.7-sonnet, gemini-2.5-pro, o o3 ya que pueden entender la intención del cambio y sintetizar mejor un plan. A partir de esto, puedes formular iterativamente el plan con la ayuda de Cursor antes de comenzar la implementación.

Elige la herramienta adecuada para el trabajo

Una de las habilidades más importantes para usar Cursor de manera efectiva es elegir la herramienta adecuada para el trabajo. Piensa en lo que estás tratando de lograr y elige el enfoque que te mantenga en flujo.
HerramientaCaso de usoFortalezaLimitación
TabCambios rápidos y manualesControl total, rápidoUn solo archivo
Inline EditCambios específicos en un archivoEdiciones enfocadasUn solo archivo
ChatCambios más grandes, multi-archivoAuto-recopila contexto, ediciones profundasMás lento, requiere mucho contexto
Cada herramienta tiene su punto óptimo:
  • Tab es tu opción principal para ediciones rápidas donde quieres tener el control
  • Inline Edit brilla cuando necesitas hacer cambios enfocados a una sección específica de código
  • Chat es perfecto para esos cambios más grandes donde necesitas que Cursor entienda el contexto más amplio
Cuando estés usando el modo Chat (que puede sentirse un poco más lento pero es increíblemente poderoso), ayúdalo a ayudarte proporcionando buen contexto. Usa @files para señalar código similar que quieres emular, o @folder para darle una mejor comprensión de la estructura de tu proyecto. Y no tengas miedo de dividir cambios más grandes en fragmentos más pequeños - comenzar chats nuevos ayuda a mantener las cosas enfocadas y eficientes.

Conclusiones clave

  • Limita el alcance de los cambios y no trates de hacer demasiado a la vez
  • Incluye contexto relevante cuando puedas
  • Usa Chat, Inline Edit y Tab para lo que mejor hacen
  • Crea nuevos chats con frecuencia
  • Planifica con modo Ask, implementa con modo Agent