Trabajar con grandes bases de código plantea un conjunto de desafíos distinto al de proyectos más pequeños. A partir de nuestra experiencia escalando la base de código de Cursor y de lo que hemos aprendido de clientes que gestionan bases de código masivas, encontramos algunos patrones útiles para manejar la creciente complejidad. En esta guía vamos a ver algunas de las técnicas que nos han resultado útiles para grandes bases de código.

Usa Chat para ponerte al día rápidamente con código que no conoces

Navegar por una codebase grande, especialmente si es nueva para ti, puede ser un reto. A menudo haces grep, buscas y haces clic por todos lados para encontrar las partes específicas de la codebase que necesitas. Con Chat, puedes empezar a hacer preguntas para encontrar lo que buscas y obtener una explicación detallada de cómo funciona. Aquí estamos pidiendo ayuda para encontrar detalles de implementación del indexado de la codebase en Cursor, e incluso algunos ejemplos para que sea más fácil de entender.

Escribe reglas para conocimiento específico del dominio

Si estuvieras incorporando a un nuevo colaborador a tu base de código, ¿qué contexto le darías para asegurarte de que pueda empezar a aportar de forma significativa? Tu respuesta a esta pregunta probablemente también sea información valiosa para que Cursor la entienda. En cada organización o proyecto hay conocimiento latente que puede no estar completamente plasmado en la documentación. Usar reglas de forma efectiva es la mejor manera de asegurarte de que Cursor tenga el panorama completo. Por ejemplo, si estás escribiendo instrucciones sobre cómo implementar una nueva funcionalidad o servicio, considera escribir una regla breve para documentarlo y que quede para la posteridad.
Boilerplate
---
description: Add a new VSCode frontend service
---

1. **Definición de la interfaz:**
   - Define una nueva interfaz de servicio usando `createDecorator` y asegúrate de incluir `_serviceBrand` 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 con el contexto:**
   - Actualiza el contexto para incluir el nuevo servicio y permitir su acceso en toda la aplicación.
Si hay patrones comunes de formato a los que quieres que Cursor se adhiera, considera adjuntar reglas automáticamente basadas en patrones glob.
Formatting
---
globs: *.ts
---
- Usa bun como gestor de paquetes. Revisa [package.json](mdc:backend/reddit-eval-tool/package.json) para ver los scripts
- Usa kebab-case para los nombres de archivos
- Usa camelCase para los nombres de funciones y variables
- Usa UPPERCASE_SNAKE_CASE para constantes hardcodeadas
- Prefiere `function foo()` en lugar de `const foo = () =>`
- Usa `Array<T>` en lugar de `T[]`
- Usa exports con nombre en lugar de exports por defecto, p. ej. (`export const variable ...`, `export function `)

Mantente cerca del proceso de creación del plan

Para cambios más grandes, dedicar más tiempo a pensar y a definir un plan preciso y bien acotado puede mejorar significativamente los resultados de Cursor. Si ves que no estás obteniendo el resultado que quieres después de varias variantes del mismo prompt, considera tomar distancia y crear un plan más detallado desde cero, como si estuvieras redactando un PRD para un colega. A menudo, la parte difícil es decidir qué cambio hay que hacer, una tarea que se le da bien a los humanos. Con las instrucciones adecuadas, podemos delegar algunas partes de la implementación a Cursor. Una forma de usar la IA para potenciar la creación del plan es usar Ask mode. Para crear un plan, activa Ask mode en Cursor y vuelca cualquier contexto que tengas de tus sistemas de gestión de proyectos, documentación interna o ideas sueltas. Piensa qué archivos y dependencias hay en la codebase que ya sabes que quieres incluir. Puede ser un archivo con piezas de código con las que quieras integrarte o incluso una carpeta completa. Aquí tienes un ejemplo de prompt:
Planning prompt
- create a plan for how we shoud create a new feature (just like @existingfeature.ts)
- ask me questions (max 3) if anything is unclear
- make sure to search the codebase

@Past Chats (my earlier exploration prompts)

here's some more context from [project management tool]:
[pasted ticket description]
Le estamos pidiendo al modelo que cree un plan y reúna contexto haciéndole preguntas a la persona, haciendo referencia a prompts de exploración anteriores y también a las descripciones de los tickets. Se recomienda usar un modelo de razonamiento como claude-3.7-sonnet, gemini-2.5-pro u o3, ya que pueden entender la intención del cambio y sintetizar mejor un plan. A partir de esto, puedes iterar el plan con la ayuda de Cursor antes de empezar la implementación.

Elige la herramienta adecuada para el trabajo

Una de las habilidades más importantes para usar Cursor de forma efectiva es elegir la herramienta correcta para el trabajo. Piensa en lo que intentas lograr y elige el enfoque que te mantenga en flow.
ToolUse caseStrengthLimitation
TabCambios rápidos y manualesControl total, muy rápidoUn solo archivo
Inline EditCambios acotados en un archivoEdiciones enfocadasUn solo archivo
ChatCambios grandes en varios archivosReúne contexto automáticamente, ediciones profundasMás lento, dependiente del contexto
Cada herramienta tiene su punto ideal:
  • Tab es tu opción para ediciones rápidas donde quieres estar al mando
  • Inline Edit brilla cuando necesitas hacer cambios enfocados en una sección específica del código
  • Chat es perfecto para esos cambios más grandes donde necesitas que Cursor entienda el contexto más amplio
Cuando uses el modo Chat (puede sentirse un poco más lento, pero es increíblemente potente), ayúdalo dándole buen contexto. Usa @files para señalar código similar que quieras emular, o @folder para darle un mejor entendimiento de la estructura de tu proyecto. Y no tengas miedo de dividir cambios grandes en partes más pequeñas: empezar chats nuevos ayuda a mantener todo enfocado y eficiente.

Conclusiones

  • Acota los cambios y no intentes abarcar demasiado a la vez
  • Incluye el contexto relevante cuando puedas
  • Usa Chat, Inline Edit y Tab para lo que mejor hacen
  • Crea chats nuevos con frecuencia
  • Planifica con Ask mode e implementa con Agent mode