CommunityPesquisa e Análise de Dadosgithub.com

19970836597/-agent

Cria apresentações PPT de "Análise de Desempenho Mensal" para gerentes de projetos de propriedades. Use quando o usuário precisar de análises mensais/trimestrais de desempenho de propriedades, relatórios de receita, atribuição de causas de inadimplência, análise de taxa de arrecadação, análise de eficiência per capita, ou mencionar "relatório mensal do gerente de projeto" ou "reunião de análise de desempenho de propriedades". Gera uma apresentação 16:9 na ordem cognitiva "Receita → Inadimplência e Cobrança → Taxa de Arrecadação → Eficiência Per Capita → Atribuição de Itens Anômalos → Resumo e Ações", e entrega automaticamente scripts de apresentação página por página.

O que é -agent?

Esta skill automatiza a criação de apresentações PPTX profissionais para análise de desempenho mensal/trimestral de gerentes de projetos imobiliários. Diferente de simplesmente inserir dados em slides, ela segue uma ordem cognitiva lógica para o público: começa com a receita, depois inadimplência e cobrança, taxa de arrecadação, eficiência per capita, atribuição de causas de itens anômalos e, por fim, resumo e ações corretivas. A skill foi projetada para plataformas como Claude Code, Cursor ou Codex, utilizando um pipeline de cinco estágios: compreensão dos dados, análise, planejamento da estrutura PPT, geração de conteúdo e chamada de ferramentas de criação de slides. Ela suporta fontes de dados flexíveis (upload do usuário, busca automática em diretórios ou modelo padrão) e gera três entregáveis: o arquivo PPTX editável 16:9, um relatório de verificação estrutural (checks.json) e scripts de apresentação página por página. Um diferencial é o uso de templates de frases conclusivas (`so_what`) no arquivo `deck_spec.json`, que transformam dados brutos em narrativas de negócios acionáveis, com condições lógicas para escolher a conclusão mais relevante. A skill também impõe disciplina rigorosa de conteúdo, como títulos que são conclusões, não nomes de seções; cada slide com uma frase `so what`; e atribuição de causas anômalas com três níveis de profundidade (desvio quantitativo, evento motor, responsabilidade e prazo). Ela lida com dados ausentes de forma honesta, sinalizando explicitamente o que falta, e evita armadilhas comuns como usar uma única taxa de arrecadação sem desagregá-la por período e inadimplência passada.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/19970836597/-agent/tree/HEAD/skills/buttin/ppt_skill

Installed? Explore more Pesquisa e Análise de Dados skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Gerente de Projetos Imobiliários · Apresentação de Análise de Desempenho Mensal PPT

O núcleo não é "colocar os dados no slide", mas sim explicar claramente a base operacional na ordem cognitiva do público e, em seguida, localizar as causas anômalas com responsáveis e prazos.


O conhecimento desta skill está armazenado em dois lugares

ArquivoPara quemO que contém
SKILL.md (este arquivo)Pessoa / AgentePor que apresentar assim: razão narrativa, método de atribuição de causas, disciplina de expressão
deck_spec.jsonFerramentaComo implementar: número de páginas, ordem, modelos de frases conclusivas, paleta de cores

deck_spec.json é o conhecimento legível por máquina desta skill. Alterá-lo ajusta o número de páginas e a forma de apresentação do PPT, sem precisar modificar nenhum código Python:

{
  "page_rules": [                       // ← "quantas páginas o ppt terá" está aqui
    {"max_minutes": 10, "sections": [7 parágrafos]},
    {"max_minutes": 20, "sections": [11 parágrafos]},
    {"max_minutes": 40, "sections": [16 parágrafos]}
  ],
  "sections": [{
    "key": "revenue", "label": "Receita", "layout": "chart",
    "data": {"value_column": "Valor da Fatura (R$)", "group_column": "Item de Cobrança"},
    "narrative": [                      // ← Modelo de frase conclusiva: de "ler números" a "dar um julgamento"
      {"when": "top_share > 0.9",
       "so_what": "{top_name} representa {top_share_pct}% da receita, estrutura única, baixa capacidade de resistência a riscos; no próximo mês, focar na receita de áreas comuns como item especial."},
      {"when": "", "so_what": "…cláusula padrão…"}
    ]
  }],
  "theme": {"colors": {...}, "palette": [...]}   // ← Paleta de cores também é conhecimento
}

Como funcionam os modelos de frases conclusivas

O mecanismo seleciona a primeira correspondência da lista de modelos com base na condição when e preenche {placeholders} com números reais.

