Skill especialista em criação de configurações YAML para agentes de mockdata no projeto MultiAgentSQL. Catálogo de tipos suportados pela ferramenta db_mockdata, padrões de seed SQL e regras de dependência de FK. Use quando estiver criando agentes de mockup, gerando seeds ou planejando pipelines de dados de teste.
Princípio central: Dados de teste precisam ser plausíveis, no idioma correto (pt-BR) e respeitar as FKs do schema.
db_mockdata.pyA ferramenta nativa db_mockdata do projeto gera dados automaticamente baseados na introspecção real da tabela.
DESCRIBE <tabela> → obtém campos, tipos, extras (AUTO_INCREMENT, NULL)INSERT INTO ... VALUES (...), (...)mode="write" via db_executemin(rows, 100))| Tipo MySQL | Estratégia de Geração |
|---|---|
INT, BIGINT | Baseado no nome da coluna (FK → 1–100, idade → 18–80, qtd → 1–500) |
TINYINT(1) | Booleano: 0 ou 1 |
DECIMAL, FLOAT, DOUBLE | random.uniform(1.0, 9999.99) arredondado a 2 casas |
VARCHAR(n), CHAR(n) | Baseado no nome da coluna (veja heurísticas abaixo) |
TEXT, LONGTEXT, MEDIUMTEXT | Texto de 3 a 8 palavras genéricas |
DATETIME, TIMESTAMP | Datas aleatórias entre 2024-01-01 e 2025-12-31 |
DATE | Datas aleatórias entre 2024-01-01 e 2025-12-31 |
TIME | Horário aleatório HH:MM:00 |
YEAR | Entre 2020 e 2025 |
ENUM(...) | Escolha aleatória das opções definidas no schema |
JSON | {"mock": true} |
| Outros | mock_<sufixo_aleatorio> |
A ferramenta detecta esses padrões automaticamente no nome do campo:
| Padrão no nome | Valor gerado |
|---|---|
nome, name, first | Nome pt-BR: Ana, Carlos, Maria... |
sobrenome, lastname, surname | Sobrenome pt-BR: Silva, Santos... |
email | [email protected] |
telefone, phone, celular | (11) 9XXX-XXXX |
cep, zip | XXXXX-XXX |
cpf | XXX.XXX.XXX-XX |
descricao, description, obs | Texto aleatório |
cidade, city | Capitais br: São Paulo, Rio de Janeiro... |
status | ativo, inativo, pendente |
Quando o volume é maior ou as dependências de FK precisam ser controladas, gere SQL manual:
-- Ordem de inserção: SEMPRE filhos após pais
-- 1. Tabelas sem FK (entidades pai)
INSERT INTO `Empresa` (`Nome`, `CNPJ`, `Email`) VALUES
('Empresa Alpha', '12.345.678/0001-90', '[email protected]'),
('Empresa Beta', '98.765.432/0001-10', '[email protected]');
-- 2. Tabelas com FK para entidades pai
INSERT INTO `Projeto` (`Titulo`, `Empresa_id`, `Status`, `DataInicio`) VALUES
('Projeto Web', 1, 'Ativo', '2024-03-01'),
('Projeto Mobile', 2, 'Pendente', '2024-06-15');
SEMPRE inserir na ordem: TabSemFK → Tab1FK → Tab2FK → TabNFK
EXEMPLO:
Empresa (sem FK) → Projeto (FK: Empresa_id) → Atividade (FK: Projeto_id)
Para descobrir a ordem: SHOW CREATE TABLE <tabela> ou via digest do agente.
DESCRIBE das tabelas alvosdb_mockdata nativo (até 100 linhas)SELECT COUNT(*) FROM <tabela> após inserção[!WARNING] Nunca adicionar
DELETEouDROPnoauto_approvede um agente de mockup. Mockdata é dado falso mas pode sobrescrever dados reais se o banco for o de produção.
[!IMPORTANT] O campo
prompt_fileno YAML deve apontar para um arquivo existente emconfig/prompts/. Use o mesmoiddo agente +.mdcomo convenção.
[!TIP] Para agentes de demonstração ou CI/CD, configure
can_ddl: truepara o agente poder criar tabelas de teste (como_test_usuarios) sem afetar o schema principal.
Salvar em config/prompts/<id-do-agente>.md:
# Agente de Mockdata — <Nome do Banco>
Você é um agente especialista vinculado ao banco `<nome_banco>`.
Seu objetivo principal é **gerar dados de teste realistas** em pt-BR.
## Suas Permissões
- Pode ler qualquer tabela (SELECT, DESCRIBE, SHOW)
- Pode inserir dados (INSERT) — auto-aprovado
- DROP, DELETE e TRUNCATE exigem confirmação
## Comportamento ao Gerar Mockdata
1. Sempre introspete a tabela antes de gerar dados (`DESCRIBE <tabela>`)
2. Respeite as FKs — insira registros dependentes na ordem correta
3. Gere no máximo 50 registros por tabela por padrão, a não ser que o usuário peça mais
4. Use dados plausíveis em pt-BR
## Tabelas Disponíveis
(Serão carregadas automaticamente via digest do agente)
Quando o agente de mockdata está ativo, o usuário pode usar:
"Insira 20 registros de teste em @Projetos"
→ db_mockdata(table="Projetos", rows=20)
"Crie 5 empresas e 10 projetos para cada"
→ db_mockdata(table="Empresa", rows=5)
→ SQL manual para Projetos com Empresa_id em 1..5
"Mostre os dados de @ProjetoAtivosVw"
→ SELECT * FROM ProjetoAtivosVw LIMIT 50;