# ABNT — Cross-check de Citações e Referências

> Validador cruzado de citações no texto contra a lista de referências em trabalhos acadêmicos brasileiros (ABNT NBR 10520:2023 e NBR 6023:2025). Detecta citações órfãs, referências não citadas, divergência de ano, grafia inconsistente de autor, apud quebrado e citação direta sem página. Produz um relatório Markdown estruturado de não-conformidades antes da submissão à banca, periódico ou orientador.



Tags: abnt, citacoes, referencias, nbr-6023, nbr-10520, validador, academico, pt-BR


## Example Prompts

- Auditar as citações e referências do meu TCC em ABNT antes da banca
- Verificar se todas as obras citadas no texto estão na lista de referências
- Existe alguma referência na bibliografia que eu não cito no texto?
- Conferir se os anos das citações batem com os das referências
- Validar os apud do meu artigo científico
- Verificar se a citação de conteúdo gerado por IA tem referência correspondente na lista

URL: https://rakenne.app/skills/br-abnt-citacao-cross-check/index.md

Try this skill: https://rakenne.app/a/?skill=br-abnt-citacao-cross-check



## Overview

Validador cruzado (não-gerador) que cruza as **citações no corpo do texto** com a **lista de referências** de um TCC, dissertação, tese ou artigo científico em ABNT e devolve um relatório estruturado de não-conformidades — pronto para revisão pré-banca, pré-submissão a periódico ou conferência por bibliotecário.

Complementa a skill `br-abnt-referencias-citacoes` (que valida cada entrada isoladamente conforme NBR 6023:2025 e NBR 10520:2023). Aqui o foco é a **coerência entre texto e lista**: um trabalho pode ter referências bem formatadas e ainda assim conter citações sem entrada correspondente, ou entradas que nunca são citadas.

## O que é detectado

Sete tipos de não-conformidade, separados por severidade:

| # | Tipo | Severidade |
|---|------|------------|
| 1 | **Citação órfã** — chamada no texto sem entrada correspondente na lista | crítica |
| 2 | **Referência não citada** — entrada na lista nunca aparece no texto | crítica |
| 3 | **Divergência de ano** — mesmo autor citado com ano X, referência tem ano Y | crítica |
| 4 | **Grafia de autor inconsistente** — variação para além de acentuação (Levenshtein ≤ 2, mesmo ano) | aviso |
| 5 | **apud quebrado** — autor intermediário ausente, ou obra original listada indevidamente | crítica |
| 6 | **Citação direta sem página** — trecho entre aspas com chamada sem `p. XX` | aviso |
| 7 | **Ambiguidade de letra distintiva** — duas obras do mesmo autor/ano na lista sem `a`/`b` | aviso |

A skill **não corrige nada**: reporta a não-conformidade, oferece sugestões e aguarda decisão do usuário antes de editar o texto.

## Example Conversation

