jarvis-ai-framework 2.1.0 → 3.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 (303) hide show
  1. package/AGENTS.md +22 -122
  2. package/agents/AGENTS.md +20 -24
  3. package/agents/README.md +25 -129
  4. package/agents/engineering/data/eng.data-engineer.agent.md +12 -35
  5. package/agents/engineering/eng.agent.md +18 -30
  6. package/agents/engineering/eng.bug-hunter.md +9 -12
  7. package/agents/engineering/eng.dev-code-reviewer.md +5 -1
  8. package/agents/engineering/eng.docs-writer.md +3 -3
  9. package/agents/engineering/eng.frontend.agent.md +13 -8
  10. package/agents/engineering/eng.rpa.agent.md +5 -13
  11. package/agents/engineering/eng.ux-designer.agent.md +4 -0
  12. package/agents/engineering/qa/eng.qa.quality-champion-task-agent.md +4 -0
  13. package/agents/engineering/qa/eng.qa.quality-strategist.md +13 -8
  14. package/agents/engineering/qa/eng.qa.test-architect.md +16 -15
  15. package/agents/engineering/qa/eng.qa.test-planner.md +22 -17
  16. package/agents/engineering/qa/eng.qa.testing-engineer.md +99 -15
  17. package/agents/product/prod.discovery-interviewer.md +22 -3
  18. package/agents/product/prod.pm-checker.md +4 -0
  19. package/bin/README.md +142 -0
  20. package/bin/commands/docs-publish.js +105 -141
  21. package/bin/commands/docs-sync.js +66 -104
  22. package/bin/commands/info.js +7 -27
  23. package/bin/commands/init.js +23 -51
  24. package/bin/commands/install-rtk.js +9 -3
  25. package/bin/commands/list.js +5 -18
  26. package/bin/commands/map.js +58 -0
  27. package/bin/commands/qa-signoff.js +58 -55
  28. package/bin/commands/tokens.js +90 -0
  29. package/bin/commands/whoami.js +30 -26
  30. package/bin/jarvis.js +9 -153
  31. package/bin/lib/auth/session.js +20 -20
  32. package/bin/lib/cli/program.js +219 -0
  33. package/bin/lib/cli/shared-options.js +29 -0
  34. package/bin/lib/config/constants.js +70 -2
  35. package/bin/lib/config/ide-config.js +4 -8
  36. package/bin/lib/core/profile-filter.js +116 -0
  37. package/bin/lib/core/scanner.js +5 -31
  38. package/bin/lib/core/sync-engine.js +21 -14
  39. package/bin/lib/core/token-report.js +100 -0
  40. package/bin/lib/docs/fetch-file.js +39 -0
  41. package/bin/lib/docs/publish-file.js +194 -0
  42. package/bin/lib/docs/redis-cache.js +49 -0
  43. package/bin/lib/docs/validate-frontmatter.js +9 -39
  44. package/bin/lib/env-loader.js +11 -34
  45. package/bin/lib/flow-map/index.js +65 -0
  46. package/bin/lib/flow-map/parse.js +223 -0
  47. package/bin/lib/flow-map/render.js +89 -0
  48. package/bin/lib/flow-map/tree.js +248 -0
  49. package/bin/lib/tasks/comment.js +40 -35
  50. package/bin/lib/utils/frontmatter.js +57 -0
  51. package/bin/lib/utils/git-parser.js +4 -6
  52. package/bin/lib/utils/npmrc-parser.js +6 -13
  53. package/bin/lib/utils/paths.js +2 -4
  54. package/bin/lib/utils/ui.js +3 -9
  55. package/bin/lib/vcs/api.js +25 -41
  56. package/bin/lib/vcs/create-issue.js +49 -33
  57. package/bin/lib/vcs/create-merge.js +47 -31
  58. package/bin/lib/vcs/fetch-raw.js +35 -23
  59. package/members.md +1 -1
  60. package/package.json +15 -4
  61. package/rules/AGENTS.md +18 -7
  62. package/rules/engineering/eng-rules.md +3 -13
  63. package/rules/engineering/eng-security-rules.md +19 -18
  64. package/rules/engineering/eng.bump-rules.md +3 -2
  65. package/rules/engineering/eng.docs-scraping-rules.md +4 -4
  66. package/rules/engineering/eng.integrations-rules.md +3 -7
  67. package/rules/engineering/eng.skills-rules.md +1 -5
  68. package/rules/engineering/eng.specializations-rules.md +18 -8
  69. package/rules/engineering/frontend/eng.frontend-rules.md +1 -4
  70. package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +1 -1
  71. package/rules/engineering/rpa/eng.rpa-rules.md +4 -9
  72. package/rules/product/README.md +1 -0
  73. package/rules/product/prod-rules.md +1 -4
  74. package/rules/product/prod.spec-rules.md +0 -4
  75. package/rules/rtk-rules.md +0 -1
  76. package/{rules → rules-on-demand}/engineering/eng.breakdown-subtasks-rules.md +0 -4
  77. package/{rules → rules-on-demand}/engineering/eng.plan-rules.md +0 -4
  78. package/{rules → rules-on-demand}/engineering/eng.pr-rules.md +0 -4
  79. package/{rules → rules-on-demand}/engineering/eng.pre-pr-rules.md +0 -4
  80. package/{rules → rules-on-demand}/engineering/eng.start-rules.md +0 -4
  81. package/{rules → rules-on-demand}/engineering/eng.tech-spec-rules.md +1 -2
  82. package/{rules → rules-on-demand}/engineering/eng.work-rules.md +0 -4
  83. package/skills/AGENTS.md +69 -106
  84. package/skills/SKILLS-ROADMAP.md +47 -132
  85. package/skills/eng-ai/SKILL.md +270 -0
  86. package/skills/eng-ai/references/1-fundamentos-ml.md +24 -0
  87. package/skills/eng-ai/references/10-arquitetura-solucoes-ia.md +24 -0
  88. package/skills/eng-ai/references/11-governanca-ia.md +24 -0
  89. package/skills/eng-ai/references/12-seguranca-ia-responsavel.md +25 -0
  90. package/skills/eng-ai/references/2-matematica-estatistica.md +24 -0
  91. package/skills/eng-ai/references/3-dados-para-ia.md +24 -0
  92. package/skills/eng-ai/references/4-deep-learning-fundacionais.md +24 -0
  93. package/skills/eng-ai/references/5-llms-chatbots-agentes-rag.md +25 -0
  94. package/skills/eng-ai/references/6-avaliacao-experimentacao.md +24 -0
  95. package/skills/eng-ai/references/7-engenharia-sistemas-ia.md +24 -0
  96. package/skills/eng-ai/references/8-mlops-plataforma.md +24 -0
  97. package/skills/eng-ai/references/9-produto-ia.md +24 -0
  98. package/skills/eng-ai/references/especializacoes.md +17 -0
  99. package/skills/eng-automation/SKILL.md +290 -0
  100. package/skills/eng-automation/references/1-fundamentos-automacao.md +25 -0
  101. package/skills/eng-automation/references/10-ingestao-dados.md +25 -0
  102. package/skills/eng-automation/references/11-captcha-antibot.md +25 -0
  103. package/skills/eng-automation/references/12-limites-taxa-sessoes.md +25 -0
  104. package/skills/eng-automation/references/13-agendamento-orquestracao.md +24 -0
  105. package/skills/eng-automation/references/14-retentativa-erros.md +25 -0
  106. package/skills/eng-automation/references/15-autenticacao-credenciais.md +24 -0
  107. package/skills/eng-automation/references/16-observabilidade-confiabilidade.md +24 -0
  108. package/skills/eng-automation/references/2-aquisicao-dados.md +25 -0
  109. package/skills/eng-automation/references/3-automacao-navegador.md +24 -0
  110. package/skills/eng-automation/references/4-scraping-crawling.md +25 -0
  111. package/skills/eng-automation/references/5-apis-rest-graphql-soap.md +26 -0
  112. package/skills/eng-automation/references/6-webhooks-integracao.md +25 -0
  113. package/skills/eng-automation/references/7-rpa.md +25 -0
  114. package/skills/eng-automation/references/8-extracao-estruturada.md +25 -0
  115. package/skills/eng-automation/references/9-extracao-documentos.md +25 -0
  116. package/skills/eng-automation/references/especializacoes.md +18 -0
  117. package/skills/eng-backend/SKILL.md +6 -0
  118. package/skills/eng-backend-arch-c4/SKILL.md +10 -4
  119. package/skills/eng-backend-microservices-trace/SKILL.md +6 -0
  120. package/skills/eng-backend-nestjs/SKILL.md +17 -462
  121. package/skills/eng-backend-nestjs/references/1-arquitetura-modulos.md +54 -0
  122. package/skills/eng-backend-nestjs/references/2-guards-autenticacao.md +118 -0
  123. package/skills/eng-backend-nestjs/references/3-interceptors-pipes-filters.md +113 -0
  124. package/skills/eng-backend-nestjs/references/4-config-logging.md +61 -0
  125. package/skills/eng-backend-nestjs/references/5-testes.md +83 -0
  126. package/skills/eng-backend-nestjs/references/6-problemas-comuns.md +53 -0
  127. package/skills/eng-backend-rabbitmq/SKILL.md +15 -298
  128. package/skills/eng-backend-rabbitmq/references/1-referencia-endpoints.md +28 -0
  129. package/skills/eng-backend-rabbitmq/references/2-codigo-consumer-producer.md +90 -0
  130. package/skills/eng-backend-rabbitmq/references/3-arquiteturas-comuns.md +101 -0
  131. package/skills/eng-backend-rabbitmq/references/4-troubleshooting.md +93 -0
  132. package/skills/eng-data/SKILL.md +271 -0
  133. package/skills/eng-data/references/1-fundamentos-dados.md +24 -0
  134. package/skills/eng-data/references/10-ciencia-dados.md +24 -0
  135. package/skills/eng-data/references/11-dataops-plataforma.md +24 -0
  136. package/skills/eng-data/references/12-seguranca-privacidade.md +24 -0
  137. package/skills/eng-data/references/2-modelagem-dados.md +24 -0
  138. package/skills/eng-data/references/3-bancos-dados.md +24 -0
  139. package/skills/eng-data/references/4-arquitetura-dados.md +24 -0
  140. package/skills/eng-data/references/5-pipelines-integracao.md +24 -0
  141. package/skills/eng-data/references/6-qualidade-dados.md +24 -0
  142. package/skills/eng-data/references/7-governanca-metadados.md +24 -0
  143. package/skills/eng-data/references/8-estatistica-analise.md +24 -0
  144. package/skills/eng-data/references/9-analytics-bi.md +24 -0
  145. package/skills/eng-data/references/especializacoes.md +20 -0
  146. package/skills/eng-frontend/SKILL.md +18 -5
  147. package/skills/eng-frontend/references/13-design-system.md +48 -0
  148. package/skills/eng-frontend/references/14-microfrontend.md +46 -0
  149. package/skills/eng-global-docs-write/SKILL.md +10 -5
  150. package/skills/eng-global-pr/SKILL.md +7 -1
  151. package/skills/eng-global-task-comment/SKILL.md +8 -2
  152. package/skills/eng-platform/SKILL.md +331 -0
  153. package/skills/eng-platform/references/1-fundamentos-sistemas.md +23 -0
  154. package/skills/eng-platform/references/10-resiliencia-arquitetura.md +24 -0
  155. package/skills/eng-platform/references/11-plataforma-devex.md +24 -0
  156. package/skills/eng-platform/references/12-finops-custos.md +24 -0
  157. package/skills/eng-platform/references/13-seguranca-fundamentos.md +26 -0
  158. package/skills/eng-platform/references/14-profiling-performance.md +23 -0
  159. package/skills/eng-platform/references/15-testes-carga-chaos.md +23 -0
  160. package/skills/eng-platform/references/16-cache-multicamada.md +22 -0
  161. package/skills/eng-platform/references/2-redes.md +23 -0
  162. package/skills/eng-platform/references/3-cloud.md +24 -0
  163. package/skills/eng-platform/references/4-iac-automacao.md +24 -0
  164. package/skills/eng-platform/references/5-containers-orquestracao.md +25 -0
  165. package/skills/eng-platform/references/6-cicd-entrega.md +24 -0
  166. package/skills/eng-platform/references/7-observabilidade.md +24 -0
  167. package/skills/eng-platform/references/8-confiabilidade-sre.md +24 -0
  168. package/skills/eng-platform/references/9-seguranca-infra.md +26 -0
  169. package/skills/eng-platform/references/especializacoes.md +34 -0
  170. package/skills/eng-qa/SKILL.md +283 -0
  171. package/skills/eng-qa/references/1-fundamentos-qualidade.md +25 -0
  172. package/skills/eng-qa/references/10-confiabilidade.md +25 -0
  173. package/skills/eng-qa/references/11-seguranca.md +24 -0
  174. package/skills/eng-qa/references/12-acessibilidade.md +24 -0
  175. package/skills/eng-qa/references/13-dados-testes.md +24 -0
  176. package/skills/eng-qa/references/14-gestao-testes-defeitos.md +25 -0
  177. package/skills/eng-qa/references/15-arquitetura-qa.md +25 -0
  178. package/skills/eng-qa/references/2-estrategia-planejamento.md +25 -0
  179. package/skills/eng-qa/references/3-design-testes.md +25 -0
  180. package/skills/eng-qa/references/4-manual-exploratorio.md +24 -0
  181. package/skills/eng-qa/references/5-automacao-testes.md +25 -0
  182. package/skills/eng-qa/references/6-api-integracao.md +25 -0
  183. package/skills/eng-qa/references/7-contrato.md +24 -0
  184. package/skills/eng-qa/references/8-interface-compat-mobile.md +24 -0
  185. package/skills/eng-qa/references/9-performance.md +24 -0
  186. package/skills/eng-qa/references/especializacoes.md +29 -0
  187. package/skills/eng-qa-planner/SKILL.md +264 -0
  188. package/skills/jarvis-context-detect/SKILL.md +7 -1
  189. package/skills/jarvis-context-detect/assets/context-profile-template.md +1 -1
  190. package/skills/jarvis-create-specialization/SKILL.md +14 -0
  191. package/skills/jarvis-docs-central/README.md +31 -28
  192. package/skills/jarvis-docs-central/SKILL.md +11 -5
  193. package/skills/jarvis-docs-index/SKILL.md +10 -2
  194. package/skills/jarvis-evolution-architect/SKILL.md +6 -0
  195. package/skills/jarvis-init/SKILL.md +22 -15
  196. package/skills/jarvis-init/assets/passo-adicionar-stacks.md +47 -18
  197. package/skills/jarvis-list-specializations/SKILL.md +36 -17
  198. package/skills/jarvis-report-issue/SKILL.md +7 -1
  199. package/skills/product-roadmap-report/SKILL.md +8 -0
  200. package/skills/product-specs/SKILL.md +9 -0
  201. package/skills/product-specs-update/SKILL.md +6 -0
  202. package/taxonomy.md +16 -28
  203. package/templates/AGENTS.md +2 -0
  204. package/templates/ENV-template.md +10 -2
  205. package/templates/engineering/qa/qa.sprint-plan-template.md +1 -1
  206. package/templates/engineering/tech-spec-delivery-template.md +179 -0
  207. package/workflows/AGENTS.md +14 -2
  208. package/workflows/README.md +8 -16
  209. package/workflows/all-tools.md +7 -1
  210. package/workflows/engineering/data/data.contract.md +8 -0
  211. package/workflows/engineering/data/data.new-pipeline.md +15 -4
  212. package/workflows/engineering/eng.breakdown-subtasks.md +9 -0
  213. package/workflows/engineering/eng.bug-audit.md +10 -13
  214. package/workflows/engineering/eng.build-tech-spec.md +17 -146
  215. package/workflows/engineering/eng.create-ard-from-code.md +8 -0
  216. package/workflows/engineering/eng.create-ard.md +8 -0
  217. package/workflows/engineering/eng.create-rfc.md +7 -0
  218. package/workflows/engineering/eng.debug.md +5 -21
  219. package/workflows/engineering/eng.docs.md +9 -0
  220. package/workflows/engineering/eng.light-arch.md +7 -0
  221. package/workflows/engineering/eng.plan.md +15 -2
  222. package/workflows/engineering/eng.pr.md +24 -30
  223. package/workflows/engineering/eng.pre-pr.md +33 -15
  224. package/workflows/engineering/eng.review.md +18 -11
  225. package/workflows/engineering/eng.rpa.robot.md +17 -7
  226. package/workflows/engineering/eng.start.md +33 -12
  227. package/workflows/engineering/eng.work.md +25 -17
  228. package/workflows/engineering/frontend/eng.frontend-component.md +7 -0
  229. package/workflows/engineering/frontend/eng.frontend-perf-audit.md +8 -0
  230. package/workflows/engineering/frontend/eng.frontend-review.md +8 -0
  231. package/workflows/engineering/qa/eng.qa-refinement-entry.md +7 -0
  232. package/workflows/engineering/qa/eng.qa-release-signoff.md +6 -0
  233. package/workflows/engineering/qa/eng.qa-sprint-planning.md +7 -1
  234. package/workflows/product/prod.roadmap.preview.md +9 -0
  235. package/workflows/product/prod.spec.ard.md +97 -0
  236. package/workflows/product/prod.spec.breakdown.md +10 -0
  237. package/workflows/product/prod.spec.clarify.md +8 -2
  238. package/workflows/product/prod.spec.discovery.md +11 -1
  239. package/workflows/product/prod.spec.epic.md +8 -0
  240. package/workflows/product/prod.spec.frd.md +7 -0
  241. package/workflows/product/prod.spec.issue.md +6 -0
  242. package/workflows/product/prod.spec.md +15 -1
  243. package/workflows/product/prod.spec.prd.md +7 -0
  244. package/workflows/taxonomy.md +58 -6
  245. package/workflows/warm-up.md +47 -60
  246. package/agents/engineering/eng.cybersecurity.agent.md +0 -488
  247. package/agents/engineering/qa/eng.qa.cypress-specialist.md +0 -109
  248. package/bin/lib/docs/fetch-file.sh +0 -41
  249. package/bin/lib/docs/publish-file.sh +0 -284
  250. package/rules/engineering/eng.downstream-flow-rules.md +0 -297
  251. package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +0 -137
  252. package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +0 -181
  253. package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +0 -120
  254. package/skills/eng-ai-engineer/SKILL.md +0 -297
  255. package/skills/eng-data-bi/SKILL.md +0 -200
  256. package/skills/eng-data-debug/SKILL.md +0 -308
  257. package/skills/eng-data-engineer/SKILL.md +0 -257
  258. package/skills/eng-data-onboard/SKILL.md +0 -311
  259. package/skills/eng-data-orchestrator/SKILL.md +0 -427
  260. package/skills/eng-devops-performance-engineer/SKILL.md +0 -313
  261. package/skills/eng-frontend-design-system/SKILL.md +0 -621
  262. package/skills/eng-frontend-microfrontend/SKILL.md +0 -604
  263. package/skills/eng-global-browser-extension-builder/SKILL.md +0 -386
  264. package/skills/eng-global-jira-comment/SKILL.md +0 -21
  265. package/skills/eng-qa-a11y-audit/SKILL.md +0 -270
  266. package/skills/eng-qa-bug-report/SKILL.md +0 -1089
  267. package/skills/eng-qa-bug-report/TASK_MANAGERS.md +0 -138
  268. package/skills/eng-qa-cypress-e2e/SKILL.md +0 -178
  269. package/skills/eng-qa-dev-guide/SKILL.md +0 -165
  270. package/skills/eng-qa-e2e/SKILL.md +0 -401
  271. package/skills/eng-qa-e2e-spec-writer/SKILL.md +0 -323
  272. package/skills/eng-qa-exploratory/SKILL.md +0 -189
  273. package/skills/eng-qa-gate/SKILL.md +0 -371
  274. package/skills/eng-qa-gate/assets/checklist-validacao.md +0 -291
  275. package/skills/eng-qa-graphql-contract/SKILL.md +0 -257
  276. package/skills/eng-qa-quality-report/SKILL.md +0 -413
  277. package/skills/eng-qa-test-plan/SKILL.md +0 -467
  278. package/skills/eng-qa-testsprite/SKILL.md +0 -326
  279. package/skills/eng-qa-testsprite/references/testsprite-mcp.md +0 -224
  280. package/skills/eng-qa-unit-test/SKILL.md +0 -472
  281. package/skills/eng-scraper/SKILL.md +0 -684
  282. package/skills/eng-scraper-robot-builder/SKILL.md +0 -371
  283. package/skills/eng-security-cybersecurity/SKILL.md +0 -646
  284. package/skills/eng-security-patch/SKILL.md +0 -382
  285. package/skills/eng-security-threat-model/SKILL.md +0 -165
  286. package/skills/eng-security-triage/SKILL.md +0 -270
  287. package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +0 -311
  288. package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +0 -249
  289. package/templates/engineering/qa/qa.cypress-test-template.md +0 -172
  290. package/templates/engineering/qa/qa.exploratory-session-template.md +0 -148
  291. package/templates/engineering/qa/qa.quality-report-template.md +0 -130
  292. package/workflows/engineering/eng.security-audit.md +0 -312
  293. package/workflows/engineering/eng.security-incident.md +0 -275
  294. package/workflows/engineering/eng.security-pipeline.md +0 -210
  295. package/workflows/engineering/eng.security-review.md +0 -235
  296. package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +0 -51
  297. package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +0 -51
  298. package/workflows/engineering/qa/eng.qa-exploratory-session.md +0 -60
  299. package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +0 -202
  300. package/workflows/engineering/qa/eng.qa-quality-report.md +0 -78
  301. /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-coverage-template.md +0 -0
  302. /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-patterns.md +0 -0
  303. /package/templates/{CDD aplicado a Prompts.md → cdd-aplicado-a-prompts.md} +0 -0
