azure-spec-audit
Playbook operacional do agente azure-analytics-auditor: extrair texto com rastreabilidade de localização (página/aba/slide) de PDF, DOCX, XLSX, PPTX…
Skill by ThomazRossito
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/thomazrossito-azure-spec-audit
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, spreadsheets, presentations, testing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/azure-spec-audit
What's inside
- Skill name
azure-spec-audit- Description
- Playbook operacional do agente azure-analytics-auditor: extrair texto com rastreabilidade de localização (página/aba/slide) de PDF, DOCX, XLSX, PPTX, CSV/TXT/MD e auditar cada documento contra os 7 controles do Módulo B da Analytics on Microsoft Azure Specialization, produzindo coverage matrix com veredito e citação de evidência.
- License
- MIT
- Instructions
- 293 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (2)
- SKILL.md
- extract.py
SKILL.md (first lines)
# Skill — Auditoria da Analytics on Microsoft Azure Specialization (Módulo B)
> **Uso:** leia este playbook na primeira chamada da sessão. Ele define COMO extrair conteúdo
> dos documentos com rastreabilidade e COMO mapear cada trecho aos controles do Módulo B.
> A fonte normativa dos controles é a KB `kb/analytics-azure-spec/` — este skill é o "como fazer".
## Princípio fundamental: grounding com localização
Toda afirmação de "evidência encontrada" precisa apontar `arquivo › localização › trecho`. Para isso
a extração precisa preservar **número de página / aba / slide / linha**. Nunca audite a partir de
memória ou suposição — sempre extraia e cite.
## Passo 0 — Inventário do input
Liste os arquivos do diretório de input do usuário e classifique por extensão. Trate como auditáveis:
`.pdf .docx .xlsx .xls .pptx .csv .txt .md` **e imagens `.png .jpg .jpeg .bmp .tiff` (via OCR — ver Passo 1b)**.
Ignore lixo de sistema (`.DS_Store`, `Thumbs.db`). Para extensões realmente não suportadas (ex: `.msg`),
registre como ⚠️ Needs Review e siga.
```bash
find "<INPUT_DIR>" -type f \( -iname '*.pdf' -o -iname '*.docx' -o -iname '*.xlsx' \
-o -iname '*.xls' -o -iname '*.pptx' -o -iname '*.csv' -o -iname '*.txt' -o -iname '*.md' \
-o -iname '*.png' -o -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.bmp' -o -iname '*.tiff' \) \
-not -name '.DS_Store' | sort
```
## Passo 1 — Extração por formato (com localização)
> ⚠️ **Buffer-safe (crítico):** NUNCA use a tool `Read` em documento-fonte (PDF/PPTX/DOCX/XLSX/imagem)
> nem em qualquer arquivo > 512 KB — uma mensagem de tool > ~10 MB derruba o SDK
> (`max_buffer_size`). Extraia **sempre via Bash/Python**, escrevendo o resultado em `_work/` e
> imprimindo só resumos curtos no stdout (`{arquivo, chars, status}`). Trunque o texto por unidade
> (~3.000 chars) no índice. PDFs grandes: processe **página a página** (dpi 120–150), gravando
> incremental. Se algo falhar, PARE e reporte (não entre em loop). Veja R17/R18 do agente.
### Forma PADRÃO: use o extrator versionado (NÃO reescreva script de extração)
Há um extrator pronto, testado e rápido — **use-o sempre** em vez de gerar um script novo a cada run
(reinventar o script foi o que travou execuções anteriores):
```bash
pip install pdfplumber python-docx openpyxl python-pptx pymupdf pytesseract pillow --break-system-packages -q
python skills/analytics-azure-spec/azure-spec-audit/extract.py "<INPUT_DIR>" "<OUTPUT_DIR>/_work" --workers 8
# opcional: --lang por+eng (mais fiel ao PT, ~2x mais lento) | --max-pages 60
```
O extrator faz tudo de forma robusta: **dedup por hash** (pula arquivos idênticos), **OCR em paralelo
por arquivo** (abre cada PDF uma vez), **escrita incremental** em `<OUTPUT_DIR>/_work/parts/` +
`flat_index.json` (pequeno) + `manifest.json`, **dpi adaptativo** e **buffer-safe** (nada grande no
stdout). Acompanhe o progresso pelo stdout (`OCR k/N :: arquivo`).
Depois: trabalhe sobre `<OUTPUT_DIR>/_work/flat_index.json` (costuma ser dezenas de KB — pode `Read`),
ou faça `grep`/Bash nele. Veja `manifest.json` para status por arquivo (ok/duplicado/erro).
> O detalhe por formato abaixo é **referência/fallback** caso precise extrair um arquivo isolado — a
> rota normal é o `extract.py`.
Instalação manual de deps (fallback): `pip install pdfplumber python-docx openpyxl python-pptx pymupdf rapidocr-onnxruntime pillow --break-system-packages -q`
**PDF (texto por página):**
```python
import pdfplumber
with pdfplumber.open(path) as pdf:
for i, page in enumerate(pdf.pages, 1):
text = page.extract_text() or ""
# guarde (page=i, text) para rastrear "p. i"
```
**DOCX (parágrafos + headings + tabelas):**
```python
from docx import Document
doc = Document(path)
for p in doc.paragraphs:
# p.style.name identifica Heading 1/2... → use como "seção"
...
for t in doc.tables:
for row in t.rows:
... # texto de células
```
**XLSX (por aba + célula):**
```python
import openpyxl
wb = openpyxl.load_workbook(path, data_only=True, read_only=True)
for ws in wb.worksheets:
for row in ws.iter_rows():
for cell in row:
if cell.value is not None:
... # rastrear ws.title + cell.coordinate
```
**PPTX (por slide + shape):**
```python
from pptx import Presentation
prs = Presentation(path)
for i, slide in enumerate(prs.slides, 1):
for shape in slide.shapes:
if shape.has_text_frame:
... # rastrear "slide i"
```
**CSV/TXT/MD:** leitura direta; rastrear por número de linha.
> Dica de eficiência: gere um índice JSON intermediário `{arquivo: [{loc, texto}]}` e faça a busca
> por palavras-chave dos controles em cima dele — evita reprocessar e mantém a citação exata.
## Passo 1b — Imagens e PDFs escaneados (OCR é PADRÃO, não opcional)
Em auditorias reais, **a maior parte da evidência é visual**: screenshots do Azure Portal (Key Vault,
Data Lake, Databricks, Data Factory, grupos de acesso, DevOps, gráficos de custo) e PDFs exportados
como imagem. Tratar `.png .jpg .jpeg .bmp .tiff` e **PDFs sem texto extraível** com OCR é parte do
trabalho — **faça por padrão**, não pergunte se pode.
**Detecção de PDF-imagem:** se `extract_text()` somar ~0 caractere mas houver imagens embutidas,
o PDF é escaneado → rasterize e rode OCR.
**Stack resiliente (preferir pip puro — não exige `brew`):**
```bashFrom ThomazRossito/ai-data-agents, MIT.
More from ThomazRossito/ai-data-agents
- 0.543score
azure-devops-engineer
ThomazRossito
Playbook operacional do Azure DevOps (Repos, Pipelines, Boards, Artifacts, Test Plans) via MCP oficial microsoft/azure-devops-mcp.
SkillBFreshness: B★ 4Claude Code +9 - 0.495score
azure-pricing
ThomazRossito
Playbook conversational-first para o agent azure-cost-calculator construir cenários Azure (Foundry, AI Search, Fabric, OpenAI, Databricks) a partir de…
SkillCFreshness: C★ 4Claude Code +9 - 0.495score
databricks-genie-health-check
ThomazRossito
Playbook de 20 verificações em 5 dimensões para avaliar saúde, cobertura e qualidade de Genie Spaces no Databricks.
SkillCFreshness: C★ 4Claude Code +9
Signals
- Stars
- 4
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Jul 20, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ThomazRossito/ai-data-agents
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ThomazRossito
- 0.544score
databricks-spark-declarative-pipelines
ThomazRossito
Creates, configures, and updates Databricks Lakeflow Spark Declarative Pipelines (SDP/LDP) using serverless compute.
SkillCFreshness: C★ 32Claude Code +9 - 0.544score
databricks-execution-compute
ThomazRossito
Execute code and manage compute on Databricks.
SkillCFreshness: C★ 32Claude Code +9 - 0.543score
azure-devops-engineer
ThomazRossito
Playbook operacional do Azure DevOps (Repos, Pipelines, Boards, Artifacts, Test Plans) via MCP oficial microsoft/azure-devops-mcp.
SkillBFreshness: B★ 4Claude Code +9 - 0.539score
databricks-ai-functions
ThomazRossito
Use Databricks built-in AI Functions (ai_classify, ai_extract, ai_summarize, ai_mask, ai_translate, ai_fix_grammar, ai_gen, ai_analyze_sentiment…
SkillCFreshness: C★ 32Claude Code +9 - 0.539score
databricks-bundles
ThomazRossito
Create and configure Declarative Automation Bundles (formerly Asset Bundles) with best practices for multi-environment deployments (CICD).
SkillCFreshness: C★ 32Claude Code +9 - 0.539score
databricks-vector-search
ThomazRossito
Patterns for Databricks Vector Search: create endpoints and indexes, query with filters, manage embeddings.
SkillCFreshness: C★ 32Claude Code +9
Cite this page
azure-spec-audit skill. Agent Mart. https://agentmart.dev/skills/thomazrossito-azure-spec-audit (last updated 2026-10-24)