> **You:** Terminei meu TCC e quero auditar a bibliografia antes da banca. Pode rodar um cross-check em `output/tcc.md`?
>
> **Agent:** Vou rodar a tool `cross_check_citacoes_referencias` no documento. Ela extrai todas as citações no padrão autor-data (parentéticas e in-text, incluindo apud e multi-obra) e cruza com as entradas da seção `## Referências`.
>
> *(reads `output/tcc.md`, runs `cross_check_citacoes_referencias` with the contents)*
>
> Resultado do cross-check:
>
> - **42 citações** detectadas no texto
> - **38 entradas** na lista de referências
> - **38/42 citações cobertas (90%)**
> - **6 não-conformidades** (críticas: 4, avisos: 2)
>
> Os pontos mais graves:
>
> 1. **Citação órfã** (linha 87): `(MOREIRA, 2019)` — não há nenhum Moreira de 2019 na lista de referências. Você consultou essa obra? Se sim, posso te ajudar a formatar a entrada com a skill `br-abnt-referencias-citacoes`. Se não, talvez seja melhor remover a citação.
>
> 2. **Divergência de ano** (linha 142): texto cita `(SILVA, 2021, p. 45)`, mas na lista a entrada de Silva está datada de **2020**. Provavelmente um typo — qual é o ano correto?
>
> 3. **apud quebrado** (linha 198): você cita `(BACHELARD, 1938 apud JAPIASSU, 1992, p. 17)` mas o **Japiassu, 1992** (a obra que você efetivamente leu) não está na lista. A NBR 10520:2023 §6.1.2 exige que apenas a obra consultada seja referenciada.
>
> 4. **Referência não citada** (linha 312 da lista): `PESSOA, F. Mensagem. 1934.` — está na bibliografia mas você nunca cita Pessoa no texto. Remover, ou faltou citar?
>
> Os 2 avisos são de menor urgência:
>
> - linha 156: `"a pesquisa é um processo metódico" (SEVERINO, 2017)` — citação direta (entre aspas) sem indicação de página. Acrescentar `p. XX`.
> - linha 67: grafia inconsistente — você cita `(SOUZA, 2022)` mas a referência é de `SOUSA, João Pedro` (distância ortográfica 1, mesmo ano). Conferir qual é o sobrenome correto.
>
> Quer que eu escreva o relatório completo em `output/citacao-cross-check-report.md`?
>
> **You:** Sim, escreve o relatório. E sobre o Moreira — eu consultei mesmo. Era uma resenha que vi no Google Scholar. Pode adicionar à lista?
>
> **Agent:** Vou escrever o relatório primeiro.
>
> *(writes `output/citacao-cross-check-report.md` with the full markdown report)*
>
> Para adicionar a entrada do Moreira preciso de alguns dados:
>
> - Nome completo do autor (sobrenome + prenome)
> - Título do trabalho
> - Tipo: é um artigo de periódico, capítulo de livro, livro, ou outro?
> - Local, editora/periódico, ano (2019, já confirmado)
> - Se for online: URL e data de acesso
>
> Quando você me passar isso, eu uso `formatar_referencia` (da skill `br-abnt-referencias-citacoes`) para gerar a entrada conforme NBR 6023:2025 e adiciono na lista. Depois rodamos o cross-check de novo para confirmar que a não-conformidade saiu.
>
> **You:** É um artigo: Moreira, A. F. B. "Currículo, cultura e formação de professores". Educar em Revista, n. 17, p. 39-52, 2019.
>
> **Agent:** Perfeito. Formato:
>
> > MOREIRA, Antonio Flavio Barbosa. Currículo, cultura e formação de professores. **Educar em Revista**, Curitiba, n. 17, p. 39-52, 2019.
>
> Aviso: o artigo é de periódico mas você não me passou DOI nem URL. A NBR 6023:2025 recomenda DOI quando disponível — vale procurar no portal da revista. Posso adicionar a entrada como está (com placeholder `[DOI a confirmar]`) e te avisar para checar?

## Sample Output Excerpt

Trecho de um relatório `output/citacao-cross-check-report.md` gerado pela skill após rodar `cross_check_citacoes_referencias` no fixture de regressão (TCC sintético com 7 não-conformidades plantadas — uma por categoria).

---

# Cross-check de citações e referências — relatório

**Documento**: `output/tcc.md`
**Data**: 2026-05-10
**Norma**: ABNT NBR 10520:2023 + NBR 6023:2025

## Resumo

- Citações detectadas no texto: **8**
- Entradas na lista de referências: **9**
- Citações cobertas pela lista: **7/8 (88%)**
- Não-conformidades: **6** (críticas: 4, avisos: 2)

## Não-conformidades

### 1. Citações órfãs (críticas)

| # | Linha | Item | Detalhe | Sugestão |
|---|-------|------|---------|----------|
| 1 | 7 | `Moreira (2019)` | Citação MOREIRA, 2019 sem entrada correspondente na lista de referências. | Adicione a referência completa à lista, ou remova a citação se a obra não tiver sido efetivamente consultada. |

### 2. Referências não citadas (críticas)

| # | Linha | Item | Detalhe | Sugestão |
|---|-------|------|---------|----------|
| 1 | 34 | `PESSOA, Fernando. **Mensagem**. Lisboa: Parceria António Maria Pereira, 1934.` | Entrada na lista de referências sem citação correspondente no texto: PESSOA, 1934. | Remova a entrada da lista, ou cite a obra no texto se for relevante. |

### 3. Divergências de ano (críticas)

| # | Linha | Item | Detalhe | Sugestão |
|---|-------|------|---------|----------|
| 1 | 13 | `Silva (2021, p. 45)` | Texto cita SILVA, 2021 mas a referência correspondente está datada de 2020. | Corrija o ano na citação ou na referência. Verifique a fonte original. |

### 4. Grafia de autor inconsistente (avisos)

| # | Linha | Item | Detalhe | Sugestão |
|---|-------|------|---------|----------|
| 1 | 18 | `(SOUZA, 2022)` | Citação SOUZA ≠ referência SOUSA (distância ortográfica baixa, mesmo ano). | Unifique a grafia. Atenção a acentos, hífens e abreviações. |

### 5. apud — autor intermediário ausente ou obra original listada