Placeholders disponíveis (calculados automaticamente a partir dos dados): {total} {count} {top_name} {top_share} {top_share_pct} {group_count} {bottom_name} {bottom_value} …

Sufixos de formatação: {total:mil} (÷1000) {share:pct} (razão → porcentagem) {count:sep} (separador de milhares) {value:2} (casas decimais)

Condições suportadas: > >= < <= == !=, and/or/not, has(x)/empty(x). Condições não analisáveis são consideradas como não correspondentes, sem gerar erro.

Na ausência de dados, rebaixamento honesto: o título da página marca "Dados ausentes, aguardando complemento", nunca usando outra coluna como substituta. Por exemplo, se a página de "Custos" declara a coluna Item de Custo, mas ela não existe nos dados, a página indica explicitamente o que está faltando.

Indicadores devem ser calculados a partir dos dados, não transmitidos manualmente

A seção derived declara "como calcular", e a ferramenta realiza o cálculo:

"derived": {
  "Valor Recebido (R$)": {"expr": "Valor da Fatura (R$) - Valor Não Pago (R$)"},          // linha por linha, torna-se nova coluna
  "Taxa de Arrecadação": {"expr": "Valor Recebido (R$) / Valor da Fatura (R$) * 100",
             "scope": "total", "format": "{:.2f}%"}                  // calcula **um único número** com base no total
}

⚠ O scope padrão é row (calcula linha por linha, resultado torna-se nova coluna); indicadores de razão devem usar obrigatoriamente scope: "total" — calcular a razão linha por linha e depois somar resultaria em valores absurdos como 1.476.800%.

Os valores calculados são automaticamente incorporados à tabela de fatos narrativos, então {Taxa de Arrecadação} pode ser usada diretamente nos modelos de frases conclusivas.

Verificação empírica (2、Informações de Recebíveis.xlsx): Taxa de Arrecadação = 92,48%, Taxa de Inadimplência = 7,52%. Verificação independente agrupando por "Status de Pagamento" confirma total consistência (soma de valores não pagos em linhas pagas = 0).

Expressões só podem referenciar nomes de colunas e constantes numéricas, usando uma lista branca de ast para avaliação — não usa eval. __import__('os') e similares serão rejeitados.

Somente quando as dimensões não existem na tabela principal é necessário fazer JOIN entre tabelas

datasets + join declara "qual tabela usar, quais colunas pegar, por qual chave":

"datasets": {
  "properties": {"file": "1、Informações de Clientes Imobiliários.xlsx", "key_column": "Código do Imóvel",
                 "pick": {"Área de Cobrança Medida (m²)": "Área de Cobrança Medida"}}
},
"join": {"dataset": "properties", "left_on": "Nome Completo do Imóvel", "how": "left"}

Ordem: primeiro o JOIN, depois os cálculos derivados — caso contrário, as colunas de dimensão referenciadas nas expressões derivadas ainda não existirão.

Lição: Primeiro meça, depois decida se precisa de JOIN. Originalmente pensei que "a taxa de arrecadação precisaria de JOIN entre tabelas", mas depois de medir descobri que a Tabela 2 já contém tanto o valor da fatura quanto o valor não pago, portanto pode ser calculada com uma única tabela. O que realmente precisou de JOIN foi o "preço médio unitário" (a área está na Tabela 1).


É obrigatório entregar três itens

EntregaFormaFunção
① PPTX do RelatórioApresentação editável 16:9Slides, para "ver"
② Relatório de Verificação checks.jsonJSON (produzido pela ferramenta pptx_check)Evidência de integridade estrutural
③ Script de ApresentaçãoCorpo do chat / Markdown (modelo em references/03-模型deApresentação.md)Texto palavra por palavra, para "falar"

Quando usar

  • Análise de desempenho mensal/trimestral de projeto imobiliário PPT
  • Relatório de desempenho para centro de operações regional, diretor geral
  • Necessidade de atribuição de estouro de custos, análise de taxa de arrecadação, análise de eficiência per capita
  • Palavras-chave: "Relatório mensal do gerente de projeto" "Material para reunião de análise de desempenho" "PPT de painel de desempenho do projeto"

Pipeline de Processamento de Cinco Estágios

Entrada de dados do usuário
      |
      v
+-------------------+
| Estágio 1: Compreensão de Dados |  Analisar entrada, preencher valores padrão, verificar critérios
+-------------------+
      |
      v
