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:

  1. operador é Pedro ou Rafael Rossetto
  2. caminho-raiz absoluto está acessível localmente (OneDrive sincronizado ou folder local equivalente)
  3. existe manifest.yaml ou aceita-se default (metadata-only, sem ignorar nada além de .tmp, ~$*, .DS_Store, Thumbs.db)
  4. 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

  1. ler agentes-core/screener/checklists/pre-scan.md e marcar cada item
  2. abrir diretório de execução em agentes-core/screener/outputs/<YYYY-MM-DD>_<root-slug>/
  3. registrar metadados da execução em manifest.lock.yaml no diretório (operador, root, timestamp ISO 8601, git commit do Screener)

Passo 2 — primeira passada (árvore só)

  1. invocar python3 scripts/inventory.py --tree-only --root "<caminho>" --out outputs/<...>/tree.json
  2. ler tree.json e listar todas as pastas que casam regex de pasta sensível
  3. 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
  4. obter confirmação do operador — para cada pasta sensível: varrer / pular / varrer-com-restricao

Passo 3 — varredura completa

  1. invocar python3 scripts/inventory.py --root "<caminho>" --manifest manifest.yaml --out outputs/<...>/inventory.json
  2. checar return code
  3. ler primeiras 50 linhas de inventory.json para sanity check
  4. confirmar contagens batem entre tree.json e inventory.json

Passo 4 — render dos relatórios

  1. invocar python3 scripts/render_md.py --inventory outputs/<...>/inventory.json --out-dir outputs/<...>/
  2. confirmar que todos os 7 arquivos .md foram gerados:
    • 00_sumario.md
    • 01_estrutura.md
    • 02_formatos.md
    • 03_areas/ (1 arquivo por pasta de primeiro nível)
    • 04_candidatos-dicionario.md
    • 05_anomalias.md
    • 06_glossario-observado.md
  3. 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

  1. ler agentes-core/screener/checklists/post-scan.md e marcar cada item
  2. atualizar agentes-core/screener/memory/context/conhecimento-onedrive-colliers.md com aprendizados estruturais (não conteúdo de arquivos)
  3. registrar a sessão em agentes-core/screener/memory/sessions/<YYYY-MM-DD>.md
  4. 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 cru
  • outputs/<YYYY-MM-DD>_<root-slug>/inventory.csv — mesmo em CSV
  • outputs/<YYYY-MM-DD>_<root-slug>/00_sumario.md — overview + curadoria
  • outputs/<YYYY-MM-DD>_<root-slug>/01_estrutura.md — árvore com volumes
  • outputs/<YYYY-MM-DD>_<root-slug>/02_formatos.md — distribuição de extensões
  • outputs/<YYYY-MM-DD>_<root-slug>/03_areas/<area>.md — um por pasta nível 1
  • outputs/<YYYY-MM-DD>_<root-slug>/04_candidatos-dicionario.md
  • outputs/<YYYY-MM-DD>_<root-slug>/05_anomalias.md
  • outputs/<YYYY-MM-DD>_<root-slug>/06_glossario-observado.md
  • outputs/<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.json e a soma dos 03_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.stat antes/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 4 na 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.

Ver também