ooligo
cursor-rule

Cursor rules para trabajo de RevOps engineering

Dificultad
principiante
Tiempo de setup
10min
Para
gtm-engineer · revops
RevOps

Stack

Un archivo .cursorrules de Cursor afinado para el ingeniero de RevOps (o la persona adyacente a GTM-engineering) que despacha SOQL, Apex, código custom de HubSpot, flows de n8n y modelos dbt contra data de revenue. El artefacto es un archivo — apps/web/public/artifacts/cursor-rules-revops-engineer/.cursorrules — que colocas en el directorio .cursor/rules/ de tu proyecto y dejas de relitigar “¿esto debería estar bulkificado?” o “¿necesitamos un test de dbt en este modelo?” con el asistente de IA por el resto del trimestre.

La propiedad definitoria del código de RevOps es que toca los números de pipeline que el CRO va a reportar en el siguiente earnings call. Una escritura duplicada a escala, una clave de dedupe que falta o un bug de stage-progression no solo rompen un script — rompen el forecast. Las rules en este bundle codifican bulkificación, idempotencia, checks explícitos de límites y escrituras conservadoras para que las sugerencias de Cursor reflejen el blast radius real de un error de RevOps.

Cuándo usar esto

Eres un ingeniero de RevOps, ingeniero de GTM o manager de RevOps que escribe código de integración (Python, TypeScript, Apex, flows de n8n, modelos dbt) contra Salesforce o HubSpot. Tu equipo despacha al menos algunos cambios por mes que tocan data de pipeline. Cursor es tu IDE.

Cuándo NO usar esto

  • No estás corriendo una práctica de engineering en RevOps — tu “automatización” son workflows construidos por admins en la UI del CRM, no código en un repo. Las rules asumen code reviews, control de versiones y un pipeline de despliegue; no van a ayudar a una org de solo configuración.
  • Eres un SI externo construyendo soluciones de Salesforce para clientes. Las rules están afinadas para el operador in-house que vive con las consecuencias por años; la economía del consultor es distinta (alcance de entregable, documentación de handoff, modelo de soporte post-engagement).
  • Estás despachando una feature de marketing-attribution en tu producto. Las rules son para ops engineering dentro de la empresa que usa un CRM, no para equipos de engineering que construyen productos adyacentes a CRM.

Setup

  1. Copia el artefacto. Toma .cursorrules del bundle de arriba (o descarga el zip) y colócalo en el directorio .cursor/rules/ de tu proyecto. El indicador de Project Rules de Cursor confirma que está cargado.
  2. Recorta las secciones de herramientas. El archivo se despacha con secciones para Salesforce (SOQL/Apex), código custom de HubSpot, n8n y dbt. Borra las secciones que no usas — dejar guidance que el modelo tiene que sopesar contra contexto irrelevante diluye la señal.
  3. Configura la política de secrets. Las rules prohíben credenciales hardcodeadas y dirigen al modelo hacia tu secret manager. Edita la sección “Secrets and access” para que el modelo sugiera el call correcto (1Password CLI, Doppler, AWS Secrets Manager, Vault — elige uno).
  4. Fija el destino de auditoría. Varias rules requieren una referencia de objeto de auditoría (Cleanup_Audit__c es el placeholder por defecto). Edita al objeto de auditoría real de tu equipo, o las sugerencias van a referenciar un nombre que no existe en tu org.
  5. Prueba con una tarea representativa. Pídele a Cursor: “escribe un trigger de Apex que actualice el Last_Activity_Date__c de la opportunity cuando una task relacionada se cierre.” El output debería estar bulkificado, incluir un check de Limits.getQueries(), despachar con una test class y no contener Apex anónimo. Si no, las rules no están cargadas — revisa el indicador de Project Rules de Cursor.

Qué hacen las rules en realidad

El bundle está estructurado como cinco capas, aplicadas a cada prompt de Cursor:

  1. Un preámbulo “antes de escribir código, pregunta”. Cinco preguntas que el modelo saca a la luz antes de generar: cuál sistema es la fuente de verdad, cuál es el volumen de data, qué significa una falla para revenue reporting, ¿es one-off o recurrente?, quién lee el audit trail. Las preguntas suenan obvias. No se hacen lo suficiente.
  2. Guidance específico por herramienta para SOQL/Apex (governor limits, patrones bulk, WITH SECURITY_ENFORCED), código custom de HubSpot (SDK v4, circuit breaker de cuota diaria, timeout de 20 segundos), n8n (executionOrder, timezone, IF-vs-Code-node), dbt (tests unique, ref(), estrategia incremental, source freshness) y secrets (named credentials, tokens de Private App, acceso con scope). Cada subsección cita límites reales y versiones actuales del SDK.
  3. Defaults a hacer cumplir en bulkificación, idempotencia, límites/circuit-breakers, observabilidad y secrets. Cada default tiene un valor concreto: los batches bulk por defecto son 25 records, la cuota diaria de HubSpot se detiene al 80% consumido, los flows de n8n cap a 1000 items por ejecución.
  4. Anti-patrones a rechazar. Patrones específicos que el modelo rechaza: Apex anónimo contra producción, loops de HubSpot sin circuit breakers, nodos IF de n8n con 5+ condiciones, modelos dbt sin tests unique, escrituras directas a producción desde notebooks.
  5. Una sección “cuando el usuario está equivocado”. Los atajos a los que recurren los ingenieros bajo presión de deadline y contra los que el modelo empuja en lugar de ejecutar. La rule que más ahorra costo: rechazar bypass de una validation rule de Salesforce para un import, porque el bypass produce records que los reportes downstream no pueden agregar, saliendo a la luz como una varianza de forecast que el CRO tiene que explicar.

