@fontdata/ai-harness 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/.claude-plugin/marketplace.json +17 -0
  2. package/.claude-plugin/plugin.json +8 -0
  3. package/README.md +239 -0
  4. package/bin/cli.js +122 -0
  5. package/package.json +44 -0
  6. package/src/catalog.js +26 -0
  7. package/src/init.js +317 -0
  8. package/src/installer.js +92 -0
  9. package/src/run.js +99 -0
  10. package/templates/CLAUDE.md +49 -0
  11. package/templates/catalog.json +124 -0
  12. package/templates/commands/atualizar-deps.md +15 -0
  13. package/templates/commands/auditar-performance.md +27 -0
  14. package/templates/commands/auditar-seguranca.md +64 -0
  15. package/templates/commands/auditar-ui.md +38 -0
  16. package/templates/commands/codigo-morto.md +22 -0
  17. package/templates/commands/configurar-auto-tag.md +185 -0
  18. package/templates/commands/configurar-comentarios.md +543 -0
  19. package/templates/commands/configurar-orquestrador.md +13 -0
  20. package/templates/commands/corrigir-review.md +11 -0
  21. package/templates/commands/criar-agents.md +42 -0
  22. package/templates/commands/criar-code-reviewer.md +30 -0
  23. package/templates/commands/criar-hooks.md +32 -0
  24. package/templates/commands/criar-rag.md +25 -0
  25. package/templates/commands/criar-rules.md +31 -0
  26. package/templates/commands/criar-skill.md +22 -0
  27. package/templates/commands/design-system.md +27 -0
  28. package/templates/commands/diagrama.md +17 -0
  29. package/templates/commands/executar-plan.md +36 -0
  30. package/templates/commands/gerar-claude-md.md +66 -0
  31. package/templates/commands/gerar-env.md +16 -0
  32. package/templates/commands/gerar-ignore.md +37 -0
  33. package/templates/commands/gerar-spec.md +33 -0
  34. package/templates/commands/gerar-testes.md +17 -0
  35. package/templates/commands/git-commit-push.md +38 -0
  36. package/templates/commands/harness.md +34 -0
  37. package/templates/commands/nova-tarefa.md +60 -0
  38. package/templates/commands/onboarding.md +21 -0
  39. package/templates/commands/refatorar.md +17 -0
  40. package/templates/commands/resolver-bug.md +25 -0
  41. package/templates/commands/review-por-task.md +16 -0
  42. package/templates/commands/revisar-pr.md +18 -0
  43. package/templates/commands/scaffold.md +25 -0
  44. package/templates/commands/sincronizar-claude-md.md +15 -0
  45. package/templates/commands/validar-commands.md +24 -0
  46. package/templates/commands/validar-ideia.md +36 -0
  47. package/templates/commands/versao.md +159 -0
  48. package/templates/skills/lgpd-checker/ORIGEM.md +21 -0
  49. package/templates/skills/lgpd-checker/SKILL.md +152 -0
  50. package/templates/skills/lgpd-checker/references/checklist.md +155 -0
  51. package/templates/skills/lgpd-checker/references/lgpd-artigos.md +178 -0
  52. package/templates/skills/lgpd-checker/references/report-template.md +117 -0
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Audita a pasta .claude — valida os modelos dos agents, aponta commands redundantes/pouco úteis e sugere novos commands úteis.
3
+ ---
4
+
5
+ # Auditoria do harness (.claude)
6
+
7
+ Analise a pasta `.claude` do projeto (commands, agents, skills, rules, hooks) e produza uma auditoria em três frentes. **Explique o motivo** de cada avaliação — nada de veredito sem justificativa.
8
+
9
+ ## 1. Agents — modelo adequado
10
+
11
+ Para cada agent, diga se o **model** escolhido (Haiku/Sonnet/Opus) está correto para o trabalho dele. Aponte **sub** ou **superdimensionamento** (ex.: Opus para uma task mecânica, Haiku para arquitetura) e recomende o ajuste.
12
+
13
+ ## 2. Commands — uso e redundância
14
+
15
+ - Diga quais slash commands tendem a ser **mais usados** neste projeto e quais são **pouco úteis** no contexto dele.
16
+ - Aponte **sobreposições de escopo** entre comandos — candidatos a remoção ou fusão.
17
+
18
+ ## 3. Novos commands sugeridos
19
+
20
+ Sugira **novos slash commands** úteis para este projeto específico. Para cada um: o que faria, quando seria usado e qual **dor recorrente** ele eliminaria.
21
+
22
+ ## Fechamento
23
+
24
+ Consolide tudo em quatro listas — **manter / ajustar / remover / criar** — e **pergunte o que devo aplicar** antes de mexer em qualquer arquivo.
@@ -0,0 +1,36 @@
1
+ ---
2
+ description: Valida se a ideia do projeto cabe na janela de tempo com multi-agents (entrevista + diagnóstico honesto + veredito acionável).
3
+ ---
4
+
5
+ # Validação de ideia de projeto
6
+
7
+ Você é um **arquiteto de software sênior**, especialista em dimensionar escopo de projetos construídos com Claude Code e orquestração de multi-agents. Sua função é dar um diagnóstico **honesto e acionável** sobre se a ideia abaixo cabe na janela de tempo disponível — sem otimismo de wishful thinking. Prefira errar para o lado pessimista.
8
+
9
+ ## Contexto
10
+
11
+ - **Ideia:** $ARGUMENTS
12
+ - **Janela de tempo:** se eu não informei explicitamente em `$ARGUMENTS`, assuma **~4 horas** (formato imersão) e **diga que assumiu isso**.
13
+ - **Modo de execução:** TDD obrigatório + sub-agents especializados implementando módulos independentes em paralelo (o harness deste projeto).
14
+
15
+ Se eu **não descrevi a ideia** ou descrevi de forma vaga demais para avaliar, **pare e faça as perguntas mínimas** necessárias — uma pergunta por vez — antes de qualquer avaliação. Não avalie no escuro.
16
+
17
+ ## Como avaliar
18
+
19
+ Percorra os critérios abaixo. Para cada um, dê um veredito curto com a **evidência ou o risco concreto** — nada de respostas genéricas.
20
+
21
+ 1. **Decomposição em módulos** — Quebre a ideia em 2 a 4 módulos que agents separados implementariam de forma **genuinamente independente** (não tocam os mesmos arquivos, não dependem um do outro para começar). Se não der para quebrar assim, isso já é um sinal de alerta sobre o escopo.
22
+ 2. **Fatia vertical entregável** — Descreva o menor caminho ponta-a-ponta que estaria **funcionando** ao fim da janela, mesmo que simples ou feio. Se não existe uma fatia demonstrável, o escopo está errado.
23
+ 3. **Complexidade oculta / risco de explosão** — Aponte dependências que costumam estourar o tempo: autenticação de terceiros, pagamentos, uploads, real-time/websockets, integrações externas, processamento pesado, mobile nativo, infra/deploy. Para cada uma presente, diga como **cortar, mockar ou adiar** no dia.
24
+ 4. **Stack** — A stack está clara e é dominada? Se precisa ser decidida antes de começar, sinalize como pré-requisito bloqueante.
25
+ 5. **Testabilidade (TDD)** — Para pelo menos 2 módulos, quais seriam os **testes críticos** (um de input válido + um de caso de erro) escritos ANTES do código? Se o comportamento essencial é difícil de testar, explique por quê.
26
+ 6. **Estimativa realista** — Dê uma estimativa grosseira de esforço por módulo, some e compare com a janela. Seja pessimista onde houver incerteza.
27
+
28
+ ## Veredito
29
+
30
+ Feche com **um** dos três, justificando em até 3 linhas com base na análise acima:
31
+
32
+ - ✅ **APROVADO** — cabe na janela. Pode seguir para `/gerar-spec`. Liste em 1 linha os módulos e a fatia vertical alvo.
33
+ - ✂️ **AJUSTAR** — boa ideia, grande demais. **Reescreva a ideia já recortada em 2–3 frases**, preservando a essência e o "uau", pronta para virar SPEC. Diga explicitamente o que ficou de fora (backlog para depois).
34
+ - ❌ **REPROVAR** — inviável mesmo recortada na janela dada. Explique o porquê e **proponha uma ideia alternativa no mesmo domínio** que caiba, mantendo a mesma estrutura de módulos.
35
+
36
+ Responda em português do Brasil.
@@ -0,0 +1,159 @@
1
+ ---
2
+ description: Detecta como o versionamento funciona no projeto atual (qualquer stack) e aplica o bump de versão + changelog, com gate de aprovação. Para antes do push.
3
+ argument-hint: "[X.Y.Z | major | minor | patch | build]"
4
+ ---
5
+
6
+ # /versao — Bump de versão (agnóstico de stack)
7
+
8
+ Você é o **orquestrador de release** deste projeto. Sua tarefa é **descobrir como o versionamento já
9
+ funciona aqui** (React+Vite, React+Next, Node, Delphi, .NET, Flutter, etc.) e **replicar exatamente esse
10
+ padrão** ao aplicar o novo bump. Não imponha um formato seu: o projeto manda.
11
+
12
+ > **🚦 Há um GATE de aprovação obrigatório** antes de qualquer escrita. **PARE antes de `git push`** —
13
+ > push é sempre ação manual do usuário.
14
+
15
+ ## Uso
16
+
17
+ - `/versao` — **infere** a próxima versão pelos commits (regra SemVer abaixo) ou pelo padrão do projeto.
18
+ - `/versao X.Y.Z` — usa a versão explícita como **override** (único caminho que permite subir `major`).
19
+ - `/versao major|minor|patch|build` — incrementa o segmento indicado, respeitando o **número de segmentos**
20
+ que o projeto usa (3 segmentos `X.Y.Z` ou 4 segmentos `X.Y.Z.W`, comum em Delphi/.NET).
21
+
22
+ ## Passo 0 — Pré-checagem (abortar se falhar)
23
+
24
+ 1. **Working tree limpo:** rode `git status --short`. Se houver saída → **abortar** e instruir a
25
+ commitar/limpar antes (sugerir `/git-commit-push`). Não bumpar com árvore suja.
26
+ 2. **Base (última versão registrada):** `git describe --tags --abbrev=0 --match "v*"`. Se não houver tag,
27
+ use o primeiro commit (`git rev-list --max-parents=0 HEAD`) como base e avise que é o primeiro release.
28
+
29
+ ## Passo 1 — Detectar o mecanismo de versionamento (somente leitura)
30
+
31
+ Investigue o projeto e **identifique TODAS as fontes de verdade da versão**. Não assuma; confirme lendo.
32
+ Possíveis fontes, por stack:
33
+
34
+ - **Node / React+Vite / React+Next / qualquer JS-TS:** campo `version` em `package.json` (e
35
+ `package-lock.json`/`pnpm-lock.yaml`/`yarn.lock` se contiverem a versão do pacote raiz).
36
+ - **Delphi:** `*.dproj` (chaves `VerInfo_Keys`, `FileVersion`/`ProductVersion` e os campos
37
+ `MajorVersion/MinorVersion/Release/Build`) **e** constantes de versão em `.pas` (ex.: `About*`,
38
+ `BibVariavel`). Liste cada `arquivo:linha`.
39
+ - **.NET / C#:** `*.csproj` (`<Version>`, `<AssemblyVersion>`, `<FileVersion>`), `AssemblyInfo.cs`,
40
+ `Directory.Build.props`.
41
+ - **Flutter / Dart:** campo `version:` do `pubspec.yaml`.
42
+ - **Python:** `pyproject.toml` (`[project] version` ou `[tool.poetry] version`), `setup.py`,
43
+ `__version__` em `__init__.py`.
44
+ - **Outras:** procure por arquivos `VERSION`, constantes `VERSION`/`APP_VERSION`, badges no README.
45
+
46
+ Use `grep`/busca para encontrar **toda ocorrência** do número de versão atual, garantindo que nenhuma
47
+ fique para trás. Determine também:
48
+
49
+ - O **formato/número de segmentos** vigente (`X.Y.Z` ou `X.Y.Z.W`, com ou sem zero à esquerda).
50
+ - Onde mora o **changelog**, replicando o que existir:
51
+ - `CHANGELOG.md` (formato Keep a Changelog ou similar);
52
+ - arquivos de "Novidades" consumidos pela UI (ex.: `src/data/novidades.ts`);
53
+ - arquivos texto de histórico (ex.: `Versoes.txt` na raiz, com padrão de espaçamento/formatação próprio).
54
+ - Se há **automação de tag** (ex.: `.github/workflows/auto-tag.yml` que cria a tag na `main`). Se houver,
55
+ **NÃO crie a tag** — apenas commite; a Action cria a tag quando o commit chega na branch alvo.
56
+ - O **gerenciador de pacotes / runner de testes** do projeto (npm/pnpm/yarn, `dotnet`, etc.), lendo
57
+ `package.json` scripts ou os manifestos.
58
+
59
+ > Se não encontrar nenhuma fonte de versão, **pergunte ao usuário** onde a versão deve ser registrada
60
+ > antes de prosseguir.
61
+
62
+ ## Passo 2 — Levantar commits e calcular a nova versão
63
+
64
+ - `git log <base>..HEAD --pretty=format:%H%x09%s`. Liste ao usuário os commits considerados (título +
65
+ tipo semântico) e a base usada.
66
+ - **Se veio versão explícita `X.Y.Z`:** assuma exatamente ela (override total).
67
+ - **Se veio um tipo (`major|minor|patch|build`):** incremente esse segmento e zere os à direita,
68
+ respeitando o número de segmentos do projeto.
69
+ - **Senão, infira por SemVer** (precedência minor > patch, com reset em cascata):
70
+ 1. Algum `feat:` → **minor**: `Y = Y + 1`, demais à direita = `0`.
71
+ 2. Senão, algum `fix:`/`chore:`/`refactor:`/`docs:`/`style:`/`perf:`/`test:` → **patch**.
72
+ 3. Senão → sem bump elegível: avise e **peça confirmação** (abortar ou versão explícita).
73
+ - **`major` é SEMPRE manual** — só sobe quando o usuário passa `X.Y.Z` explícito ou `major`. A inferência
74
+ jamais sobe major.
75
+
76
+ ## Passo 3 — Gerar o changelog (no padrão do projeto)
77
+
78
+ Este comando é **autossuficiente**: gere aqui mesmo o changelog **amigável ao usuário final** (pt-BR,
79
+ sem hash/arquivo/jargão) a partir dos commits do intervalo **`<base>..HEAD`** (a base do Passo 0), sem
80
+ depender de nenhuma skill ou comando externo. Quem grava os artefatos é o Passo 5.
81
+
82
+ **3.1 — Leia os commits.** Use os commits já levantados no Passo 2 (`git log <base>..HEAD`); leia o corpo
83
+ quando precisar de contexto para entender o que a mudança entrega.
84
+
85
+ **3.2 — Categorize (modo compacto, 3 categorias).** Agrupe mapeando os prefixos semânticos:
86
+
87
+ - **✨ Novidades** — `feat:`
88
+ - **🐛 Correções** — `fix:`
89
+ - **⚡ Melhorias** — `perf:`/`refactor:`/`chore:`/`style:`/`docs:`/`test:`/`build:`/`ci:`
90
+
91
+ Mantenha **⚠️ Mudanças importantes** (`BREAKING CHANGE`/`!:` — destaque o que o usuário precisa fazer) e
92
+ **🔒 Segurança** como blocos próprios **só se houver itens**. Commits sem prefixo: classifique pelo
93
+ conteúdo da mensagem. Inclua apenas as seções que tiverem itens.
94
+
95
+ **3.3 — Traduza técnico → usuário final.** Para cada item que vai aparecer:
96
+
97
+ - Reescreva em **linguagem clara e não técnica**, focando no **benefício para quem usa o produto**, não na
98
+ implementação. Quando fizer sentido, use **negrito com o nome do recurso + frase do ganho**
99
+ (ex.: `**Sincronização mais rápida**: arquivos sincronizam 2x mais rápido entre dispositivos`).
100
+ - **Filtre o ruído**: descarte merges, bumps triviais de versão, ajustes de lint/formatação e commits
101
+ puramente internos sem impacto perceptível. O bloco "Melhorias" deve ser um resumo curto, não um
102
+ despejo de commits. Ignore `docs:`/`chore:` puramente internos quando o projeto assim fizer no histórico.
103
+ - Não invente recursos que os commits não suportam; em dúvida, descreva de forma conservadora.
104
+ - **Sem emoji dentro dos itens** — os emojis ficam apenas nos títulos das seções.
105
+
106
+ **3.4 — Siga o estilo do projeto.** Se existir um `CHANGELOG_STYLE.md` na raiz, **siga as diretrizes dele**
107
+ (tom, formato, seções). De todo modo, **replique o formato existente** do arquivo de changelog/novidades/
108
+ `Versoes.txt` do projeto (espaçamento, cabeçalho, formato do número de versão). Não introduza um formato
109
+ novo — o Passo 5 é quem grava, seguindo exatamente esse padrão.
110
+
111
+ ## Passo 4 — 🚦 GATE de aprovação (obrigatório)
112
+
113
+ Apresente ao usuário, **antes de escrever qualquer coisa**:
114
+
115
+ - versão atual → nova versão;
116
+ - a lista completa de **arquivos:linha** que serão alterados (todas as ocorrências do Passo 1);
117
+ - o changelog proposto e **o bloco exato** que será anexado a cada arquivo de histórico.
118
+
119
+ **Peça aprovação explícita.** Não grave nada sem o "ok". Se o bump tocar arquivos sensíveis (ex.: `.dproj`,
120
+ `.csproj`), destaque o risco.
121
+
122
+ ## Passo 5 — Aplicar artefatos (somente após aprovação)
123
+
124
+ - Atualize **todas** as ocorrências da versão de forma **consistente** (todas as fontes do Passo 1).
125
+ - Atualize o(s) arquivo(s) de changelog/novidades seguindo **exatamente o padrão existente**:
126
+ - `CHANGELOG.md`: nova seção `## [X.Y.Z] - <currentDate>` no topo (após o cabeçalho); crie com cabeçalho
127
+ se não existir.
128
+ - Arquivo de novidades da UI (se houver): adicione o release no topo do array, no mesmo tipo/formato já
129
+ usado (datas no formato local do arquivo).
130
+ - `Versoes.txt`/histórico texto (se houver): anexe ao final, com o **mesmo espaçamento** entre blocos e o
131
+ **mesmo formato de número** (inclusive zeros à esquerda) das entradas existentes.
132
+ - Use a data de `currentDate`; **nunca invente data**.
133
+
134
+ ## Passo 6 — Validar (abortar se vermelho)
135
+
136
+ - Rode os testes do projeto (ex.: `pnpm test`/`npm test`/`dotnet test`). Se fizer sentido para o escopo do
137
+ release, rode também o build (`pnpm build`/`npm run build`/`dotnet build`).
138
+ - Se algo falhar → **abortar** sem commitar e reportar o erro.
139
+
140
+ ## Passo 7 — Finalizar (somente commit — SEM push)
141
+
142
+ 1. Estagie **apenas** os arquivos do release (nunca `git add -A`): liste explicitamente os arquivos
143
+ alterados nos passos anteriores.
144
+ 2. Commit semântico (1ª letra maiúscula após `: `): `chore: Release vX.Y.Z` (ou, em projetos Delphi que já
145
+ usem o padrão, `build: Modificada versão do sistema no projeto`). Finalize com a linha
146
+ `Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>`.
147
+ 3. **Tag:** se existir automação de tag (Action na `main`), **NÃO crie a tag** — informe que ela será criada
148
+ automaticamente quando o commit chegar na branch alvo. Caso contrário, e somente se o usuário pedir,
149
+ ofereça criar a tag `v<X.Y.Z>` localmente.
150
+ 4. **PARE. Nunca `git push`.** Informe o fluxo manual de push ao usuário.
151
+
152
+ ## Guardrails
153
+
154
+ - **NUNCA** `git push`. Não criar tag se houver automação que já faça isso.
155
+ - **Sempre** confirmar versão + changelog no GATE antes de gravar.
156
+ - **Abortar** se a working tree estiver suja ou se os testes/build falharem.
157
+ - **Replicar o padrão do projeto** (formato de versão, changelog, commit) — nunca impor um novo.
158
+ - `major` só por argumento explícito; a inferência jamais sobe major.
159
+ - Changelog em **pt-BR**, voltado ao usuário final; usar a data de `currentDate`.
@@ -0,0 +1,21 @@
1
+ # Origem desta skill
2
+
3
+ A skill `lgpd-checker` foi obtida do projeto público
4
+ [bittencourtthulio/lgpd-checker](https://github.com/bittencourtthulio/lgpd-checker)
5
+ e é redistribuída aqui como vendor (cópia versionada), sem alterações no conteúdo de
6
+ `SKILL.md` nem de `references/`. Créditos ao autor original.
7
+
8
+ Arquivos vendorizados:
9
+
10
+ - `SKILL.md` — instruções da skill (11 categorias de análise LGPD).
11
+ - `references/checklist.md` — checklist completo de verificações por categoria.
12
+ - `references/lgpd-artigos.md` — artigos da Lei nº 13.709/2018 usados como referência.
13
+ - `references/report-template.md` — template do relatório de conformidade.
14
+
15
+ ## Como atualizar
16
+
17
+ Rebaixe os quatro arquivos do repositório de origem (branch `main`) para
18
+ `templates/skills/lgpd-checker/`, mantendo a estrutura de pastas. Não edite os
19
+ arquivos vendorizados: ajustes específicos do harness (onde gravar o relatório,
20
+ integração com `/auditar-seguranca`) ficam no próprio comando, em
21
+ `templates/commands/auditar-seguranca.md`.
@@ -0,0 +1,152 @@
1
+ ---
2
+ name: lgpd-checker
3
+ description: >
4
+ Analisa um projeto de software em busca de falhas de conformidade com a LGPD (Lei Geral de Proteção de Dados — Lei nº 13.709/2018) e gera um relatório detalhado classificando os problemas encontrados por categoria e severidade. Use este skill SEMPRE que o usuário mencionar LGPD, proteção de dados, privacidade, compliance de dados pessoais, adequação à lei de privacidade brasileira, verificação de privacidade em código, auditoria de dados pessoais, ou quando perguntar se o sistema está em conformidade com a lei brasileira de dados. Também acione este skill quando o usuário quiser revisar código em busca de problemas relacionados a: coleta de consentimento, criptografia de dados pessoais, direitos dos titulares, logs de acesso, retenção de dados, ou política de privacidade.
5
+ ---
6
+
7
+ # LGPD Checker — Skill de Análise de Conformidade
8
+
9
+ Você é um especialista em LGPD (Lei nº 13.709/2018) com profundo conhecimento técnico de desenvolvimento de software. Sua missão é analisar o projeto do desenvolvedor, identificar lacunas de conformidade e entregar um relatório acionável com recomendações concretas.
10
+
11
+ ## Fase 1 — Reconhecimento do Projeto
12
+
13
+ Antes de qualquer análise, mapeie o projeto respondendo a estas perguntas internamente:
14
+
15
+ 1. **Tipo de aplicação**: Web? Mobile? API? Backend? Desktop? SaaS?
16
+ 2. **Stack tecnológica**: Qual linguagem, framework, banco de dados?
17
+ 3. **Escopo de dados**: O sistema coleta, armazena ou processa dados pessoais de pessoas físicas?
18
+
19
+ Para fazer esse mapeamento, explore os arquivos do projeto:
20
+ - Leia `README.md`, `package.json` / `requirements.txt` / `pom.xml` / `Gemfile` (ou equivalente) para entender a stack
21
+ - Explore os diretórios principais (`src/`, `app/`, `api/`, `models/`, `controllers/`, `routes/`, etc.)
22
+ - Identifique arquivos relacionados a: autenticação, banco de dados, formulários, APIs, configurações de segurança
23
+
24
+ Se o projeto não coletar dados pessoais de pessoas físicas, informe o usuário e encerre a análise com justificativa clara.
25
+
26
+ ## Fase 2 — Análise por Categorias LGPD
27
+
28
+ Para cada categoria abaixo, realize uma **busca ativa** no código antes de concluir. Não assuma conformidade sem verificar. Leia `references/checklist.md` para a lista completa de verificações.
29
+
30
+ ### CAT-1: Bases Legais e Consentimento (Art. 7, 8, 9, 10)
31
+ Busque por:
32
+ - Formulários de cadastro, login, checkout, newsletter
33
+ - Campos de checkbox/opt-in/opt-out
34
+ - Strings como "consent", "agreement", "aceito", "concordo", "termos"
35
+ - Mecanismo de revogação de consentimento
36
+ - Registro da data/hora e versão do consentimento dado
37
+ - Finalidade da coleta declarada ao usuário
38
+
39
+ ### CAT-2: Minimização de Dados (Art. 6, III)
40
+ Busque por:
41
+ - Models/schemas/entidades de banco de dados — liste todos os campos
42
+ - Campos marcados como "required" em formulários
43
+ - Dados coletados mas não utilizados em nenhuma lógica de negócio
44
+ - Campos como `birth_date`, `cpf`, `rg`, `address`, `phone` sem justificativa de uso
45
+
46
+ ### CAT-3: Dados Pessoais Sensíveis (Art. 5, II; Art. 11)
47
+ Busque por nomes de campos, variáveis e comentários que indiquem:
48
+ - Origem racial ou étnica
49
+ - Convicção religiosa ou política
50
+ - Dados de saúde, prontuários, diagnósticos
51
+ - Orientação sexual
52
+ - Dados biométricos (fingerprint, face_id, iris)
53
+ - Dados genéticos
54
+ - Filiação sindical
55
+
56
+ ### CAT-4: Segurança Técnica (Art. 46, 47, 48)
57
+ Busque por:
58
+ - Configurações de HTTPS/TLS (arquivos de configuração de servidor, `.env`, nginx/apache configs)
59
+ - Criptografia de senhas: uso de bcrypt, argon2, scrypt (NÃO MD5, SHA1 puro, ou texto claro)
60
+ - Criptografia em repouso para campos sensíveis
61
+ - Variáveis de ambiente para credenciais (não hardcoded no código)
62
+ - Tokens JWT: verificação de assinatura, expiração
63
+ - Proteção contra SQL Injection (queries parametrizadas vs. concatenação de strings)
64
+ - Rate limiting e proteção contra força bruta
65
+ - Headers de segurança HTTP (CORS, CSP, HSTS, etc.)
66
+
67
+ ### CAT-5: Logs e Auditoria (Art. 37)
68
+ Busque por:
69
+ - Sistema de logging no projeto
70
+ - Se logs registram acesso/modificação de dados pessoais
71
+ - Se logs NÃO expõem dados pessoais em texto claro (senha, CPF, cartão)
72
+ - Retenção e rotação de logs
73
+
74
+ ### CAT-6: Direitos dos Titulares (Art. 18)
75
+ Busque por endpoints, funções ou telas que implementem:
76
+ - **Acesso**: usuário pode ver todos os dados que possui no sistema
77
+ - **Correção**: usuário pode editar/corrigir seus dados
78
+ - **Eliminação**: usuário pode excluir sua conta e dados (Art. 18, VI)
79
+ - **Portabilidade**: exportação dos dados em formato estruturado (JSON/CSV)
80
+ - **Revogação**: cancelamento de consentimento
81
+ - **Oposição**: opt-out de processamento
82
+
83
+ ### CAT-7: Retenção e Eliminação de Dados (Art. 15, 16)
84
+ Busque por:
85
+ - Política de retenção (documentação ou configuração no código)
86
+ - Jobs/tasks de limpeza automática de dados expirados
87
+ - Soft delete vs. hard delete — dados de usuários excluídos ainda existem?
88
+ - Backups: política de retenção de backups com dados pessoais
89
+ - Prazo de retenção definido e documentado
90
+
91
+ ### CAT-8: Privacy by Design (Art. 46, §2)
92
+ Busque por:
93
+ - Anonimização ou pseudonimização de dados onde possível
94
+ - Dados pessoais em URLs (ex.: `/users/joao.silva@email.com`)
95
+ - Dados pessoais em logs de erro ou stack traces
96
+ - Campos de identificação em analytics/telemetria
97
+ - Configurações de privacidade como padrão mais restritivo
98
+
99
+ ### CAT-9: Transferência Internacional (Art. 33–36)
100
+ Busque por:
101
+ - Integrações com serviços externos (AWS, Google, Stripe, SendGrid, etc.)
102
+ - Configurações de região/localização de dados
103
+ - Contratos ou configurações com cloud providers fora do Brasil
104
+ - Compartilhamento de dados com terceiros
105
+
106
+ ### CAT-10: Documentação e Governança (Art. 37, 38, 41)
107
+ Busque por:
108
+ - Arquivo de Política de Privacidade (privacy policy)
109
+ - Registro de Atividades de Tratamento (RAT/ROPA)
110
+ - Identificação do DPO/Encarregado de Dados (contato)
111
+ - RIPD (Relatório de Impacto à Proteção de Dados) para operações de alto risco
112
+ - Documentação de bases legais para cada operação de tratamento
113
+
114
+ ### CAT-11: Notificação de Incidentes (Art. 48)
115
+ Busque por:
116
+ - Processo documentado para resposta a incidentes de segurança
117
+ - Mecanismo de detecção de vazamentos (alertas, monitoramento)
118
+ - Contato/canal para reporte de incidentes
119
+
120
+ ## Fase 3 — Geração do Relatório
121
+
122
+ Após a análise, gere o relatório seguindo o template abaixo. Seja específico: cite arquivos, linhas de código e funções encontradas. Evite afirmações genéricas.
123
+
124
+ Leia `references/report-template.md` para o template completo.
125
+
126
+ ### Regras de Severidade
127
+
128
+ Classifique cada problema encontrado em:
129
+
130
+ | Severidade | Critério | Símbolo |
131
+ |---|---|---|
132
+ | **CRÍTICO** | Violação direta da lei, multa potencial, risco de vazamento imediato | 🔴 |
133
+ | **ALTO** | Lacuna significativa, risco elevado de não-conformidade | 🟠 |
134
+ | **MÉDIO** | Boa prática ausente, conformidade parcial | 🟡 |
135
+ | **BAIXO** | Melhoria recomendada, impacto menor | 🟢 |
136
+ | **INFO** | Observação, sem impacto direto na conformidade | ℹ️ |
137
+
138
+ ### Regras de conclusão de conformidade
139
+
140
+ No cabeçalho do relatório, classifique o projeto como:
141
+ - ✅ **CONFORME** — Nenhum item CRÍTICO ou ALTO encontrado
142
+ - ⚠️ **PARCIALMENTE CONFORME** — Itens MÉDIO ou BAIXO encontrados, nenhum CRÍTICO/ALTO
143
+ - ❌ **NÃO CONFORME** — Um ou mais itens CRÍTICO ou ALTO encontrados
144
+
145
+ ## Instruções Gerais
146
+
147
+ - Sempre citar o artigo da LGPD relevante para cada achado.
148
+ - Sempre fornecer uma recomendação técnica concreta e acionável (não apenas "implemente segurança melhor").
149
+ - Se não encontrar código suficiente para avaliar uma categoria, diga explicitamente: "Não foi possível avaliar [CAT-X] — arquivos de [tipo] não encontrados."
150
+ - Quando encontrar algo correto e conforme, registre como ponto positivo.
151
+ - Priorize os itens CRÍTICOS no início do relatório para que o desenvolvedor saiba o que atacar primeiro.
152
+ - Ao final, forneça um Plano de Ação em ordem de prioridade.
@@ -0,0 +1,155 @@
1
+ # Checklist LGPD — Verificações por Categoria
2
+
3
+ Use este checklist durante a análise do projeto. Para cada item, determine: ✅ Conforme | ❌ Não conforme | ⚠️ Parcial | 🔍 Não encontrado/Não avaliado
4
+
5
+ ---
6
+
7
+ ## CAT-1: Bases Legais e Consentimento (Art. 7, 8, 9, 10)
8
+
9
+ | # | Verificação | Severidade | Artigo |
10
+ |---|---|---|---|
11
+ | 1.1 | Existe uma base legal definida para cada operação de tratamento de dados | CRÍTICO | Art. 7 |
12
+ | 1.2 | Quando a base é consentimento, ele é coletado de forma **explícita** (opt-in ativo) | CRÍTICO | Art. 8 |
13
+ | 1.3 | O consentimento é **específico por finalidade** (não genérico/agrupado) | ALTO | Art. 8, §4 |
14
+ | 1.4 | A **finalidade** do tratamento é informada ao usuário no momento da coleta | ALTO | Art. 9 |
15
+ | 1.5 | Existe mecanismo para o usuário **revogar o consentimento** a qualquer momento | ALTO | Art. 8, §5 |
16
+ | 1.6 | A **data, hora e versão** do consentimento são registradas com o dado | MÉDIO | Art. 8, §2 |
17
+ | 1.7 | O consentimento de **menores de 16 anos** exige confirmação dos pais/responsáveis | CRÍTICO | Art. 14 |
18
+ | 1.8 | Não há pré-marcação de checkboxes de consentimento | ALTO | Art. 8 |
19
+ | 1.9 | O controlador (empresa) está identificado nos formulários de coleta | MÉDIO | Art. 9 |
20
+
21
+ ---
22
+
23
+ ## CAT-2: Minimização de Dados (Art. 6, III)
24
+
25
+ | # | Verificação | Severidade | Artigo |
26
+ |---|---|---|---|
27
+ | 2.1 | Somente dados estritamente necessários para a finalidade são coletados | ALTO | Art. 6, III |
28
+ | 2.2 | Campos opcionais estão claramente marcados como opcionais nos formulários | MÉDIO | Art. 6, III |
29
+ | 2.3 | Não há campos coletados mas nunca utilizados na lógica de negócio | MÉDIO | Art. 6, III |
30
+ | 2.4 | A coleta de dados pessoais em APIs é proporcional ao objetivo do endpoint | MÉDIO | Art. 6, III |
31
+ | 2.5 | Campos sensíveis (CPF, RG, etc.) são solicitados apenas quando realmente necessários | ALTO | Art. 6, III |
32
+
33
+ ---
34
+
35
+ ## CAT-3: Dados Pessoais Sensíveis (Art. 5, II; Art. 11)
36
+
37
+ | # | Verificação | Severidade | Artigo |
38
+ |---|---|---|---|
39
+ | 3.1 | Dados sensíveis são identificados e explicitamente marcados no sistema | ALTO | Art. 5, II |
40
+ | 3.2 | O consentimento para dados sensíveis é **específico e destacado** (separado do geral) | CRÍTICO | Art. 11, I |
41
+ | 3.3 | Dados biométricos (foto de rosto, digital) têm tratamento especial de segurança | CRÍTICO | Art. 11 |
42
+ | 3.4 | Dados de saúde só são tratados quando há base legal específica | CRÍTICO | Art. 11 |
43
+ | 3.5 | Não há tratamento de dados sensíveis para fins de discriminação | CRÍTICO | Art. 11, §1 |
44
+ | 3.6 | O acesso a dados sensíveis é mais restrito que dados pessoais comuns | ALTO | Art. 46 |
45
+
46
+ ---
47
+
48
+ ## CAT-4: Segurança Técnica (Art. 46, 47, 48)
49
+
50
+ | # | Verificação | Severidade | Artigo |
51
+ |---|---|---|---|
52
+ | 4.1 | Todas as conexões usam **HTTPS/TLS** (nenhum endpoint HTTP em produção) | CRÍTICO | Art. 46 |
53
+ | 4.2 | Senhas são hasheadas com algoritmo seguro (**bcrypt, argon2, scrypt**) — não MD5/SHA1 | CRÍTICO | Art. 46 |
54
+ | 4.3 | Credenciais (API keys, senhas de BD) estão em **variáveis de ambiente** e não no código | CRÍTICO | Art. 46 |
55
+ | 4.4 | Campos sensíveis no banco de dados são **criptografados em repouso** | ALTO | Art. 46 |
56
+ | 4.5 | Tokens JWT possuem **expiração** definida e assinatura verificada | ALTO | Art. 46 |
57
+ | 4.6 | Queries SQL usam **parâmetros preparados** (não concatenação de strings) | CRÍTICO | Art. 46 |
58
+ | 4.7 | Existe **rate limiting** em endpoints de autenticação | ALTO | Art. 46 |
59
+ | 4.8 | Headers de segurança HTTP estão configurados (CORS, CSP, HSTS, X-Frame-Options) | MÉDIO | Art. 46 |
60
+ | 4.9 | Não há dados pessoais expostos em URLs (ex: `/user/email@domain.com`) | ALTO | Art. 46 |
61
+ | 4.10 | Dados pessoais não aparecem em respostas de erro/stack traces | ALTO | Art. 46 |
62
+ | 4.11 | Existe política de atualização de dependências com vulnerabilidades conhecidas | MÉDIO | Art. 46 |
63
+ | 4.12 | Dados pessoais em cache são tratados com as mesmas proteções | MÉDIO | Art. 46 |
64
+
65
+ ---
66
+
67
+ ## CAT-5: Logs e Auditoria (Art. 37)
68
+
69
+ | # | Verificação | Severidade | Artigo |
70
+ |---|---|---|---|
71
+ | 5.1 | O sistema possui logs de acesso e modificação de dados pessoais | ALTO | Art. 37 |
72
+ | 5.2 | Logs registram **quem** acessou, **quando** e **quais dados** | ALTO | Art. 37 |
73
+ | 5.3 | Logs **NÃO** contêm dados sensíveis em texto claro (senha, CPF, cartão) | CRÍTICO | Art. 46 |
74
+ | 5.4 | Logs têm política de retenção definida | MÉDIO | Art. 37 |
75
+ | 5.5 | Logs são protegidos contra alteração/exclusão não autorizada | MÉDIO | Art. 37 |
76
+ | 5.6 | Existe rastreabilidade de operações de exclusão de dados | ALTO | Art. 37 |
77
+
78
+ ---
79
+
80
+ ## CAT-6: Direitos dos Titulares (Art. 18)
81
+
82
+ | # | Verificação | Severidade | Artigo |
83
+ |---|---|---|---|
84
+ | 6.1 | Existe funcionalidade para o titular **acessar todos os seus dados** | ALTO | Art. 18, II |
85
+ | 6.2 | Existe funcionalidade para o titular **corrigir** seus dados | ALTO | Art. 18, III |
86
+ | 6.3 | Existe funcionalidade para o titular **excluir** sua conta e dados | CRÍTICO | Art. 18, VI |
87
+ | 6.4 | Existe funcionalidade de **portabilidade** (exportar dados em JSON/CSV) | MÉDIO | Art. 18, V |
88
+ | 6.5 | Existe funcionalidade para o titular **revogar consentimento** | ALTO | Art. 18, IX |
89
+ | 6.6 | Existe canal de atendimento para solicitações de titulares (email/formulário) | ALTO | Art. 18, §1 |
90
+ | 6.7 | Solicitações de titulares são respondidas em prazo definido (máx. 15 dias úteis) | MÉDIO | Art. 18, §3 |
91
+ | 6.8 | A exclusão remove dados de **todos os sistemas** (backups, logs, serviços terceiros) | ALTO | Art. 16 |
92
+
93
+ ---
94
+
95
+ ## CAT-7: Retenção e Eliminação de Dados (Art. 15, 16)
96
+
97
+ | # | Verificação | Severidade | Artigo |
98
+ |---|---|---|---|
99
+ | 7.1 | Existe política de retenção de dados **documentada** (quanto tempo cada tipo de dado é mantido) | ALTO | Art. 15 |
100
+ | 7.2 | Existe **processo automatizado** de eliminação de dados após o prazo de retenção | ALTO | Art. 16 |
101
+ | 7.3 | Dados de usuários que excluíram a conta são eliminados no prazo correto | CRÍTICO | Art. 16 |
102
+ | 7.4 | Backups têm política de retenção alinhada com a política de dados | MÉDIO | Art. 16 |
103
+ | 7.5 | Dados de logs são eliminados após o prazo de retenção | MÉDIO | Art. 16 |
104
+ | 7.6 | Dados de testes/desenvolvimento não usam dados pessoais reais | ALTO | Art. 46 |
105
+
106
+ ---
107
+
108
+ ## CAT-8: Privacy by Design (Art. 46, §2)
109
+
110
+ | # | Verificação | Severidade | Artigo |
111
+ |---|---|---|---|
112
+ | 8.1 | Dados pessoais são **anonimizados ou pseudonimizados** quando possível | MÉDIO | Art. 46, §2 |
113
+ | 8.2 | Configurações de privacidade têm o **modo mais restritivo** como padrão | MÉDIO | Art. 46, §2 |
114
+ | 8.3 | Dados pessoais não aparecem em URLs publicamente acessíveis | ALTO | Art. 46 |
115
+ | 8.4 | Analytics e telemetria não transmitem dados pessoais identificáveis | ALTO | Art. 46 |
116
+ | 8.5 | IDs internos usam UUIDs ou IDs opacos (não IDs sequenciais expostos) | BAIXO | Art. 46 |
117
+ | 8.6 | Campos de busca não permitem enumeração de usuários | MÉDIO | Art. 46 |
118
+
119
+ ---
120
+
121
+ ## CAT-9: Transferência Internacional (Art. 33–36)
122
+
123
+ | # | Verificação | Severidade | Artigo |
124
+ |---|---|---|---|
125
+ | 9.1 | Está mapeado **quais dados** são enviados para serviços externos e para quais países | ALTO | Art. 33 |
126
+ | 9.2 | Serviços externos processando dados de brasileiros têm **nível de proteção adequado** ou salvaguardas | ALTO | Art. 33 |
127
+ | 9.3 | Existe cláusula de proteção de dados nos contratos com fornecedores externos | MÉDIO | Art. 36 |
128
+ | 9.4 | Cloud providers têm opção de manter dados no Brasil ou em países adequados | MÉDIO | Art. 33 |
129
+ | 9.5 | O titular é informado sobre a transferência internacional de seus dados | MÉDIO | Art. 33 |
130
+
131
+ ---
132
+
133
+ ## CAT-10: Documentação e Governança (Art. 37, 38, 41)
134
+
135
+ | # | Verificação | Severidade | Artigo |
136
+ |---|---|---|---|
137
+ | 10.1 | Existe **Política de Privacidade** pública e atualizada | ALTO | Art. 9 |
138
+ | 10.2 | A Política de Privacidade está acessível antes da coleta de dados | ALTO | Art. 9 |
139
+ | 10.3 | Existe **Registro de Atividades de Tratamento (RAT/ROPA)** documentado | ALTO | Art. 37 |
140
+ | 10.4 | Existe **DPO/Encarregado de Dados** designado com contato público | ALTO | Art. 41 |
141
+ | 10.5 | RIPD foi elaborado para operações de alto risco | MÉDIO | Art. 38 |
142
+ | 10.6 | Contratos com operadores (subprocessadores) incluem cláusulas de proteção de dados | ALTO | Art. 36 |
143
+ | 10.7 | Existe treinamento/documentação de LGPD para a equipe de desenvolvimento | BAIXO | Art. 50 |
144
+
145
+ ---
146
+
147
+ ## CAT-11: Notificação de Incidentes (Art. 48)
148
+
149
+ | # | Verificação | Severidade | Artigo |
150
+ |---|---|---|---|
151
+ | 11.1 | Existe **processo documentado** de resposta a incidentes de segurança | ALTO | Art. 48 |
152
+ | 11.2 | Existe **monitoramento** de acesso não autorizado ou vazamentos | ALTO | Art. 48 |
153
+ | 11.3 | Existe **canal de comunicação** para report de incidentes | MÉDIO | Art. 48 |
154
+ | 11.4 | O processo define o prazo de notificação à ANPD (máx. 72h recomendado) | ALTO | Art. 48 |
155
+ | 11.5 | O processo define como notificar os titulares afetados | ALTO | Art. 48 |