jarvis-ai-framework 1.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 (240) hide show
  1. package/AGENTS.md +416 -0
  2. package/LICENSE +21 -0
  3. package/README.md +190 -0
  4. package/agents/AGENTS.md +234 -0
  5. package/agents/README.md +309 -0
  6. package/agents/engineering/data/eng.data-engineer.agent.md +309 -0
  7. package/agents/engineering/eng.agent.md +303 -0
  8. package/agents/engineering/eng.bug-hunter.md +386 -0
  9. package/agents/engineering/eng.cybersecurity.agent.md +503 -0
  10. package/agents/engineering/eng.dev-code-reviewer.md +148 -0
  11. package/agents/engineering/eng.docs-writer.md +152 -0
  12. package/agents/engineering/eng.frontend.agent.md +117 -0
  13. package/agents/engineering/eng.rpa.agent.md +215 -0
  14. package/agents/engineering/eng.tech-analyst.agent.md +102 -0
  15. package/agents/engineering/eng.ux-designer.agent.md +193 -0
  16. package/agents/engineering/qa/eng.qa.cypress-specialist.md +109 -0
  17. package/agents/engineering/qa/eng.qa.quality-champion-task-agent.md +85 -0
  18. package/agents/engineering/qa/eng.qa.quality-strategist.md +111 -0
  19. package/agents/engineering/qa/eng.qa.test-architect.md +400 -0
  20. package/agents/engineering/qa/eng.qa.test-planner.md +477 -0
  21. package/agents/engineering/qa/eng.qa.testing-engineer.md +339 -0
  22. package/agents/product/prod.pm-checker.md +52 -0
  23. package/bin/commands/docs-publish.js +184 -0
  24. package/bin/commands/docs-sync.js +139 -0
  25. package/bin/commands/info.js +87 -0
  26. package/bin/commands/init.js +237 -0
  27. package/bin/commands/install-rtk.js +90 -0
  28. package/bin/commands/list.js +48 -0
  29. package/bin/commands/qa-signoff.js +112 -0
  30. package/bin/commands/whoami.js +43 -0
  31. package/bin/jarvis.js +159 -0
  32. package/bin/lib/auth/session.js +56 -0
  33. package/bin/lib/config/constants.js +123 -0
  34. package/bin/lib/config/ide-config.js +233 -0
  35. package/bin/lib/core/scanner.js +124 -0
  36. package/bin/lib/core/sync-engine.js +551 -0
  37. package/bin/lib/docs/fetch-file.sh +41 -0
  38. package/bin/lib/docs/publish-file.sh +284 -0
  39. package/bin/lib/docs/validate-frontmatter.js +157 -0
  40. package/bin/lib/env-loader.js +198 -0
  41. package/bin/lib/tasks/comment.js +131 -0
  42. package/bin/lib/utils/git-parser.js +145 -0
  43. package/bin/lib/utils/logger.js +104 -0
  44. package/bin/lib/utils/npmrc-parser.js +106 -0
  45. package/bin/lib/utils/paths.js +55 -0
  46. package/bin/lib/utils/ui.js +59 -0
  47. package/bin/lib/vcs/api.js +312 -0
  48. package/bin/lib/vcs/create-issue.js +43 -0
  49. package/bin/lib/vcs/create-merge.js +43 -0
  50. package/bin/lib/vcs/fetch-raw.js +30 -0
  51. package/bin/postinstall.js +41 -0
  52. package/members.md +25 -0
  53. package/package.json +55 -0
  54. package/rules/AGENTS.md +205 -0
  55. package/rules/engineering/data/data-rules.md +200 -0
  56. package/rules/engineering/eng-rules.md +243 -0
  57. package/rules/engineering/eng-security-rules.md +186 -0
  58. package/rules/engineering/eng.breakdown-subtasks-rules.md +585 -0
  59. package/rules/engineering/eng.bump-rules.md +27 -0
  60. package/rules/engineering/eng.docs-scraping-rules.md +64 -0
  61. package/rules/engineering/eng.downstream-flow-rules.md +297 -0
  62. package/rules/engineering/eng.integrations-rules.md +73 -0
  63. package/rules/engineering/eng.plan-rules.md +333 -0
  64. package/rules/engineering/eng.pr-rules.md +359 -0
  65. package/rules/engineering/eng.pre-pr-rules.md +103 -0
  66. package/rules/engineering/eng.start-rules.md +246 -0
  67. package/rules/engineering/eng.tech-spec-rules.md +968 -0
  68. package/rules/engineering/eng.work-rules.md +312 -0
  69. package/rules/engineering/frontend/eng.frontend-rules.md +147 -0
  70. package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +259 -0
  71. package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +137 -0
  72. package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +181 -0
  73. package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +120 -0
  74. package/rules/engineering/rpa/eng.rpa-rules.md +230 -0
  75. package/rules/product/README.md +24 -0
  76. package/rules/product/prod-rules.md +151 -0
  77. package/rules/rtk-rules.md +68 -0
  78. package/skills/AGENTS.md +290 -0
  79. package/skills/SKILLS-ROADMAP.md +333 -0
  80. package/skills/churn-audit/SKILL.md +385 -0
  81. package/skills/context-detect/SKILL.md +399 -0
  82. package/skills/context-detect/assets/context-profile-template.md +127 -0
  83. package/skills/docs-central/README.md +310 -0
  84. package/skills/docs-central/SKILL.md +423 -0
  85. package/skills/docs-index/SKILL.md +377 -0
  86. package/skills/eng-ai-engineer/SKILL.md +296 -0
  87. package/skills/eng-arch-c4/SKILL.md +358 -0
  88. package/skills/eng-arch-c4/assets/example-code.md +189 -0
  89. package/skills/eng-arch-c4/assets/example-component.md +105 -0
  90. package/skills/eng-arch-c4/assets/example-container.md +104 -0
  91. package/skills/eng-arch-c4/assets/example-context.md +81 -0
  92. package/skills/eng-backend/SKILL.md +776 -0
  93. package/skills/eng-browser-extension-builder/SKILL.md +385 -0
  94. package/skills/eng-cybersecurity/SKILL.md +645 -0
  95. package/skills/eng-data-bi/SKILL.md +199 -0
  96. package/skills/eng-data-debug/SKILL.md +307 -0
  97. package/skills/eng-data-engineer/SKILL.md +256 -0
  98. package/skills/eng-data-onboard/SKILL.md +310 -0
  99. package/skills/eng-data-orchestrator/SKILL.md +426 -0
  100. package/skills/eng-design-system/SKILL.md +619 -0
  101. package/skills/eng-docs-write/SKILL.md +312 -0
  102. package/skills/eng-frontend/SKILL.md +913 -0
  103. package/skills/eng-jira-comment/SKILL.md +17 -0
  104. package/skills/eng-microfrontend/SKILL.md +602 -0
  105. package/skills/eng-ms-trace/SKILL.md +469 -0
  106. package/skills/eng-nestjs/SKILL.md +791 -0
  107. package/skills/eng-performance-engineer/SKILL.md +312 -0
  108. package/skills/eng-pr/SKILL.md +339 -0
  109. package/skills/eng-qa-a11y-audit/SKILL.md +269 -0
  110. package/skills/eng-qa-bug-report/SKILL.md +1088 -0
  111. package/skills/eng-qa-bug-report/TASK_MANAGERS.md +138 -0
  112. package/skills/eng-qa-cypress-e2e/SKILL.md +177 -0
  113. package/skills/eng-qa-dev-guide/SKILL.md +164 -0
  114. package/skills/eng-qa-e2e/SKILL.md +400 -0
  115. package/skills/eng-qa-e2e-spec-writer/SKILL.md +322 -0
  116. package/skills/eng-qa-exploratory/SKILL.md +188 -0
  117. package/skills/eng-qa-gate/SKILL.md +370 -0
  118. package/skills/eng-qa-gate/assets/checklist-validacao.md +291 -0
  119. package/skills/eng-qa-graphql-contract/SKILL.md +256 -0
  120. package/skills/eng-qa-quality-report/SKILL.md +412 -0
  121. package/skills/eng-qa-test-plan/SKILL.md +466 -0
  122. package/skills/eng-qa-test-plan/assets/test-coverage-template.md +92 -0
  123. package/skills/eng-qa-test-plan/assets/test-patterns.md +178 -0
  124. package/skills/eng-qa-testsprite/SKILL.md +325 -0
  125. package/skills/eng-qa-testsprite/references/testsprite-mcp.md +224 -0
  126. package/skills/eng-qa-unit-test/SKILL.md +471 -0
  127. package/skills/eng-rabbitmq/SKILL.md +661 -0
  128. package/skills/eng-scraper/SKILL.md +683 -0
  129. package/skills/eng-scraper-robot-builder/SKILL.md +370 -0
  130. package/skills/eng-security-patch/SKILL.md +378 -0
  131. package/skills/eng-security-triage/SKILL.md +266 -0
  132. package/skills/eng-task-comment/SKILL.md +60 -0
  133. package/skills/eng-tech-analyst/SKILL.md +529 -0
  134. package/skills/eng-threat-model/SKILL.md +161 -0
  135. package/skills/init-jarvis/SKILL.md +1304 -0
  136. package/skills/init-jarvis/assets/mcp-configs.md +389 -0
  137. package/skills/init-jarvis/assets/onboarding-checklist.md +104 -0
  138. package/skills/init-jarvis/assets/setup-guide.md +360 -0
  139. package/skills/lovable-prompt-generator/SKILL.md +304 -0
  140. package/skills/prod-roadmap-report/README.md +303 -0
  141. package/skills/prod-roadmap-report/SKILL.md +198 -0
  142. package/skills/prod-roadmap-report/commands/status.compiled.single.team.md +23 -0
  143. package/skills/prod-roadmap-report/commands/status.list.projects.md +17 -0
  144. package/skills/prod-roadmap-report/commands/status.memory.md +192 -0
  145. package/skills/prod-roadmap-report/commands/status.roadmap.preview.md +94 -0
  146. package/skills/prod-roadmap-report/references/detailed-guide.md +236 -0
  147. package/skills/prod-roadmap-report/rules/detailed-guide.md +237 -0
  148. package/skills/prod-roadmap-report/rules/status-report-rules.md +44 -0
  149. package/skills/prod-roadmap-report/templates/template-multiple-teams-compiled-status.md +53 -0
  150. package/skills/prod-roadmap-report/templates/template-projects-list.md +23 -0
  151. package/skills/prod-roadmap-report/templates/template-single-team-compiled-status.md +60 -0
  152. package/skills/prod-roadmap-report/templates/template-single-team-status.md +49 -0
  153. package/skills/prod-specs/SKILL.md +108 -0
  154. package/skills/prod-specs/references/prod.spec.clarify.md +176 -0
  155. package/skills/prod-specs/references/prod.spec.epic.md +107 -0
  156. package/skills/prod-specs/references/prod.spec.frd.md +135 -0
  157. package/skills/prod-specs/references/prod.spec.issue.md +145 -0
  158. package/skills/prod-specs/references/prod.spec.prd.md +118 -0
  159. package/skills/prod-specs/rules/prod-spec-rules.md +186 -0
  160. package/skills/prod-specs/templates/prod-breakdown-template.md +136 -0
  161. package/skills/prod-specs/templates/prod-epic-template.md +76 -0
  162. package/skills/prod-specs/templates/prod-frd-template.md +172 -0
  163. package/skills/prod-specs/templates/prod-issue-template.md +68 -0
  164. package/skills/prod-specs/templates/prod-prd-full-template.md +159 -0
  165. package/skills/prod-specs/templates/prod-prd-template.md +173 -0
  166. package/skills/prod-specs-update/SKILL.md +272 -0
  167. package/skills/report-issue/SKILL.md +156 -0
  168. package/taxonomy.md +270 -0
  169. package/templates/AGENTS.md +189 -0
  170. package/templates/CDD aplicado a Prompts.md +182 -0
  171. package/templates/ENV-template.md +187 -0
  172. package/templates/engineering/AGENTS-template.md +71 -0
  173. package/templates/engineering/ARD-template.md +193 -0
  174. package/templates/engineering/CONTACTS-template.md +135 -0
  175. package/templates/engineering/PR-template.md +40 -0
  176. package/templates/engineering/RFC-Playbook.md +325 -0
  177. package/templates/engineering/RFC-template.md +199 -0
  178. package/templates/engineering/architecture-template.md +277 -0
  179. package/templates/engineering/breakdown-subtasks-template.md +582 -0
  180. package/templates/engineering/c4-model-template.md +516 -0
  181. package/templates/engineering/data-contract-template.md +135 -0
  182. package/templates/engineering/data-pipeline-template.md +163 -0
  183. package/templates/engineering/plan-template.md +255 -0
  184. package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +311 -0
  185. package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +249 -0
  186. package/templates/engineering/qa/qa.cypress-test-template.md +172 -0
  187. package/templates/engineering/qa/qa.exploratory-session-template.md +148 -0
  188. package/templates/engineering/qa/qa.quality-report-template.md +130 -0
  189. package/templates/engineering/qa/qa.release-signoff-template.md +54 -0
  190. package/templates/engineering/qa/qa.sprint-plan-template.md +49 -0
  191. package/templates/engineering/swagger-template.md +145 -0
  192. package/templates/engineering/tech-spec-template.md +497 -0
  193. package/templates/engineering/work-progress-template.md +155 -0
  194. package/workflows/AGENTS.md +240 -0
  195. package/workflows/README.md +160 -0
  196. package/workflows/all-tools.md +11 -0
  197. package/workflows/engineering/data/data.contract.md +202 -0
  198. package/workflows/engineering/data/data.new-pipeline.md +234 -0
  199. package/workflows/engineering/eng.breakdown-subtasks.md +420 -0
  200. package/workflows/engineering/eng.bug-audit.md +591 -0
  201. package/workflows/engineering/eng.build-tech-spec.md +1116 -0
  202. package/workflows/engineering/eng.create-ard-from-code.md +259 -0
  203. package/workflows/engineering/eng.create-ard.md +382 -0
  204. package/workflows/engineering/eng.create-rfc.md +245 -0
  205. package/workflows/engineering/eng.debug.md +479 -0
  206. package/workflows/engineering/eng.docs.md +40 -0
  207. package/workflows/engineering/eng.light-arch.md +84 -0
  208. package/workflows/engineering/eng.plan.md +213 -0
  209. package/workflows/engineering/eng.pr.md +466 -0
  210. package/workflows/engineering/eng.pre-pr.md +167 -0
  211. package/workflows/engineering/eng.review.md +185 -0
  212. package/workflows/engineering/eng.rpa.robot.md +342 -0
  213. package/workflows/engineering/eng.security-audit.md +312 -0
  214. package/workflows/engineering/eng.security-incident.md +275 -0
  215. package/workflows/engineering/eng.security-pipeline.md +210 -0
  216. package/workflows/engineering/eng.security-review.md +235 -0
  217. package/workflows/engineering/eng.start.md +494 -0
  218. package/workflows/engineering/eng.work.md +558 -0
  219. package/workflows/engineering/frontend/eng.frontend-component.md +190 -0
  220. package/workflows/engineering/frontend/eng.frontend-perf-audit.md +375 -0
  221. package/workflows/engineering/frontend/eng.frontend-review.md +185 -0
  222. package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +51 -0
  223. package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +51 -0
  224. package/workflows/engineering/qa/eng.qa-exploratory-session.md +60 -0
  225. package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +202 -0
  226. package/workflows/engineering/qa/eng.qa-quality-report.md +83 -0
  227. package/workflows/engineering/qa/eng.qa-refinement-entry.md +83 -0
  228. package/workflows/engineering/qa/eng.qa-release-signoff.md +170 -0
  229. package/workflows/engineering/qa/eng.qa-sprint-planning.md +100 -0
  230. package/workflows/engineering/ta/eng.ta.atendimento.md +93 -0
  231. package/workflows/product/prod.roadmap.preview.md +110 -0
  232. package/workflows/product/prod.spec.breakdown.md +163 -0
  233. package/workflows/product/prod.spec.clarify.md +178 -0
  234. package/workflows/product/prod.spec.epic.md +154 -0
  235. package/workflows/product/prod.spec.frd.md +96 -0
  236. package/workflows/product/prod.spec.issue.md +145 -0
  237. package/workflows/product/prod.spec.md +60 -0
  238. package/workflows/product/prod.spec.prd.md +100 -0
  239. package/workflows/taxonomy.md +92 -0
  240. package/workflows/warm-up.md +574 -0
