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,427 +0,0 @@
1
- ---
2
- name: eng-data-orchestrator
3
- description: >
4
- Playbook operacional para gerenciamento de DAGs e pipelines orquestrados:
5
- criação de DAGs, retry strategies, monitoramento de tasks, alertas e troubleshooting.
6
- Trigger: Use para criar, manter ou depurar DAGs no $DATA_ORCHESTRATOR.
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: "[criar|monitorar|retry|alerta|debug] [nome-do-dag]"
15
- disable-model-invocation: false
16
- ---
17
-
18
- # Eng Data Orchestrator — Gerenciamento de DAGs e Orquestração
19
-
20
- Você é um **especialista em orquestração de pipelines de dados** com domínio em criação e manutenção de DAGs, estratégias de retry, monitoramento de execução e resposta a falhas. Atua de forma agnóstica à ferramenta — a stack é lida de `$DATA_ORCHESTRATOR` no ENV.md.
21
-
22
- ## Objetivo
23
-
24
- Criar, manter e depurar DAGs de forma confiável — garantindo que os pipelines executem no horário correto, com retry adequado, alertas configurados e troubleshooting documentado.
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_ORCHESTRATOR` | Orquestrador (ex: airflow, prefect, dagster, glue-scheduler) |
35
- | `DATA_ETL_TOOL` | Ferramenta ETL referenciada pelas tasks (ex: aws_glue, dbt, spark) |
36
- | `DATA_REPO` | Repositório onde ficam os DAGs e scripts |
37
- | `ALERTS_CHANNEL` | Canal Slack de alertas do projeto (genérico, compartilhado por todos os hubs) |
38
-
39
- > Se `DATA_ORCHESTRATOR` não estiver definido, perguntar ao usuário antes de prosseguir.
40
-
41
- ---
42
-
43
- ## Referência por Orquestrador
44
-
45
- Este skill adapta os exemplos ao `$DATA_ORCHESTRATOR` identificado no ENV.md:
46
-
47
- | `DATA_ORCHESTRATOR` | UI de monitoramento | Unidade de agendamento | Unidade de execução |
48
- |---------------------|--------------------|-----------------------|--------------------|
49
- | `airflow` | Airflow Web UI / CLI | DAG | Task (Operator) |
50
- | `prefect` | Prefect UI / CLI | Flow | Task |
51
- | `dagster` | Dagster UI / CLI | Job | Op / Asset |
52
- | `glue-scheduler` | AWS Console / CloudWatch | Trigger | Glue Job |
53
-
54
- > Nos exemplos abaixo, os termos "DAG", "task" e "operador" se referem ao conceito equivalente no orquestrador do projeto.
55
-
56
- ---
57
-
58
- ## Fluxos de Trabalho
59
-
60
- ### Fluxo A — Criar DAG novo
61
-
62
- #### 1. Definir estrutura do DAG
63
-
64
- Antes de escrever código, confirmar:
65
-
66
- | Informação | Pergunta |
67
- |---|---|
68
- | Nome do pipeline | Qual o nome? (ex: `bronze_pedidos_erp`, `silver_clientes`) |
69
- | Schedule | Qual a frequência? (ex: diária 06h, horária, sob demanda) |
70
- | Dependências | Depende de outro DAG? (ex: silver só roda após bronze) |
71
- | Owner | Qual o responsável? (email) |
72
- | Canal de alerta | Para onde vai o alerta de falha? (`$ALERTS_CHANNEL`) |
73
- | SLA | Até quando precisa terminar? |
74
-
75
- #### 2. Estrutura padrão de DAG (Airflow)
76
-
77
- ```python
78
- """
79
- DAG: {nome_pipeline}
80
- Descrição: {o que faz}
81
- Schedule: {cron ou @daily}
82
- Owner: {email}
83
- SLA: {horário limite}
84
- """
85
- from datetime import datetime, timedelta
86
- from airflow import DAG
87
- from airflow.operators.python import PythonOperator
88
-
89
- DEFAULT_ARGS = {
90
- 'owner': '{owner_email}',
91
- 'depends_on_past': False,
92
- 'start_date': datetime(2026, 1, 1),
93
- 'email': ['{owner_email}'],
94
- 'email_on_failure': True,
95
- 'email_on_retry': False,
96
- 'retries': 2,
97
- 'retry_delay': timedelta(minutes=15),
98
- 'sla': timedelta(hours=2), # alerta se task não terminar em 2h
99
- }
100
-
101
- with DAG(
102
- dag_id='{nome_pipeline}',
103
- default_args=DEFAULT_ARGS,
104
- description='{descrição}',
105
- schedule_interval='0 6 * * *', # diário às 06h UTC
106
- catchup=False, # não reprocessar histórico ao ativar
107
- tags=['{camada}', '{dominio}'],
108
- ) as dag:
109
-
110
- extract_task = PythonOperator(
111
- task_id='extract',
112
- python_callable=extract,
113
- op_kwargs={'data_referencia': '{{ ds }}'}, # data de execução do DAG
114
- )
115
-
116
- load_task = PythonOperator(
117
- task_id='load_bronze',
118
- python_callable=load_bronze,
119
- op_kwargs={'data_referencia': '{{ ds }}'},
120
- )
121
-
122
- # Dependência: extract → load
123
- extract_task >> load_task
124
- ```
125
-
126
- #### 3. Equivalente Prefect
127
-
128
- ```python
129
- from prefect import flow, task
130
- from prefect.schedules import CronSchedule
131
- from datetime import timedelta
132
-
133
- @task(retries=2, retry_delay_seconds=900)
134
- def extract(data_referencia: str):
135
- ...
136
-
137
- @task(retries=2, retry_delay_seconds=900)
138
- def load_bronze(data_referencia: str):
139
- ...
140
-
141
- @flow(
142
- name="{nome_pipeline}",
143
- description="{descrição}",
144
- )
145
- def pipeline_flow(data_referencia: str = None):
146
- raw = extract(data_referencia)
147
- load_bronze(data_referencia)
148
- ```
149
-
150
- #### 4. Equivalente Dagster
151
-
152
- ```python
153
- from dagster import job, op, schedule, OpExecutionContext
154
-
155
- @op
156
- def extract_op(context: OpExecutionContext):
157
- data_referencia = context.op_config.get('data_referencia')
158
- context.log.info(f"Extraindo {data_referencia}")
159
- ...
160
-
161
- @op
162
- def load_bronze_op(context: OpExecutionContext, raw_data):
163
- ...
164
-
165
- @job
166
- def bronze_pipeline():
167
- load_bronze_op(extract_op())
168
-
169
- @schedule(
170
- cron_schedule="0 6 * * *",
171
- job=bronze_pipeline,
172
- execution_timezone="UTC",
173
- )
174
- def bronze_pipeline_schedule(_context):
175
- return {}
176
- ```
177
-
178
- ---
179
-
180
- ### Fluxo B — Configurar Retry Strategy
181
-
182
- Regras de retry por criticidade do pipeline:
183
-
184
- | Camada | Retries | Retry delay | Quando usar |
185
- |--------|---------|-------------|-------------|
186
- | Bronze (ingestão) | 3 | 15 min | Fonte pode ter instabilidade temporária |
187
- | Silver (transformação) | 2 | 5 min | Falha raramente é transiente |
188
- | Gold (modelagem) | 1 | 5 min | Falha geralmente é de dado ou lógica |
189
- | Alertas / notificações | 1 | 1 min | Falha de alerta não deve bloquear pipeline |
190
-
191
- **Regra para `retry_exponential_backoff`** (Airflow):
192
-
193
- ```python
194
- DEFAULT_ARGS = {
195
- 'retries': 3,
196
- 'retry_delay': timedelta(minutes=5),
197
- 'retry_exponential_backoff': True, # 5m → 10m → 20m
198
- 'max_retry_delay': timedelta(hours=1),
199
- }
200
- ```
201
-
202
- **Quando NÃO usar retry**:
203
- - ❌ Falha de schema (dado estruturalmente inválido) — retry não resolve
204
- - ❌ Credencial inválida — retry não resolve, precisa de intervenção humana
205
- - ✅ Timeout de rede, fonte temporariamente indisponível, lock de banco
206
-
207
- ---
208
-
209
- ### Fluxo C — Configurar Alertas
210
-
211
- #### Alerta de falha de task (Airflow + Slack)
212
-
213
- ```python
214
- from airflow.providers.slack.operators.slack_webhook import SlackWebhookOperator
215
-
216
- def alert_on_failure(context):
217
- """Callback de alerta para falha de task."""
218
- dag_id = context['dag'].dag_id
219
- task_id = context['task_instance'].task_id
220
- execution_date = context['execution_date'].strftime('%Y-%m-%d')
221
- log_url = context['task_instance'].log_url
222
-
223
- message = (
224
- f":red_circle: *Pipeline falhou*\n"
225
- f"• DAG: `{dag_id}`\n"
226
- f"• Task: `{task_id}`\n"
227
- f"• Data: `{execution_date}`\n"
228
- f"• Logs: {log_url}"
229
- )
230
-
231
- SlackWebhookOperator(
232
- task_id='slack_alert',
233
- slack_webhook_conn_id='slack_data_alerts',
234
- message=message,
235
- ).execute(context)
236
-
237
-
238
- DEFAULT_ARGS = {
239
- 'on_failure_callback': alert_on_failure,
240
- ...
241
- }
242
- ```
243
-
244
- > Se `ALERTS_CHANNEL` estiver definido no ENV.md, usar esse canal.
245
- > Para Prefect e Dagster, adaptar usando seus mecanismos nativos de notificação (automations / sensors).
246
-
247
- #### SLA Miss (Airflow)
248
-
249
- ```python
250
- def sla_miss_callback(dag, task_list, blocking_task_list, slas, blocking_tis):
251
- """Callback quando o SLA não é cumprido."""
252
- message = f":warning: *SLA Miss* no DAG `{dag.dag_id}` — tasks atrasadas: {task_list}"
253
- # enviar para $ALERTS_CHANNEL
254
-
255
- with DAG(
256
- ...
257
- sla_miss_callback=sla_miss_callback,
258
- ) as dag:
259
- task = PythonOperator(
260
- ...
261
- sla=timedelta(hours=2),
262
- )
263
- ```
264
-
265
- ---
266
-
267
- ### Fluxo D — Monitorar Execução
268
-
269
- #### Verificações rápidas por orquestrador
270
-
271
- **Airflow CLI:**
272
- ```bash
273
- # Ver estado de todas as runs do DAG nas últimas N execuções
274
- airflow dags state <dag_id> <execution_date>
275
-
276
- # Ver tasks de uma run específica
277
- airflow tasks states-for-dag-run <dag_id> <execution_date>
278
-
279
- # Listar DAGs com falha
280
- airflow dags list-runs --dag-id <dag_id> --state failed --limit 10
281
-
282
- # Ver logs de uma task
283
- airflow tasks logs <dag_id> <task_id> <execution_date>
284
- ```
285
-
286
- **Consulta SQL na tabela de auditoria** (se `gold.pipeline_audit` existir):
287
-
288
- ```sql
289
- -- Ver status das últimas execuções
290
- SELECT
291
- pipeline,
292
- data_referencia,
293
- status,
294
- rows_extracted,
295
- rows_loaded,
296
- duration_seconds,
297
- ingested_at
298
- FROM gold.pipeline_audit
299
- WHERE pipeline = '<nome_pipeline>'
300
- ORDER BY data_referencia DESC, ingested_at DESC
301
- LIMIT 20;
302
-
303
- -- Identificar pipelines com falha recorrente
304
- SELECT
305
- pipeline,
306
- COUNT(*) AS total_runs,
307
- SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failed_runs,
308
- ROUND(SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 1) AS failure_rate_pct
309
- FROM gold.pipeline_audit
310
- WHERE ingested_at >= CURRENT_DATE - INTERVAL '30' DAY
311
- GROUP BY pipeline
312
- HAVING failure_rate_pct > 10
313
- ORDER BY failure_rate_pct DESC;
314
- ```
315
-
316
- ---
317
-
318
- ### Fluxo E — Troubleshooting de DAG
319
-
320
- #### Árvore de diagnóstico
321
-
322
- ```
323
- DAG não aparece na UI
324
- └─ Verificar: erro de sintaxe no arquivo Python
325
- └─ airflow dags list 2>&1 | grep <dag_id>
326
- └─ airflow dags report (Airflow 2+)
327
-
328
- Task ficou em estado QUEUED
329
- └─ Worker disponível? → verificar número de workers ativos
330
- └─ Pool com slots livres? → airflow pools list
331
-
332
- Task falhou com timeout
333
- └─ Aumentar execution_timeout na task
334
- └─ Verificar se fonte externa está lenta
335
-
336
- Task falhou com erro de credencial
337
- └─ Verificar Connection no Airflow (Admin → Connections)
338
- └─ Credencial expirou? → renovar via Secrets Manager
339
-
340
- Task falhou mas não ativou alerta
341
- └─ Verificar callback on_failure_callback está configurado
342
- └─ Verificar Connection do Slack está válida
343
- ```
344
-
345
- #### Reprocessamento manual
346
-
347
- ```bash
348
- # Limpar e re-executar tasks de uma data específica (Airflow)
349
- airflow tasks clear <dag_id> \
350
- --start-date <YYYY-MM-DD> \
351
- --end-date <YYYY-MM-DD> \
352
- --yes
353
-
354
- # Reexecutar o DAG a partir de uma data (backfill)
355
- airflow dags backfill <dag_id> \
356
- --start-date <YYYY-MM-DD> \
357
- --end-date <YYYY-MM-DD>
358
- ```
359
-
360
- > ⚠️ Usar `backfill` com `catchup=False` configurado pode não ter o efeito esperado.
361
- > Verificar a configuração do DAG antes de reprocessar histórico.
362
-
363
- ---
364
-
365
- ## Boas Práticas
366
-
367
- ### Estrutura de repositório
368
-
369
- ```
370
- $DATA_REPO/
371
- dags/
372
- bronze/ ← DAGs de ingestão bruta
373
- silver/ ← DAGs de transformação
374
- gold/ ← DAGs de modelagem e agregação
375
- jobs/
376
- bronze/ ← scripts Python chamados pelas tasks
377
- silver/
378
- gold/
379
- plugins/ ← operadores e hooks customizados (se necessário)
380
- tests/
381
- dags/ ← testes de integridade dos DAGs
382
- ```
383
-
384
- ### Regras de nomenclatura de DAGs
385
-
386
- ```
387
- {camada}_{dominio}_{entidade}
388
-
389
- Exemplos válidos:
390
- bronze_erp_pedidos
391
- silver_vendas_clientes
392
- gold_insights_pedidos_por_cliente
393
- ```
394
-
395
- ### Checklist antes de ativar um DAG novo
396
-
397
- ```
398
- [ ] DAG testado localmente (airflow dags test <dag_id> <execution_date>)
399
- [ ] catchup=False configurado (evita backfill automático ao ativar)
400
- [ ] start_date no passado (nunca usar datetime.now() como start_date)
401
- [ ] retries e retry_delay configurados
402
- [ ] on_failure_callback configurado com alerta no $ALERTS_CHANNEL
403
- [ ] sla configurado para tasks críticas
404
- [ ] Tags adicionadas (camada + domínio)
405
- [ ] DAG file commitado em $DATA_REPO
406
- ```
407
-
408
- ---
409
-
410
- ## Regras Críticas
411
-
412
- ### Nunca faça
413
-
414
- - ❌ Usar `datetime.now()` como `start_date` — o Airflow precisa de data fixa no passado
415
- - ❌ Ativar DAG sem `catchup=False` quando não quer backfill
416
- - ❌ Hardcodar credenciais no DAG — usar Connections ou Secrets Manager
417
- - ❌ `depends_on_past=True` sem entender o impacto (bloqueia se run anterior falhar)
418
- - ❌ Silenciar exceções dentro de tasks — o Airflow não marcará como falha
419
-
420
- ### Sempre faça
421
-
422
- - ✅ Testar DAG localmente antes de subir para produção
423
- - ✅ Configurar `on_failure_callback` em todos os DAGs que afetam gold
424
- - ✅ Usar `{{ ds }}` (data de execução do DAG) em vez de `datetime.now()` dentro das tasks
425
- - ✅ Nomear tasks de forma descritiva (não `task_1`, `task_2`)
426
- - ✅ Versionar DAGs no `$DATA_REPO` — nunca editar direto na UI
427
- - ✅ Documentar dependências entre DAGs no doc do pipeline