{
 "grupo": "arquivos",
 "descricao": "Arquivos e documentos",
 "itens": [
  {
   "id": "arq-ler-pdf",
   "nome": "Ler PDF",
   "receita": "pdftotext -layout arq.pdf - ; para escaneado, OCR (tesseract)",
   "prova": "texto extraído amostrado"
  },
  {
   "id": "arq-imagem-converter",
   "nome": "Converter/redimensionar imagem",
   "receita": "magick in.png -resize 1200x out.webp; sips no macOS",
   "prova": "tamanho e dimensão conferidos"
  },
  {
   "id": "arq-video-ffmpeg",
   "nome": "Cortar/converter vídeo",
   "receita": "ffmpeg -ss ini -to fim -i in.mp4 -c copy out.mp4; reencode: -c:v libx264 -crf 23",
   "prova": "ffprobe da saída"
  },
  {
   "id": "arq-audio-extrair",
   "nome": "Extrair áudio",
   "receita": "ffmpeg -i v.mp4 -vn -acodec libmp3lame a.mp3",
   "prova": "duração igual à do vídeo"
  },
  {
   "id": "arq-renomear-lote",
   "nome": "Renomear em lote",
   "receita": "simule antes (echo mv ...); padrão claro; sem sobrescrever",
   "prova": "lista antes e depois"
  },
  {
   "id": "arq-organizar",
   "nome": "Organizar pasta",
   "receita": "proponha a estrutura; mova (não apague); registre o que foi onde",
   "prova": "árvore final"
  },
  {
   "id": "arq-duplicados",
   "nome": "Achar arquivos iguais",
   "receita": "compare por hash (shasum), não por nome",
   "prova": "grupos de hash iguais listados"
  },
  {
   "id": "arq-docx",
   "nome": "Ler/gerar Word",
   "receita": "pandoc a.docx -t markdown; gerar: pandoc a.md -o a.docx",
   "prova": "arquivo abre"
  },
  {
   "id": "arq-xlsx",
   "nome": "Ler/gerar Excel",
   "receita": "pandas.read_excel / openpyxl; fórmulas só com openpyxl",
   "prova": "abrir e conferir células"
  },
  {
   "id": "arq-markdown-pdf",
   "nome": "Markdown para PDF",
   "receita": "pandoc a.md -o a.pdf (ou navegador headless imprimindo HTML)",
   "prova": "PDF abre e páginas conferidas"
  },
  {
   "id": "arq-zip-seguro",
   "nome": "Descompactar com segurança",
   "receita": "unzip -l antes; extraia numa pasta nova; cuidado com ../ nos caminhos",
   "prova": "só arquivos esperados"
  },
  {
   "id": "arq-encoding",
   "nome": "Descobrir encoding",
   "receita": "file -I arq; iconv -f latin1 -t utf-8",
   "prova": "acentos corretos"
  },
  {
   "id": "arq-json-editar",
   "nome": "Editar JSON",
   "receita": "jq '.a.b = 1' in.json > out.json; nunca sed em JSON",
   "prova": "jq . valida"
  },
  {
   "id": "arq-yaml",
   "nome": "Validar YAML",
   "receita": "python3 -c \"import yaml,sys;yaml.safe_load(open(sys.argv[1]))\" arq",
   "prova": "sem exceção"
  },
  {
   "id": "arq-env",
   "nome": "Arquivo .env",
   "receita": "nunca no git; .env.example com chaves vazias; carregue na entrada",
   "prova": ".gitignore tem .env"
  },
  {
   "id": "arq-log-grande",
   "nome": "Ler log gigante",
   "receita": "tail -n 2000; rg -c por tipo; rg -C em torno do erro",
   "prova": "erro e contexto isolados"
  },
  {
   "id": "arq-ocr-imagem",
   "nome": "Texto de imagem",
   "receita": "tesseract img.png - -l por+eng",
   "prova": "texto amostrado"
  },
  {
   "id": "arq-screenshot",
   "nome": "Tirar print de página",
   "receita": "navegador headless (playwright screenshot URL arq.png) em 390 e 1280",
   "prova": "arquivos png vistos"
  },
  {
   "id": "arq-svg",
   "nome": "Otimizar SVG",
   "receita": "svgo in.svg -o out.svg; viewBox presente; sem script",
   "prova": "renderiza igual"
  },
  {
   "id": "arq-hash",
   "nome": "Conferir integridade",
   "receita": "shasum -a 256 arq; compare com o publicado",
   "prova": "hashes iguais"
  },
  {
   "id": "arq-backup",
   "nome": "Backup rápido",
   "receita": "rsync -a origem/ destino/; teste restaurar um arquivo",
   "prova": "arquivo restaurado abre"
  }
 ]
}