@@ -0,0 +1,199 @@
1
+ ---
2
+ name: eng-data-bi
3
+ description: >
4
+ Especialista em dashboards e análise de dados via $DATA_BI_TOOL: criação de dashboards,
5
+ queries SQL no $DATA_QUERY_ENGINE, compartilhamento com squads e boas práticas de performance.
6
+ Trigger: Use para criar ou manter dashboards, montar queries analíticas, compartilhar dados com squads.
7
+ license: AGPL-3.0
8
+ compatibility: Designed for Claude Code (or similar products)
9
+ allowed-tools: Read Write Edit Glob Grep Bash
10
+ metadata:
11
+ author: jarvis-team
12
+ version: "1.0"
13
+ argument-hint: "[dashboard|query|compartilhar|otimizar] [contexto]"
14
+ disable-model-invocation: false
15
+ ---
16
+
17
+ # Eng Data BI — Dashboards e Análise de Dados
18
+
19
+ Você é um **especialista em BI e visualização de dados** com domínio em consultas SQL analíticas, modelagem de dashboards e boas práticas de performance em ferramentas de BI como $DATA_BI_TOOL.
20
+
21
+ ## Objetivo
22
+
23
+ Criar dashboards confiáveis, queries otimizadas e compartilhar dados de forma organizada com squads — garantindo que as métricas apresentadas refletem fielmente os dados em `gold`.
24
+
25
+ ## Stack do Projeto
26
+
27
+ Leia as variáveis de stack do `$IDE/ENV.md`:
28
+
29
+ ```bash
30
+ grep -E "^DATA_" $IDE/ENV.md
31
+ ```
32
+
33
+ | Variável ENV | O que define |
34
+ |-------------|-------------|
35
+ | `DATA_BI_TOOL` | Ferramenta de BI (ex: metabase, looker, superset, power_bi) |
36
+ | `DATA_QUERY_ENGINE` | Engine de query analítica (ex: aws_athena, bigquery, redshift) |
37
+ | `DATA_WAREHOUSE` | Data warehouse dedicado, se houver |
38
+ | `DATA_LAKE` | Armazenamento do data lake (ex: aws_s3, gcs) |
39
+
40
+ > Se as variáveis `DATA_*` não estiverem definidas, perguntar ao usuário antes de prosseguir.
41
+
42
+ ## Pré-requisito
43
+
44
+ ### 1. Verificar fonte de dados
45
+
46
+ Antes de criar qualquer dashboard ou query:
47
+
48
+ ```bash
49
+ grep -E "^DATA_" $IDE/ENV.md
50
+ ```
51
+
52
+ - Confirmar qual camada será usada (preferência: `gold` — sempre documentada e com contrato de dados)
53
+ - Se usar `silver` diretamente, avisar o usuário que o dado não tem contrato formal
54
+ - **Nunca usar `bronze`** como fonte de dashboard
55
+
56
+ ### 2. Carregar regras do projeto
57
+
58
+ Se existir `$IDE/rules/engineering/data/data-rules.md`, ler e aplicar as convenções (nomenclatura, política de sensibilidade, SLAs).
59
+
60
+ ---
61
+
62
+ ## Fluxos de Trabalho
63
+
64
+ ### Fluxo A — Criar Dashboard
65
+
66
+ 1. **Entender o caso de uso**
67
+ - Qual squad vai usar?
68
+ - Quais métricas são necessárias?
69
+ - Qual granularidade (diária, mensal, por cliente, por produto)?
70
+ - Quais filtros serão necessários?
71
+
72
+ 2. **Confirmar a fonte de dados**
73
+ - Qual tabela em `gold` será usada?
74
+ - Verificar se existe contrato de dados para ela
75
+ - Se não existir, orientar a criar via `data.contract.md` antes de expor
76
+
77
+ 3. **Criar e validar a query SQL**
78
+ - Escrever query no `$DATA_QUERY_ENGINE` (ex: Athena, BigQuery)
79
+ - Listar campos explicitamente — nunca `SELECT *`
80
+ - Aplicar filtros de período usando `data_referencia` (não `CURRENT_DATE` diretamente)
81
+ - Testar com período pequeno antes de ampliar
82
+
83
+ ```sql
84
+ -- Padrão obrigatório: campos explícitos + filtro por data_referencia
85
+ SELECT
86
+ id_cliente,
87
+ nome_cliente,
88
+ SUM(quantidade_pedidos) AS total_pedidos,
89
+ SUM(valor_total) AS valor_total,
90
+ data_referencia
91
+ FROM gold.fato_pedidos
92
+ WHERE data_referencia BETWEEN :data_inicio AND :data_fim
93
+ GROUP BY id_cliente, nome_cliente, data_referencia
94
+ ORDER BY total_pedidos DESC
95
+ ```
96
+
97
+ 4. **Montar o dashboard no $DATA_BI_TOOL**
98
+ - Título descritivo: `[Squad] Métrica — Periodicidade` (ex: `[CORE] Assinaturas ativas — Diário`)
99
+ - Descrição: explicar o que o dashboard mostra e de onde vêm os dados
100
+ - Filtros obrigatórios: período de análise
101
+ - Filtros recomendados: squad, entidade principal (cliente, produto, etc.)
102
+
103
+ 5. **Compartilhar com a squad requisitante**
104
+ - Enviar link do dashboard
105
+ - Explicar os filtros disponíveis
106
+ - Documentar a fonte e periodicidade de atualização
107
+
108
+ ---
109
+
110
+ ### Fluxo B — Otimizar Query Lenta
111
+
112
+ 1. **Identificar o gargalo**
113
+
114
+ Sinais comuns de query lenta:
115
+ - Scan completo de tabela sem filtro de partição
116
+ - `JOIN` em tabelas grandes sem condição seletiva
117
+ - Subqueries desnecessárias em vez de CTEs
118
+ - `SELECT *` trazendo colunas desnecessárias
119
+
120
+ 2. **Aplicar boas práticas**
121
+
122
+ | Problema | Solução |
123
+ |----------|---------|
124
+ | Sem filtro de partição | Adicionar `WHERE data_referencia BETWEEN ...` |
125
+ | `SELECT *` | Listar apenas campos necessários |
126
+ | Subquery aninhada | Reescrever como CTE (`WITH ...`) |
127
+ | `COUNT(*)` em tabela grande | Usar estimativas ou tabela de auditoria `gold.pipeline_audit` |
128
+ | JOIN sem índice | Verificar se há partição ou cluster na chave de join |
129
+
130
+ 3. **Testar e comparar**
131
+ - Executar versão otimizada com período pequeno
132
+ - Comparar tempo de execução e bytes escaneados
133
+ - Documentar a otimização em comentário na query
134
+
135
+ ---
136
+
137
+ ### Fluxo C — Compartilhar Dados com Squad
138
+
139
+ 1. **Verificar se existe contrato de dados**
140
+ - Se `gold` está documentado com `data-contract-template.md` → compartilhar link do dashboard ou query
141
+ - Se não está documentado → criar contrato antes (usar `data.contract.md`)
142
+
143
+ 2. **Orientar a squad sobre como usar**
144
+ - Filtros disponíveis
145
+ - Periodicidade de atualização
146
+ - Campos sensíveis mascarados (se houver)
147
+ - Canal de suporte: `$DATA_REQUESTS_CHANNEL` do ENV.md
148
+
149
+ 3. **Registrar o compartilhamento**
150
+ - Anotar no contrato de dados quem está consumindo
151
+
152
+ ---
153
+
154
+ ## Boas Práticas de Performance
155
+
156
+ ### Queries no $DATA_QUERY_ENGINE
157
+
158
+ ```sql
159
+ -- ✅ BOM: filtro de partição + campos explícitos
160
+ SELECT id_cliente, nome_cliente, total_pedidos
161
+ FROM gold.fato_pedidos
162
+ WHERE data_referencia = '2026-04-01'
163
+
164
+ -- ❌ RUIM: sem filtro, SELECT *
165
+ SELECT * FROM gold.fato_pedidos
166
+ ```
167
+
168
+ ### Organização de Dashboards
169
+
170
+ - **Um dashboard por contexto** — não misturar métricas de domínios diferentes
171
+ - **Nomes consistentes** — seguir padrão `[Squad] Título — Periodicidade`
172
+ - **Descrições obrigatórias** em cada card/gráfico — o que mostra e de onde vem
173
+ - **Filtros no topo** — período sempre visível e funcional
174
+
175
+ ### Dados Sensíveis
176
+
177
+ - ❌ Nunca exibir CPF, dados bancários ou localização em tempo real em dashboards
178
+ - ✅ Se o campo sensível for necessário, verificar mascaramento na tabela `gold`
179
+ - ✅ Qualquer exposição de dado sensível requer aprovação explícita (ver `data-rules.md` seção 5)
180
+
181
+ ---
182
+
183
+ ## Regras Críticas
184
+
185
+ ### Nunca faça
186
+
187
+ - ❌ `SELECT *` em queries de dashboard — sempre listar campos
188
+ - ❌ Usar tabela `bronze` como fonte direta de dashboard
189
+ - ❌ Criar dashboard sem título e descrição
190
+ - ❌ Expor dados sensíveis sem mascaramento
191
+ - ❌ Compartilhar dados de `gold` sem contrato de dados documentado
192
+
193
+ ### Sempre faça
194
+
195
+ - ✅ Confirmar fonte dos dados antes de montar o dashboard
196
+ - ✅ Filtrar por `data_referencia` para evitar scans completos
197
+ - ✅ Testar query antes de publicar
198
+ - ✅ Explicar para a squad o que os dados representam e quando são atualizados
199
+ - ✅ Versionar queries importantes em arquivos `.sql` no `$DATA_REPO`
@@ -0,0 +1,307 @@
1
+ ---
2
+ name: eng-data-debug
3
+ description: >
4
+ Diagnóstico e rastreamento de falhas em pipelines de dados por camada (fonte → bronze → silver → gold).
5
+ Analogia com eng-ms-trace mas para data lineage. Cobre logs, checks de qualidade e plano de reprocessamento.
6
+ Trigger: Use quando um pipeline falhou, dado está incorreto, volume caiu ou dado está desatualizado.
7
+ license: AGPL-3.0
8
+ compatibility: Designed for Claude Code (or similar products)
9
+ allowed-tools: Read Write Edit Glob Grep Bash
10
+ metadata:
11
+ author: jarvis-team
12
+ version: "1.0"
13
+ argument-hint: "[pipeline|tabela|camada] [sintoma]"
14
+ disable-model-invocation: false
15
+ ---
16
+
17
+ # Eng Data Debug — Diagnóstico de Falhas em Pipelines
18
+
19
+ Você é um **especialista em diagnóstico de dados** com foco em rastrear falhas por camada no pipeline Medallion (fonte → bronze → silver → gold). Sua abordagem é sistemática: isolar a camada onde o dado quebrou antes de propor qualquer correção.
20
+
21
+ ## Objetivo
22
+
23
+ Identificar a causa raiz de falhas em pipelines, dados incorretos ou quedas de volume — e propor correção com plano de reprocessamento idempotente.
24
+
25
+ ## Stack do Projeto
26
+
27
+ ```bash
28
+ grep -E "^DATA_" $IDE/ENV.md
29
+ ```
30
+
31
+ | Variável ENV | O que define |
32
+ |-------------|-------------|
33
+ | `DATA_ORCHESTRATOR` | Orquestrador (ex: airflow, glue-scheduler, prefect) |
34
+ | `DATA_ETL_TOOL` | Ferramenta ETL (ex: aws_glue, dbt, spark) |
35
+ | `DATA_QUALITY_TOOL` | Ferramenta de qualidade (ex: great_expectations, soda) |
36
+ | `DATA_LAKE` | Armazenamento (ex: aws_s3, gcs) |
37
+ | `DATA_QUERY_ENGINE` | Engine de query (ex: aws_athena, bigquery) |
38
+ | `DATA_REPO` | Repositório dos scripts |
39
+
40
+ ---
41
+
42
+ ## Metodologia de Diagnóstico
43
+
44
+ > **Princípio**: nunca corrigir sem antes entender em qual camada o problema ocorreu.
45
+ > Cada camada tem seu próprio tipo de falha — a causa raiz determina a correção.
46
+
47
+ ### Mapa de camadas e pontos de falha
48
+
49
+ ```
50
+ FONTE EXTERNA
51
+ │
52
+ ▼ (extração)
53
+ BRONZE ← falha de extração: fonte indisponível, schema mudou, volume zero
54
+ │
55
+ ▼ (transformação)
56
+ SILVER ← falha de limpeza: nulos inesperados, tipos errados, duplicatas
57
+ │
58
+ ▼ (modelagem)
59
+ GOLD ← falha de negócio: métrica errada, join incorreto, regra de negócio quebrada
60
+ │
61
+ ▼ (consumo)
62
+ DASHBOARD / API ← falha de exposição: query errada, filtro incorreto, cache
63
+ ```
64
+
65
+ ---
66
+
67
+ ## Fluxo de Diagnóstico
68
+
69
+ ### Passo 1 — Coletar contexto do sintoma
70
+
71
+ Perguntar ao usuário (se não fornecido em `$ARGUMENTS`):
72
+
73
+ 1. Qual o sintoma exato? (ex: pipeline falhou, dado errado, volume zerou, dado desatualizado)
74
+ 2. Qual tabela ou dashboard está afetado?
75
+ 3. Desde quando o problema ocorre?
76
+ 4. Alguma mudança recente foi feita? (deploy, nova versão da fonte, migração)
77
+
78
+ ### Passo 2 — Localizar a camada do problema
79
+
80
+ Executar verificações de cima para baixo, parando quando encontrar a quebra:
81
+
82
+ #### 2.1 Verificar gold (sintoma visível)
83
+
84
+ ```sql
85
+ -- Verificar volume em gold para a data afetada
86
+ SELECT
87
+ data_referencia,
88
+ COUNT(*) AS total_rows,
89
+ MAX(ingested_at) AS ultima_ingestao
90
+ FROM gold.<tabela_afetada>
91
+ WHERE data_referencia >= CURRENT_DATE - INTERVAL '7' DAY
92
+ GROUP BY data_referencia
93
+ ORDER BY data_referencia DESC
94
+ ```
95
+
96
+ - Volume zero ou abaixo do esperado? → problema está em silver ou bronze
97
+ - Dado existe mas valor está errado? → problema de regra de negócio em gold
98
+
99
+ #### 2.2 Verificar silver
100
+
101
+ ```sql
102
+ -- Verificar volume em silver para o mesmo período
103
+ SELECT
104
+ data_referencia,
105
+ COUNT(*) AS total_rows,
106
+ COUNT(CASE WHEN <campo_critico> IS NULL THEN 1 END) AS nulos_criticos
107
+ FROM silver.<tabela_base>
108
+ WHERE data_referencia >= CURRENT_DATE - INTERVAL '7' DAY
109
+ GROUP BY data_referencia
110
+ ORDER BY data_referencia DESC
111
+ ```
112
+
113
+ - Volume menor que esperado? → problema está em bronze ou na extração
114
+ - Nulos em campos críticos? → falha de limpeza em silver
115
+
116
+ #### 2.3 Verificar bronze
117
+
118
+ ```sql
119
+ -- Verificar se bronze recebeu dados
120
+ SELECT
121
+ data_referencia,
122
+ COUNT(*) AS total_rows,
123
+ MAX(ingested_at) AS ultima_ingestao,
124
+ MIN(ingested_at) AS primeira_ingestao
125
+ FROM bronze.<tabela_fonte>
126
+ WHERE data_referencia >= CURRENT_DATE - INTERVAL '7' DAY
127
+ GROUP BY data_referencia
128
+ ORDER BY data_referencia DESC
129
+ ```
130
+
131
+ - Volume zero em bronze? → problema na extração ou fonte externa
132
+ - Volume OK em bronze mas baixo em silver? → problema na transformação
133
+
134
+ #### 2.4 Verificar logs de execução
135
+
136
+ Verificar `gold.pipeline_audit` (se existir):
137
+
138
+ ```sql
139
+ SELECT
140
+ pipeline,
141
+ data_referencia,
142
+ status,
143
+ rows_extracted,
144
+ rows_loaded,
145
+ duration_seconds,
146
+ execution_id,
147
+ ingested_at
148
+ FROM gold.pipeline_audit
149
+ WHERE pipeline = '<nome_do_pipeline>'
150
+ AND data_referencia >= CURRENT_DATE - INTERVAL '7' DAY
151
+ ORDER BY data_referencia DESC, ingested_at DESC
152
+ ```
153
+
154
+ Para logs no orquestrador (`$DATA_ORCHESTRATOR`), orientar a verificar:
155
+ - **Airflow**: UI → DAGs → `<dag_id>` → Task Logs
156
+ - **AWS Glue**: CloudWatch → `/aws-glue/jobs/output`
157
+ - **Prefect/Dagster**: UI de runs → logs da task afetada
158
+
159
+ ### Passo 3 — Diagnóstico por tipo de falha
160
+
161
+ #### Falha Tipo A: Volume zero em bronze
162
+
163
+ **Causa provável**: fonte externa indisponível, credencial expirada, endpoint mudou.
164
+
165
+ **Como confirmar**:
166
+ - Verificar se a fonte externa está acessível
167
+ - Checar credenciais/secrets do pipeline
168
+ - Verificar se houve mudança de schema ou endpoint na fonte
169
+
170
+ **Correção**:
171
+ - Corrigir o problema na fonte/credencial
172
+ - Reprocessar: `pipeline.run(data_referencia='YYYY-MM-DD')` (idempotente)
173
+
174
+ #### Falha Tipo B: Schema mudou na fonte
175
+
176
+ **Sinal**: erro de extração, campos faltando em bronze, tipo incompatível.
177
+
178
+ **Como confirmar**:
179
+ ```python
180
+ # Comparar schema atual com o esperado
181
+ source_schema = get_source_schema()
182
+ expected_schema = load_expected_schema('bronze.<tabela>')
183
+ diff = compare_schemas(source_schema, expected_schema)
184
+ print(diff) # campos adicionados, removidos ou com tipo diferente
185
+ ```
186
+
187
+ **Correção**:
188
+ - Se campo foi removido: atualizar script de extração para tratar ausência
189
+ - Se campo foi adicionado: avaliar se deve ser incluído em silver/gold
190
+ - Se tipo mudou: atualizar transformação em silver
191
+ - Documentar a mudança no `data-pipeline-template.md`
192
+
193
+ #### Falha Tipo C: Falha de qualidade (Expectation Suite)
194
+
195
+ **Sinal**: pipeline rodou mas promoção de camada foi bloqueada.
196
+
197
+ **Como confirmar**: verificar logs do `$DATA_QUALITY_TOOL`:
198
+ - **Great Expectations**: resultado do `checkpoint.run()` — quais expectations falharam?
199
+ - **Soda**: resultado do `scan.execute()` — quais checks falharam?
200
+
201
+ **Correção por expectation**:
202
+
203
+ | Expectation falhou | O que fazer |
204
+ |---|---|
205
+ | `row_count_to_be_between` (volume zero) | Verificar extração em bronze |
206
+ | `values_to_not_be_null` em chave primária | Verificar join ou transformação em silver |
207
+ | `values_to_be_unique` em chave primária | Verificar duplicatas na extração — aplicar deduplicação |
208
+ | `values_to_be_in_set` (domínio fechado) | Verificar se fonte adicionou novo valor — atualizar set |
209
+
210
+ #### Falha Tipo D: Dado incorreto em gold (regra de negócio)
211
+
212
+ **Sinal**: volume OK, mas métrica está errada no dashboard.
213
+
214
+ **Como confirmar**:
215
+ ```sql
216
+ -- Rastrear o valor incorreto até a fonte
217
+ SELECT
218
+ g.id_cliente,
219
+ g.total_pedidos AS gold_valor,
220
+ s.quantidade_pedidos AS silver_valor,
221
+ b.raw_pedidos AS bronze_valor
222
+ FROM gold.fato_pedidos g
223
+ JOIN silver.pedidos s ON g.id_cliente = s.id_cliente
224
+ JOIN bronze.pedidos_erp b ON s.id_externo = b.id_externo
225
+ WHERE g.id_cliente = '<id_com_problema>'
226
+ AND g.data_referencia = '<data_afetada>'
227
+ ```
228
+
229
+ **Correção**:
230
+ - Identificar a camada onde o valor diverge
231
+ - Corrigir a regra de negócio ou o join incorreto
232
+ - Reprocessar a camada afetada de forma idempotente
233
+
234
+ ### Passo 4 — Plano de reprocessamento
235
+
236
+ Após identificar e corrigir a causa raiz:
237
+
238
+ ```
239
+ 1. Corrigir o código na camada afetada
240
+ 2. Testar a correção com período pequeno (1 dia)
241
+ 3. Confirmar que os checks de qualidade passam
242
+ 4. Reprocessar o período completo afetado (idempotente)
243
+ 5. Verificar gold após reprocessamento
244
+ 6. Comunicar squads afetadas com resumo do incidente
245
+ ```
246
+
247
+ **Script de reprocessamento padrão**:
248
+
249
+ ```python
250
+ # Reprocessar um range de datas (idempotente)
251
+ from datetime import date, timedelta
252
+
253
+ def reprocess_range(pipeline_fn, start_date: date, end_date: date):
254
+ current = start_date
255
+ while current <= end_date:
256
+ print(f"Reprocessando {current}...")
257
+ pipeline_fn(data_referencia=current) # DELETE + INSERT interno
258
+ current += timedelta(days=1)
259
+ print("Reprocessamento concluído.")
260
+ ```
261
+
262
+ ### Passo 5 — Comunicar e documentar
263
+
264
+ Após a correção:
265
+
266
+ 1. **Comunicar squads afetadas** com resumo claro:
267
+ - O que estava errado
268
+ - Período afetado
269
+ - Quando foi corrigido
270
+ - Se precisam invalidar cache de dashboard
271
+
272
+ 2. **Registrar o incidente** nas notas do pipeline:
273
+ - Causa raiz
274
+ - Correção aplicada
275
+ - Lição aprendida (ex: adicionar check de schema na próxima versão)
276
+
277
+ ---
278
+
279
+ ## Diagnóstico Rápido (referência)
280
+
281
+ | Sintoma | Camada provável | Primeira verificação |
282
+ |---|---|---|
283
+ | Pipeline não rodou | Orquestrador | Logs do DAG/job |
284
+ | Volume zero | Bronze / Extração | Acessibilidade da fonte |
285
+ | Dado desatualizado | Bronze / Orquestrador | Data da última execução |
286
+ | Nulos em campo crítico | Silver | Expectation Suite |
287
+ | Métrica errada | Gold | Join ou regra de negócio |
288
+ | Dashboard não atualiza | Gold / Cache | Data da última ingestão em gold |
289
+
290
+ ---
291
+
292
+ ## Regras Críticas
293
+
294
+ ### Nunca faça
295
+
296
+ - ❌ Corrigir diretamente em bronze — bronze é imutável
297
+ - ❌ Silenciar falhas de qualidade para "desbloquear" o pipeline
298
+ - ❌ Reprocessar sem confirmar que a causa raiz foi corrigida
299
+ - ❌ Modificar dados em produção sem plano de rollback
300
+
301
+ ### Sempre faça
302
+
303
+ - ✅ Isolar a camada do problema antes de corrigir
304
+ - ✅ Testar a correção com período pequeno antes de reprocessar tudo
305
+ - ✅ Reprocessar de forma idempotente (nunca APPEND sem verificar duplicatas)
306
+ - ✅ Comunicar squads afetadas após a correção
307
+ - ✅ Documentar causa raiz e lição aprendida