.
This commit is contained in:
parent
1adf19b92d
commit
1388a121bc
65 changed files with 157 additions and 5166 deletions
|
|
@ -1,169 +0,0 @@
|
|||
---
|
||||
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.
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
type: rule
|
||||
name: estrutura-vue
|
||||
description: Padrões obrigatórios de estrutura para componentes Vue 3 (defineComponent, setup, CSS, dispatch)
|
||||
scope: global
|
||||
scope: local
|
||||
trigger: file_match
|
||||
globs:
|
||||
- "**/*.vue"
|
||||
|
|
@ -82,5 +82,5 @@ Sem estes padrões, componentes perdem inferência de tipos, lógica fica inaudi
|
|||
|
||||
## Referências
|
||||
|
||||
- Rule: `.agent/rules/limite-linhas.global.md`
|
||||
- Rule: `.agent/rules/typescript-sem-any.global.md`
|
||||
- Rule: `global/rules/limite-linhas.md`
|
||||
- Rule: `global/rules/typescript-sem-any.md`
|
||||
|
|
|
|||
|
|
@ -1,123 +0,0 @@
|
|||
---
|
||||
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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue