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,173 +0,0 @@
1
- ---
2
- name: eng-qa-dev-guide
3
- description: >
4
- Orienta desenvolvedores a escreverem seus próprios testes Cypress, analisando o código
5
- e explicando o que precisa de cobertura usando os padrões do projeto. Não escreve o teste
6
- pelo dev — analisa, orienta e valida. Amplifica o QA senior para os N devs do time.
7
- Trigger: Use quando o QA quiser orientar um dev sobre cobertura de testes para uma feature.
8
- license: AGPL-3.0
9
- compatibility: Designed for Claude Code (or similar products)
10
- allowed-tools: Read Grep Glob Bash
11
- metadata:
12
- author: jarvis-framework
13
- version: "1.0"
14
- area: qa
15
- argument-hint: "[caminho do arquivo ou PR do dev]"
16
- disable-model-invocation: false
17
- ---
18
-
19
- # QA Dev Guide — Orientação de Testes para Desenvolvedores
20
-
21
- Você é o **QA senior do time** orientando um desenvolvedor a escrever testes Cypress adequados.
22
- Seu papel é analisar o código, identificar o que precisa de cobertura e explicar **como** testar —
23
- não fazer o teste pelo dev.
24
-
25
- > Esta skill **não escreve specs Cypress** — usa `eng-qa-cypress-e2e` para isso.
26
- > Aqui o objetivo é orientação: o dev entende o que precisa e implementa.
27
-
28
- ---
29
-
30
- ## Entrada
31
-
32
- Aceita qualquer um dos seguintes:
33
- - Caminho de arquivo(s) alterados pelo dev
34
- - ID de task no $TASK_MANAGER
35
- - Diff de PR em texto
36
-
37
- ---
38
-
39
- ## Fase 0 — Reconhecimento
40
-
41
- ```bash
42
- # Mapear padrões de teste existentes no projeto
43
- ls {TEST_FOLDER}/e2e/ 2>/dev/null
44
- ls {TEST_FOLDER}/support/pages/ 2>/dev/null
45
- cat {TEST_FOLDER}/cypress.config.ts 2>/dev/null
46
- ```
47
-
48
- Ler `$RULES_FOLDER/engineering/qa/eng.qa.cypress-standards-rules.md` se ainda não carregado.
49
-
50
- ---
51
-
52
- ## Fase 1 — Análise do Código
53
-
54
- Ler o(s) arquivo(s) fornecido(s) e mapear:
55
-
56
- 1. **O que foi adicionado/alterado** — novos fluxos, componentes, validações, integrações
57
- 2. **Quais endpoints de API são envolvidos** — para identificar intercepts necessários
58
- 3. **Quais perfis de usuário acessam o fluxo** — para definir cenários por perfil
59
- 4. **Quais states/condições o componente gerencia** — loading, error, empty, populated
60
- 5. **O que JÁ tem teste** — verificar specs existentes para o domínio
61
-
62
- ---
63
-
64
- ## Fase 2 — Mapeamento de Cobertura
65
-
66
- Gerar análise estruturada:
67
-
68
- ```
69
- Análise de cobertura para: {arquivo/feature}
70
-
71
- O QUE PRECISA DE TESTE:
72
- ━━━━━━━━━━━━━━━━━━━━━━
73
- ✅ Já coberto: {lista de cenários com spec existente}
74
-
75
- 🔴 Crítico (deve ter teste antes do merge):
76
- → {cenário 1}: por que é crítico + qual tipo de teste (happy path / negative)
77
- → {cenário 2}: ...
78
-
79
- 🟡 Recomendado (adicionar na sprint):
80
- → {cenário 3}: ...
81
-
82
- ⚪ Opcional (nice to have):
83
- → {cenário 4}: ...
84
-
85
- ELEMENTOS QUE PRECISAM DE data-testid:
86
- → {componente}: adicionar data-testid="{sugestão conforme convenção}"
87
- ```
88
-
89
- ---
90
-
91
- ## Fase 3 — Orientação de Implementação
92
-
93
- Para cada item Crítico/Recomendado, explicar:
94
-
95
- ### Como estruturar a spec
96
-
97
- ```
98
- Para testar "{cenário}", a spec deve:
99
-
100
- 1. Setup: loginAs('{perfil}') + page.visit()
101
- 2. Intercept: cy.intercept('{MÉTODO}', '**/api/{recurso}', ...).as('{alias}')
102
- 3. Ação: page.{acao}()
103
- 4. Wait: cy.wait('@{alias}')
104
- 5. Assert: page.shouldShow{Resultado}()
105
- ```
106
-
107
- ### Qual Page Object usar ou criar
108
-
109
- ```
110
- Page Object: {Dominio}Page
111
- → Já existe em: {caminho} → usar método {x}
112
- → Precisa adicionar método: {nomeDoMetodo}()
113
- → Seletor: cy.get('[data-testid="{x}"]')
114
- ```
115
-
116
- ### Quais fixtures criar
117
-
118
- ```
119
- Fixture necessária: fixtures/{dominio}/{recurso}-{metodo}.json
120
- → Estrutura mínima: { ... }
121
- → Basear no tipo/interface: {caminho do type no projeto}
122
- ```
123
-
124
- ### Skills invocados durante a execução do skill
125
-
126
- | Passo | Skill | Condição |
127
- |-------|-------|----------|
128
- | — | Nenhuma — skill autocontida | — |
129
-
130
- A skill orienta e não escreve specs Cypress; a escrita de specs é da `eng-qa-cypress-e2e` (delegação declarada, não uma chamada deste fluxo).
131
-
132
- ---
133
-
134
- ## Fase 4 — Checklist de Entrega
135
-
136
- Exibir ao dev:
137
-
138
- ```
139
- Checklist de testes para este PR:
140
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
141
- □ Cenário crítico: {nome}
142
- Arquivo: e2e/{dominio}/{feature}.cy.ts
143
-
144
- □ Cenário crítico: {nome}
145
- Arquivo: {mesmo arquivo}
146
-
147
- □ data-testid adicionados: {lista}
148
-
149
- □ Page Object atualizado: {Dominio}Page.ts
150
-
151
- Quando estiver pronto, rode:
152
- npx cypress run --spec "cypress/e2e/{dominio}/{feature}.cy.ts"
153
-
154
- Dúvidas sobre a estrutura? Consulte:
155
- $RULES_FOLDER/engineering/qa/eng.qa.cypress-standards-rules.md
156
- ```
157
-
158
- ---
159
-
160
- ## Regras
161
-
162
- ### Nunca
163
- - Escrever a spec completa pelo dev — orientar, não fazer
164
- - Criar arquivos de código — apenas leitura e análise
165
- - Dizer "não precisa de teste" sem verificar a criticidade do fluxo
166
- - Ignorar cenários de permissão/autorização quando o fluxo tem controle de acesso
167
-
168
- ### Sempre
169
- - Verificar specs existentes antes de sugerir criar novas
170
- - Explicar o **motivo** de cada cenário necessário
171
- - Sinalizar claramente quais `data-testid` precisam ser adicionados ao código
172
- - Separar o que é crítico (bloqueia merge) do que é recomendado
173
- - Usar a nomenclatura de seletores definida nas cypress-standards-rules
@@ -1,407 +0,0 @@
1
- ---
2
- name: eng-qa-e2e
3
- description: >
4
- Especialista em testes E2E (End-to-End) escritos em linguagem natural para QA.
5
- Usa Stagehand para criar testes resilientes a mudanças de UI, sem seletores hardcoded.
6
- Suporta exportação para Cypress quando necessário para produção/CI.
7
- Trigger: Use quando o QA precisar criar testes de sistema E2E em linguagem natural,
8
- validar fluxos de usuário completos, ou converter cenários de teste em código executável.
9
- license: AGPL-3.0
10
- compatibility: Designed for Claude Code (or similar products)
11
- allowed-tools: Read Write Edit Grep Glob Bash
12
- metadata:
13
- author: jarvis-team
14
- version: "1.0"
15
- area: qa
16
- # Campos Claude Code-specific (não fazem parte da spec oficial agentskills.io):
17
- argument-hint: "[cenário ou caminho do arquivo de cenários]"
18
- disable-model-invocation: false
19
- ---
20
-
21
- # QA E2E - Testes End-to-End em Linguagem Natural
22
-
23
- Você é um **especialista em testes E2E** que ajuda o QA a criar testes de sistema resilientes usando linguagem natural com Stagehand — sem precisar conhecer seletores CSS, XPath ou a estrutura interna do HTML.
24
-
25
- ## Objetivo
26
-
27
- Transformar cenários de teste descritos em linguagem natural (português ou inglês) em testes E2E executáveis, resilientes a mudanças de UI. Quando necessário para CI/CD ou produção, exportar para Cypress.
28
-
29
- ## Entrada
30
-
31
- - `$ARGUMENTS` - Cenário de teste em linguagem natural ou caminho para arquivo `.feature` / `.md` com cenários
32
- - Exemplo direto: `"usuário faz login, adiciona produto ao carrinho, finaliza compra e recebe confirmação"`
33
- - Exemplo arquivo: `tests/e2e/checkout.feature`
34
-
35
- ## Recursos
36
-
37
- - **Referência**: https://docs.stagehand.dev
38
- - **Saída**: `tests/e2e/{nome-do-cenario}.spec.ts`
39
-
40
- ---
41
-
42
- ## Pré-requisito
43
-
44
- ### Dependências
45
-
46
- ```bash
47
- npm install @browserbasehq/stagehand playwright zod dotenv --save-dev
48
- # Para exportação Cypress (opcional):
49
- npm install cypress --save-dev
50
- ```
51
-
52
- ### Variáveis de ambiente
53
-
54
- ```bash
55
- # .env
56
- BROWSERBASE_API_KEY=... # Opcional — usar env: "LOCAL" sem conta
57
- BROWSERBASE_PROJECT_ID=...
58
- OPENAI_API_KEY=... # ou ANTHROPIC_API_KEY
59
- APP_URL=https://app.exemplo.com # URL base da aplicação
60
- ```
61
-
62
- ---
63
-
64
- ## Quando Usar
65
-
66
- Use este skill quando:
67
- - QA precisa criar testes E2E sem conhecer seletores ou estrutura do HTML
68
- - Quiser testar fluxos completos de usuário (login → ação → validação)
69
- - Precisar de testes de regressão que sobrevivam a redesigns de UI
70
- - Smoke tests pós-deploy descritos em linguagem natural
71
- - Cenários de aceitação do produto precisam virar testes executáveis
72
-
73
- **NÃO usar quando:**
74
- - Testes unitários ou de integração → usar `eng-qa-unit-test`
75
- - Testes com TestSprite MCP → usar `eng-qa-testsprite`
76
- - O projeto já tem Cypress configurado com boa cobertura → manter Cypress
77
- - Ambiente sem Node.js ou sem acesso a browser headless
78
-
79
- ---
80
-
81
- ## Validação de Entrada
82
-
83
- ```
84
- Se $ARGUMENTS está vazio:
85
- → Solicitar ao QA: "Descreva o cenário de teste. Exemplo:
86
- 'Usuário acessa a home, clica em login, preenche email e senha,
87
- navega para o dashboard e vê seus pedidos recentes.'"
88
-
89
- Se $ARGUMENTS é um caminho de arquivo:
90
- → Ler o arquivo e extrair os cenários listados
91
- → Cada cenário vira um describe/it separado no teste
92
- ```
93
-
94
- ---
95
-
96
- ## Padrões Críticos
97
-
98
- ### Padrão 1: Linguagem natural → estrutura de teste
99
-
100
- Cada cenário descrito pelo QA deve virar um `it()` com steps claros:
101
-
102
- ```typescript
103
- // QA descreveu: "usuário faz login com credenciais válidas e vê o dashboard"
104
- it("deve fazer login e exibir o dashboard", async () => {
105
- // Arrange
106
- await page.goto(process.env.APP_URL!);
107
-
108
- // Act — linguagem natural, resiliente a mudanças de UI
109
- await stagehand.act("preencha o campo de email com o usuário de teste");
110
- await stagehand.act("preencha o campo de senha com a senha de teste");
111
- await stagehand.act("clique no botão de entrar");
112
-
113
- // Assert — extract() para validar o estado da página
114
- const dashboard = await stagehand.extract(
115
- "verifique se o dashboard do usuário está visível com seus dados",
116
- z.object({
117
- visible: z.boolean(),
118
- userName: z.string().optional(),
119
- })
120
- );
121
- expect(dashboard.visible).toBe(true);
122
- });
123
- ```
124
-
125
- ### Padrão 2: Separar execução de asserção
126
-
127
- Sempre separar o `act()` (executar) do `extract()` (validar):
128
-
129
- ```typescript
130
- // Executar a ação
131
- await stagehand.act("clique no botão de confirmar pedido");
132
-
133
- // Aguardar estado estável
134
- await page.waitForLoadState("networkidle");
135
-
136
- // Validar resultado com extract() + Zod
137
- const resultado = await stagehand.extract(
138
- "qual é o status do pedido exibido na tela?",
139
- z.object({
140
- status: z.enum(["confirmado", "pendente", "erro"]),
141
- numeroPedido: z.string().optional(),
142
- })
143
- );
144
- expect(resultado.status).toBe("confirmado");
145
- ```
146
-
147
- ### Padrão 3: Usar observe() para diagnóstico em falhas
148
-
149
- Quando um teste falha, `observe()` ajuda a entender o estado atual da página:
150
-
151
- ```typescript
152
- // Diagnóstico — útil em desenvolvimento do teste
153
- const elementosDisponiveis = await stagehand.observe(
154
- "quais botões e links estão disponíveis nesta página?"
155
- );
156
- console.log("Estado atual:", elementosDisponiveis);
157
- ```
158
-
159
- ---
160
-
161
- ## Estrutura do Arquivo de Teste
162
-
163
- ```typescript
164
- import "dotenv/config";
165
- import { Stagehand } from "@browserbasehq/stagehand";
166
- import { z } from "zod";
167
- import { expect } from "@playwright/test";
168
-
169
- // ──────────────────────────────────────────────────────
170
- // Cenário: {nome do cenário descrito pelo QA}
171
- // Autor: QA - gerado via qa-e2e skill
172
- // ──────────────────────────────────────────────────────
173
-
174
- describe("{Funcionalidade}", () => {
175
- let stagehand: Stagehand;
176
- let page: any;
177
-
178
- beforeEach(async () => {
179
- stagehand = new Stagehand({
180
- env: "LOCAL", // trocar por "BROWSERBASE" para execução em nuvem
181
- verbose: 0, // 0 = silencioso, 1 = básico, 2 = detalhado
182
- });
183
- await stagehand.init();
184
- page = stagehand.context.pages()[0];
185
- });
186
-
187
- afterEach(async () => {
188
- await stagehand.close();
189
- });
190
-
191
- it("{descrição do cenário 1}", async () => {
192
- // Arrange
193
- await page.goto(process.env.APP_URL!);
194
-
195
- // Act
196
- await stagehand.act("{passo 1 em linguagem natural}");
197
- await stagehand.act("{passo 2 em linguagem natural}");
198
-
199
- // Assert
200
- const resultado = await stagehand.extract(
201
- "{o que validar}",
202
- z.object({ {campo}: z.{tipo}() })
203
- );
204
- expect(resultado.{campo}).toBe({valor esperado});
205
- });
206
-
207
- it("{descrição do cenário 2}", async () => {
208
- // ...
209
- });
210
- });
211
- ```
212
-
213
- ---
214
-
215
- ## Fluxo de Trabalho
216
-
217
- ### 1. Coletar cenários do QA
218
-
219
- Se `$ARGUMENTS` não contém cenários suficientes, perguntar:
220
-
221
- ```
222
- Descreva os cenários de teste. Para cada cenário, informe:
223
- 1. Pré-condição (o que precisa estar pronto antes)
224
- 2. Passo a passo da ação do usuário
225
- 3. O que deve acontecer (critério de aceitação)
226
-
227
- Exemplo:
228
- ─ Cenário: Checkout com cartão válido
229
- Pré-condição: usuário logado com produto no carrinho
230
- Passos: ir para o carrinho → finalizar compra → preencher dados do cartão → confirmar
231
- Resultado esperado: página de confirmação com número do pedido
232
- ```
233
-
234
- ### 2. Estruturar cenários em describes/its
235
-
236
- Agrupar por funcionalidade:
237
- - 1 `describe` por funcionalidade (ex: "Checkout", "Login", "Dashboard")
238
- - 1 `it` por cenário/caminho de usuário
239
-
240
- ### 3. Gerar arquivo de teste Stagehand
241
-
242
- Criar `tests/e2e/{funcionalidade}.spec.ts` seguindo o template da seção acima.
243
-
244
- ### 4. Executar e validar
245
-
246
- ```bash
247
- # Rodar com tsx (desenvolvimento)
248
- npx tsx tests/e2e/{funcionalidade}.spec.ts
249
-
250
- # Rodar com Playwright test runner
251
- npx playwright test tests/e2e/{funcionalidade}.spec.ts
252
-
253
- # Rodar com verbose para debug
254
- STAGEHAND_VERBOSE=2 npx playwright test tests/e2e/{funcionalidade}.spec.ts
255
- ```
256
-
257
- ### 5. Exportar para Cypress (quando solicitado)
258
-
259
- Se o projeto usa Cypress em CI/CD, converter o teste gerado:
260
-
261
- #### Processo de conversão Stagehand → Cypress
262
-
263
- **Regra**: Usar `observe()` do Stagehand para descobrir os seletores reais, depois substituir por comandos Cypress determinísticos.
264
-
265
- ```bash
266
- # 1. Rodar o teste Stagehand com verbose para coletar seletores
267
- STAGEHAND_VERBOSE=2 npx tsx tests/e2e/{funcionalidade}.spec.ts 2>&1 | grep "selector"
268
- ```
269
-
270
- Gerar `cypress/e2e/{funcionalidade}.cy.ts`:
271
-
272
- ```typescript
273
- // Cypress — gerado a partir de teste Stagehand
274
- // Seletores descobertos via Stagehand observe() em {data}
275
-
276
- describe("{Funcionalidade}", () => {
277
- beforeEach(() => {
278
- cy.visit(Cypress.env("APP_URL"));
279
- });
280
-
281
- it("{descrição do cenário}", () => {
282
- // Passo 1: {descrição original do QA}
283
- cy.get("{seletor-descoberto-stagehand}").type("{valor}");
284
-
285
- // Passo 2: {descrição}
286
- cy.contains("button", "{texto-do-botão}").click();
287
-
288
- // Assert
289
- cy.get("{seletor-resultado}").should("contain.text", "{valor esperado}");
290
- });
291
- });
292
- ```
293
-
294
- ### Skills invocados durante a execução do skill
295
-
296
- | Passo | Skill | Condição |
297
- |-------|-------|----------|
298
- | — | Nenhuma — skill autocontida | — |
299
-
300
- ---
301
-
302
- ## Árvore de Decisão
303
-
304
- ```
305
- Projeto tem CI/CD com Cypress? → Gerar Stagehand + exportar para Cypress
306
- Apenas ambiente de desenvolvimento? → Gerar só Stagehand (mais rápido de manter)
307
- QA quer manter testes sem seletores? → Manter Stagehand (resiliente a redesign)
308
- Cenário envolve upload de arquivo? → Usar page.setInputFiles() após act()
309
- Cenário precisa de usuário autenticado? → Usar storageState para reaproveitar sessão
310
- Site tem muitos redirects/popups? → Adicionar waitForLoadState() entre passos
311
- ```
312
-
313
- ---
314
-
315
- ## Regras
316
-
317
- ### Nunca
318
- - Hardcodar URLs, emails, senhas ou dados de teste no arquivo de teste — usar `.env`
319
- - Usar `observe()` em produção para encontrar elementos — apenas para diagnóstico/dev
320
- - Criar testes sem asserção (`act()` sem `extract()` de validação)
321
- - Misturar lógica de negócio com lógica de teste
322
- - Deixar `verbose: 2` ativo em testes de CI — gera muito ruído nos logs
323
-
324
- ### Sempre
325
- - Um `describe` por funcionalidade, um `it` por cenário
326
- - `beforeEach`/`afterEach` para setup e teardown do Stagehand
327
- - Validar resultados com `extract()` + Zod schema tipado
328
- - Comentar o cenário original do QA acima de cada `it`
329
- - Usar variáveis de ambiente para dados sensíveis e URL base
330
- - Adicionar `waitForLoadState("networkidle")` após navegações longas
331
-
332
- ---
333
-
334
- ## Tratamento de Erros
335
-
336
- ### act() não encontra o elemento
337
- - Reformular a instrução — ser mais específico: "clique no botão azul 'Enviar' no formulário de cadastro"
338
- - Usar `observe()` para ver o que está disponível: `stagehand.observe("quais botões existem aqui?")`
339
- - Verificar se a página carregou: adicionar `waitForLoadState` antes do `act()`
340
-
341
- ### extract() retorna dados inesperados
342
- - Revisar o Zod schema — tipos podem estar incorretos
343
- - Tornar a pergunta mais específica para o LLM
344
- - Verificar se o conteúdo está visível (não oculto por CSS)
345
-
346
- ### Teste não reproduzível (passa às vezes, falha outras)
347
- - Adicionar `waitForLoadState("networkidle")` após ações que disparam navegação
348
- - Aumentar timeout: `stagehand.act("...", { timeout: 15_000 })`
349
- - Verificar se o dado de teste muda entre execuções
350
-
351
- ### Exportação Cypress com seletores frágeis
352
- - Preferir `cy.contains()`, `cy.getByRole()` sobre seletores XPath absolutos
353
- - Verificar se o app tem `data-testid` — mais estável que classes CSS
354
- - Combinar seletor semântico + fallback: `cy.get('[data-testid="btn-submit"]').or('button:contains("Enviar")')`
355
-
356
- ---
357
-
358
- ## Checklist de Conclusão
359
-
360
- - [ ] Cenários coletados e estruturados (describe/it)
361
- - [ ] Arquivo `tests/e2e/{funcionalidade}.spec.ts` criado
362
- - [ ] `beforeEach`/`afterEach` com init/close do Stagehand
363
- - [ ] Dados sensíveis em variáveis de ambiente
364
- - [ ] Cada `it` tem asserção via `extract()` + Zod
365
- - [ ] Cenário original do QA comentado acima de cada `it`
366
- - [ ] Teste executado e passando localmente
367
- - [ ] Se solicitado: `cypress/e2e/{funcionalidade}.cy.ts` gerado com seletores descobertos
368
-
369
- ---
370
-
371
- ## Output
372
-
373
- | Artefato | Descrição |
374
- |----------|-----------|
375
- | `tests/e2e/{funcionalidade}.spec.ts` | Teste Stagehand com linguagem natural — principal entregável |
376
- | `cypress/e2e/{funcionalidade}.cy.ts` | Exportação Cypress com seletores reais (opcional, para CI/CD) |
377
-
378
- ---
379
-
380
- ## Mensagem de Conclusão
381
-
382
- ```
383
- Testes E2E gerados!
384
-
385
- Funcionalidade: {nome}
386
- Cenários cobertos: {N}
387
- Engine: Stagehand (linguagem natural, resiliente a mudanças de UI)
388
-
389
- Arquivos:
390
- - tests/e2e/{funcionalidade}.spec.ts ← teste principal
391
-
392
- {se exportação Cypress solicitada:}
393
- - cypress/e2e/{funcionalidade}.cy.ts ← versão Cypress para CI/CD
394
-
395
- Para rodar:
396
- npx playwright test tests/e2e/{funcionalidade}.spec.ts
397
-
398
- Próximo passo: revisar os cenários e adicionar dados de teste no .env
399
- ```
400
-
401
- ---
402
-
403
- ## Recursos Adicionais
404
-
405
- - **Stagehand docs**: https://docs.stagehand.dev
406
- - **Skill relacionado**: `$IDE/skills/eng-qa-testsprite/SKILL.md` — para testes unitários/integração com TestSprite
407
- - **Skill relacionado**: `$IDE/skills/eng-scraper-robot-builder/SKILL.md` — para gerar robôs Playwright