versão 1

This commit is contained in:
Luiz Silva 2026-06-18 11:59:57 -03:00
commit 1cb4c14d33
85 changed files with 11836 additions and 0 deletions

View file

@ -0,0 +1,169 @@
---
type: rule
name: escrita-natural
trigger: context_match
description: Garantir escrita natural, fluida e humana em textos comerciais e de comunicação, evitando linguagem robótica ou excessivamente genérica.
scope: global
updatedAt: "2026-06-01"
ativacao: >
Aplicar quando o agente estiver produzindo textos comerciais, de marketing,
orçamentos, propostas, reels ou qualquer comunicação voltada ao público externo.
NÃO aplicar em documentação técnica (ADRs, rules, JSDoc, regras de negócio).
---
# Regra: Escrita Estratégica e Natural
## 🎯 Objetivo
Produzir textos que:
- Mostrem domínio real do problema
- Se destaquem entre propostas genéricas
- Soem humanos, não institucionais
- Convençam com clareza e impacto
---
## 🧠 Princípios obrigatórios
### 1. Começar pelo problema real
Evitar introduções genéricas.
❌
"O presente projeto tem como objetivo..."
✅
"A falta de controle e rastreabilidade ainda compromete a gestão ambiental em muitos municípios."
---
### 2. Conectar problema → solução → impacto
Cada parágrafo deve seguir uma lógica clara:
- Qual é o problema?
- Como a solução resolve?
- O que muda na prática?
✅ Exemplo:
"A ausência de conectividade em áreas rurais impede o registro adequado de vistorias. A solução permite coleta offline diretamente no celular. Como resultado, elimina perda de informação e reduz retrabalho."
---
### 3. Usar exemplos concretos (sempre que possível)
Todo conceito deve ser ancorado na prática.
❌
"A solução permite coleta de dados estruturados."
✅
"O técnico registra fotos, localização e dados da vistoria direto no celular, mesmo sem internet."
---
### 4. Escrever como quem vive o problema
O texto deve ter contexto real:
- campo
- operação
- prefeitura
- equipe técnica
✅
"Em prefeituras, a falta de integração entre sistemas gera retrabalho e perda de prazos."
---
### 5. Persuasão baseada em impacto real
Evitar adjetivos vazios.
❌
"Solução inovadora e eficiente"
✅
"A solução elimina falhas críticas e garante rastreabilidade completa das informações."
---
### 6. Linguagem natural (sem burocracia)
Preferir:
- "Com a solução..."
- "Na prática..."
- "Isso permite..."
- "Como resultado..."
Evitar:
- "Dessa forma"
- "Destarte"
- "O presente projeto"
---
### 7. Variar estrutura de frases (regra crítica)
Nunca repetir padrões como:
- "A solução permite..."
- "O sistema permite..."
Alternar com:
- "Na prática, o técnico..."
- "Com isso..."
- "Isso reduz..."
- "Como resultado..."
---
### 8. Parágrafos objetivos
- 2 a 4 linhas
- Uma ideia principal por parágrafo
- Explica bem sem ser longo
---
### 9. Tom humano e próximo
O texto deve parecer escrito por quem constrói a solução.
✅
"A solução resolve um problema real que impacta o dia a dia das equipes."
---
## 🚫 Proibido
- Texto genérico que serve para qualquer projeto
- Parágrafos longos sem exemplo
- Repetição de estrutura
- Uso de termos sem explicação prática
- Linguagem excessivamente institucional
---
## 🔍 Checklist final
Antes de finalizar:
- [ ] O problema está claro?
- [ ] Existe exemplo prático?
- [ ] O impacto está explícito?
- [ ] O texto soa humano?
- [ ] Há repetição de estrutura?
- [ ] Parece algo real ou genérico?
---
## 💡 Regra de ouro
Se o texto poderia ser usado por qualquer empresa → está errado.
Se parece que vem de quem vive o problema → está certo.

View file

