jarvis-ai-framework 2.1.1 → 3.2.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 (266) hide show
  1. package/AGENTS.md +14 -115
  2. package/agents/AGENTS.md +11 -23
  3. package/agents/README.md +27 -129
  4. package/agents/engineering/data/eng.data-engineer.agent.md +11 -34
  5. package/agents/engineering/eng.advisor.agent.md +56 -0
  6. package/agents/engineering/eng.agent.md +14 -24
  7. package/agents/engineering/eng.bug-hunter.md +7 -15
  8. package/agents/engineering/eng.dev-code-reviewer.md +1 -1
  9. package/agents/engineering/eng.frontend.agent.md +3 -7
  10. package/agents/engineering/eng.rpa.agent.md +2 -8
  11. package/agents/engineering/qa/eng.qa.quality-strategist.md +6 -11
  12. package/agents/engineering/qa/eng.qa.test-architect.md +8 -18
  13. package/agents/engineering/qa/eng.qa.test-planner.md +10 -14
  14. package/agents/engineering/qa/eng.qa.testing-engineer.md +91 -24
  15. package/agents/product/prod.discovery-interviewer.md +3 -3
  16. package/bin/README.md +142 -0
  17. package/bin/commands/docs-publish.js +105 -141
  18. package/bin/commands/docs-sync.js +66 -104
  19. package/bin/commands/info.js +7 -27
  20. package/bin/commands/init.js +23 -51
  21. package/bin/commands/install-rtk.js +9 -3
  22. package/bin/commands/list.js +5 -18
  23. package/bin/commands/map.js +20 -5
  24. package/bin/commands/qa-signoff.js +58 -55
  25. package/bin/commands/tokens.js +14 -17
  26. package/bin/commands/whoami.js +30 -26
  27. package/bin/jarvis.js +9 -163
  28. package/bin/lib/auth/session.js +20 -20
  29. package/bin/lib/cli/program.js +219 -0
  30. package/bin/lib/cli/shared-options.js +29 -0
  31. package/bin/lib/config/constants.js +59 -2
  32. package/bin/lib/config/ide-config.js +4 -8
  33. package/bin/lib/core/profile-filter.js +4 -1
  34. package/bin/lib/core/scanner.js +3 -29
  35. package/bin/lib/core/sync-engine.js +21 -14
  36. package/bin/lib/core/token-report.js +12 -2
  37. package/bin/lib/docs/fetch-file.js +39 -0
  38. package/bin/lib/docs/publish-file.js +194 -0
  39. package/bin/lib/docs/redis-cache.js +49 -0
  40. package/bin/lib/docs/validate-frontmatter.js +9 -39
  41. package/bin/lib/env-loader.js +11 -34
  42. package/bin/lib/flow-map/parse.js +11 -5
  43. package/bin/lib/flow-map/render.js +5 -2
  44. package/bin/lib/flow-map/tree.js +59 -10
  45. package/bin/lib/tasks/comment.js +40 -35
  46. package/bin/lib/utils/frontmatter.js +57 -0
  47. package/bin/lib/utils/git-parser.js +4 -6
  48. package/bin/lib/utils/npmrc-parser.js +6 -13
  49. package/bin/lib/utils/paths.js +2 -4
  50. package/bin/lib/utils/ui.js +3 -9
  51. package/bin/lib/vcs/api.js +25 -41
  52. package/bin/lib/vcs/create-issue.js +49 -33
  53. package/bin/lib/vcs/create-merge.js +47 -31
  54. package/bin/lib/vcs/fetch-raw.js +35 -23
  55. package/package.json +14 -5
  56. package/rules/engineering/eng-rules.md +1 -1
  57. package/rules/engineering/eng-security-rules.md +18 -16
  58. package/rules/engineering/eng.bump-rules.md +3 -2
  59. package/rules/engineering/eng.docs-scraping-rules.md +4 -4
  60. package/rules/engineering/eng.integrations-rules.md +6 -4
  61. package/rules/engineering/eng.skills-rules.md +1 -1
  62. package/rules/engineering/eng.specializations-rules.md +18 -4
  63. package/rules/engineering/frontend/eng.frontend-rules.md +1 -4
  64. package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +1 -1
  65. package/rules/engineering/rpa/eng.rpa-rules.md +4 -9
  66. package/rules-on-demand/engineering/eng.pre-pr-rules.md +1 -1
  67. package/rules-on-demand/engineering/eng.start-rules.md +2 -0
  68. package/skills/AGENTS.md +52 -87
  69. package/skills/SKILLS-ROADMAP.md +47 -128
  70. package/skills/eng-ai/SKILL.md +270 -0
  71. package/skills/eng-ai/references/1-fundamentos-ml.md +24 -0
  72. package/skills/eng-ai/references/10-arquitetura-solucoes-ia.md +24 -0
  73. package/skills/eng-ai/references/11-governanca-ia.md +24 -0
  74. package/skills/eng-ai/references/12-seguranca-ia-responsavel.md +25 -0
  75. package/skills/eng-ai/references/2-matematica-estatistica.md +24 -0
  76. package/skills/eng-ai/references/3-dados-para-ia.md +24 -0
  77. package/skills/eng-ai/references/4-deep-learning-fundacionais.md +24 -0
  78. package/skills/eng-ai/references/5-llms-chatbots-agentes-rag.md +25 -0
  79. package/skills/eng-ai/references/6-avaliacao-experimentacao.md +24 -0
  80. package/skills/eng-ai/references/7-engenharia-sistemas-ia.md +24 -0
  81. package/skills/eng-ai/references/8-mlops-plataforma.md +24 -0
  82. package/skills/eng-ai/references/9-produto-ia.md +24 -0
  83. package/skills/eng-ai/references/especializacoes.md +17 -0
  84. package/skills/eng-automation/SKILL.md +290 -0
  85. package/skills/eng-automation/references/1-fundamentos-automacao.md +25 -0
  86. package/skills/eng-automation/references/10-ingestao-dados.md +25 -0
  87. package/skills/eng-automation/references/11-captcha-antibot.md +25 -0
  88. package/skills/eng-automation/references/12-limites-taxa-sessoes.md +25 -0
  89. package/skills/eng-automation/references/13-agendamento-orquestracao.md +24 -0
  90. package/skills/eng-automation/references/14-retentativa-erros.md +25 -0
  91. package/skills/eng-automation/references/15-autenticacao-credenciais.md +24 -0
  92. package/skills/eng-automation/references/16-observabilidade-confiabilidade.md +24 -0
  93. package/skills/eng-automation/references/2-aquisicao-dados.md +25 -0
  94. package/skills/eng-automation/references/3-automacao-navegador.md +24 -0
  95. package/skills/eng-automation/references/4-scraping-crawling.md +25 -0
  96. package/skills/eng-automation/references/5-apis-rest-graphql-soap.md +26 -0
  97. package/skills/eng-automation/references/6-webhooks-integracao.md +25 -0
  98. package/skills/eng-automation/references/7-rpa.md +25 -0
  99. package/skills/eng-automation/references/8-extracao-estruturada.md +25 -0
  100. package/skills/eng-automation/references/9-extracao-documentos.md +25 -0
  101. package/skills/eng-automation/references/especializacoes.md +18 -0
  102. package/skills/eng-backend-nestjs/SKILL.md +1 -1
  103. package/skills/eng-data/SKILL.md +271 -0
  104. package/skills/eng-data/references/1-fundamentos-dados.md +24 -0
  105. package/skills/eng-data/references/10-ciencia-dados.md +24 -0
  106. package/skills/eng-data/references/11-dataops-plataforma.md +24 -0
  107. package/skills/eng-data/references/12-seguranca-privacidade.md +24 -0
  108. package/skills/eng-data/references/2-modelagem-dados.md +24 -0
  109. package/skills/eng-data/references/3-bancos-dados.md +24 -0
  110. package/skills/eng-data/references/4-arquitetura-dados.md +24 -0
  111. package/skills/eng-data/references/5-pipelines-integracao.md +24 -0
  112. package/skills/eng-data/references/6-qualidade-dados.md +24 -0
  113. package/skills/eng-data/references/7-governanca-metadados.md +24 -0
  114. package/skills/eng-data/references/8-estatistica-analise.md +24 -0
  115. package/skills/eng-data/references/9-analytics-bi.md +24 -0
  116. package/skills/eng-data/references/especializacoes.md +20 -0
  117. package/skills/eng-frontend/SKILL.md +12 -5
  118. package/skills/eng-frontend/references/13-design-system.md +48 -0
  119. package/skills/eng-frontend/references/14-microfrontend.md +46 -0
  120. package/skills/eng-global-task-comment/SKILL.md +3 -3
  121. package/skills/eng-platform/SKILL.md +331 -0
  122. package/skills/eng-platform/references/1-fundamentos-sistemas.md +23 -0
  123. package/skills/eng-platform/references/10-resiliencia-arquitetura.md +24 -0
  124. package/skills/eng-platform/references/11-plataforma-devex.md +24 -0
  125. package/skills/eng-platform/references/12-finops-custos.md +24 -0
  126. package/skills/eng-platform/references/13-seguranca-fundamentos.md +26 -0
  127. package/skills/eng-platform/references/14-profiling-performance.md +23 -0
  128. package/skills/eng-platform/references/15-testes-carga-chaos.md +23 -0
  129. package/skills/eng-platform/references/16-cache-multicamada.md +22 -0
  130. package/skills/eng-platform/references/2-redes.md +23 -0
  131. package/skills/eng-platform/references/3-cloud.md +24 -0
  132. package/skills/eng-platform/references/4-iac-automacao.md +24 -0
  133. package/skills/eng-platform/references/5-containers-orquestracao.md +25 -0
  134. package/skills/eng-platform/references/6-cicd-entrega.md +24 -0
  135. package/skills/eng-platform/references/7-observabilidade.md +24 -0
  136. package/skills/eng-platform/references/8-confiabilidade-sre.md +24 -0
  137. package/skills/eng-platform/references/9-seguranca-infra.md +26 -0
  138. package/skills/eng-platform/references/especializacoes.md +34 -0
  139. package/skills/eng-qa/SKILL.md +283 -0
  140. package/skills/eng-qa/references/1-fundamentos-qualidade.md +25 -0
  141. package/skills/eng-qa/references/10-confiabilidade.md +25 -0
  142. package/skills/eng-qa/references/11-seguranca.md +24 -0
  143. package/skills/eng-qa/references/12-acessibilidade.md +24 -0
  144. package/skills/eng-qa/references/13-dados-testes.md +24 -0
  145. package/skills/eng-qa/references/14-gestao-testes-defeitos.md +25 -0
  146. package/skills/eng-qa/references/15-arquitetura-qa.md +25 -0
  147. package/skills/eng-qa/references/2-estrategia-planejamento.md +25 -0
  148. package/skills/eng-qa/references/3-design-testes.md +25 -0
  149. package/skills/eng-qa/references/4-manual-exploratorio.md +24 -0
  150. package/skills/eng-qa/references/5-automacao-testes.md +25 -0
  151. package/skills/eng-qa/references/6-api-integracao.md +25 -0
  152. package/skills/eng-qa/references/7-contrato.md +24 -0
  153. package/skills/eng-qa/references/8-interface-compat-mobile.md +24 -0
  154. package/skills/eng-qa/references/9-performance.md +24 -0
  155. package/skills/eng-qa/references/especializacoes.md +29 -0
  156. package/skills/eng-qa-planner/SKILL.md +264 -0
  157. package/skills/jarvis-context-detect/SKILL.md +1 -1
  158. package/skills/jarvis-context-detect/assets/context-profile-template.md +1 -1
  159. package/skills/jarvis-create-specialization/SKILL.md +8 -0
  160. package/skills/jarvis-docs-central/README.md +31 -28
  161. package/skills/jarvis-docs-central/SKILL.md +5 -5
  162. package/skills/jarvis-init/SKILL.md +9 -8
  163. package/skills/jarvis-init/assets/passo-adicionar-stacks.md +47 -18
  164. package/skills/jarvis-list-specializations/SKILL.md +30 -17
  165. package/skills/jarvis-report-issue/SKILL.md +1 -1
  166. package/taxonomy.md +4 -16
  167. package/templates/AGENTS.md +2 -0
  168. package/templates/ENV-template.md +20 -2
  169. package/templates/engineering/advisor-template.md +65 -0
  170. package/templates/engineering/architecture-template.md +52 -4
  171. package/templates/engineering/qa/qa.sprint-plan-template.md +1 -1
  172. package/workflows/AGENTS.md +3 -1
  173. package/workflows/README.md +0 -10
  174. package/workflows/engineering/data/data.new-pipeline.md +6 -5
  175. package/workflows/engineering/eng.bug-audit.md +4 -14
  176. package/workflows/engineering/eng.debug.md +4 -20
  177. package/workflows/engineering/eng.plan.md +4 -26
  178. package/workflows/engineering/eng.pr.md +13 -63
  179. package/workflows/engineering/eng.pre-pr.md +14 -51
  180. package/workflows/engineering/eng.review.md +7 -13
  181. package/workflows/engineering/eng.rpa.robot.md +3 -9
  182. package/workflows/engineering/eng.start.md +37 -32
  183. package/workflows/engineering/eng.work.md +17 -40
  184. package/workflows/engineering/qa/eng.qa-sprint-planning.md +1 -1
  185. package/workflows/product/prod.spec.discovery.md +2 -2
  186. package/workflows/warm-up.md +35 -63
  187. package/agents/engineering/eng.cybersecurity.agent.md +0 -486
  188. package/agents/engineering/qa/eng.qa.cypress-specialist.md +0 -112
  189. package/bin/lib/docs/fetch-file.sh +0 -41
  190. package/bin/lib/docs/publish-file.sh +0 -284
  191. package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +0 -137
  192. package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +0 -181
  193. package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +0 -120
  194. package/skills/eng-ai-engineer/SKILL.md +0 -303
  195. package/skills/eng-data-bi/SKILL.md +0 -206
  196. package/skills/eng-data-debug/SKILL.md +0 -314
  197. package/skills/eng-data-engineer/SKILL.md +0 -266
  198. package/skills/eng-data-onboard/SKILL.md +0 -317
  199. package/skills/eng-data-orchestrator/SKILL.md +0 -433
  200. package/skills/eng-devops-performance-engineer/SKILL.md +0 -319
  201. package/skills/eng-frontend-design-system/SKILL.md +0 -155
  202. package/skills/eng-frontend-design-system/references/1-estrutura-pacote.md +0 -57
  203. package/skills/eng-frontend-design-system/references/2-tokens.md +0 -116
  204. package/skills/eng-frontend-design-system/references/3-componentes.md +0 -165
  205. package/skills/eng-frontend-design-system/references/4-storybook.md +0 -85
  206. package/skills/eng-frontend-design-system/references/5-auditoria-versionamento.md +0 -76
  207. package/skills/eng-frontend-microfrontend/SKILL.md +0 -164
  208. package/skills/eng-frontend-microfrontend/references/1-criando-remote.md +0 -109
  209. package/skills/eng-frontend-microfrontend/references/2-configurando-shell.md +0 -70
  210. package/skills/eng-frontend-microfrontend/references/3-contratos-interface.md +0 -73
  211. package/skills/eng-frontend-microfrontend/references/4-shared-dependencies.md +0 -48
  212. package/skills/eng-frontend-microfrontend/references/5-event-bus.md +0 -59
  213. package/skills/eng-frontend-microfrontend/references/6-monorepo-deploy.md +0 -77
  214. package/skills/eng-frontend-microfrontend/references/7-troubleshooting.md +0 -45
  215. package/skills/eng-global-browser-extension-builder/SKILL.md +0 -392
  216. package/skills/eng-global-jira-comment/SKILL.md +0 -27
  217. package/skills/eng-qa-a11y-audit/SKILL.md +0 -276
  218. package/skills/eng-qa-bug-report/SKILL.md +0 -877
  219. package/skills/eng-qa-bug-report/TASK_MANAGERS.md +0 -138
  220. package/skills/eng-qa-bug-report/references/1-integracao-task-managers.md +0 -148
  221. package/skills/eng-qa-bug-report/references/2-exemplos-de-uso.md +0 -46
  222. package/skills/eng-qa-bug-report/references/3-bug-to-test.md +0 -45
  223. package/skills/eng-qa-cypress-e2e/SKILL.md +0 -184
  224. package/skills/eng-qa-dev-guide/SKILL.md +0 -173
  225. package/skills/eng-qa-e2e/SKILL.md +0 -407
  226. package/skills/eng-qa-e2e-spec-writer/SKILL.md +0 -329
  227. package/skills/eng-qa-exploratory/SKILL.md +0 -196
  228. package/skills/eng-qa-gate/SKILL.md +0 -377
  229. package/skills/eng-qa-gate/assets/checklist-validacao.md +0 -291
  230. package/skills/eng-qa-graphql-contract/SKILL.md +0 -263
  231. package/skills/eng-qa-quality-report/SKILL.md +0 -419
  232. package/skills/eng-qa-test-plan/SKILL.md +0 -473
  233. package/skills/eng-qa-testsprite/SKILL.md +0 -332
  234. package/skills/eng-qa-testsprite/references/testsprite-mcp.md +0 -224
  235. package/skills/eng-qa-unit-test/SKILL.md +0 -478
  236. package/skills/eng-scraper/SKILL.md +0 -260
  237. package/skills/eng-scraper/references/1-puppeteer.md +0 -140
  238. package/skills/eng-scraper/references/2-playwright-cheerio-pdf.md +0 -82
  239. package/skills/eng-scraper/references/3-anti-bot.md +0 -94
  240. package/skills/eng-scraper/references/4-resiliencia-etl-monitoramento.md +0 -137
  241. package/skills/eng-scraper-robot-builder/SKILL.md +0 -377
  242. package/skills/eng-security-cybersecurity/SKILL.md +0 -250
  243. package/skills/eng-security-cybersecurity/references/1-owasp-top-10.md +0 -331
  244. package/skills/eng-security-cybersecurity/references/2-secrets-management.md +0 -31
  245. package/skills/eng-security-cybersecurity/references/3-input-validation.md +0 -43
  246. package/skills/eng-security-cybersecurity/references/4-compliance.md +0 -20
  247. package/skills/eng-security-patch/SKILL.md +0 -388
  248. package/skills/eng-security-threat-model/SKILL.md +0 -171
  249. package/skills/eng-security-triage/SKILL.md +0 -276
  250. package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +0 -311
  251. package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +0 -249
  252. package/templates/engineering/qa/qa.cypress-test-template.md +0 -172
  253. package/templates/engineering/qa/qa.exploratory-session-template.md +0 -148
  254. package/templates/engineering/qa/qa.quality-report-template.md +0 -130
  255. package/workflows/engineering/eng.security-audit.md +0 -319
  256. package/workflows/engineering/eng.security-incident.md +0 -281
  257. package/workflows/engineering/eng.security-pipeline.md +0 -219
  258. package/workflows/engineering/eng.security-review.md +0 -241
  259. package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +0 -57
  260. package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +0 -57
  261. package/workflows/engineering/qa/eng.qa-exploratory-session.md +0 -68
  262. package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +0 -209
  263. package/workflows/engineering/qa/eng.qa-quality-report.md +0 -85
  264. /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-coverage-template.md +0 -0
  265. /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-patterns.md +0 -0
  266. /package/templates/{CDD aplicado a Prompts.md → cdd-aplicado-a-prompts.md} +0 -0
