Pular para o conteúdo principal

Melhores Práticas e Solução de Problemas de Regras MDC no Cursor

Cursor MDC Rules

As regras MDC (Markdown Configuration) são a forma poderosa do Cursor de impor padrões de codificação, convenções de projeto e diretrizes de comportamento de IA. Quando configuradas corretamente, melhoram drasticamente a qualidade e consistência do código. Este guia aborda as melhores práticas para criar, organizar e solucionar problemas de regras MDC.

O que são Regras MDC?​

As regras MDC são arquivos Markdown com front matter YAML que dizem ao Cursor como se comportar ao trabalhar com arquivos específicos ou em contextos específicos. Elas podem:

  • Impor padrões de codificação
  • Definir padrões de arquitetura de projeto
  • Especificar requisitos de documentação
  • Controlar o comportamento da IA para tipos de arquivo específicos

Requisitos de Formato de Arquivo​

As regras MDC devem seguir exatamente este formato:

---
description: 'Descrição da regra aqui'
globs: ['src/**/*.ts', 'tests/**/*.ts']
alwaysApply: false
---

# Título da Regra

Seu conteúdo da regra aqui...

## Diretrizes Específicas

- Diretriz 1
- Diretriz 2

Requisitos Críticos​

RequisitoDetalhes
ExtensãoDeve ser .mdc (não .md)
Front matterDeve usar formato YAML entre delimitadores ---
LocalizaçãoDeve estar no diretório .cursor/rules/
globsArray de padrões de arquivo aos quais esta regra se aplica
alwaysApplyBooleano - se aplica sem correspondência de arquivo

Convenção de Nomenclatura​

Use um sistema de prefixo numerado para organização:

.cursor/rules/
001-core-coding-standards.mdc
002-typescript-conventions.mdc
003-react-patterns.mdc
100-api-design.mdc
101-database-models.mdc
200-testing-requirements.mdc
201-documentation-rules.mdc

Sistema de Numeração​

IntervaloCategoriaExemplo
001-099Regras principais (aplicam-se a todos os arquivos)Padrões de codificação, formatação
100-199Regras de integração (domínios específicos)API, banco de dados, autenticação
200-299Regras de padrão/funçãoTestes, documentação
300-399Específicas de tecnologiaReact, Vue, Angular

Escrevendo Regras Eficazes​

Seja Específico e Acionável​

Ruim:

Escreva bom código.

Bom:

## Tratamento de Erros

Todas as funções assíncronas devem usar blocos try/catch:

```typescript
async function fetchUser(id: string): Promise<User> {
try {
const response = await api.get(`/users/${id}`);
return response.data;
} catch (error) {
logger.error(`Failed to fetch user ${id}`, error);
throw new UserNotFoundError(id);
}
}

### Inclua Exemplos

Sempre mostre exemplos corretos e incorretos:

```markdown
## Gerenciamento de Estado

✅ FAÇA: Use React Query para estado do servidor
```typescript
const { data, isLoading } = useQuery({
queryKey: ['user', userId],
queryFn: () => fetchUser(userId)
});

❌ NÃO FAÇA: Use useEffect para busca de dados

// Evite este padrão
useEffect(() => {
fetchUser(userId).then(setUser);
}, [userId]);

### Use Padrões Glob Efetivamente

```yaml
# Aplicar a todos os arquivos TypeScript
globs: ['**/*.ts', '**/*.tsx']

# Aplicar apenas ao código backend
globs: ['src/server/**/*.ts', 'src/api/**/*.ts']

# Aplicar a arquivos de teste específicos
globs: ['**/*.test.ts', '**/*.spec.ts']

# Excluir certos arquivos
globs: ['src/**/*.ts', '!src/generated/**']

Categorias Comuns de Regras​

1. Regras de Estilo de Código​

---
description: 'Impor estilo de código consistente'
globs: ['src/**/*.ts', 'src/**/*.tsx']
alwaysApply: true
---

# Padrões de Estilo de Código

## Importações
- Agrupar importações: React, libs externas, módulos internos, tipos
- Usar importações absolutas para módulos src/
- Ordenar alfabeticamente dentro dos grupos

## Nomenclatura
- Componentes: PascalCase (UserProfile)
- Hooks: camelCase começando com 'use' (useAuth)
- Constantes: UPPER_SNAKE_CASE
- Arquivos: kebab-case (user-profile.tsx)

2. Regras de Arquitetura​

---
description: 'Impor padrões de arquitetura limpa'
globs: ['src/**/*.ts']
alwaysApply: false
---

# Diretrizes de Arquitetura

## Dependências de Camada
- Camada de domínio: Sem dependências externas
- Camada de aplicação: Depende apenas do domínio
- Camada de infraestrutura: Depende da aplicação

## Organização de Arquivos

