Skill — folder-inventory
Skill principal do Screener. Faz a varredura completa de uma pasta-raiz e produz os 7 relatórios padrão + JSON cru.
Quando aplicar
Triggers:
- “inventariar a pasta X”, “varrer pasta X”, “rodar Screener em X”
- “fazer o mapa do OneDrive da Colliers”
- “quero saber o que tem na pasta X”
- “preciso entender como a área Y se organiza”
- nova execução agendada de re-scan periódico
Não aplicar quando:
- o operador quer ler conteúdo de um arquivo específico (use ferramenta apropriada, não esta skill)
- o operador quer modificar ou organizar arquivos (Screener é read-only por princípio)
- a pasta-raiz está fora do OneDrive Colliers ou de área autorizada por Pedro
Pré-condições
Antes de iniciar, confirmar com o operador:
- operador é Pedro ou Rafael Rossetto
- caminho-raiz absoluto está acessível localmente (OneDrive sincronizado ou folder local equivalente)
- existe
manifest.yamlou aceita-se default (metadata-only, sem ignorar nada além de.tmp,~$*,.DS_Store,Thumbs.db) - operador entende que pastas com nome sensível (RH, Folha, Diretoria, Confidencial, etc) vão ser flagged e exigirão confirmação
Procedimento
Passo 1 — pré-scan
- ler
agentes-core/screener/checklists/pre-scan.mde marcar cada item - abrir diretório de execução em
agentes-core/screener/outputs/<YYYY-MM-DD>_<root-slug>/ - registrar metadados da execução em
manifest.lock.yamlno diretório (operador, root, timestamp ISO 8601, git commit do Screener)
Passo 2 — primeira passada (árvore só)
- invocar
python3 scripts/inventory.py --tree-only --root "<caminho>" --out outputs/<...>/tree.json - ler
tree.jsone listar todas as pastas que casam regex de pasta sensível - apresentar ao operador:
- número total de pastas no nível 1
- número total de pastas no nível 2
- lista de pastas sinalizadas como sensíveis
- obter confirmação do operador — para cada pasta sensível:
varrer / pular / varrer-com-restricao
Passo 3 — varredura completa
- invocar
python3 scripts/inventory.py --root "<caminho>" --manifest manifest.yaml --out outputs/<...>/inventory.json - checar return code
- ler primeiras 50 linhas de
inventory.jsonpara sanity check - confirmar contagens batem entre
tree.jsoneinventory.json
Passo 4 — render dos relatórios
- invocar
python3 scripts/render_md.py --inventory outputs/<...>/inventory.json --out-dir outputs/<...>/ - confirmar que todos os 7 arquivos
.mdforam gerados:00_sumario.md01_estrutura.md02_formatos.md03_areas/(1 arquivo por pasta de primeiro nível)04_candidatos-dicionario.md05_anomalias.md06_glossario-observado.md
- abrir cada um e validar frontmatter
Passo 5 — curadoria
Adicionar ao 00_sumario.md, na seção “leitura do Screener”:
- 3 a 7 hipóteses sobre como o OneDrive está organizado (por imóvel, por cliente, por contrato, por área, por período)
- cada hipótese com 3+ exemplos concretos como evidência
- 3 a 5 perguntas específicas para fazer à Colliers
- 3 a 5 candidatos-fortes para dicionário de dados (planilhas que parecem ser base downstream do PowerBI), copiados de
04_candidatos-dicionario.md
Passo 6 — pós-scan
- ler
agentes-core/screener/checklists/post-scan.mde marcar cada item - atualizar
agentes-core/screener/memory/context/conhecimento-onedrive-colliers.mdcom aprendizados estruturais (não conteúdo de arquivos) - registrar a sessão em
agentes-core/screener/memory/sessions/<YYYY-MM-DD>.md - se for re-execução, gerar diff:
python3 scripts/inventory.py --diff <prev-inventory.json> <inventory.json> --out outputs/<...>/diff.md
Outputs esperados
outputs/<YYYY-MM-DD>_<root-slug>/inventory.json— inventário cruoutputs/<YYYY-MM-DD>_<root-slug>/inventory.csv— mesmo em CSVoutputs/<YYYY-MM-DD>_<root-slug>/00_sumario.md— overview + curadoriaoutputs/<YYYY-MM-DD>_<root-slug>/01_estrutura.md— árvore com volumesoutputs/<YYYY-MM-DD>_<root-slug>/02_formatos.md— distribuição de extensõesoutputs/<YYYY-MM-DD>_<root-slug>/03_areas/<area>.md— um por pasta nível 1outputs/<YYYY-MM-DD>_<root-slug>/04_candidatos-dicionario.mdoutputs/<YYYY-MM-DD>_<root-slug>/05_anomalias.mdoutputs/<YYYY-MM-DD>_<root-slug>/06_glossario-observado.mdoutputs/<YYYY-MM-DD>_<root-slug>/manifest.lock.yaml
Limites duros
- nunca abre conteúdo de arquivo
- nunca escreve/modifica/move/deleta arquivo no OneDrive
- nunca passa conteúdo de arquivo da Colliers para LLM, MCP ou qualquer serviço externo
- nunca varre pasta sensível sem confirmação registrada
- nunca infere fato sem evidência citada (3+ exemplos)
Regras de qualidade
Antes de fechar a skill:
- contagens batem entre
inventory.jsone a soma dos03_areas/*.md? - todas as pastas sensíveis estão registradas em
05_anomalias.md? - todas as inferências estão marcadas como
hipótese? - nenhum arquivo do OneDrive teve atime ou mtime alterado? (confirmar com
os.statantes/depois — script faz isto) - nenhum conteúdo de arquivo apareceu nos relatórios?
Falhas conhecidas
- OneDrive não sincronizou. A pasta-raiz aparece com 0 itens. Solução: pedir ao operador para abrir o Finder/Explorer, navegar até a raiz e aguardar a indicação de sync completo.
- Pasta com >100k arquivos. Inventário fica >50MB. Solução: usar
--max-depth 4na primeira passada, depois aprofundar pasta a pasta. - Cloud-only puro. Pasta tem 100% placeholders. O inventário ainda funciona (metadata via filesystem do OneDrive), mas algumas datas podem ser de sync e não de modificação real. Marcar em
05_anomalias.md. - Caracteres especiais no caminho. macOS NFD vs NFC pode quebrar matching. Script normaliza para NFC.