@@ -1,73 +0,0 @@
1
- # Contratos de Interface
2
-
3
- > Parte do skill `eng-frontend-microfrontend`. Leia este arquivo quando a tarefa definir ou alterar contratos entre shell e remotes.
4
-
5
- ## Contratos de Interface
6
-
7
- O contrato é o **acordo formal** entre shell e remote — define o que o remote expõe e o que espera receber.
8
-
9
- ### Estrutura do pacote de contratos
10
-
11
- ```
12
- packages/
13
- └── mfe-contracts/
14
- ├── src/
15
- │ ├── remotes/
16
- │ │ ├── {nome-remote}.contract.ts ← contrato do remote
17
- │ │ └── index.ts
18
- │ ├── shell/
19
- │ │ └── shell.context.ts ← o que o shell injeta nos remotes
20
- │ └── index.ts
21
- ├── package.json
22
- └── tsconfig.json
23
- ```
24
-
25
- ### Definindo um contrato
26
-
27
- ```typescript
28
- // packages/mfe-contracts/src/remotes/{nome-remote}.contract.ts
29
-
30
- // O que o remote expõe ao shell
31
- export interface {NomeRemote}Exports {
32
- default: React.ComponentType<{NomeRemote}Props>
33
- }
34
-
35
- // Props que o shell passa ao montar o remote
36
- export interface {NomeRemote}Props {
37
- basePath: string
38
- onNavigate?: (path: string) => void
39
- }
40
-
41
- // Eventos que o remote emite no event bus
42
- export interface {NomeRemote}Events {
43
- '{nome-remote}:action-completed': { id: string; result: unknown }
44
- '{nome-remote}:error': { code: string; message: string }
45
- }
46
- ```
47
-
48
- ### Contexto do shell (injetado em todos os remotes)
49
-
50
- ```typescript
51
- // packages/mfe-contracts/src/shell/shell.context.ts
52
- export interface ShellContext {
53
- user: {
54
- id: string
55
- name: string
56
- permissions: string[]
57
- }
58
- theme: 'light' | 'dark'
59
- locale: string
60
- onNavigate: (path: string) => void
61
- }
62
-
63
- // Hook disponível em todos os remotes
64
- export const ShellContextReact = React.createContext<ShellContext | null>(null)
65
-
66
- export function useShellContext(): ShellContext {
67
- const ctx = React.useContext(ShellContextReact)
68
- if (!ctx) throw new Error('useShellContext deve ser usado dentro do ShellProvider')
69
- return ctx
70
- }
71
- ```
72
-
73
- ---
@@ -1,48 +0,0 @@
1
- # Shared Dependencies
2
-
3
- > Parte do skill `eng-frontend-microfrontend`. Leia este arquivo quando a tarefa envolver dependências compartilhadas ou conflito de versão.
4
-
5
- ## Shared Dependencies
6
-
7
- ### Regras críticas
8
-
9
- ```
10
- singleton: true → apenas uma instância em toda a aplicação (obrigatório para React, React DOM)
11
- eager: false → NÃO usar eager para shared libs (causa bootstrap error)
12
- requiredVersion → sempre declarar para evitar conflitos silenciosos
13
- ```
14
-
15
- ### Checklist de shared deps
16
-
17
- ```typescript
18
- shared: {
19
- // Core React — sempre singleton
20
- 'react': { singleton: true, requiredVersion: '^18.0.0' },
21
- 'react-dom': { singleton: true, requiredVersion: '^18.0.0' },
22
-
23
- // Router — singleton para evitar múltiplos contextos de roteamento
24
- 'react-router-dom': { singleton: true, requiredVersion: '^6.0.0' },
25
-
26
- // Design system — singleton obrigatório (CSS e contexto de tema)
27
- '@{org}/design-system': { singleton: true },
28
-
29
- // Estado global — singleton se compartilhado entre remotes
30
- 'zustand': { singleton: true },
31
-
32
- // NÃO compartilhar: libs utilitárias pequenas (date-fns, lodash)
33
- // → melhor cada remote ter sua versão para evitar lock de versão
34
- }
35
- ```
36
-
37
- ### Conflito de versão (diagnóstico)
38
-
39
- ```bash
40
- # Ver qual versão de react cada remote está carregando
41
- # No DevTools → Network → filtrar por "remoteEntry.js"
42
- # Abrir arquivo e buscar por "shared"
43
-
44
- # Via CLI — verificar versões no monorepo
45
- pnpm list react --recursive
46
- ```
47
-
48
- ---
@@ -1,59 +0,0 @@
1
- # Event Bus
2
-
3
- > Parte do skill `eng-frontend-microfrontend`. Leia este arquivo quando a tarefa envolver comunicação entre remotes por eventos.
4
-
5
- ## Event Bus
6
-
7
- Remote e shell se comunicam via evento — nunca via import direto.
8
-
9
- ```typescript
10
- // packages/mfe-contracts/src/event-bus.ts
11
-
12
- type EventHandler<T> = (payload: T) => void
13
-
14
- class MFEEventBus {
15
- private listeners = new Map<string, Set<EventHandler<unknown>>>()
16
-
17
- emit<T>(event: string, payload: T): void {
18
- this.listeners.get(event)?.forEach((handler) => handler(payload as unknown))
19
- }
20
-
21
- on<T>(event: string, handler: EventHandler<T>): () => void {
22
- if (!this.listeners.has(event)) {
23
- this.listeners.set(event, new Set())
24
- }
25
- this.listeners.get(event)!.add(handler as EventHandler<unknown>)
26
-
27
- // retorna função de cleanup
28
- return () => this.listeners.get(event)?.delete(handler as EventHandler<unknown>)
29
- }
30
- }
31
-
32
- // Singleton global — compartilhado via shell context
33
- export const eventBus = new MFEEventBus()
34
- ```
35
-
36
- ```typescript
37
- // Uso em um remote
38
- import { useShellContext } from '@{org}/mfe-contracts'
39
-
40
- function CheckoutButton({ orderId }: { orderId: string }) {
41
- const { eventBus } = useShellContext()
42
-
43
- return (
44
- <button onClick={() => eventBus.emit('checkout:initiated', { orderId })}>
45
- Finalizar compra
46
- </button>
47
- )
48
- }
49
-
50
- // Uso no shell — escutar eventos de remotes
51
- useEffect(() => {
52
- const unsubscribe = eventBus.on('checkout:initiated', ({ orderId }) => {
53
- navigate(`/checkout/${orderId}`)
54
- })
55
- return unsubscribe
56
- }, [])
57
- ```
58
-
59
- ---
@@ -1,77 +0,0 @@
1
- # Monorepo e Estratégia de Deploy
2
-
3
- > Parte do skill `eng-frontend-microfrontend`. Leia este arquivo quando a tarefa envolver a estrutura do monorepo, o deploy independente ou o versionamento de remotes.
4
-
5
- ## Monorepo Frontend
6
-
7
- ### Estrutura recomendada
8
-
9
- ```
10
- {repo}/
11
- ├── apps/
12
- │ ├── shell/ ← host application
13
- │ ├── {remote-a}/ ← micro frontend A
14
- │ └── {remote-b}/ ← micro frontend B
15
- ├── packages/
16
- │ ├── design-system/ ← componentes e tokens compartilhados
17
- │ ├── mfe-contracts/ ← tipos TypeScript de contratos de interface
18
- │ └── utils/ ← utilitários compartilhados
19
- ├── pnpm-workspace.yaml
20
- └── turbo.json
21
- ```
22
-
23
- ```yaml
24
- # pnpm-workspace.yaml
25
- packages:
26
- - 'apps/*'
27
- - 'packages/*'
28
- ```
29
-
30
- ```json
31
- // turbo.json
32
- {
33
- "pipeline": {
34
- "build": {
35
- "dependsOn": ["^build"],
36
- "outputs": ["dist/**"]
37
- },
38
- "dev": {
39
- "cache": false,
40
- "persistent": true
41
- },
42
- "test": {
43
- "dependsOn": ["^build"]
44
- }
45
- }
46
- }
47
- ```
48
-
49
- ---
50
-
51
- ## Estratégia de Deploy
52
-
53
- ### Deploy independente (objetivo central do micro frontend)
54
-
55
- ```
56
- Cada remote tem seu próprio pipeline de CI/CD:
57
- push → build → test → deploy → atualizar URL no shell (via env var ou config service)
58
-
59
- Shell NÃO precisa ser re-deployed quando um remote é atualizado.
60
- ```
61
-
62
- ### Variáveis de ambiente por remote
63
-
64
- ```bash
65
- # .env.production do shell
66
- VITE_REMOTE_URL_NOME_REMOTE=https://cdn.example.com/nome-remote/remoteEntry.js
67
- VITE_REMOTE_URL_OUTRO_REMOTE=https://cdn.example.com/outro-remote/remoteEntry.js
68
- ```
69
-
70
- ### Versionamento de remotes
71
-
72
- ```
73
- Sem breaking change na API exposta → patch ou minor → URL permanece a mesma
74
- Breaking change na API exposta (props, eventos) → major → nova URL + migração no shell
75
- ```
76
-
77
- ---
@@ -1,45 +0,0 @@
1
- # Troubleshooting de Micro Frontend
2
-
3
- > Parte do skill `eng-frontend-microfrontend`. Leia este arquivo quando houver erro de módulo compartilhado, remote indisponível ou componente que não re-renderiza.
4
-
5
- ## Troubleshooting
6
-
7
- ### Erro: "Shared module is not available for eager consumption"
8
-
9
- ```typescript
10
- // ❌ Causa: eager: true em shared lib com React
11
- shared: { react: { singleton: true, eager: true } } // NÃO FAZER
12
-
13
- // ✅ Solução: usar bootstrap.ts com import() dinâmico
14
- // src/index.ts
15
- import('./bootstrap') // async bootstrap resolve o problema
16
- ```
17
-
18
- ### Erro: "Remote container is not available"
19
-
20
- ```bash
21
- # 1. Verificar se o remote está rodando
22
- curl http://localhost:3001/assets/remoteEntry.js
23
-
24
- # 2. Verificar CORS no servidor do remote
25
- # O remoteEntry.js precisa ser acessível pelo shell
26
-
27
- # 3. Verificar se a URL no shell está correta
28
- grep -r "remoteEntry" vite.config.ts
29
- ```
30
-
31
- ### Componente do remote não re-renderiza após update de state do shell
32
-
33
- ```typescript
34
- // Causa provável: contexto do shell não está sendo re-injetado no remote
35
- // Solução: passar o contexto via props no ponto de montagem, não via módulo compartilhado
36
-
37
- // ❌ Problemático
38
- import { useShellStore } from 'shell/store' // import direto entre remote e shell
39
-
40
- // ✅ Correto
41
- // Shell passa estado via props ao montar o remote
42
- <RemoteApp user={currentUser} onNavigate={navigate} />
43
- ```
44
-
45
- ---
@@ -1,392 +0,0 @@
1
- ---
2
- name: eng-global-browser-extension-builder
3
- description: >
4
- Especialista em criar extensões de navegador (Chrome, Firefox, cross-browser) que resolvem problemas reais.
5
- Cobre arquitetura de extensão, manifest v3, content scripts, popup UIs, monetização e publicação na Chrome Web Store.
6
- Trigger: Use quando precisar criar extensão de navegador, chrome extension, firefox addon, manifest v3.
7
- argument-hint: "[nome-da-extensao]"
8
- disable-model-invocation: false
9
- allowed-tools: Read Edit Write Glob Grep Bash WebFetch WebSearch Task
10
- license: AGPL-3.0
11
- metadata:
12
- author: jarvis-team
13
- version: "1.0"
14
- area: global
15
- ---
16
-
17
- # Browser Extension Builder - Construtor de Extensões de Navegador
18
-
19
- Você é um **Arquiteto de Extensões de Navegador**.
20
-
21
- Você expande as capacidades do navegador para dar superpoderes aos usuários. Entende as restrições únicas do desenvolvimento de extensões — permissões, segurança, políticas da loja. Constrói extensões que as pessoas instalam e de fato usam no dia a dia. Sabe a diferença entre um brinquedo e uma ferramenta.
22
-
23
- ## Objetivo
24
-
25
- Criar extensões de navegador modernas, seguras e publicáveis, seguindo as melhores práticas do Manifest V3, com suporte a Chrome, Firefox e múltiplos navegadores.
26
-
27
- ## Entrada
28
-
29
- - `$ARGUMENTS` - Nome ou descrição da extensão a ser criada
30
-
31
- ## Quando Usar
32
-
33
- Use este skill quando:
34
- - Precisar criar uma extensão para Chrome, Firefox ou outros navegadores
35
- - Quiser modificar ou interagir com o conteúdo de páginas web
36
- - Precisar de uma interface popup ou painel de opções
37
- - Quiser automatizar ações repetitivas no navegador
38
- - Precisar capturar, modificar ou injetar conteúdo em páginas
39
-
40
- **NÃO usar quando:**
41
- - A tarefa puder ser feita por um script de página simples
42
- - Não houver necessidade de integração com o navegador
43
- - O uso for único e não recorrente
44
-
45
- ---
46
-
47
- ## Padrões Críticos
48
-
49
- ### Padrão 1: Estrutura de Projeto
50
-
51
- Sempre usar esta estrutura base para extensões modernas:
52
-
53
- ```
54
- extension/
55
- ├── manifest.json # Config da extensão
56
- ├── popup/
57
- │ ├── popup.html # Interface popup
58
- │ ├── popup.css
59
- │ └── popup.js
60
- ├── content/
61
- │ └── content.js # Executa nas páginas web
62
- ├── background/
63
- │ └── service-worker.js # Lógica em background
64
- ├── options/
65
- │ ├── options.html # Página de configurações
66
- │ └── options.js
67
- └── icons/
68
- ├── icon16.png
69
- ├── icon48.png
70
- └── icon128.png
71
- ```
72
-
73
- ### Padrão 2: Template Manifest V3 (MV3)
74
-
75
- Base obrigatória para toda extensão moderna:
76
-
77
- ```json
78
- {
79
- "manifest_version": 3,
80
- "name": "Minha Extensão",
81
- "version": "1.0.0",
82
- "description": "O que ela faz",
83
- "permissions": ["storage", "activeTab"],
84
- "action": {
85
- "default_popup": "popup/popup.html",
86
- "default_icon": {
87
- "16": "icons/icon16.png",
88
- "48": "icons/icon48.png",
89
- "128": "icons/icon128.png"
90
- }
91
- },
92
- "content_scripts": [{
93
- "matches": ["<all_urls>"],
94
- "js": ["content/content.js"]
95
- }],
96
- "background": {
97
- "service_worker": "background/service-worker.js"
98
- },
99
- "options_page": "options/options.html"
100
- }
101
- ```
102
-
103
- ### Padrão 3: Comunicação entre Componentes
104
-
105
- ```
106
- Popup ←→ Background (Service Worker) ←→ Content Script
107
- ↓
108
- chrome.storage
109
- ```
110
-
111
- ### Padrão 4: Solicitar Mínimo de Permissões
112
-
113
- Nunca solicitar mais permissões do que o necessário. Usar permissões opcionais e explicar o motivo na descrição. Solicitar no momento de uso.
114
-
115
- ---
116
-
117
- ## Padrões de Implementação
118
-
119
- ### Content Scripts
120
-
121
- Código executado diretamente nas páginas web.
122
-
123
- **Quando usar**: Ao modificar ou ler conteúdo de páginas.
124
-
125
- ```javascript
126
- // content.js - Executa em cada página correspondente
127
-
128
- // Aguardar carregamento da página
129
- document.addEventListener('DOMContentLoaded', () => {
130
- const elemento = document.querySelector('.alvo');
131
- if (elemento) {
132
- elemento.style.backgroundColor = 'yellow';
133
- }
134
- });
135
-
136
- // Receber mensagens do popup/background
137
- chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
138
- if (message.action === 'getData') {
139
- const data = document.querySelector('.data')?.textContent;
140
- sendResponse({ data });
141
- }
142
- return true; // Manter canal aberto para async
143
- });
144
- ```
145
-
146
- **Injetar UI na página:**
147
-
148
- ```javascript
149
- function injetarUI() {
150
- const container = document.createElement('div');
151
- container.id = 'minha-extensao-ui';
152
- container.innerHTML = `
153
- <div style="position: fixed; bottom: 20px; right: 20px;
154
- background: white; padding: 16px; border-radius: 8px;
155
- box-shadow: 0 4px 12px rgba(0,0,0,0.15); z-index: 10000;">
156
- <h3>Minha Extensão</h3>
157
- <button id="minha-extensao-btn">Clique aqui</button>
158
- </div>
159
- `;
160
- document.body.appendChild(container);
161
-
162
- document.getElementById('minha-extensao-btn').addEventListener('click', () => {
163
- // Tratar clique
164
- });
165
- }
166
-
167
- injetarUI();
168
- ```
169
-
170
- **Permissões para content scripts:**
171
-
172
- ```json
173
- {
174
- "content_scripts": [{
175
- "matches": ["https://site-especifico.com/*"],
176
- "js": ["content.js"],
177
- "run_at": "document_end"
178
- }]
179
- }
180
- ```
181
-
182
- ### Storage e Estado
183
-
184
- Persistir dados da extensão usando a Chrome Storage API.
185
-
186
- **Quando usar**: Ao salvar configurações ou dados do usuário.
187
-
188
- ```javascript
189
- // Salvar dados
190
- chrome.storage.local.set({ chave: 'valor' }, () => {
191
- console.log('Salvo');
192
- });
193
-
194
- // Ler dados
195
- chrome.storage.local.get(['chave'], (resultado) => {
196
- console.log(resultado.chave);
197
- });
198
-
199
- // Storage sincronizado (sincroniza entre dispositivos)
200
- chrome.storage.sync.set({ configuracao: true });
201
-
202
- // Monitorar mudanças
203
- chrome.storage.onChanged.addListener((changes, area) => {
204
- if (changes.chave) {
205
- console.log('chave alterada:', changes.chave.newValue);
206
- }
207
- });
208
- ```
209
-
210
- **Limites de storage:**
211
-
212
- | Tipo | Limite |
213
- |------|--------|
214
- | local | 5MB |
215
- | sync | 100KB total, 8KB por item |
216
-
217
- **Padrão async/await:**
218
-
219
- ```javascript
220
- async function lerStorage(chaves) {
221
- return new Promise((resolve) => {
222
- chrome.storage.local.get(chaves, resolve);
223
- });
224
- }
225
-
226
- async function salvarStorage(data) {
227
- return new Promise((resolve) => {
228
- chrome.storage.local.set(data, resolve);
229
- });
230
- }
231
-
232
- // Uso
233
- const { configuracoes } = await lerStorage(['configuracoes']);
234
- await salvarStorage({ configuracoes: { ...configuracoes, tema: 'escuro' } });
235
- ```
236
-
237
- ---
238
-
239
- ## Fluxo de Trabalho
240
-
241
- ### 1. Definir Escopo da Extensão
242
-
243
- Responder antes de criar:
244
- - Qual problema resolve?
245
- - Em quais páginas atua (todas ou específicas)?
246
- - Precisa de popup? Opções? Background persistente?
247
- - Quais permissões mínimas necessárias?
248
-
249
- ### 2. Criar Estrutura de Arquivos
250
-
251
- ```bash
252
- mkdir -p extensao/{popup,content,background,options,icons}
253
- ```
254
-
255
- ### 3. Criar manifest.json
256
-
257
- Usar template do Padrão 2, ajustando:
258
- - `permissions` - apenas o necessário
259
- - `content_scripts.matches` - restringir ao máximo
260
- - `action` - apenas se tiver popup
261
-
262
- ### 4. Implementar Componentes
263
-
264
- Ordem recomendada:
265
- 1. `background/service-worker.js` — lógica central
266
- 2. `content/content.js` — interação com páginas
267
- 3. `popup/popup.html` + `popup.js` — interface do usuário
268
- 4. `options/options.html` + `options.js` — configurações
269
-
270
- ### 5. Testar Localmente
271
-
272
- ```
273
- Chrome:
274
- 1. Abrir chrome://extensions/
275
- 2. Ativar "Modo do desenvolvedor"
276
- 3. Clicar "Carregar sem compactação"
277
- 4. Selecionar pasta da extensão
278
-
279
- Firefox:
280
- 1. Abrir about:debugging
281
- 2. Clicar "Este Firefox"
282
- 3. Clicar "Carregar Add-on Temporário"
283
- 4. Selecionar manifest.json
284
- ```
285
-
286
- ### 6. Publicar na Chrome Web Store
287
-
288
- ```
289
- 1. Criar conta de desenvolvedor: $5 taxa única
290
- 2. Empacotar extensão: zip de todos os arquivos
291
- 3. Acessar: https://chrome.google.com/webstore/devconsole
292
- 4. Criar novo item e fazer upload do zip
293
- 5. Preencher: descrição, screenshots, categoria
294
- 6. Enviar para revisão (1-3 dias úteis)
295
- ```
296
-
297
- ### Skills invocados durante a execução do skill
298
-
299
- | Passo | Skill | Condição |
300
- |-------|-------|----------|
301
- | — | Nenhuma — skill autocontida | — |
302
-
303
- ---
304
-
305
- ## Anti-Padrões
306
-
307
- ### Solicitar todas as permissões
308
-
309
- **Por que é ruim**: Usuários não instalam. A loja pode rejeitar. Risco de segurança. Avaliações negativas.
310
-
311
- **Alternativa**: Solicitar o mínimo necessário. Usar permissões opcionais. Explicar o motivo na descrição. Solicitar no momento de uso.
312
-
313
- ### Processamento pesado em background
314
-
315
- **Por que é ruim**: MV3 encerra workers ociosos. Consome bateria. Deixa o navegador lento. Usuários desinstalam.
316
-
317
- **Alternativa**: Manter background mínimo. Usar `alarms` para tarefas periódicas. Delegar para content scripts. Usar cache agressivamente.
318
-
319
- ### Quebrar em atualizações
320
-
321
- **Por que é ruim**: Seletores mudam. APIs mudam. Usuários reclamam. Avaliações negativas.
322
-
323
- **Alternativa**: Usar seletores estáveis. Adicionar tratamento de erros. Monitorar quebras. Corrigir rapidamente quando quebrar.
324
-
325
- ---
326
-
327
- ## Regras
328
-
329
- ### Nunca
330
- - Solicitar permissões além do necessário
331
- - Usar `manifest_version: 2` em projetos novos (MV3 obrigatório)
332
- - Processar dados sensíveis sem criptografia
333
- - Ignorar políticas da Chrome Web Store
334
- - Usar `eval()` ou injeção dinâmica de scripts remotos
335
- - Armazenar credenciais no `chrome.storage` sem proteção
336
-
337
- ### Sempre
338
- - Usar Manifest V3 (MV3)
339
- - Validar permissões contra o mínimo necessário
340
- - Tratar erros em todas as chamadas de API do Chrome
341
- - Testar em Chrome e Firefox quando possível
342
- - Incluir ícones em todos os tamanhos (16, 48, 128)
343
- - Documentar finalidade de cada permissão solicitada
344
-
345
- ---
346
-
347
- ## Checklist de Conclusão
348
-
349
- - [ ] Estrutura de pastas criada corretamente
350
- - [ ] `manifest.json` com MV3 e permissões mínimas
351
- - [ ] Content script implementado (se necessário)
352
- - [ ] Service worker implementado (se necessário)
353
- - [ ] Popup implementado (se necessário)
354
- - [ ] Página de opções implementada (se necessário)
355
- - [ ] Ícones em todos os tamanhos (16, 48, 128px)
356
- - [ ] Testado localmente em modo desenvolvedor
357
- - [ ] Sem uso de `eval()` ou scripts remotos
358
- - [ ] Tratamento de erros implementado
359
-
360
- ---
361
-
362
- ## Output
363
-
364
- | Artefato | Descrição |
365
- |----------|-----------|
366
- | `extension/manifest.json` | Configuração principal da extensão |
367
- | `extension/popup/` | Interface popup (se aplicável) |
368
- | `extension/content/` | Scripts executados nas páginas |
369
- | `extension/background/` | Service worker de background |
370
- | `extension/options/` | Página de configurações (se aplicável) |
371
- | `extension/icons/` | Ícones em todos os tamanhos |
372
-
373
- ---
374
-
375
- ## Mensagem de Conclusão
376
-
377
- ```
378
- Extensão criada com sucesso!
379
-
380
- Nome: {nome-da-extensao}
381
- Manifest Version: 3
382
- Navegadores: Chrome, Firefox (cross-browser)
383
-
384
- Estrutura:
385
- - [x] manifest.json
386
- - [x] content scripts
387
- - [x] service worker
388
- - [x] popup UI
389
- - [x] ícones
390
-
391
- Próximo passo: Carregar em chrome://extensions/ para testar
392
- ```