ooligo
cursor-rule

Cursor rules para trabalho de engenharia de RevOps

Dificuldade
iniciante
Tempo de setup
10min
Para
gtm-engineer · revops
RevOps

Stack

Um arquivo .cursorrules do Cursor afinado para o engenheiro de RevOps (ou pessoa GTM-engineering-adjacente) embarcando SOQL, Apex, código custom de HubSpot, flows de n8n, e modelos dbt contra dados de revenue. O artefato é um arquivo — apps/web/public/artifacts/cursor-rules-revops-engineer/.cursorrules — que você solta no diretório .cursor/rules/ do seu projeto e para de relitigar “isso deveria ser bulkificado” ou “precisamos de um teste dbt nesse modelo” com o AI assistant pelo resto do trimestre.

A propriedade definidora do código de RevOps é que ele toca os números de pipeline que o CRO vai reportar na próxima earnings call. Um write duplicado em escala, uma dedupe key faltando, ou um bug de progressão de stage não só quebra um script — quebra o forecast. As rules nesse bundle codificam bulkificação, idempotência, checks explícitos de limits, e writes conservadores para que as sugestões do Cursor reflitam o blast radius real de um erro de RevOps.

Quando usar isso

Você é um engenheiro de RevOps, engenheiro de GTM, ou RevOps manager que escreve código de integração (Python, TypeScript, Apex, flows de n8n, modelos dbt) contra Salesforce ou HubSpot. Seu time embarca pelo menos algumas mudanças por mês que tocam dados de pipeline. O Cursor é seu IDE.

Quando NÃO usar isso

  • Você não está rodando uma prática de engenharia em RevOps — sua “automação” são workflows admin-built na UI do CRM, não código num repo. As rules assumem code reviews, version control, e um pipeline de deploy; não ajudam uma org config-only.
  • Você é um SI externo construindo soluções Salesforce para clientes. As rules são afinadas para o operador in-house que vive com as consequências por anos; a economia de consultor é diferente (scope do deliverable, documentação de handoff, modelo de suporte pós-engagement).
  • Você está embarcando uma feature de marketing-attribution no seu produto. As rules são para engenharia de ops dentro da empresa que usa um CRM, não para times de engenharia construindo produtos CRM-adjacentes.

Setup

  1. Copie o artefato. Pegue .cursorrules do bundle acima (ou baixe o zip) e solte no diretório .cursor/rules/ do seu projeto. O indicador de Project Rules do Cursor confirma que está carregado.
  2. Apare as seções de tool. O arquivo embarca com seções para Salesforce (SOQL/Apex), código custom de HubSpot, n8n, e dbt. Delete as seções que você não usa — deixar orientação que o modelo tem que pesar contra contexto irrelevante dilui o sinal.
  3. Defina a política de secrets. As rules banem credenciais hard-coded e direcionam o modelo para o seu secret manager. Edite a seção “Secrets and access” para que o modelo sugira a chamada certa (1Password CLI, Doppler, AWS Secrets Manager, Vault — escolha um).
  4. Fixe o destino de auditoria. Várias rules requerem uma referência de objeto de auditoria (Cleanup_Audit__c é o placeholder default). Edite para o objeto de auditoria real do seu time, ou as sugestões vão referenciar um nome que não existe na sua org.
  5. Teste numa tarefa representativa. Peça pro Cursor: “escreva um Apex trigger que atualiza o Last_Activity_Date__c da opportunity sempre que uma task relacionada é fechada.” O output deve ser bulkificado, incluir um check de Limits.getQueries(), embarcar com uma test class, e não conter Apex anônimo. Se não, as rules não estão carregadas — verifique o indicador de Project Rules do Cursor.

O que as rules realmente fazem

O bundle é estruturado em cinco camadas, aplicadas a todo prompt do Cursor:

  1. Um preâmbulo “antes de escrever código, pergunte.” Cinco perguntas que o modelo superficializa antes de gerar: qual sistema é a fonte de verdade, qual é o volume de dados, o que falha significa para reporting de revenue, isso é one-off ou recorrente, quem lê o audit trail. As perguntas soam óbvias. Não são feitas com frequência suficiente.
  2. Orientação tool-specific para SOQL/Apex (governor limits, padrões bulk, WITH SECURITY_ENFORCED), código custom de HubSpot (SDK v4, circuit breaker de quota diária, timeout de 20 segundos), n8n (executionOrder, timezone, IF-vs-Code-node), dbt (testes de unique, ref(), estratégia incremental, source freshness), e secrets (named credentials, tokens de Private App, acesso escopado). Cada subseção cita limits reais e versões correntes de SDK.
  3. Defaults para enforçar através de bulkificação, idempotência, limits/circuit-breakers, observability, e secrets. Cada default tem um valor concreto: bulk batches default em 25 registros, quota diária de HubSpot para em 80% consumida, flows de n8n cap em 1000 itens por execução.
  4. Anti-patterns para recusar. Padrões específicos que o modelo rejeita: Apex anônimo contra produção, loops de HubSpot sem circuit breakers, IF nodes de n8n com 5+ condições, modelos dbt sem testes de unique, writes diretos para produção a partir de notebooks.
  5. Uma seção “quando o usuário está errado”. Os atalhos que os engenheiros buscam sob pressão de deadline e que o modelo empurra de volta em vez de executar. A rule single mais cost-saving: recusar bypassar uma validation rule do Salesforce para um import, porque o bypass produz registros que reports downstream não conseguem agregar, superficializando como uma variance de forecast que o CRO tem que explicar.