+-------------------+
| Estágio 2: Análise de Dados   |  Cálculo de receita/custo/arrecadação/eficiência, classificação de desvios, atribuição de anomalias
+-------------------+
      |
      v
+-------------------+
| Estágio 3: Planejamento da Estrutura PPT |  Definir número de páginas, tipo de gráfico, título conclusivo de cada página
+-------------------+
      |
      v
+-------------------+
| Estágio 4: Geração de Conteúdo   |  Construir dicionário DATA, gerar frases conclusivas, preencher scripts
+-------------------+
      |
      v
+-------------------+
| Estágio 5: Chamar Ferramenta PPT|  Executar build_deck.py → Verificar → Entregar
+-------------------+
      |
      v
Gerar .pptx + checks.json + Script de Apresentação

Estágio 1: Compreensão de Dados

1.0 De onde vêm os dados (três caminhos, por prioridade)

PrioridadeFormaDescrição
1O usuário forneceu os dados na conversaO agente preenche os dados no parâmetro data
2O usuário forneceu o nome do arquivo/pistaA skill automaticamente procura arquivos em diretórios comuns e extrai dados (veja abaixo)
3Nenhum dos anterioresUsa o modelo padrão para gerar e emite um aviso de dados insuficientes

Extração automática de dados: Quando data está vazio, a skill:

  1. Analisa pistas do nome do arquivo a partir de request (ex.: "a tabela de vendas do mês passado")
  2. Faz correspondência difusa nos diretórios data/common e data/inbox
  3. Lê com pandas, inferindo automaticamente a coluna de data / coluna de valor / coluna de agrupamento
  4. Converte para a estrutura contratual (valor ÷ 1000 para milhares, razões em formato decimal)
  5. Salva como input_data.json para o script de geração

Portanto, o usuário só precisa dizer "faça uma apresentação de análise de desempenho usando a tabela de vendas do mês passado", sem fornecer o caminho — desde que o arquivo já esteja em data/common.

Raiz de pesquisa coberta: SKILL_COMMON_DIRS=D:\Planilhas;E:\RelatoriosMensais Desligar extração automática: auto_resolve_data=False

Fontes de dados do projeto imobiliário (critérios medidos em data/common)

TabelaArquivoUsoDescrição do Critério
Tabela 22、Informações de Recebíveis.xlsxTabela principal (15.876 linhas)Receita agrupada por "Item de Cobrança"; "Valor da Fatura / Valor Não Pago" deriva a taxa de arrecadação (medido 92,48%)
Tabela 11、Informações de Clientes Imobiliários.xlsxTabela de dimensão: Área de Cobrança MedidaJOIN por "Código do Imóvel" = Nome Completo do Imóvel da tabela principal → deriva preço médio unitário (medido 0,30 R$/m²·período)
Tabela 44、Relatório Detalhado de Inadimplência.xlsxTabela de dimensão: Motivo da Inadimplência (7 categorias)Título na 2ª linha (header_row=1), com linha de total no final (descartada automaticamente); JOIN por "Nome Completo do Imóvel" → Página de atribuição de inadimplência
Tabela 55、Tabela Detalhada de Taxa de Arrecadação por Imóvel.xlsxNão usarCabeçalho composto de três linhas, formato de tabela larga, propenso a conflito com os critérios derivados da Tabela 2; sempre usar os critérios derivados da Tabela 2 como padrão

Declaração de rebaixamento honesto: Os dados deste projeto não contêm dados de custos, orçamento, número de funcionários ou ordens de serviço. A página de custos já foi substituída pela página de "Inadimplência e Cobrança" (com dados reais utilizáveis), e a página de eficiência mantém apenas o "preço médio unitário" com suporte de dados. Os dados de antiguidade de quatro camadas não estão na Tabela 2 — quando necessários, o agente principal deve primeiro chamar o subagente de cobrança (arrears_analysis) para análise de antiguidade e depois injetar os resultados como extra_facts nesta skill.

1.1 Analisar entrada do usuário → Extrair informações básicas

ElementoPadrão/ExemploDescrição
Nome do ProjetoXX CondomínioObrigatório, se faltar marca "A ser complementado"
Período do RelatórioEste mêsObrigatório
Unidade MonetáriaMilhares de reaisUniforme em todo o documento, não misturar; se os dados originais estiverem em "reais", deve-se dividir por 1000
Critério da RazãoDecimal0,952 = 95,2%; enviar 95,2 será renderizado como 9520%
Base de ComparaçãoOrçamento mensal + Mês anteriorPelo menos um quadro de referência
Duração do Relatório20 minutosDetermina o número de páginas