| # | Linha | Item | Detalhe | Sugestão |
|---|-------|------|---------|----------|
| 1 | 22 | `(BACHELARD, 1938 apud JAPIASSU, 1992, p. 17)` | apud quebrado: autor intermediário JAPIASSU (1992) não está na lista de referências. | Adicione a obra consultada (JAPIASSU, 1992) à lista. A NBR 10520:2023 §6.1.2 exige que apenas a obra consultada (intermediária) seja referenciada. |

### 6. Citação direta sem página (avisos)

| # | Linha | Item | Detalhe | Sugestão |
|---|-------|------|---------|----------|
| 1 | 26 | `(SEVERINO, 2017)` | Trecho entre aspas (A pesquisa científica é um processo metódico...) seguido de citação sem indicação de página. | Citação direta deve incluir página: ex. '(SILVA, 2020, p. 15)'. |

### 7. Ambiguidade de letra distintiva (avisos)

| # | Linha | Item | Detalhe | Sugestão |
|---|-------|------|---------|----------|
| 1 | 30 | `(SILVA, 2020)` | Há 2 entradas para SILVA, 2020 na lista. A NBR 10520 exige letra distintiva (a, b, ...) na citação para desambiguar. | Adicione letra distintiva à citação (SILVA, 2020a / SILVA, 2020b ...) e às referências correspondentes. |

## Observações

- Falsos-positivos podem ocorrer para entidades citadas por sigla (ex.: `(ABNT, 2025)` cuja referência começa por `ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS`). Adicione a sigla entre parênteses no início da referência, ou ignore o aviso após verificação manual.
- Citações diretas longas (recuo de 4 cm, sem aspas) não são analisadas pelo heurístico de "citação direta sem página".
- Comunicação pessoal pode legitimamente não constar da lista (NBR 10520:2023 §6.3.4). Conteúdo gerado por IA, ao contrário, **deve** ter entrada na lista conforme NBR 6023:2025 seção 9.

<!-- /excerpt -->

## Extension Tools

A skill registra uma única ferramenta TypeScript determinística — sem chamadas externas e sem consultar LLM para a decisão de match:

**`cross_check_citacoes_referencias`** — recebe o texto do documento (Markdown) e, opcionalmente, a lista de referências em separado. Executa três fases:

### Fase 1 — Extração de citações

Três regex coordenadas varrem o texto:

- **Parentéticas** — `(SILVA, 2020, p. 15)`, `(GIL, 2017; SEVERINO, 2017)` (multi-obra), `(SILVA, 2018, 2020, 2022)` (multi-ano), `(SOUZA et al., 2022)`, `(MARCONI; LAKATOS, 2017)` (co-autoria de uma única obra detectada quando apenas o último segmento tem ano).
- **In-text** — `Severino (2017, p. 42)`, `Marconi e Lakatos (2017)`, `Souza et al. (2022)`. Stopwords como `Em`, `Para`, `Segundo`, `Como`, `Conforme` são filtradas para evitar falsos-positivos.
- **apud** — `(BACHELARD, 1938 apud JAPIASSU, 1992, p. 17)` produz duas entradas: a original (sem exigência de estar na lista) e a intermediária (que deve estar).

Entidades multi-token como `(SÃO PAULO, 2023)` ou `(BANCO CENTRAL DO BRASIL, 2024)` são suportadas. Para cada citação a tool registra também o trecho entre aspas precedente (quando houver) — usado depois para flagar citação direta sem página.

### Fase 2 — Extração de referências

Localiza a seção `## Referências` (ou `## Referências bibliográficas`, ou `## Bibliografia` com aviso) e quebra em entradas por parágrafo. Cada entrada é classificada por:

- **Autoria pessoal** — primeiro bloco em CAIXA ALTA seguido de vírgula (`GIL, Antonio Carlos...`).
- **Entidade coletiva** — bloco em CAIXA ALTA opcionalmente seguido de qualificador entre parênteses, depois ponto (`ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS.`, `SÃO PAULO (Município).`).
- **Ano** — primeiro número de 4 dígitos `19xx` ou `20xx`, com letra distintiva opcional (`2020a`).

Entradas que não inicia com nenhum dos dois padrões são ignoradas com aviso de parsing — evita ruído de cabeçalhos, notas de rodapé ou texto de transição.

### Fase 3 — Política de match em cascata

Para cada citação extraída, a tool tenta casar com a lista de referências em ordem de prioridade:

1. **Match exato por sobrenome normalizado + ano** — único candidato → casada. Múltiplos candidatos com letra distintiva → casa pela letra; sem letra → reporta **ambiguidade**.
2. **Match por sobrenome (ano divergente)** — mesmo autor, ano diferente → reporta **divergência de ano** (crítica).
3. **Fuzzy match por ano (sobrenome divergente)** — Levenshtein ≤ 2 sobre os sobrenomes normalizados, mesmo ano → reporta **grafia inconsistente** (aviso). Acentos são absorvidos pela normalização, então `JAPIASSÚ` vs `JAPIASSU` é considerado match exato.
4. **Nenhum match** — reporta **citação órfã** (crítica), ou **apud quebrado** se a citação for o intermediário de uma expressão apud.