src/ domain/ # Lógica de negócios, entidades application/ # Casos de uso, DTOs infrastructure/ # DB, API, serviços externos presentation/ # Componentes de UI

3. Regras de Teste​

---
description: 'Requisitos e padrões de teste'
globs: ['**/*.test.ts', '**/*.test.tsx']
alwaysApply: true
---

# Padrões de Teste

## Testes Obrigatórios
- Testes unitários para todas as funções utilitárias
- Testes de componente para todos os componentes React
- Testes de integração para endpoints de API
- Testes E2E para fluxos críticos do usuário

## Estrutura de Teste
Siga o padrão AAA:
1. Arrange: Configure dados de teste e mocks
2. Act: Execute a função sendo testada
3. Assert: Verifique os resultados

Solução de Problemas Comuns​

Problema 1: Alterações Não Sendo Salvas​

Sintoma: Você edita um arquivo .mdc, salva, mas o Cursor não aplica as alterações.

Solução:

  1. Feche completamente o Cursor (não apenas a janela - saia da aplicação)
  2. Reabra o Cursor
  3. As alterações devem ser aplicadas agora

Por que isso acontece: As regras MDC são armazenadas em cache quando o Cursor inicia. Elas não recarregam dinamicamente.

Problema 2: Regras Não Sendo Aplicadas​

Sintoma: O Cursor ignora suas regras ao editar arquivos.

Lista de Verificação:

  • A extensão do arquivo é .mdc (não .md)
  • O arquivo está no diretório .cursor/rules/
  • O front matter tem sintaxe YAML válida
  • O padrão globs corresponde aos seus arquivos alvo
  • Sem erros de sintaxe no conteúdo Markdown

Comando de depuração:

# Verificar se o Cursor reconhece suas regras
ls -la .cursor/rules/
# Verificar extensões de arquivo
file .cursor/rules/*

Problema 3: Regras Conflitantes​

Sintoma: Múltiplas regras dão instruções contraditórias.

Ordem de Resolução:

  1. Regras com padrões glob mais específicos têm precedência
  2. Regras com alwaysApply: true são avaliadas primeiro
  3. Regras posteriores em ordem alfabética sobrescrevem as anteriores

Melhor prática: Use o campo priority (se suportado):

---
description: 'Regra de alta prioridade'
globs: ['src/**/*.ts']
priority: 100
---

Problema 4: Regras Muito Longas​

Sintoma: O Cursor não segue todas as instruções em uma regra longa.

Solução: Divida em múltiplas regras focadas:

.cursor/rules/
001-general-style.mdc # Diretrizes curtas e gerais
002-error-handling.mdc # Específico para tratamento de erros
003-performance.mdc # Otimizações de desempenho

Técnicas Avançadas​

Regras Condicionais​

Use globs para aplicar diferentes regras a diferentes partes da sua base de código:

# Regras de frontend
globs: ['src/components/**/*.tsx', 'src/pages/**/*.tsx']
---
Use o padrão React hooks. Prefira componentes funcionais.
# Regras de backend
globs: ['src/server/**/*.ts', 'src/api/**/*.ts']
---
Use injeção de dependência. Siga os princípios SOLID.

Herança de Regras​

Crie uma regra base e estenda-a:

---
description: 'Padrões TypeScript base'
globs: ['**/*.ts', '**/*.tsx']
alwaysApply: true
---

# Regras TypeScript Base

- Use configuração TypeScript estrita
- Sem tipos `any` sem comentário justificativo
- Prefira `interface` em vez de `type` para formas de objetos
---
description: 'Extensões específicas de React'
globs: ['src/**/*.tsx']
alwaysApply: false
---

# Regras React

Além das regras TypeScript base:
- Use componentes funcionais com hooks
- Interfaces de props devem ser exportadas
- Use React.FC com moderação (prefira tipagem explícita de props)

Regras Dinâmicas com Variáveis​

Algumas configurações avançadas suportam variáveis de modelo:

---
description: 'Convenções específicas do projeto'
globs: ['**/*.ts']
---

# Convenções do Projeto

## URL Base da API
Use: {{API_BASE_URL}}

## Autenticação
Cabeçalho de token: {{AUTH_HEADER_NAME}}

Referência Rápida: Modelo de Regra MDC​

---
description: ''
globs: ['']
alwaysApply: false
---

# Título

## Seção 1
- Diretriz 1
- Diretriz 2

## Seção 2
```typescript
// Exemplo de código

Referências​


## Recursos Relacionados

- [Usando Regras do Cursor Efetivamente](using-cursor-rules-effectively.mdx)
- [Melhores Práticas para Regras do Cursor](best-practices-for-cursor-rules.mdx)
- [Guia de Configuração do CursorRules](cursorrules-setup-guide.mdx)