1.2 Verificação de Integridade dos Dados — Sete grupos de dados obrigatórios

Verifique se o usuário forneceu os sete grupos de dados a seguir; se algum grupo faltar, marque "A ser complementado" na página correspondente:

#Grupo de DadosCampos específicos
1Receita por itemTaxa de condomínio, Receita de áreas comuns, Operações diversas, Outros (Valor real + Valor orçado)
2Custos por itemPessoal, Energia de áreas comuns, Terceirização, Manutenção, Materiais, Taxas administrativas (Valor real + Valor orçado)
3Dados de ArrecadaçãoA receber do mês / Recebido no mês / Inadimplência inicial do período / Recuperação de inadimplência antiga
4Antiguidade da InadimplênciaSaldo devedor: 0-30 / 31-90 / 91-180 / 180+ dias
5Dados de EficiênciaNúmero de funcionários, Área sob gestão, Volume de ordens de serviço, Custo de pessoal
6Itens Anômalos3 a 5 itens com maior desvio e seus eventos rastreáveis
7Ações do Mês AnteriorStatus de conclusão (obrigatório reportar, formando um ciclo fechado)

1.3 Verificação de Critérios de Dados

Antes de entrar na análise, deve-se verificar os seguintes pontos vermelhos nos critérios de dados:

  • Receita de áreas comuns pertence legalmente a todos os condôminos, deve ser listada separadamente, não podendo ser incluída no lucro operacional
  • Taxa de arrecadação do período denominador = valor total das faturas a receber do mês, não deve incluir recuperação de inadimplência antiga
  • Custos de pessoal devem incluir obrigatoriamente INSS, FGTS, horas extras, mão de obra terceirizada convertida
  • Energia deve distinguir "rateio de áreas comuns" de "uso próprio da administradora"
  • Despesas não recorrentes (reparos emergenciais, grandes reparos) devem ser listadas separadamente, não entrando na base comparável mensal
  • Eficiência per capita deve ser avaliada em conjunto com a taxa de custo de mão de obra, não apenas com a variação do número de funcionários

Estágio 2: Análise de Dados

2.1 Ordem de Análise (deve ser seguida rigorosamente, não alterar)

Análise de Receita → Análise de Custos → Análise de Taxa de Arrecadação → Análise de Eficiência Per Capita → Atribuição de Itens Anômalos

Razão da ordem: A taxa de arrecadação é a consequência da qualidade do serviço (reclamação não resolvida → proprietário se recusa a pagar), colocar após receita e custos faz a causalidade ser válida; a atribuição de anomalias deve ser baseada nos quatro pilares operacionais, caso contrário a discussão perderá o foco.

2.2 Análise de Receita

  • Calcular o desvio real vs. orçado para cada item de receita
  • Calcular a taxa de cumprimento do orçamento = Receita reconhecida no mês / Receita orçada no mês
  • Calcular a participação percentual da estrutura de receita
  • Receita de áreas comuns listada separadamente, com anotação "Pertence a todos os condôminos, não incluída no lucro operacional"

2.3 Análise de Atribuição de Inadimplência (Originalmente Análise de Custos, este projeto não tem dados de custos)

Os dados deste projeto não possuem conta de custos, esta seção foi alterada para atribuição de inadimplência por motivo — uma página que, na gestão imobiliária, impacta o fluxo de caixa tanto quanto os custos:

  • Usar a coluna "Valor Não Pago (R$)" da tabela principal, agregada pelos motivos de inadimplência obtidos via JOIN (medido total de R$ 36.400,00, conferido com o Relatório Detalhado de Inadimplência por unidade)
  • ⚠ Não usar a coluna "Valor Total da Dívida (R$)" obtida via JOIN para agregação — ela é o total por unidade, que seria duplicado se houver múltiplas linhas de fatura para a mesma unidade
  • Os quatro estratos de motivo de inadimplência são pareados com estratégias de cobrança: Disputa de serviço (primeiro corrigir, depois cobrar) / Dificuldade objetiva (plano de parcelamento) / Inadimplência maliciosa (carta formal, escalonamento) / Perda de contato ou imóvel vago (verificação presencial)
  • Quando os dados de custos estiverem disponíveis, basta substituir a seção arrears do deck_spec.json pela seção cost, sem alterar a cadeia de ferramentas

2.4 Análise de Taxa de Arrecadação — Decomposição em três níveis

