---
name: pesquisa-academica
description: >
  Levanta DOIs, autores e referências peer-reviewed sobre um tema de psicologia.
  Substitui o Claude Project ad-hoc "Pesquisa Acadêmica para DOIs" trazendo a
  busca pra dentro do Cowork e adicionando cache SQLite local. Dispara quando
  o usuário pedir "levanta DOIs sobre X", "busca artigos sobre X", "preciso de
  referências de X", "monta a literatura sobre X", "achados recentes em X",
  "autores principais em X". Pode ser invocada por outras skills (fabrica-de-posts,
  fabrica-de-artigo) quando precisarem de referências adicionais no meio do
  fluxo. NÃO usa para verificar DOI individual já conhecido (use
  verify_citations.py) nem para criar conteúdo (use fabrica-de-posts ou
  fabrica-de-artigo).
---

# Pesquisa Acadêmica — DOIs e Referências para Posts e Artigos

<context>
Skill de busca bibliográfica focada em psicologia clínica, psicopatologia,
neuropsicologia e teoria. Substitui o Project ad-hoc trazendo dois ganhos:
invocação programática a partir de outras skills (sem trocar de ambiente) e
cache SQLite local de queries+DOIs já validados.

O dono do perfil é contextualista funcional, usa network approach (Borsboom)
e Process-Based Therapy (Hayes & Hofmann). Privilegiar literatura compatível
com esse framework não é viés, é alinhamento de tarefa. Quando o tema exige
literatura cognitivista clássica ou DSM-tradicional, citar mas marcar
distância teórica.
</context>

## Antes de começar

<required_reading>
1. Leia `/mnt/skills/user/regras-comuns/SKILL.md` — IRON RULES universais,
   regras de fabricação zero, hierarquia de evidência, distância A/B/C/D/E.
</required_reading>

<on_demand_reading>
- `references/fontes-prioritarias.md` quando o tema exigir literatura PT-BR
  ou autores específicos do grupo de pesquisa.
- `references/journal-list.md` quando o output precisar filtrar por journal.
</on_demand_reading>

## Fluxo (4 passos)

### Passo 1: Consultar cache local

Antes de qualquer busca web, consultar `cache/pesquisa.sqlite` via
`scripts/pesquisa.py`:

```bash
python3 scripts/pesquisa.py --query "<tema>" --check-cache
```

Output:
- `HIT` se query idêntica ou semanticamente equivalente foi feita nos
  últimos 30 dias. Retorna DOIs cacheados com score VERIFIED.
- `PARTIAL` se há queries adjacentes (overlap >= 60%) com DOIs reaproveitáveis.
- `MISS` se não há cache relevante.

Em HIT puro: pular para Passo 4 (output). Em PARTIAL: usar cache como base
e completar via Passo 2. Em MISS: ir direto para Passo 2.

Se `scripts/pesquisa.py` ou `cache/pesquisa.sqlite` não estiverem
disponíveis na sessão (instalação parcial da skill), tratar como MISS,
seguir direto ao Passo 2 e registrar `fonte: web_fresh` no output. Nunca
simular resultado de cache.

### Passo 2: Busca web triangulada

Para o termo de busca, executar em paralelo até três fontes:

1. **Consensus** (via MCP `Consensus:search`) — útil pra claims específicos
   com tamanho de efeito.
2. **PubMed** (via MCP `PubMed:search_articles`) — útil pra meta-análises e
   RCTs em psicopatologia.
3. **web_search** (Google Scholar, ResearchGate, sites de journal) — útil
   pra livros, capítulos e literatura cinza relevante.

Combinar resultados removendo duplicatas por DOI canônico.

### Passo 3: Verificação de DOI

Para cada DOI candidato, executar verificação determinística antes de
incluir no output via `verify_citations.py` (v3.1, Python stdlib + cache
SQLite; o script usa só `urllib` da biblioteca padrão, sem dependências
externas). O script é parte do ecossistema desde a integração do Academic
Research Skills (Cheng-I Wu, ARS v3.11.1, CC BY-NC, em 09-10/06/2026):
a mecânica de três classes (SUSTENTADA / NÃO SUSTENTADA / NÃO RESOLVÍVEL)
vem da ARS; o mapeamento pra quatro classes operacionais usadas aqui
(VERIFIED, LIKELY, UNRESOLVED, FABRICATED) é adaptação interna. Manter
atribuição ARS em qualquer derivado que reuse a lógica.

```bash
python3 /mnt/skills/user/pesquisa-academica/scripts/verify_citations.py --doi "10.xxxx/xxxxx" --json
```

Sem o script disponível, fazer verificação inline via web search direta
no resolver `https://doi.org/<doi>` e checagem de título contra Crossref.

Classificar cada DOI:
- `VERIFIED`: 4 sinais (Crossref + Semantic Scholar + título match + URL
  ativa) confirmam.
- `LIKELY`: 3 de 4 sinais.
- `UNRESOLVED`: 2 de 4. Marcar como `[DOI não verificado]` no output.
- `FABRICATED`: 0-1 sinal. Excluir.

Apenas DOIs `VERIFIED` ou `LIKELY` entram no output principal.

### Passo 4: Output e atualização do cache

Output estruturado:

```yaml
query: <string>
data: <ISO8601>
total_dois_encontrados: <int>
total_verificados: <int>
fonte: <cache_hit | cache_partial | web_fresh>

referencias:
  - doi: <string>
    autores: <string APA>
    ano: <int>
    titulo: <string>
    periodico: <string>
    tipo: <peer-reviewed | preprint | livro | capitulo>
    status_verificacao: <VERIFIED | LIKELY>
    distancia_clinica: <A | B | C | D | E>
    relevancia_tema: <string curta>
    n_amostral: <int ou null>
    tipo_estudo: <meta-analise | RCT | observacional | etc>
    tamanho_efeito: <string ou null>
    weird: <bool>
    sample_origem: <string>
    cache_origem: <bool>
    cache_data_validacao: <ISO8601 ou null>

referencias_excluidas:
  - doi_ou_titulo: <string>
    motivo: <string>

shortfall:
  ocorreu: <bool>
  motivo: <string ou null>
```

Após gerar output, atualizar cache:

```bash
python3 scripts/pesquisa.py --update-cache --query "<tema>" --output output.yaml
```

## Quando NÃO usar esta skill

- Quando o usuário pedir verificação de UM DOI específico → use
  `verify_citations.py` direto.
- Quando o usuário pedir leitura/síntese de fontes (não busca) → use
  NotebookLM no pipeline de posts ou `fabrica-de-artigo` modo REVISAO.
- Quando a busca for sobre tema fora de psicologia (ex: filosofia da
  ciência, neurociência teórica sem ponte clínica) → fazer busca direta
  via web_search sem cache local (cache é tema-psicologia).

## Cache: política de retenção

- Queries cacheadas têm TTL de 30 dias por padrão.
- DOIs com status `VERIFIED` têm TTL de 180 dias (DOI verificado raramente
  invalida em 6 meses).
- Cache é local em `cache/pesquisa.sqlite`. Backup semanal recomendado.
- `python3 scripts/pesquisa.py --vacuum` limpa entradas expiradas.

## Cardinal rule

DOI fabricado é falha crítica. Se a busca não retornar evidência forte,
retornar shortfall honesto via schema do `regras-comuns`. Preencher
output com referências fracas pra atingir N pedido propaga erro pra todo
o pipeline downstream.