@ -0,0 +1,123 @@
---
type: rule
name: mensagens-usuario
description: Toda mensagem visível ao usuário final deve ser escrita em linguagem do domínio, sem termos técnicos de TI
scope: global
trigger: file_match
globs:
- "**/*.vue"
- "**/*.ts"
- "**/*.tsx"
updatedAt: "2026-06-01"
---
# Regra: Mensagens Orientadas ao Domínio
## Contexto
O usuário final dos módulos SaaS é profissional de **engenharia, ciência ou gestão ambiental**. Ele entende de legislação, processos técnicos e ciência aplicada — mas **não tem obrigação de entender tecnologia**.
Toda mensagem visível na interface — erro, validação, confirmação, tooltip, empty state, ajuda — deve ser escrita na linguagem do domínio do módulo.
## Regra
### 1. Erros de validação devem indicar O QUE preencher, não O QUE falhou
```typescript
// ❌ ERRADO — linguagem técnica
"Campo obrigatório"
"Erro de validação"
"Formato inválido"
"Payload inválido"
// ✅ CORRETO — linguagem do domínio
"Informe a Área do Empreendimento (em hectares)"
"Selecione o Tipo de Licença: LP, LI ou LO"
"A Data da Vistoria deve ser anterior à data atual"
"Informe o CNPJ no formato 00.000.000/0000-00"
```
### 2. Erros de sistema devem ser traduzidos para o usuário
```typescript
// ❌ ERRADO — erro técnico exposto
"Erro 500: Internal Server Error"
"Timeout na requisição"
"Network Error"
"ECONNREFUSED"
// ✅ CORRETO — mensagem humanizada
"Não foi possível salvar. Tente novamente em instantes."
"A operação demorou mais que o esperado. Tente novamente."
"Sem conexão com o servidor. Verifique sua internet."
```
### 3. Estados vazios devem explicar o contexto
Quando uma lista ou tabela está vazia, a mensagem deve orientar o usuário:
```typescript
// ❌ ERRADO — genérico
"Nenhum registro encontrado"
"Lista vazia"
// ✅ CORRETO — explica o domínio e orienta
"Nenhuma condicionante cadastrada para esta licença."
"Nenhum relatório de monitoramento registrado neste período."
"Nenhum empreendimento encontrado com os filtros aplicados. Tente ampliar a busca."
```
### 4. Confirmações devem descrever a consequência
```typescript
// ❌ ERRADO — genérico
"Tem certeza que deseja excluir?"
"Confirmar operação?"
// ✅ CORRETO — descreve o impacto
"Excluir esta condicionante? O prazo de cumprimento e os documentos vinculados serão removidos."
"Arquivar esta licença? Ela não aparecerá mais nas listagens ativas."
```
### 5. Labels e placeholders devem usar vocabulário do domínio
```typescript
// ❌ ERRADO — genérico
label: "Nome"
placeholder: "Digite aqui"
// ✅ CORRETO — específico do domínio
label: "Razão Social do Empreendedor"
placeholder: "Ex: Mineração Vale Verde Ltda."
label: "Área Total do Empreendimento"
placeholder: "Em hectares (ex: 150,5)"
```
### 6. Schemas Zod devem ter mensagens de domínio
```typescript
// ❌ ERRADO — mensagens padrão do Zod
const zEmpreendimento = z.object({
nome: z.string().min(1), // "String must contain at least 1 character(s)"
area: z.number().positive(), // "Number must be greater than 0"
})
// ✅ CORRETO — mensagens customizadas
const zEmpreendimento = z.object({
nome: z.string().min(1, "Informe o nome do empreendimento"),
area: z.number({ invalid_type_error: "A área deve ser um número" })
.positive("A área deve ser maior que zero"),
cnpj: z.string().regex(/^\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/,
"CNPJ inválido. Use o formato 00.000.000/0000-00"),
})
```
## Impacto
Sem esta regra, o agente gera mensagens técnicas que confundem gestores ambientais, consultores e técnicos de campo — forçando a equipe de suporte a traduzir erros de sistema para o vocabulário do cliente.
## Referências
- Rule: `.agent/rules/zod-validacao-padrao.global.md` (schemas com mensagens customizadas)
- Workflow: `.agent/workflows/ux.global.md` (design de interface)