IndicadorCritério de Cálculo
Taxa de Arrecadação do PeríodoRecebido no mês / A receber no mês (excluindo recuperação de inadimplência antiga)
Taxa de Arrecadação AcumuladaRecebido do início do ano até agora / A receber do início do ano até agora
Taxa de Recuperação de Inadimplência AntigaInadimplência histórica recuperada no período / Total de inadimplência antiga no início do período

Em conjunto com a pirâmide de antiguidade: 0-30 / 31-90 / 91-180 / 180+ dias. Quanto maior a antiguidade, menor a probabilidade de recuperação (acima de 180 dias, apenas 10%~20%).

Estratos de motivo de inadimplência: Disputa de serviço / Dificuldade objetiva / Inadimplência maliciosa / Perda de contato ou imóvel vago. As duas primeiras categorias dependem de recuperação do serviço, as duas últimas, de mecanismos de cobrança.

2.5 Análise de Eficiência Per Capita

IndicadorCritério de Cálculo
Área média por pessoaÁrea construída sob gestão ÷ (Funcionários próprios + mão de obra terceirizada convertida)
Produtividade por pessoaReceita operacional ÷ Número total de funcionários do projeto
Volume de ordens de serviço por pessoaNúmero de ordens concluídas ÷ Número de funcionários de manutenção
Taxa de custo de mão de obraCusto de pessoal ÷ Receita operacional (indicador inverso, quanto menor, melhor)

⚠ Armadilha: Substituir funcionários próprios por terceirizados reduz o denominador e melhora os números, deve ser avaliado em conjunto com a taxa de custo de mão de obra.

2.6 Atribuição de Itens Anômalos — Método de Penetração em Três Camadas

Este é o passo mais valioso de toda a análise.

CamadaPergunta a responderSaída
Primeira camada: Quantificar desvioÉ desvio de volume, preço ou critério?Valor do desvio + Taxa de desvio
Segunda camada: Fatores de direcionamentoDetalhar até rastrear evento específicoDescrição de evento verificável
Terceira camada: Atribuição de responsabilidadeControlável / Parcialmente controlável / Incontrolável, quem é o principal responsávelDepartamento responsável + Ação corretiva + Prazo

Exemplo de decomposição de desvio de custo de pessoal:

Desvio = Desvio de número de funcionários × Salário médio orçado (desvio de volume)
       + Número orçado de funcionários × Desvio de salário médio (desvio de preço)
       + Fatores de critério / não recorrentes (desvio de critério)

Norma de redação:

  • ❌ "Aumento no consumo de energia" → ✅ "Estouro de energia em R$ 21.000,00, atraso na reforma da iluminação do subsolo resultou no uso de lâmpadas antigas durante todo o mês (R$ 12.000,00) + 3 elevadores com teste de funcionamento anual prolongado (R$ 9.000,00)"
  • ❌ "Estouro em despesas de manutenção" → ✅ "Estouro em despesas de manutenção de R$ 13.000,00, reparo emergencial de tubulação de esgoto rompida no Bloco 5, R$ 13.000,00 (incontrolável)"

Atribuição sem responsável e prazo equivale a não atribuir.


Estágio 3: Planejamento da Estrutura PPT

3.1 Ordem de Apresentação (seis seções, não alterar)

① Conclusão em uma página (decisão em 30 segundos)
② Receita: de onde vem o dinheiro       → Taxa de condomínio / Receita de áreas comuns / Operações diversas / Outros
③ Inadimplência e Cobrança: quem está devendo → Quatro estratos de motivo: Disputa de serviço / Dificuldade / Malícia / Perda de contato
④ Taxa de Arrecadação: o dinheiro foi recebido?   → Período / Acumulado / Inadimplência antiga / Antiguidade por estratos
⑤ Eficiência Per Capita: o custo do pessoal vale a pena   → Preço médio unitário / Área por pessoa / Taxa de custo de mão de obra / Ordens por pessoa
⑥ Atribuição de Itens Anômalos         → Penetração em três camadas: Quantificar desvio → Evento motor → Responsabilidade e controlabilidade
⑦ Resumo e Ações         → 3 a 5 itens, cada um com responsável + prazo + critério de aceitação quantificado

3.2 Planejamento do Número de Páginas

DuraçãoPáginas SugeridasTratamento da Estrutura
10 minutos6 a 8 páginasConclusão em uma página + Receita e Custos + Anomalias TOP3 + Ações
20 minutos12 a 16 páginasSeis seções completas, atribuição de anomalias com TOP5
40 minutos20 a 28 páginasAdicionar comparação de tendências (3 a 6 meses), benchmarking com pares, aprofundamento em itens específicos