@@ -1,311 +0,0 @@
1
- ---
2
- name: eng-data-onboard
3
- description: >
4
- Guia para primeira ingestão de uma fonte de dados nova: schema discovery, amostragem,
5
- criação da camada bronze, Expectation Suite mínima e documentação obrigatória.
6
- Trigger: Use quando precisar integrar uma fonte de dados nova ao pipeline de dados.
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
- area: data
14
- argument-hint: "[nome-da-fonte] [tipo: api|db|arquivo|stream]"
15
- disable-model-invocation: false
16
- ---
17
-
18
- # Eng Data Onboard — Integração de Fonte Nova
19
-
20
- Você é um **especialista em integração de fontes de dados** com foco em onboarding seguro: entender a fonte antes de ingerir, documentar antes de expor, e garantir qualidade desde o primeiro dado em bronze.
21
-
22
- ## Objetivo
23
-
24
- Integrar uma fonte de dados nova de forma segura e documentada — criando a camada bronze, a Expectation Suite mínima e a documentação de pipeline antes de promover para silver/gold.
25
-
26
- ## Stack do Projeto
27
-
28
- ```bash
29
- grep -E "^DATA_" $IDE/ENV.md
30
- ```
31
-
32
- | Variável ENV | O que define |
33
- |-------------|-------------|
34
- | `DATA_ETL_TOOL` | Ferramenta ETL (ex: aws_glue, dbt, spark, pandas) |
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
- | `DATA_ORCHESTRATOR` | Orquestrador (ex: airflow, prefect, glue-scheduler) |
40
-
41
- ---
42
-
43
- ## Fases de Onboarding
44
-
45
- ### Fase 1 — Entender a Fonte
46
-
47
- Antes de escrever qualquer código, coletar as informações abaixo **uma por vez** se não fornecidas:
48
-
49
- | Informação | Pergunta |
50
- |---|---|
51
- | Nome da fonte | Como será chamada? (ex: `erp_pedidos`, `crm_clientes`) |
52
- | Tipo | API REST, banco relacional, arquivo (CSV/Parquet), stream? |
53
- | Frequência | Ingestão diária, horária, sob demanda? |
54
- | Volume estimado | Quantos registros por execução? |
55
- | Owner na fonte | Quem é o responsável pelo dado na origem? |
56
- | Campos disponíveis | Quais colunas existem? Qual é a chave primária? |
57
- | Campos sensíveis | Há CPF, dados bancários, localização, dados pessoais? |
58
- | SLA esperado | Até quando o dado precisa estar disponível em gold? |
59
-
60
- ### Fase 2 — Schema Discovery (amostragem)
61
-
62
- Antes de ingerir tudo, amostrar a fonte para entender o schema real:
63
-
64
- #### Para API REST
65
-
66
- ```python
67
- import requests
68
- import json
69
-
70
- def sample_api(endpoint: str, params: dict, n_samples: int = 100) -> list[dict]:
71
- """Amostra N registros da API para análise de schema."""
72
- response = requests.get(
73
- endpoint,
74
- params={**params, 'limit': n_samples},
75
- headers={'Authorization': f"Bearer {os.getenv('SOURCE_API_TOKEN')}"}
76
- )
77
- response.raise_for_status()
78
- return response.json()
79
-
80
- # Analisar schema
81
- sample = sample_api(endpoint, params)
82
- print(f"Total campos: {len(sample[0].keys())}")
83
- print(f"Campos: {list(sample[0].keys())}")
84
-
85
- # Verificar nulos por campo
86
- import pandas as pd
87
- df_sample = pd.DataFrame(sample)
88
- print(df_sample.isnull().sum() / len(df_sample) * 100) # % de nulos por campo
89
- ```
90
-
91
- #### Para banco relacional
92
-
93
- ```sql
94
- -- Amostrar e inspecionar schema
95
- SELECT *
96
- FROM <schema>.<tabela>
97
- LIMIT 100;
98
-
99
- -- Verificar cardinalidade dos campos candidatos a chave primária
100
- SELECT
101
- <campo_candidato>,
102
- COUNT(*) AS ocorrencias
103
- FROM <schema>.<tabela>
104
- GROUP BY <campo_candidato>
105
- HAVING COUNT(*) > 1
106
- LIMIT 10; -- se retornar registros → não é chave primária única
107
-
108
- -- Verificar nulos em campos críticos
109
- SELECT
110
- COUNT(*) AS total,
111
- COUNT(<campo_critico>) AS nao_nulos,
112
- COUNT(*) - COUNT(<campo_critico>) AS nulos
113
- FROM <schema>.<tabela>;
114
- ```
115
-
116
- #### Para arquivo (CSV/Parquet)
117
-
118
- ```python
119
- import pandas as pd
120
-
121
- df = pd.read_csv('amostra.csv', nrows=1000) # ou read_parquet
122
- print(df.dtypes) # tipos inferidos
123
- print(df.isnull().sum()) # nulos por coluna
124
- print(df.describe()) # estatísticas básicas
125
- print(df.nunique()) # cardinalidade por coluna
126
- ```
127
-
128
- ### Fase 3 — Documentar o Pipeline (antes de implementar)
129
-
130
- Preencher `templates/engineering/data-pipeline-template.md` com o que foi descoberto na Fase 2.
131
-
132
- **Campos obrigatórios antes de continuar**:
133
- - Nome do pipeline
134
- - Fonte (sistema, endpoint ou tabela)
135
- - Schema mapeado (campos, tipos, chave primária)
136
- - Campos sensíveis identificados e como serão tratados
137
- - Frequência de execução
138
- - Destino bronze (nome da tabela no `$DATA_QUERY_ENGINE`)
139
-
140
- > ⚠️ **Não iniciar a implementação sem o doc de pipeline preenchido.**
141
- > O doc é a fonte de verdade — se mudar algo durante a implementação, atualizar o doc.
142
-
143
- ### Fase 4 — Implementar Extração para Bronze
144
-
145
- Criar o script de extração seguindo o padrão do projeto:
146
-
147
- ```python
148
- """
149
- Pipeline: bronze_<nome_fonte>
150
- Descrição: Ingestão bruta de <fonte> para bronze
151
- Fonte: <sistema_origem> — <endpoint_ou_tabela>
152
- Destino: bronze.<nome_fonte>
153
- Frequência: <diária/horária/sob demanda>
154
- Owner: <email>
155
- """
156
- import logging
157
- from datetime import date
158
-
159
- logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s')
160
- logger = logging.getLogger(__name__)
161
-
162
-
163
- def extract(data_referencia: date) -> list[dict]:
164
- """Extrai dados brutos da fonte para a data de referência."""
165
- logger.info(f"Extraindo {data_referencia} de <fonte>")
166
- # implementar: API call, DB query, leitura de arquivo
167
- ...
168
-
169
-
170
- def load_bronze(raw_data: list[dict], data_referencia: date) -> None:
171
- """
172
- Carrega dados brutos em bronze de forma idempotente.
173
- Bronze = dados exatamente como vieram da fonte, sem transformação.
174
- Adiciona apenas campos de auditoria: ingested_at, source_system, data_referencia.
175
- """
176
- import pandas as pd
177
- from datetime import datetime
178
-
179
- df = pd.DataFrame(raw_data)
180
-
181
- # Campos de auditoria obrigatórios (data-rules.md seção 1)
182
- df['ingested_at'] = datetime.utcnow()
183
- df['source_system'] = '<nome_fonte>'
184
- df['data_referencia'] = data_referencia
185
-
186
- logger.info(f"Carregando {len(df)} registros em bronze.<nome_fonte> para {data_referencia}")
187
-
188
- # Idempotência: DELETE + INSERT por partição
189
- # (implementar com o $DATA_ETL_TOOL do projeto)
190
- delete_partition('bronze.<nome_fonte>', 'data_referencia', str(data_referencia))
191
- insert(df, 'bronze.<nome_fonte>')
192
-
193
- logger.info(f"Bronze carregado: {len(df)} registros")
194
-
195
-
196
- def run(data_referencia: date = date.today()) -> None:
197
- raw = extract(data_referencia)
198
- if not raw:
199
- logger.warning(f"Nenhum dado extraído para {data_referencia} — verificar fonte")
200
- return
201
- load_bronze(raw, data_referencia)
202
- logger.info(f"Pipeline bronze_<nome_fonte> concluído: {len(raw)} registros")
203
-
204
-
205
- if __name__ == "__main__":
206
- run()
207
- ```
208
-
209
- **Regras de bronze**:
210
- - ✅ Dados exatamente como vieram da fonte — sem transformação de conteúdo
211
- - ✅ Apenas campos de auditoria adicionados: `ingested_at`, `source_system`, `data_referencia`
212
- - ✅ Idempotência: DELETE por partição antes do INSERT
213
- - ❌ Nunca aplicar regras de negócio em bronze — isso é silver
214
-
215
- ### Fase 5 — Criar Expectation Suite Mínima
216
-
217
- Criar a suite de qualidade antes de usar os dados em downstream:
218
-
219
- ```python
220
- import great_expectations as ge
221
-
222
- def create_bronze_suite(datasource_name: str, table_name: str) -> None:
223
- """Cria Expectation Suite mínima para tabela bronze."""
224
- context = ge.get_context()
225
- suite = context.add_expectation_suite(f"bronze.{table_name}.min")
226
- validator = context.get_validator(
227
- datasource_name=datasource_name,
228
- data_asset_name=table_name
229
- )
230
-
231
- # Checks obrigatórios (data-rules.md seção 2)
232
- validator.expect_table_row_count_to_be_between(min_value=1)
233
- validator.expect_column_values_to_not_be_null(column="<chave_primaria>")
234
- validator.expect_column_values_to_not_be_null(column="data_referencia")
235
- validator.expect_column_values_to_be_unique(column="<chave_primaria>")
236
-
237
- # Campos sensíveis: verificar que não estão expostos sem mascaramento
238
- # (adicionar se houver campos sensíveis identificados na Fase 1)
239
-
240
- validator.save_expectation_suite()
241
- print(f"Suite criada: bronze.{table_name}.min")
242
- ```
243
-
244
- > Se o projeto usa `$DATA_QUALITY_TOOL` diferente de Great Expectations, adaptar a sintaxe mantendo os mesmos checks.
245
-
246
- ### Fase 6 — Testar e Validar
247
-
248
- Antes de considerar o onboarding completo:
249
-
250
- **Checklist de validação**:
251
-
252
- ```
253
- [ ] Script de extração executa sem erro para 1 data de teste
254
- [ ] Bronze recebe os dados com campos de auditoria corretos
255
- [ ] Expectation Suite passa para o período de teste
256
- [ ] Volume extraído é compatível com o esperado (fase 1)
257
- [ ] Campos sensíveis estão mascarados ou ausentes em bronze
258
- [ ] Script é idempotente (reprocessar 2x não duplica)
259
- [ ] Log registra: data_referencia, rows_extracted, rows_loaded, status
260
- [ ] Documentação de pipeline preenchida e salva
261
- ```
262
-
263
- ### Fase 7 — Próximos passos (silver/gold)
264
-
265
- Após bronze validado, orientar os próximos passos:
266
-
267
- ```
268
- Bronze concluído ✅
269
-
270
- Próximos passos recomendados:
271
- 1. Criar script silver_<fonte>: limpeza, tipagem e deduplicação
272
- 2. Expandir Expectation Suite para silver (checks de tipo e domínio)
273
- 3. Avaliar se há caso de uso para gold (analytics, BI, contrato de dados)
274
- 4. Se expor para outra squad → criar contrato via data.contract.md
275
- ```
276
-
277
- ---
278
-
279
- ## Tratamento de Campos Sensíveis
280
-
281
- Se a Fase 1 identificou campos sensíveis (CPF, dados bancários, localização, etc.):
282
-
283
- | Campo sensível | Tratamento em bronze | Tratamento em silver/gold |
284
- |---|---|---|
285
- | CPF / RG / CNH | Manter no bronze com acesso IAM restrito | Mascarar: `SHA256(cpf)` ou remover |
286
- | Dados bancários | Manter no bronze com acesso IAM restrito | Remover ou mascarar |
287
- | Localização em tempo real | Manter no bronze com acesso IAM restrito | Agregar (ex: cidade, estado) |
288
- | Telefone / Endereço | Manter no bronze com acesso IAM restrito | Remover se não necessário |
289
-
290
- > Qualquer exposição de dado sensível em gold exige contrato de dados aprovado (ver `data-rules.md` seção 5).
291
-
292
- ---
293
-
294
- ## Regras Críticas
295
-
296
- ### Nunca faça
297
-
298
- - ❌ Iniciar implementação sem documentar o pipeline primeiro
299
- - ❌ Aplicar transformações em bronze — bronze é imutável e bruto
300
- - ❌ Ignorar campos sensíveis identificados na análise
301
- - ❌ Usar APPEND sem verificar duplicatas (quebra idempotência)
302
- - ❌ Promover para silver sem Expectation Suite passando
303
-
304
- ### Sempre faça
305
-
306
- - ✅ Amostrar antes de ingerir tudo — entender o schema real
307
- - ✅ Documentar o pipeline antes de implementar
308
- - ✅ Identificar campos sensíveis na fase de análise
309
- - ✅ Garantir idempotência desde o primeiro script
310
- - ✅ Criar Expectation Suite mínima antes de considerar bronze pronto
311
- - ✅ Testar com período pequeno antes de reprocessar histórico