Realidade de custo

  • Custo de tokens: zero. Cursor rules são contexto local enviado em cada prompt — sem cobrança per-request de API além dos ~5 KB que ocupam na janela de contexto.
  • Tempo de setup: ~10 minutos para soltar o arquivo, definir o secret manager, apontar o objeto de auditoria para um nome real na sua org.
  • Overhead per-task: o preâmbulo adiciona 1-2 turnos de diálogo antes da geração. Para um script de 3 linhas, é pesado. Para uma tarefa de integração real, superficializa decisões que de outra forma emergiriam em code review ou num walkthrough de SOX.
  • Manutenção: ~30 minutos por trimestre. Versões de SDK derivam (v3 → v4 no HubSpot já; v4 → v5 vai acontecer). Governor limits do Salesforce são estáveis entre releases mas vale confirmar num refresher do Trailhead por release maior.

Como o sucesso se parece

  • Variances de forecast ligadas a bugs de qualidade de dados caem. Padrões bulk e writes idempotentes previnem a classe de bug de linha duplicada que silenciosamente infla o pipeline.
  • Code review foca em lógica, não em “você bulkificou?”. As rules sugerem o padrão bulk inline; reviewers param de pegar a ausência dele.
  • Walkthroughs de SOX superficializam o audit trail sem envolvimento do engenheiro. Todo write produz uma linha no Cleanup_Audit__c (ou o equivalente do seu time) com (timestamp, user, object, record_id, field, old_value, new_value) — o auditor consegue responder as perguntas dele do objeto de auditoria, não de uma thread do Slack com o engenheiro.
  • A sessão de debug “isso funcionava” sobre um SDK depreciado não acontece. Rules version-tagged garantem que o modelo usa endpoints correntes; o código depreciado nunca entra no repo.

Versus as alternativas

  • Sem rules de jeito nenhum (status quo). O Cursor gera Apex plausível que falha em testes de carga de 200 registros. A primeira vez que o script bulk silenciosamente trunca e o forecast está off por $400K, a ausência de rules vira o gargalo.
  • Um doc de convenções de código do time no Notion. Funcionalmente equivalente a sem rules — o doc não é carregado no contexto do AI. O arquivo de Cursor rules é o doc de convenções que é carregado em todo prompt.
  • Um linter/analyzer estático (PMD para Apex, dbt-checkpoint para dbt). Pega padrões depois do código estar escrito. Coexiste com as Cursor rules; as rules previnem o código de ser escrito primeiro, o linter pega os casos que escapam.

Pontos de atenção

  • Drift de rule. Times adicionam rules e nunca removem. O arquivo vira um museu de orientação “a gente fazia desse jeito” que o modelo ainda tenta aplicar. Guard: revisão trimestral com git blame — qualquer coisa mais antiga que 18 meses é re-justificada ou deletada.
  • Rules conflitantes. O Cursor aplica todas as rules matching; diretivas conflitantes produzem output confuso. Cap duro do arquivo em ~300 linhas. Guard: ao adicionar uma rule, busque rules existentes na mesma superfície; consolide em vez de anexar.
  • Churn de versão de tool. “Use o HubSpot SDK v4” vira errado quando v5 sai. Guard: version-tag toda rule que menciona uma versão de SDK (ex. # HubSpot SDK v4 (verificado 2026-Q2)) para que o próximo reviewer saiba quando rechecar.
  • Overrides per-repo. Uma rule que está certa no seu repo de forecasting pode estar errada no seu repo de lead-routing (ex. defaults write-vs-read). Use o suporte de rule per-diretório do Cursor; documente a divergência no README do repo. Guard: prefira um arquivo único de rules compartilhado com exceções documentadas em vez de forkar o arquivo.
  • Rules não substituem QA em mudanças de dados de produção. Elas moldam o que o Cursor sugere. Não rodam em CI, não validam os dados que o script vai tocar, e não constituem um controle de SOX. Guard: mantenha testes dbt, validation rules, e code review como camadas separadas de enforcement.

Stack

  • Cursor — IDE e engine de rules
  • .cursor/rules/revops-engineer.md — versionado no repo, code-reviewed
  • Secret manager de escolha — referenciado das rules, nunca inline
  • Objeto de auditoriaCleanup_Audit__c ou objeto custom equivalente, nomeado explicitamente para que as sugestões apontem para o nome real

Arquivos deste artefato

Baixar tudo (.zip)