Documenta projeto Power BI (PBIP) inteiro em markdown estruturado + HTML navegável (mini-site de doc). Use quando o usuário pedir "documenta esse projeto", "gera doc do power bi", "explica esse modelo", "preciso entregar handoff", ou apontar uma pasta PBIP pra mapeamento descritivo (não auditoria).
npx skills add https://github.com/xperiun/claude-code-powerbi-skills --skill pbi-doc
> 📦 Distribuída publicamente: github.com/xperiun/claude-code-powerbi-skills — pasta claude-code/pbi-doc/ (skill nativa) + claude-web/pbi-doc.zip (upload no Claude.ai). Mudança aqui exige sincronizar lá: atualizar pasta + regenerar ZIP (Python zipfile, ver CLAUDE.md) + commit + bump CHANGELOG. Repo é open-source, leiame público — evitar referências internas (Xperiun-only) na SKILL.md.
Gera documentação completa de um projeto Power BI (formato PBIP) em duas formas:
A doc descreve o que existe no modelo — tabelas, colunas tipadas, medidas com DAX explicadas em PT, relacionamentos com cardinalidade, grafo de dependências entre medidas. Não opina sobre qualidade (essa é função da /pbi-modelo-review).
.pbix de N tabelas e M medidas e precisa entender rápidoNão usar quando:
/pbi-modelo-review/pbi-dax-create/pbi-export-medidas).SemanticModel/ e .Report/. Se o usuário só tem .pbix, instruir conversão antes:Power BI Desktop → File → Save as → Power BI Project (.pbip).tmdl (via filesystem ou upload — ver "Modos de execução" abaixo)Se faltar PBIP, retornar mensagem curta:
> Esse projeto ainda está em .pbix (binário). Pra eu documentar, salva como Power BI Project: File → Save as → Power BI Project (.pbip). Vira uma pasta de texto e aí eu consigo ler. Avisa quando converter.
E encerrar — não tentar nada.
A skill detecta automaticamente o ambiente e adapta input/output:
.SemanticModel/.tmdl de ./SemanticModel/./_docs/index.html + 5 markdowns (00-overview.md a 04-dependencias.md) na raiz do projeto Power BI> Pra eu documentar, anexe nesse chat:
> - Os arquivos .tmdl da pasta SemanticModel/definition/ (model.tmdl, relationships.tmdl, expressions.tmdl se houver)
> - Os arquivos da pasta SemanticModel/definition/tables/ (1 .tmdl por tabela, excluindo as auto-date LocalDateTable_* e DateTableTemplate_*)
>
> Pode arrastar individualmente ou zipar a pasta SemanticModel/ e subir 1 ZIP.
Verificar se a pasta .SemanticModel/ é acessível via filesystem:
Se ambíguo, perguntar uma vez:
> Você tá rodando isso no Claude Code (CLI/IDE com acesso à pasta) ou no claude.ai (web)? Pra Code eu leio a pasta sozinho; pra web preciso que você suba os arquivos.
| Aspecto | Code | Web |
|---|---|---|
| Setup | 1× (instala skill) | 0 (só sobe arquivo) |
| Por uso | comando único | anexar TMDL toda vez |
| Modelo grande (>200 medidas) | OK | pode estourar contexto Free |
| Persistência | salva em disco | só na conversa (baixar artifact) |
| Custo | tokens Claude Code | tokens claude.ai (Free incluído) |
tudo)tudo → todos os 5 arquivossó medidas → só 02-medidas.md (útil pra checar mudanças após refator)só tabelas → só 01-tabelas.mdsó relacionamentos → só 03-relacionamentos.mdtabela X → restringe descrição às tabelas específicas (separadas por vírgula)Se não especificado, perguntar uma vez:
> Documento o projeto inteiro (5 arquivos) ou prefere algo específico — só medidas, só relacionamentos, ou tabelas específicas?
.SemanticModel/.tmdl em ./SemanticModel/tables/ (excluir LocalDateTable_* e DateTableTemplate_* — são auto-geradas, não fazem parte da doc)model.tmdl, relationships.tmdl, expressions.tmdl (se existir).tmdl de tabelasLer templates em templates/ e preencher com dados reais. Salvar em ./_docs/ na raiz do projeto Power BI:
| Arquivo | Conteúdo |
|---|---|
| _docs/00-overview.md | Sumário (N tabelas, N medidas, N relacionamentos, fontes, propósito inferido) |
| _docs/01-tabelas.md | Cada tabela: descrição, granularidade, colunas tipadas, source M (resumo) |
| _docs/02-medidas.md | Agrupadas por displayFolder. Cada uma: nome, DAX, explicação PT linha-a-linha |
| _docs/03-relacionamentos.md | Lista detalhada + diagrama em ASCII art (matriz simples) |
| _docs/04-dependencias.md | Grafo: árvore "medida X → usa Y → usa Z" + lista reverse "Y é usada por: A, B, C" |
🚨 REGRA INVIOLÁVEL — usar templates/relatorio.html LITERAL:
templates/relatorio.html — esse arquivo já tem todo o CSS, todo o HTML estrutural, todos os tokens DS v4 (Bebas Neue, accent-gold, gold-grid + beams animados, orb-v2 elipses blue/purple, riscas section+section::before, brackets), todo o JS de scroll spy/busca. CSS são ~600 linhas inline + HTML completo com gold-grid, sidebar, topbar, sections.{{...}} pelos valores reais derivados dos .tmdl. Lista completa dos placeholders está em references/escopo.md desta skill (seção "Placeholders do templates/relatorio.html"). Todos os blocos {{...}}_HTML são gerados pelo Claude com base no inventário do modelo.--accent-gold-bright #E8C9A0, --accent-glow #7099FF, --neon-magenta #C47FFF, etc.)<div class="gold-grid">, os <div class="section-orb">, ou qualquer ornamento decorativo do template<!-- ... --> — comentários são instruções pra você, não conteúdo a substituir. Mantém como tá.<style>...</style> ou <script>...</script> — CSS e JS ficam intocados.ã, ç, é, á, õ, ê, í, ú) e símbolos especiais (├, └, ─, →, ↔, ↑, ↓, ⚠, ·, —) devem aparecer como caracteres reais UTF-8, NÃO como sequências escapadas/HTML entities/mojibake.dependências, └─, →, Incomparáveisdependências, âââ, â, Incomparáveisdependênciasã, â, é), o parser HTML pode quebrar e o resto da página renderiza como texto cru. Refaz garantindo UTF-8../_docs/index.html (modo Code) ou retornar como artifact (modo Web).#0D0C0E quase preto · gold-grid de papel pautado dourado animado caindo · orbs azul/roxo em cada seção · risca dourada entre seções · cards var(--gradient-surface) com border --border-faint · números em Bebas Neue gold · DAX com syntax highlight via spans .k .f .s .c. Estilo "editorial premium dark" — não dashboard genérico tipo Vercel/Stripe.#f5a623 (laranja) ou #7c6af7 (roxo genérico), ou fonte 'Segoe UI' → ignorou o template, refaz.ã ou â → encoding quebrado, refaz com UTF-8 puro.Mensagem curta:
_docs/index.html pra ver navegável"[raiz do projeto Power BI do usuário]/
├── SemanticModel/ ← input (não tocar)
├── Report/ ← input (não tocar)
└── _docs/ ← OUTPUT da skill
├── 00-overview.md
├── 01-tabelas.md
├── 02-medidas.md
├── 03-relacionamentos.md
├── 04-dependencias.md
└── index.html ← versão visual standalone
| Cenário | O que fazer |
|---|---|
| Sem .SemanticModel/ | Mensagem de pré-requisito (PBIP), encerra |
| Pasta _docs/ já existe | Sobrescrever (idempotente) — avisar no chat |
| Modelo gigante (>200 medidas) | Avisar tempo + processar em chunks |
| Tabelas auto-date (LocalDateTable_*, DateTableTemplate_*) | Excluir da doc — são tabelas-fantasma, não fazem parte do modelo intencional |
| Medida com DAX muito complexo (>30 linhas) | Mostrar DAX completo + explicar em blocos (se / agg / contexto) |
| Modelo sem nenhuma descrição declarada | Inferir propósito a partir de naming + estrutura, mas sinalizar "descrição inferida (não há description: declarado)" |
Estilo Xperiun:
Exemplos de bom vs ruim:
❌ Ruim: "A medida 'Faturamento' calcula o resultado da multiplicação entre QtdItens e PrecoUnitario."
✅ Bom: "Faturamento — multiplica quantidade × preço linha-a-linha em fVendas e soma o total. É a medida-mãe: várias outras (Margem Bruta, %YoY, etc) dependem dela."
_docs/.SemanticModel/ ou .Report/ — somente leituraHTML tem footer fixo:
Branding sempre Xperiun.
Avisar se >5min esperados.
v0.1 — protótipo interno Xperiun OS. Quando estabilizar, vira pacote no repo público xperiun/claude-code-powerbi-skills (lead magnet).
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Replace with description of the skill and when Claude should use it.
Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
This skill should be used when the user wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
Use when creating new skills, editing existing skills, or verifying skills work before deployment
Take xperiun/pbi-doc from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.