3.3 Escolha de Gráficos

Conteúdo da AnáliseTipo de Gráfico
Receita real vs. orçadaGráfico de colunas de duas séries
Classificação de desvios de custosGráfico de barras (cores semânticas vermelho/amarelo/verde)
Taxa de Arrecadação + AntiguidadeGráfico de colunas em camadas + Cartões de indicadores de três níveis
Tendência de eficiência per capitaGráfico combinado de colunas + linhas (eixo secundário mostrando taxa de custo)
Atribuição de anomaliasGráfico de barras + Tabela de atribuição
AçõesCartões de ação (Responsável / Prazo / Critério de Aceitação)

3.4 Modelo de Estrutura de Cada Página

┌──────────────────────────────┐
│ Cabeçalho: Nº + Título conclusivo + Rótulo da seção │
├──────────────────────────────┤
│                              │
│    Área de gráfico / visualização de dados       │
│                              │
├──────────────────────────────┤
│ Barra de conclusão: Frase conclusiva so_what         │
├──────────────────────────────┤
│ Rodapé: Descrição do critério                 │
└──────────────────────────────┘

Estágio 4: Geração de Conteúdo

4.1 Construir Dicionário DATA

Com base nos resultados da análise do Estágio 2, preencher os dados no dicionário DATA padronizado.

DATA = {
    "Projeto": "<Nome do Projeto>",
    "Período": "<AAAA Mês M>",
    "Receita": {"Taxa de condomínio": 0, "Receita de áreas comuns": 0, "Operações diversas": 0, "Outros": 0},
    "Orçamento de Receita": {...},
    "Custos": {"Custos de pessoal": 0, "Energia de áreas comuns": 0, "Serviços terceirizados": 0, "Manutenção e reparos": 0, "Materiais e suprimentos": 0, "Taxas administrativas e outros": 0},
    "Orçamento de Custos": {...},
    "Arrecadação": {"A receber do mês": 0, "Recebido no mês": 0, "Inadimplência inicial do período": 0, "Recuperação de inadimplência antiga": 0},
    "Antiguidade": {"0-30 dias": 0, "31-90 dias": 0, "91-180 dias": 0, "Acima de 180 dias": 0},
    "Eficiência": {"Área média por pessoa": 0, "Produtividade por pessoa": 0, "Taxa de custo de mão de obra": 0, "Ordens de serviço por pessoa": 0},
    "Meses de tendência": [...],
    "Tendência de receita": [...],
    "Tendência de custos": [...],
    "Taxa de cumprimento do orçamento": 0,
    "Taxa de custos": 0,
    "Taxa de custos orçada": 0,
    "Conclusão do mês": "<Resumo em três frases: resultado operacional + maior anomalia + primeira ação do próximo mês>",
    "Maior anomalia": "<Item e valor com maior desvio>",
    "Primeira ação": "<Ação de maior prioridade para o próximo mês>",
}

4.2 Gerar Frases Conclusivas para Cada Página (so_what)

Cada página deve gerar uma frase conclusiva, sem deixar espaço para o público adivinhar.

PáginaPadrão da Frase Conclusiva
Conclusão em uma página"A receita está basicamente dentro do orçamento, o custo foi o único ponto de perda deste mês; primeiro resolver os custos, a taxa de arrecadação se recuperará naturalmente."
Receita"A lacuna de X mil reais em operações diversas precisa ser recuperada no próximo mês; a receita de áreas comuns não pode ser incluída no lucro operacional para maquiar o resultado."
Custos"Os dois primeiros desvios são parcialmente controláveis, são itens que devem ser corrigidos este mês; os dois últimos são fatores incontroláveis/de critério."
Taxa de Arrecadação"A taxa de arrecadação é a consequência da qualidade do serviço: a taxa de fechamento de reclamações deste mês é de X%, a taxa de pontualidade de reparos é de Y%, estas são as causas upstream da lacuna na taxa de arrecadação."
Eficiência Per Capita"A eficiência não piorou, mas a taxa de custo de mão de obra subiu por dois meses consecutivos, exigindo um ajuste estrutural no próximo mês no escalonamento de turnos e na liquidação de terceirizados."
Atribuição de anomalias"O atraso na ação do mês passado (XXX) é a causa direta do estouro de energia; este mês deve ser fechado, caso contrário, se repetirá no próximo mês."
Resumo e Ações"Meta para o próximo mês: Receita de X mil, reduzir taxa de custos para abaixo de Y%; Alerta de risco: XXX precisa ser solicitado com antecedência."