Realidad de costos

  • Costo en tokens: cero. Las Cursor rules son contexto local que se envía en cada prompt — sin cargo de API por request más allá de los ~5 KB que ocupan en la ventana de contexto.
  • Tiempo de setup: ~10 minutos para colocar el archivo, configurar el secret manager, apuntar el objeto de auditoría a un nombre real en tu org.
  • Overhead por tarea: el preámbulo suma 1-2 turnos de diálogo antes de generar. Para un script de 3 líneas, esto es pesado. Para una tarea real de integración, saca a la luz decisiones que de lo contrario emergerían en code review o en un walkthrough de SOX.
  • Mantenimiento: ~30 minutos por trimestre. Las versiones del SDK se desfasan (v3 → v4 en HubSpot ya; v4 → v5 va a pasar). Los governor limits de Salesforce son estables entre releases pero vale la pena confirmarlos en un refresh de Trailhead por release mayor.

Cómo se ve el éxito

  • Las varianzas de forecast atadas a bugs de calidad de data caen. Los patrones bulk y las escrituras idempotentes previenen la clase de bug de duplicate-row que silenciosamente infla el pipeline.
  • El code review se enfoca en lógica, no en “¿lo bulkificaste?”. Las rules sugieren el patrón bulk inline; los reviewers dejan de cazar su ausencia.
  • Los walkthroughs de SOX sacan a la luz el audit trail sin involucrar al ingeniero. Cada escritura produce un row en Cleanup_Audit__c (o el equivalente de tu equipo) con (timestamp, user, object, record_id, field, old_value, new_value) — el auditor puede responder sus preguntas desde el objeto de auditoría, no desde un thread de Slack con el ingeniero.
  • La sesión de debugging “esto solía funcionar” sobre un SDK deprecado no pasa. Las rules con tag de versión aseguran que el modelo use endpoints actuales; el código deprecado nunca entra al repo.

Versus las alternativas

  • Sin rules (status quo). Cursor genera Apex plausible que falla en tests de carga de 200 records. La primera vez que el script bulk silenciosamente trunque y el forecast esté off por $400K, la ausencia de rules se convierte en el cuello de botella.
  • Un doc de convenciones de codeo del equipo en Notion. Funcionalmente equivalente a no tener rules — el doc no se carga al contexto de la IA. El archivo de Cursor rules es el doc de convenciones que sí se carga en cada prompt.
  • Un linter/analizador estático (PMD para Apex, dbt-checkpoint para dbt). Atrapa patrones después de que el código está escrito. Coexisten con las Cursor rules; las rules previenen que el código se escriba en primer lugar, el linter atrapa los casos que se cuelan.

Watch-outs

  • Rule drift. Los equipos agregan rules y nunca las quitan. El archivo se convierte en un museo de guidance “así lo hacíamos antes” que el modelo todavía intenta aplicar. Guard: revisión trimestral con git blame — cualquier cosa más vieja que 18 meses se rejustifica o se borra.
  • Rules en conflicto. Cursor aplica todas las rules que coinciden; las directivas en conflicto producen output confuso. Cap duro del archivo en ~300 líneas. Guard: cuando agregues una rule, busca rules existentes en la misma superficie; consolida en lugar de añadir.
  • Churn de versiones de herramientas. “Usa el SDK v4 de HubSpot” se vuelve incorrecto cuando despacha v5. Guard: etiqueta con versión cada rule que mencione una versión de SDK (e.g. # HubSpot SDK v4 (verified 2026-Q2)) para que el siguiente reviewer sepa cuándo rechequear.
  • Overrides por repo. Una rule que es correcta en tu repo de forecasting puede ser incorrecta en tu repo de lead-routing (e.g. defaults de write-vs-read). Usa el soporte de rules por directorio de Cursor; documenta la divergencia en el README del repo. Guard: prefiere un archivo de rules compartido con excepciones documentadas a forkear el archivo.
  • Las rules no reemplazan QA en cambios de data de producción. Moldean lo que Cursor sugiere. No corren en CI, no validan la data que el script va a tocar, y no constituyen un control de SOX. Guard: mantén tests de dbt, validation rules y code review como capas separadas de enforcement.

Stack

  • Cursor — IDE y motor de rules
  • .cursor/rules/revops-engineer.md — versionado en el repo, code-revisado
  • Secret manager preferido — referenciado desde las rules, nunca inlineado
  • Objeto de auditoríaCleanup_Audit__c u objeto custom equivalente, nombrado explícitamente para que las sugerencias apunten al nombre real

Archivos de este artefacto

Descargar todo (.zip)