Para cada referência da lista que nunca tenha sido casada com alguma citação: reporta **referência não citada**.

A normalização de sobrenomes faz lowercase + remoção de diacríticos (NFD strip) + remoção de não-letras. `SÃO PAULO` → `saopaulo`, `JAPIASSÚ` → `japiassu`, `D'AMBROSIO` → `dambrosio`.

### Saída

A tool devolve:

- `nao_conformidades` — array tipado com `{ tipo, citacao_ou_referencia, detalhe, sugestao, linha, severidade }`.
- `resumo` — contagens (citações detectadas, referências detectadas, % cobertura, críticas, avisos).
- `relatorio_markdown` — relatório completo pronto para escrever em `output/citacao-cross-check-report.md`.
- `avisos_parsing` — entradas da lista de referências que foram ignoradas por não casarem com nenhum dos formatos esperados.

### Limitações conhecidas (documentadas)

- **Siglas de entidades**: a tool não resolve `(ABNT, 2025)` para `ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS` automaticamente — reporta como órfã e recomenda adicionar a sigla entre parênteses no início da referência (`ASSOCIAÇÃO ... (ABNT). ...`). Trade-off intencional: melhor um falso-positivo silenciável do que um falso-negativo silencioso.
- **Citações em notas de rodapé**: TCCs em humanidades e direito frequentemente usam notas numeradas. Se as notas não estiverem em texto inline Markdown, suas citações não são analisadas.
- **Citações diretas longas** (recuo de 4 cm, sem aspas) não disparam o heurístico de "citação direta sem página".
- **Comunicação pessoal** (NBR 10520:2023 §6.3.4) e citações de entrevista presencial podem legitimamente não constar da lista — marque como falso-positivo após confirmação com o autor.

A skill validada por 9 testes automatizados (`extension.test.ts`) cobre cada uma das 7 categorias de não-conformidade, o happy path (zero achados) e o caminho de erro (lista de referências ausente).

## Getting Started

A skill `br-abnt-citacao-cross-check` é instalada com dependência automática em `br-abnt-referencias-citacoes` — a partir dela, qualquer correção sugerida no relatório (adicionar uma referência, refazer uma citação apud, formatar uma entrada de IA conforme NBR 6023:2025 seção 9) pode ser executada na mesma conversa.

**Pré-requisitos para o cross-check funcionar bem:**

1. **Documento em Markdown** — TCC, dissertação, tese ou artigo, geralmente em `output/tcc.md` ou `output/artigo.md`.
2. **Seção de referências detectável** — um cabeçalho `## Referências` (ou `## Bibliografia`, com aviso) marca o início da lista. A skill encerra a lista no próximo cabeçalho de mesmo nível ou no fim do arquivo.
3. **Entradas no formato ABNT NBR 6023:2025** — cada referência deve começar com o sobrenome do autor em CAIXA ALTA seguido de vírgula, ou com o nome de uma entidade coletiva em CAIXA ALTA seguido de ponto.

**Quando usar:**

- Auditoria pré-banca de TCC, dissertação ou tese.
- Conferência pré-submissão a periódico ou evento.
- Revisão por orientador, bibliotecário ou pesquisador.
- Validação de bibliografia em texto migrado entre gerenciadores de referência (Zotero, Mendeley) — útil para detectar perdas durante exportação.

**Quando NÃO usar:**

- Para **formatar** uma nova referência ou citação isolada — use `br-abnt-referencias-citacoes` (ferramentas `validar_referencia_abnt`, `validar_citacao_abnt`, `formatar_referencia`).
- Para verificar se a **paráfrase reflete o conteúdo** da fonte original — esse é o trabalho da skill irmã `citation-source-fidelity`.
- Para estilos não-ABNT (APA, Vancouver, IEEE).

**Confirme com a biblioteca da IES** qual edição da NBR 6023 a instituição adotou. Para o cross-check estrutural a diferença entre 6023:2018 e 6023:2025 é irrelevante na maioria dos casos — a exceção é conteúdo gerado por IA, cuja forma de referência prescrita só existe na 6023:2025 (seção 9). Se a IES ainda usa 6023:2018 e o trabalho cita IA, a skill reporta que aquele tipo de documento não tem forma prevista na versão antiga da norma.



---

Back to [Skill Library](https://rakenne.app/skills/index.md)