4.3 Disciplina de Expressão de Conteúdo

Estas 6 regras determinam se o relatório é profissional e devem ser seguidas na fase de geração de conteúdo:

  1. O título deve conter a conclusão, não o nome da seção. ❌ "Análise de Custos" → ✅ "Custos excedem o orçamento em R$ 39.000,00, pessoal e energia juntos respondem por 92% do desvio"
  2. Cada página deve ter uma frase so what. Abaixo do gráfico, deve haver uma linha de conclusão
  3. Os números devem vir acompanhados de critério e período. ❌ "Taxa de arrecadação 92%" → ✅ "Taxa de arrecadação do período 92,0% (critério: recebido no mês / a receber no mês, excluindo recuperação de inadimplência antiga)"
  4. Semântica de cores fixa em todo o documento: Dentro do orçamento = Verde (#2EA06A), Alerta = Amarelo (#E8A31D), Fora do orçamento = Vermelho (#D9453D)
  5. Atribuição de anomalias deve formar um ciclo fechado: Item / Valor do desvio / Taxa de desvio / Causa principal / Controlabilidade / Departamento responsável / Prazo
  6. Detalhes no apêndice, apenas o gráfico de conclusão no corpo principal

4.4 Gerar Script de Apresentação

Seguindo o modelo em references/03-模型deApresentação.md, gerar para cada página um script em três seções:

SeçãoConteúdoDuração
Conclusão primeiroQual é a conclusão desta página10 segundos
Suporte de dadosNúmeros-chave + Critério + Quadro de referência30 segundos
Causa principal e açãoPor que + Quem + Quando + Como verificar30 segundos

Linhas vermelhas do script:

  1. Primeiro a conclusão, depois o processo
  2. Quantificadores devem ser executáveis: ❌ "Reduzir custos e aumentar eficiência" → ✅ "Horas extras reduzidas em 30% em relação ao mês anterior, conferência no final do mês"
  3. Não fale sem números: Qualquer adjetivo deve ter um número como base
  4. Verificável: Cada número deve poder responder "de onde foi consultado"
  5. Assuma proativamente os problemas controláveis: Primeiro diga "É minha responsabilidade, vou corrigir até quando"
  6. Se não souber responder, não invente: A resposta padrão é "Preciso verificar esse número com o financeiro, darei uma resposta por escrito até o final do expediente de hoje"

Estágio 5: Chamar Ferramenta PPT

5.1 Executar Script de Geração

Depende da biblioteca python-pptx, execute o script de geração desta skill:

pip install python-pptx
python <skill-dir>/scripts/build_deck.py

O script lê o dicionário DATA e gera uma apresentação editável 16:9 (33,867 × 19,05 cm).

build_pptx(data, output_path) produz 4 arquivos (mesmo nome, extensões diferentes):

ArquivoConteúdo
<nome>.pptxCorpo da apresentação
<nome>.speech.jsonScript de apresentação página por página (versão legível por máquina da entrega ③)
<nome>.speech.mdScript de apresentação página por página (pode ser colado diretamente no corpo do chat)
<nome>.deck.jsonMetadados página ↔ seção (para verificação de alinhamento pela ferramenta de verificação)

Para adicionar uma nova página: Copie o padrão de função de página do script:

add_slide() → header(s, idx, título conclusivo, rótulo da seção) → gráfico → so_what(s, frase conclusiva)

Ao adicionar uma seção, lembre-se de registrar as palavras-chave de conteúdo da seção em SECTION_KEYWORDS; caso contrário, a ferramenta de verificação não conseguirá verificar o conteúdo de cada página.

5.2 Verificação Estrutural (Obrigatória)

Chame a ferramenta pptx_check do Centro de Capacidades para realizar a verificação estrutural, produzindo checks.json:

router.execute("pptx_check", {
    "file_path": "<saída>.pptx",
    "expected_count": <número de páginas>,
    "must_contain": "Atribuição de itens anômalos,Taxa de arrecadação do período,Per capita,Ações",
    "out": "<saída>.checks.json",
})

Ela verifica os seguintes itens e fornece um veredito pass / warn / fail:

VerificaçãoDescrição
package / ooxml / openLegalidade do arquivo, estrutura do pacote OOXML, capacidade de abrir
aspectSe é 16:9
countSe o número de páginas está dentro do esperado
containsSe o conteúdo-chave está presente
section_contentVerifica página por página o "conteúdo-chave que a seção deve ter"
so_whatSe cada página tem uma frase conclusiva no rodapé (exceto capa, roteiro, apêndice)
overflowSe o texto transborda da forma (estimativa baseada em métricas de fonte)
color_semanticsSe foram usadas apenas as cores semânticas definidas
chart_dataSe o número de categorias/séries do gráfico é consistente com a fonte
no_empty_slideSe há páginas em branco

Critério de veredito: qualquer fail → deve corrigir antes de entregar; warn → requer confirmação manual (geralmente erro de estimativa).

overflow é uma estimativa, não uma renderização real. Se houver warn e poucos itens, é normal; se houver muitos itens ou o texto estiver claramente cortado, use a verificação visual em 5.3 para confirmar.

Se o nome da ferramenta não estiver disponível, recue para chamar a função do módulo diretamente: tool.common.pptx_check_tool.check_pptx(...).

5.3 Verificação Visual (Opcional, depende do ambiente)

libreoffice --headless --convert-to png <arquivo.pptx> --outdir preview

⚠ O ambiente pode não ter o LibreOffice instalado. Se não estiver disponível, recue para:

  • Usar python-pptx para ler as formas e o texto de cada página e verificar manualmente as páginas-chave; ou
  • Usar PIL para desenhar miniaturas aproximadas com base no tamanho da página (apenas para ver a distribuição do layout, não equivalente à renderização real).

Verificar página por página: se o texto foi cortado, se os números nos gráficos são consistentes com a fonte de dados, se a semântica de cores é uniforme.

5.4 Entrega

Entregar três itens simultaneamente:

  1. Arquivo PPTX — Apresentação editável 16:9
  2. checks.json — Relatório de verificação de integridade estrutural (produzido por pptx_check, veredito deve ser pass)
  3. Script de Apresentação — Escrito diretamente no corpo do chat, formato conforme references/03-模型deApresentação.md, com tabela de alocação de tempo + plano de contingência para perguntas da liderança (≥6 grupos)

Armadilhas e Antipadrões

  • ❌ Começar falando de uma disputa de reclamação específica — sem a base operacional, o público não consegue sentir a gravidade
  • ❌ Apresentar uma lista interminável de números — apenas "quanto é", sem "por que" e "e daí"
  • ❌ Apenas relatar o valor do desvio, sem o responsável — não é possível gerar tarefas na reunião
  • ❌ Usar "fatores objetivos" como explicação — deve-se cair em eventos específicos
  • ❌ Não reportar o status das ações do mês anterior — o relatório perde o ciclo fechado
  • ❌ Relatar apenas um número para a taxa de arrecadação — deve-se decompor em período / acumulado / inadimplência antiga / antiguidade

Estrutura de Diretórios

ppt_skill/
├── SKILL.md                          # Este arquivo: Instruções do pipeline de cinco estágios
├── references/
│   ├── 01-模型deRelatório.md                # Estrutura de seis seções, controle de páginas, disciplina de expressão
│   ├── 02-模型deIndicadoreseAtribuição.md          # Tabela de critérios de indicadores, atribuição em três camadas, escolha de gráficos
│   └── 03-模型deApresentação.md                # Modelo de script página por página, alocação de tempo, plano de contingência para perguntas
├── assets/
│   └── Exemplo-Análise de Desempenho Mensal de Projeto Imobiliário.pptx
├── scripts/
│   └── build_deck.py                 # Script de geração (basta alterar DATA para reutilizar)
└── checks.json                       # Exemplo de relatório de verificação histórica (regenerado pelo pptx_check em tempo de execução)

Ferramentas de Capacidade das Quais Depende

CapacidadeLocalizaçãoUsoObrigatória
pptx_checktool/common/pptx_check_tool.pyVerificação estrutural do Estágio 5.2, produz checks.jsonObrigatória
LibreOfficePrograma externoVerificação visual do Estágio 5.3 (converter para PNG)Opcional, se não instalado, faz downgrade

pptx_check é uma ferramenta genérica independente desta skill, fornecida através do Centro de Capacidades:

from core.capability import CapabilityRouter
from tool.common.pptx_check_tool import PptxCheckTool

router = CapabilityRouter()
router.add_tool(PptxCheckTool())  # A skill e a ferramenta são registradas no mesmo nível

A skill não é uma Tool, portanto o registro usa add_skill (build_capability_router lida automaticamente), enquanto pptx_check é uma ferramenta, usa add_tool.

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Habilidades Relacionadas