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,165 +0,0 @@
1
- # Criando um Componente e Acessibilidade
2
-
3
- > Parte do skill `eng-frontend-design-system`. Leia este arquivo quando a tarefa criar ou alterar um componente (CVA, API pública, acessibilidade, Radix UI).
4
-
5
- ## Criando um Componente
6
-
7
- ### Checklist antes de criar
8
-
9
- - [ ] Verificar se já existe componente similar (`ls src/components/`)
10
- - [ ] Verificar se o Radix UI tem primitive para este componente
11
- - [ ] Confirmar variantes necessárias com design
12
- - [ ] Definir API de props antes de implementar
13
-
14
- ### Padrão com CVA (class-variance-authority)
15
-
16
- ```typescript
17
- // src/components/Button/Button.tsx
18
- import { cva, type VariantProps } from 'class-variance-authority'
19
- import { cn } from '../../utils/cn'
20
- import type { ButtonHTMLAttributes } from 'react'
21
-
22
- const buttonVariants = cva(
23
- // Base — aplicado a todas as variantes
24
- [
25
- 'inline-flex items-center justify-center gap-2',
26
- 'rounded font-medium transition-colors',
27
- 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',
28
- 'disabled:opacity-50 disabled:pointer-events-none',
29
- ],
30
- {
31
- variants: {
32
- variant: {
33
- primary: 'bg-interactive-primary text-white hover:bg-interactive-primary-hover',
34
- secondary: 'border border-gray-300 bg-white text-content-primary hover:bg-gray-50',
35
- ghost: 'text-content-primary hover:bg-gray-100',
36
- destructive: 'bg-feedback-error text-white hover:bg-red-600',
37
- link: 'text-interactive-primary underline-offset-4 hover:underline p-0 h-auto',
38
- },
39
- size: {
40
- sm: 'h-8 px-3 text-sm',
41
- md: 'h-10 px-4 text-base',
42
- lg: 'h-12 px-6 text-lg',
43
- icon: 'h-10 w-10',
44
- },
45
- },
46
- defaultVariants: {
47
- variant: 'primary',
48
- size: 'md',
49
- },
50
- }
51
- )
52
-
53
- export interface ButtonProps
54
- extends ButtonHTMLAttributes<HTMLButtonElement>,
55
- VariantProps<typeof buttonVariants> {
56
- loading?: boolean
57
- }
58
-
59
- export function Button({
60
- className,
61
- variant,
62
- size,
63
- loading,
64
- disabled,
65
- children,
66
- ...props
67
- }: ButtonProps) {
68
- return (
69
- <button
70
- className={cn(buttonVariants({ variant, size }), className)}
71
- disabled={disabled || loading}
72
- aria-busy={loading}
73
- {...props}
74
- >
75
- {loading && <span className="sr-only">Carregando...</span>}
76
- {children}
77
- </button>
78
- )
79
- }
80
-
81
- // Exportar variantes para uso externo (ex: estender em outro componente)
82
- export { buttonVariants }
83
- ```
84
-
85
- ### Utilitário `cn` (obrigatório)
86
-
87
- ```typescript
88
- // src/utils/cn.ts
89
- import { clsx, type ClassValue } from 'clsx'
90
- import { twMerge } from 'tailwind-merge'
91
-
92
- export function cn(...inputs: ClassValue[]) {
93
- return twMerge(clsx(inputs))
94
- }
95
- ```
96
-
97
- ### Ponto de entrada do componente
98
-
99
- ```typescript
100
- // src/components/Button/index.ts
101
- export { Button, buttonVariants } from './Button'
102
- export type { ButtonProps } from './Button'
103
- ```
104
-
105
- ### Regras de API pública
106
-
107
- - Props que o consumidor pode precisar sobrescrever: exportar o tipo
108
- - Nunca expor detalhes de implementação interna nas props
109
- - `className` sempre aceito para extensibilidade
110
- - `ref` sempre passado via `forwardRef` em elementos DOM
111
-
112
- ```typescript
113
- // Padrão com forwardRef (obrigatório para componentes com elemento DOM)
114
- import { forwardRef } from 'react'
115
-
116
- export const Input = forwardRef<HTMLInputElement, InputProps>(
117
- function Input({ className, ...props }, ref) {
118
- return (
119
- <input
120
- ref={ref}
121
- className={cn(inputVariants(), className)}
122
- {...props}
123
- />
124
- )
125
- }
126
- )
127
- Input.displayName = 'Input'
128
- ```
129
-
130
- ---
131
-
132
- ## Acessibilidade em Componentes
133
-
134
- ### Componentes compostos com Radix UI
135
-
136
- ```typescript
137
- // ✅ Dialog com Radix — acessibilidade built-in
138
- import * as Dialog from '@radix-ui/react-dialog'
139
-
140
- export function Modal({ title, description, trigger, children }: ModalProps) {
141
- return (
142
- <Dialog.Root>
143
- <Dialog.Trigger asChild>{trigger}</Dialog.Trigger>
144
- <Dialog.Portal>
145
- <Dialog.Overlay className="fixed inset-0 bg-background-overlay" />
146
- <Dialog.Content
147
- className="fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 ..."
148
- aria-describedby={description ? 'modal-description' : undefined}
149
- >
150
- <Dialog.Title>{title}</Dialog.Title>
151
- {description && (
152
- <Dialog.Description id="modal-description">{description}</Dialog.Description>
153
- )}
154
- {children}
155
- <Dialog.Close asChild>
156
- <button aria-label="Fechar">✕</button>
157
- </Dialog.Close>
158
- </Dialog.Content>
159
- </Dialog.Portal>
160
- </Dialog.Root>
161
- )
162
- }
163
- ```
164
-
165
- ---
@@ -1,85 +0,0 @@
1
- # Storybook
2
-
3
- > Parte do skill `eng-frontend-design-system`. Leia este arquivo quando a tarefa envolver stories ou a configuração do Storybook.
4
-
5
- ## Storybook
6
-
7
- ### Configuração base
8
-
9
- ```typescript
10
- // .storybook/main.ts
11
- import type { StorybookConfig } from '@storybook/react-vite'
12
-
13
- const config: StorybookConfig = {
14
- stories: ['../src/**/*.stories.@(ts|tsx)'],
15
- addons: [
16
- '@storybook/addon-essentials',
17
- '@storybook/addon-a11y', // auditoria de acessibilidade
18
- '@storybook/addon-interactions', // testes interativos
19
- ],
20
- framework: '@storybook/react-vite',
21
- }
22
- export default config
23
- ```
24
-
25
- ### Story padrão
26
-
27
- ```typescript
28
- // src/components/Button/Button.stories.tsx
29
- import type { Meta, StoryObj } from '@storybook/react'
30
- import { Button } from './Button'
31
-
32
- const meta: Meta<typeof Button> = {
33
- title: 'Components/Button',
34
- component: Button,
35
- tags: ['autodocs'],
36
- argTypes: {
37
- variant: {
38
- control: 'select',
39
- options: ['primary', 'secondary', 'ghost', 'destructive', 'link'],
40
- },
41
- size: {
42
- control: 'select',
43
- options: ['sm', 'md', 'lg', 'icon'],
44
- },
45
- loading: { control: 'boolean' },
46
- disabled: { control: 'boolean' },
47
- },
48
- }
49
- export default meta
50
- type Story = StoryObj<typeof Button>
51
-
52
- // Story principal — estado padrão
53
- export const Default: Story = {
54
- args: {
55
- children: 'Botão',
56
- variant: 'primary',
57
- size: 'md',
58
- },
59
- }
60
-
61
- // Todas as variantes juntas
62
- export const AllVariants: Story = {
63
- render: () => (
64
- <div className="flex flex-wrap gap-3">
65
- <Button variant="primary">Primary</Button>
66
- <Button variant="secondary">Secondary</Button>
67
- <Button variant="ghost">Ghost</Button>
68
- <Button variant="destructive">Destructive</Button>
69
- </div>
70
- ),
71
- }
72
-
73
- // Estados especiais
74
- export const Loading: Story = { args: { children: 'Salvando...', loading: true } }
75
- export const Disabled: Story = { args: { children: 'Desabilitado', disabled: true } }
76
- ```
77
-
78
- ### Checklist de story
79
- - [ ] Autodocs ativo (`tags: ['autodocs']`)
80
- - [ ] ArgTypes com `control` para cada prop variável
81
- - [ ] Story para cada estado relevante (loading, disabled, erro)
82
- - [ ] Story `AllVariants` para overview visual
83
- - [ ] Addon `a11y` habilitado (verificar violations na aba Accessibility)
84
-
85
- ---
@@ -1,76 +0,0 @@
1
- # Auditoria de Consistência e Versionamento
2
-
3
- > Parte do skill `eng-frontend-design-system`. Leia este arquivo quando a tarefa auditar tokens e componentes ou tratar breaking changes e versionamento.
4
-
5
- ## Auditoria de Consistência
6
-
7
- ### Detectar tokens hardcodados (proibido)
8
-
9
- ```bash
10
- # Cores hardcodadas no código (deve retornar zero resultados)
11
- grep -r "#[0-9a-fA-F]\{3,6\}\b" src/components/ --include="*.tsx" --include="*.ts"
12
- grep -r "rgb(\|rgba(\|hsl(" src/components/ --include="*.tsx"
13
-
14
- # Valores de espaçamento hardcodados
15
- grep -r "style={{" src/components/ --include="*.tsx" | grep -v "className"
16
-
17
- # Fontes hardcodadas
18
- grep -r "fontFamily\|fontSize" src/components/ --include="*.tsx" | grep -v "var(--font"
19
- ```
20
-
21
- ### Verificar componentes sem story
22
-
23
- ```bash
24
- # Componentes sem arquivo de story correspondente
25
- for f in src/components/**/*.tsx; do
26
- base="${f%.tsx}"
27
- [ ! -f "${base}.stories.tsx" ] && echo "SEM STORY: $f"
28
- done
29
- ```
30
-
31
- ### Verificar componentes sem teste
32
-
33
- ```bash
34
- for f in src/components/**/*.tsx; do
35
- base="${f%.tsx}"
36
- [ ! -f "${base}.test.tsx" ] && echo "SEM TESTE: $f"
37
- done
38
- ```
39
-
40
- ---
41
-
42
- ## Versionamento e Breaking Changes
43
-
44
- ### O que é uma breaking change?
45
-
46
- ```
47
- Breaking change (bump MAJOR):
48
- - Remover uma prop
49
- - Renomear uma prop sem alias de retrocompatibilidade
50
- - Alterar o tipo de uma prop (ex: string → enum)
51
- - Remover uma variante existente
52
- - Alterar comportamento padrão visível
53
-
54
- Non-breaking (bump MINOR ou PATCH):
55
- - Adicionar nova prop opcional
56
- - Adicionar nova variante
57
- - Corrigir bug visual
58
- - Melhorar acessibilidade
59
- - Atualizar documentação
60
- ```
61
-
62
- ### Processo para breaking change
63
-
64
- ```markdown
65
- 1. Criar deprecation notice na versão atual (adicionar `@deprecated` no JSDoc)
66
- 2. Documentar no CHANGELOG.md com seção "Migration Guide"
67
- 3. Dar prazo de 1 sprint para os consumidores migrarem (comunicar no canal do time)
68
- 4. Lançar major version com a mudança
69
- 5. Atualizar todos os remotes que consomem o componente
70
- ```
71
-
72
- ```typescript
73
- // Deprecation notice
74
- /** @deprecated Use `variant="destructive"` em vez de `danger`. Será removido em v2.0. */
75
- export type LegacyButtonVariant = 'danger'
76
- ```
@@ -1,164 +0,0 @@
1
- ---
2
- name: eng-frontend-microfrontend
3
- description: >
4
- Especialista em arquitetura micro frontend com Module Federation.
5
- Cobre shell/remote apps, contratos de interface, shared dependencies, event bus,
6
- monorepo frontend, desenvolvimento local standalone e estratégias de deploy independente.
7
- Trigger: Use para criar novo remote, configurar Module Federation, integrar ao shell,
8
- definir contrato de interface entre apps, resolver conflitos de shared libs ou planejar
9
- migração para arquitetura micro frontend.
10
- license: AGPL-3.0
11
- compatibility: Designed for Claude Code (or similar products)
12
- allowed-tools: Read Write Edit Glob Grep Bash
13
- metadata:
14
- author: jarvis-team
15
- version: "1.0"
16
- area: frontend
17
- stack: microfrontend
18
- argument-hint: "[novo-remote|shell|contrato|shared-deps|monorepo|debug] [contexto]"
19
- disable-model-invocation: false
20
- ---
21
-
22
- # Eng Micro Frontend — Especialista em Arquitetura Distribuída de Frontend
23
-
24
- Você é um **especialista em micro frontend com Module Federation** — arquitetura onde múltiplas
25
- aplicações frontend independentes colaboram para formar um produto coeso.
26
-
27
- ## Objetivo
28
-
29
- Projetar, implementar e manter micro frontends corretos, isolados e evoluíveis — com contratos
30
- claros entre shell e remotes, shared dependencies controladas e deploys verdadeiramente independentes.
31
-
32
- ## Conceitos Centrais
33
-
34
- ```
35
- Shell (Host) — orquestra a composição; monta os remotes nas rotas certas
36
- Remote (MFE) — feature isolada; expõe componentes/rotas para o shell consumir
37
- Design System — pacote compartilhado de componentes e tokens (não é um remote)
38
- Event Bus — canal de comunicação desacoplado entre shell e remotes
39
- Contrato de Interface — tipos TypeScript que definem o que o remote expõe e o que espera do shell
40
- ```
41
-
42
- ## Entrada
43
-
44
- - `$ARGUMENTS` — o que será feito: `novo-remote`, `shell`, `contrato`, `shared-deps`, `monorepo`, `debug`
45
-
46
- ## Recursos
47
-
48
- - **ENV**: `$IDE/ENV.md`
49
- - **Skill complementar**: `eng-frontend` (componentes), `eng-frontend-design-system` (tokens e componentes compartilhados)
50
-
51
- ---
52
-
53
- ## Pré-requisito
54
-
55
- Verificar `ENV.md` antes de executar. Confirmar bundler em uso:
56
-
57
- ```bash
58
- # Vite com @originjs/vite-plugin-federation
59
- grep -r "vite-plugin-federation\|@module-federation" package.json
60
-
61
- # Webpack com ModuleFederationPlugin
62
- grep -r "ModuleFederationPlugin\|webpack" package.json
63
- ```
64
-
65
- > **Nota de stack:** Os exemplos de código neste skill usam **Vite + @originjs/vite-plugin-federation**
66
- > por ser a configuração mais comum em projetos novos. Se o projeto usa **Webpack**, os conceitos
67
- > são idênticos — apenas a configuração do `ModuleFederationPlugin` muda.
68
- > A seção "Criando um Remote" inclui referência para ambos os bundlers onde relevante.
69
-
70
- ---
71
-
72
- ## Árvore de Decisão
73
-
74
- ```
75
- O que será feito?
76
- ├── Criar novo remote → Seção: Criando um Remote
77
- ├── Configurar o shell → Seção: Configurando o Shell
78
- ├── Definir contrato de interface → Seção: Contratos de Interface
79
- ├── Gerenciar shared dependencies → Seção: Shared Dependencies
80
- ├── Configurar monorepo → Seção: Monorepo Frontend
81
- ├── Comunicação entre apps → Seção: Event Bus
82
- ├── Deploy independente → Seção: Estratégia de Deploy
83
- └── Debug de problema → Seção: Troubleshooting
84
- ```
85
-
86
- ---
87
-
88
- ## Referências (leia só o tema que a tarefa pedir)
89
-
90
- Leia **só** o arquivo do tema que a tarefa pedir; o restante fica fora do contexto.
91
-
92
- | Tema | Quando ler | Arquivo |
93
- |------|-----------|---------|
94
- | Criando um Remote | A tarefa criar um remote novo (estrutura, bootstrap, Vite e modo standalone) | `references/1-criando-remote.md` |
95
- | Configurando o Shell | A tarefa configurar o shell ou o lazy loading de remotes | `references/2-configurando-shell.md` |
96
- | Contratos de Interface | A tarefa definir ou alterar contratos entre shell e remotes | `references/3-contratos-interface.md` |
97
- | Shared Dependencies | A tarefa envolver dependências compartilhadas ou conflito de versão | `references/4-shared-dependencies.md` |
98
- | Event Bus | A tarefa envolver comunicação entre remotes por eventos | `references/5-event-bus.md` |
99
- | Monorepo e Estratégia de Deploy | A tarefa envolver a estrutura do monorepo, o deploy independente ou o versionamento de remotes | `references/6-monorepo-deploy.md` |
100
- | Troubleshooting de Micro Frontend | Houver erro de módulo compartilhado, remote indisponível ou componente que não re-renderiza | `references/7-troubleshooting.md` |
101
-
102
- ## Checklist de Novo Remote
103
-
104
- - [ ] `bootstrap.ts` com import dinâmico
105
- - [ ] Funciona em modo standalone (`npm run dev`)
106
- - [ ] `exposed/` contém apenas a API pública
107
- - [ ] Contrato de interface criado em `mfe-contracts`
108
- - [ ] Shared dependencies declaradas com `singleton: true` e `requiredVersion`
109
- - [ ] ErrorBoundary no ponto de montagem do shell
110
- - [ ] Testes de integração com shell (ao menos smoke test)
111
- - [ ] URL de deploy configurada via variável de ambiente
112
- - [ ] Breaking changes documentadas e comunicadas ao time do shell
113
-
114
- ### Skills invocados durante a execução do skill
115
-
116
- | Passo | Skill | Condição |
117
- |-------|-------|----------|
118
- | — | Nenhuma — skill autocontida | — |
119
-
120
- ---
121
-
122
- ## Regras
123
-
124
- ### Nunca
125
- - Importar diretamente de outro remote (rompe isolamento e cria acoplamento)
126
- - Compartilhar estado via módulo — usar event bus ou props via shell
127
- - Deploy do shell acoplado ao deploy de um remote (derrota o propósito)
128
- - `eager: true` em shared libs (causa erro de bootstrap)
129
- - Hardcodar URL do remoteEntry (sempre via variável de ambiente)
130
-
131
- ### Sempre
132
- - Cada remote funciona standalone para desenvolvimento local
133
- - Contratos de interface em TypeScript antes de integrar ao shell
134
- - `singleton: true` para React, React DOM, React Router e design system
135
- - ErrorBoundary no shell ao montar cada remote
136
- - Versionar breaking changes no contrato com semver
137
-
138
- ---
139
-
140
- ## Output
141
-
142
- | Artefato | Descrição |
143
- |----------|-----------|
144
- | Configuração Module Federation | `vite.config.ts` ou `webpack.config.ts` do remote e/ou shell |
145
- | Contrato de interface | Types em `mfe-contracts` |
146
- | Ponto de montagem | Lazy import + ErrorBoundary no shell |
147
- | Event bus | Tipos de eventos e usage examples |
148
- | Pipeline CI | Configuração de build/deploy independente |
149
-
150
- ---
151
-
152
- ## Mensagem de Conclusão
153
-
154
- ```
155
- Micro Frontend configurado!
156
-
157
- Remote: {nome}
158
- Expõe: {lista do exposed}
159
- Contrato: {arquivo de tipos criado}
160
- Shared deps: {lista das dependências compartilhadas}
161
- Standalone: {porta de dev local}
162
-
163
- Próximo passo: {integrar ao shell | definir contrato | configurar CI}
164
- ```
@@ -1,109 +0,0 @@
1
- # Criando um Remote
2
-
3
- > Parte do skill `eng-frontend-microfrontend`. Leia este arquivo quando a tarefa criar um remote novo (estrutura, bootstrap, Vite e modo standalone).
4
-
5
- ## Criando um Remote
6
-
7
- ### Estrutura de um remote
8
-
9
- ```
10
- apps/
11
- └── {nome-remote}/
12
- ├── src/
13
- │ ├── bootstrap.ts ← entry point async (necessário para Module Federation)
14
- │ ├── index.ts ← importa e executa bootstrap
15
- │ ├── App.tsx ← root do remote (para modo standalone)
16
- │ ├── routes/ ← rotas do remote
17
- │ ├── components/ ← componentes locais do remote
18
- │ └── exposed/ ← o que será exposto via Module Federation
19
- │ ├── index.ts ← re-exporta tudo que é público
20
- │ └── RemoteApp.tsx ← componente raiz exposto ao shell
21
- ├── vite.config.ts ← ou webpack.config.ts
22
- ├── package.json
23
- └── tsconfig.json
24
- ```
25
-
26
- ### Por que `bootstrap.ts` é obrigatório?
27
-
28
- ```typescript
29
- // src/index.ts — entry point síncrono
30
- import('./bootstrap') // import() dinâmico é necessário para Module Federation funcionar
31
-
32
- // src/bootstrap.ts — inicialização real
33
- import React from 'react'
34
- import ReactDOM from 'react-dom/client'
35
- import App from './App'
36
-
37
- ReactDOM.createRoot(document.getElementById('root')!).render(
38
- <React.StrictMode>
39
- <App />
40
- </React.StrictMode>
41
- )
42
- ```
43
-
44
- > Sem o `bootstrap.ts`, o eager consumption de shared libs causa erro em runtime.
45
-
46
- ### Configuração Vite (vite-plugin-federation)
47
-
48
- ```typescript
49
- // vite.config.ts do remote
50
- import { defineConfig } from 'vite'
51
- import react from '@vitejs/plugin-react'
52
- import federation from '@originjs/vite-plugin-federation'
53
-
54
- export default defineConfig({
55
- plugins: [
56
- react(),
57
- federation({
58
- name: '{nome-remote}', // identificador único do remote
59
- filename: 'remoteEntry.js', // arquivo gerado
60
- exposes: {
61
- './App': './src/exposed/RemoteApp', // o que o shell pode importar
62
- './routes': './src/exposed/routes', // rotas para shell carregar
63
- },
64
- shared: {
65
- react: { singleton: true, requiredVersion: '^18.0.0' },
66
- 'react-dom': { singleton: true, requiredVersion: '^18.0.0' },
67
- 'react-router-dom': { singleton: true },
68
- // design system — sempre singleton para evitar instâncias duplicadas
69
- '@{org}/design-system': { singleton: true },
70
- },
71
- }),
72
- ],
73
- build: {
74
- target: 'esnext',
75
- minify: false, // facilita debug; ativar em prod via CI flag
76
- cssCodeSplit: false, // evita problemas com CSS em remotes
77
- },
78
- })
79
- ```
80
-
81
- ### Modo standalone (obrigatório para dev local)
82
-
83
- ```typescript
84
- // src/App.tsx — funciona sem shell
85
- import { BrowserRouter } from 'react-router-dom'
86
- import { AppRoutes } from './routes'
87
-
88
- export default function App() {
89
- return (
90
- <BrowserRouter>
91
- <AppRoutes />
92
- </BrowserRouter>
93
- )
94
- }
95
- ```
96
-
97
- ```json
98
- // package.json do remote
99
- {
100
- "scripts": {
101
- "dev": "vite --port 3001", // standalone
102
- "dev:federated": "vite --port 3001 --mode federated", // com Module Federation ativo
103
- "build": "vite build",
104
- "preview": "vite preview --port 3001"
105
- }
106
- }
107
- ```
108
-
109
- ---
@@ -1,70 +0,0 @@
1
- # Configurando o Shell
2
-
3
- > Parte do skill `eng-frontend-microfrontend`. Leia este arquivo quando a tarefa configurar o shell ou o lazy loading de remotes.
4
-
5
- ## Configurando o Shell
6
-
7
- ```typescript
8
- // vite.config.ts do shell
9
- import federation from '@originjs/vite-plugin-federation'
10
-
11
- export default defineConfig({
12
- plugins: [
13
- react(),
14
- federation({
15
- name: 'shell',
16
- remotes: {
17
- '{nome-remote}': 'http://localhost:3001/assets/remoteEntry.js',
18
- // Em produção, usar variável de ambiente:
19
- // '{nome-remote}': process.env.VITE_REMOTE_URL_NOME_REMOTE,
20
- },
21
- shared: {
22
- react: { singleton: true },
23
- 'react-dom': { singleton: true },
24
- 'react-router-dom': { singleton: true },
25
- '@{org}/design-system': { singleton: true },
26
- },
27
- }),
28
- ],
29
- })
30
- ```
31
-
32
- ### Lazy loading de remotes no shell
33
-
34
- ```typescript
35
- // src/routes/index.tsx — shell monta remotes por rota
36
- import { lazy, Suspense } from 'react'
37
- import { Routes, Route } from 'react-router-dom'
38
-
39
- // Tipagem do remote (importar do contrato de interface)
40
- const RemoteApp = lazy(() =>
41
- import('{nome-remote}/App').then((m) => ({ default: m.default }))
42
- )
43
-
44
- function ErrorFallback({ error }: { error: Error }) {
45
- return (
46
- <div role="alert">
47
- <p>Falha ao carregar módulo. <button onClick={() => window.location.reload()}>Tentar novamente</button></p>
48
- </div>
49
- )
50
- }
51
-
52
- export function ShellRoutes() {
53
- return (
54
- <Routes>
55
- <Route
56
- path="/{caminho-remote}/*"
57
- element={
58
- <Suspense fallback={<div>Carregando...</div>}>
59
- <ErrorBoundary FallbackComponent={ErrorFallback}>
60
- <RemoteApp />
61
- </ErrorBoundary>
62
- </Suspense>
63
- }
64
- />
65
- </Routes>
66
- )
67
- }
68
- ```
69
-
70
- ---