jarvis-ai-framework 2.1.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/AGENTS.md +22 -122
  2. package/agents/AGENTS.md +20 -24
  3. package/agents/README.md +25 -129
  4. package/agents/engineering/data/eng.data-engineer.agent.md +12 -35
  5. package/agents/engineering/eng.agent.md +18 -30
  6. package/agents/engineering/eng.bug-hunter.md +9 -12
  7. package/agents/engineering/eng.dev-code-reviewer.md +5 -1
  8. package/agents/engineering/eng.docs-writer.md +3 -3
  9. package/agents/engineering/eng.frontend.agent.md +13 -8
  10. package/agents/engineering/eng.rpa.agent.md +5 -13
  11. package/agents/engineering/eng.ux-designer.agent.md +4 -0
  12. package/agents/engineering/qa/eng.qa.quality-champion-task-agent.md +4 -0
  13. package/agents/engineering/qa/eng.qa.quality-strategist.md +13 -8
  14. package/agents/engineering/qa/eng.qa.test-architect.md +16 -15
  15. package/agents/engineering/qa/eng.qa.test-planner.md +22 -17
  16. package/agents/engineering/qa/eng.qa.testing-engineer.md +99 -15
  17. package/agents/product/prod.discovery-interviewer.md +22 -3
  18. package/agents/product/prod.pm-checker.md +4 -0
  19. package/bin/README.md +142 -0
  20. package/bin/commands/docs-publish.js +105 -141
  21. package/bin/commands/docs-sync.js +66 -104
  22. package/bin/commands/info.js +7 -27
  23. package/bin/commands/init.js +23 -51
  24. package/bin/commands/install-rtk.js +9 -3
  25. package/bin/commands/list.js +5 -18
  26. package/bin/commands/map.js +58 -0
  27. package/bin/commands/qa-signoff.js +58 -55
  28. package/bin/commands/tokens.js +90 -0
  29. package/bin/commands/whoami.js +30 -26
  30. package/bin/jarvis.js +9 -153
  31. package/bin/lib/auth/session.js +20 -20
  32. package/bin/lib/cli/program.js +219 -0
  33. package/bin/lib/cli/shared-options.js +29 -0
  34. package/bin/lib/config/constants.js +70 -2
  35. package/bin/lib/config/ide-config.js +4 -8
  36. package/bin/lib/core/profile-filter.js +116 -0
  37. package/bin/lib/core/scanner.js +5 -31
  38. package/bin/lib/core/sync-engine.js +21 -14
  39. package/bin/lib/core/token-report.js +100 -0
  40. package/bin/lib/docs/fetch-file.js +39 -0
  41. package/bin/lib/docs/publish-file.js +194 -0
  42. package/bin/lib/docs/redis-cache.js +49 -0
  43. package/bin/lib/docs/validate-frontmatter.js +9 -39
  44. package/bin/lib/env-loader.js +11 -34
  45. package/bin/lib/flow-map/index.js +65 -0
  46. package/bin/lib/flow-map/parse.js +223 -0
  47. package/bin/lib/flow-map/render.js +89 -0
  48. package/bin/lib/flow-map/tree.js +248 -0
  49. package/bin/lib/tasks/comment.js +40 -35
  50. package/bin/lib/utils/frontmatter.js +57 -0
  51. package/bin/lib/utils/git-parser.js +4 -6
  52. package/bin/lib/utils/npmrc-parser.js +6 -13
  53. package/bin/lib/utils/paths.js +2 -4
  54. package/bin/lib/utils/ui.js +3 -9
  55. package/bin/lib/vcs/api.js +25 -41
  56. package/bin/lib/vcs/create-issue.js +49 -33
  57. package/bin/lib/vcs/create-merge.js +47 -31
  58. package/bin/lib/vcs/fetch-raw.js +35 -23
  59. package/members.md +1 -1
  60. package/package.json +15 -4
  61. package/rules/AGENTS.md +18 -7
  62. package/rules/engineering/eng-rules.md +3 -13
  63. package/rules/engineering/eng-security-rules.md +19 -18
  64. package/rules/engineering/eng.bump-rules.md +3 -2
  65. package/rules/engineering/eng.docs-scraping-rules.md +4 -4
  66. package/rules/engineering/eng.integrations-rules.md +3 -7
  67. package/rules/engineering/eng.skills-rules.md +1 -5
  68. package/rules/engineering/eng.specializations-rules.md +18 -8
  69. package/rules/engineering/frontend/eng.frontend-rules.md +1 -4
  70. package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +1 -1
  71. package/rules/engineering/rpa/eng.rpa-rules.md +4 -9
  72. package/rules/product/README.md +1 -0
  73. package/rules/product/prod-rules.md +1 -4
  74. package/rules/product/prod.spec-rules.md +0 -4
  75. package/rules/rtk-rules.md +0 -1
  76. package/{rules → rules-on-demand}/engineering/eng.breakdown-subtasks-rules.md +0 -4
  77. package/{rules → rules-on-demand}/engineering/eng.plan-rules.md +0 -4
  78. package/{rules → rules-on-demand}/engineering/eng.pr-rules.md +0 -4
  79. package/{rules → rules-on-demand}/engineering/eng.pre-pr-rules.md +0 -4
  80. package/{rules → rules-on-demand}/engineering/eng.start-rules.md +0 -4
  81. package/{rules → rules-on-demand}/engineering/eng.tech-spec-rules.md +1 -2
  82. package/{rules → rules-on-demand}/engineering/eng.work-rules.md +0 -4
  83. package/skills/AGENTS.md +69 -106
  84. package/skills/SKILLS-ROADMAP.md +47 -132
  85. package/skills/eng-ai/SKILL.md +270 -0
  86. package/skills/eng-ai/references/1-fundamentos-ml.md +24 -0
  87. package/skills/eng-ai/references/10-arquitetura-solucoes-ia.md +24 -0
  88. package/skills/eng-ai/references/11-governanca-ia.md +24 -0
  89. package/skills/eng-ai/references/12-seguranca-ia-responsavel.md +25 -0
  90. package/skills/eng-ai/references/2-matematica-estatistica.md +24 -0
  91. package/skills/eng-ai/references/3-dados-para-ia.md +24 -0
  92. package/skills/eng-ai/references/4-deep-learning-fundacionais.md +24 -0
  93. package/skills/eng-ai/references/5-llms-chatbots-agentes-rag.md +25 -0
  94. package/skills/eng-ai/references/6-avaliacao-experimentacao.md +24 -0
  95. package/skills/eng-ai/references/7-engenharia-sistemas-ia.md +24 -0
  96. package/skills/eng-ai/references/8-mlops-plataforma.md +24 -0
  97. package/skills/eng-ai/references/9-produto-ia.md +24 -0
  98. package/skills/eng-ai/references/especializacoes.md +17 -0
  99. package/skills/eng-automation/SKILL.md +290 -0
  100. package/skills/eng-automation/references/1-fundamentos-automacao.md +25 -0
  101. package/skills/eng-automation/references/10-ingestao-dados.md +25 -0
  102. package/skills/eng-automation/references/11-captcha-antibot.md +25 -0
  103. package/skills/eng-automation/references/12-limites-taxa-sessoes.md +25 -0
  104. package/skills/eng-automation/references/13-agendamento-orquestracao.md +24 -0
  105. package/skills/eng-automation/references/14-retentativa-erros.md +25 -0
  106. package/skills/eng-automation/references/15-autenticacao-credenciais.md +24 -0
  107. package/skills/eng-automation/references/16-observabilidade-confiabilidade.md +24 -0
  108. package/skills/eng-automation/references/2-aquisicao-dados.md +25 -0
  109. package/skills/eng-automation/references/3-automacao-navegador.md +24 -0
  110. package/skills/eng-automation/references/4-scraping-crawling.md +25 -0
  111. package/skills/eng-automation/references/5-apis-rest-graphql-soap.md +26 -0
  112. package/skills/eng-automation/references/6-webhooks-integracao.md +25 -0
  113. package/skills/eng-automation/references/7-rpa.md +25 -0
  114. package/skills/eng-automation/references/8-extracao-estruturada.md +25 -0
  115. package/skills/eng-automation/references/9-extracao-documentos.md +25 -0
  116. package/skills/eng-automation/references/especializacoes.md +18 -0
  117. package/skills/eng-backend/SKILL.md +6 -0
  118. package/skills/eng-backend-arch-c4/SKILL.md +10 -4
  119. package/skills/eng-backend-microservices-trace/SKILL.md +6 -0
  120. package/skills/eng-backend-nestjs/SKILL.md +17 -462
  121. package/skills/eng-backend-nestjs/references/1-arquitetura-modulos.md +54 -0
  122. package/skills/eng-backend-nestjs/references/2-guards-autenticacao.md +118 -0
  123. package/skills/eng-backend-nestjs/references/3-interceptors-pipes-filters.md +113 -0
  124. package/skills/eng-backend-nestjs/references/4-config-logging.md +61 -0
  125. package/skills/eng-backend-nestjs/references/5-testes.md +83 -0
  126. package/skills/eng-backend-nestjs/references/6-problemas-comuns.md +53 -0
  127. package/skills/eng-backend-rabbitmq/SKILL.md +15 -298
  128. package/skills/eng-backend-rabbitmq/references/1-referencia-endpoints.md +28 -0
  129. package/skills/eng-backend-rabbitmq/references/2-codigo-consumer-producer.md +90 -0
  130. package/skills/eng-backend-rabbitmq/references/3-arquiteturas-comuns.md +101 -0
  131. package/skills/eng-backend-rabbitmq/references/4-troubleshooting.md +93 -0
  132. package/skills/eng-data/SKILL.md +271 -0
  133. package/skills/eng-data/references/1-fundamentos-dados.md +24 -0
  134. package/skills/eng-data/references/10-ciencia-dados.md +24 -0
  135. package/skills/eng-data/references/11-dataops-plataforma.md +24 -0
  136. package/skills/eng-data/references/12-seguranca-privacidade.md +24 -0
  137. package/skills/eng-data/references/2-modelagem-dados.md +24 -0
  138. package/skills/eng-data/references/3-bancos-dados.md +24 -0
  139. package/skills/eng-data/references/4-arquitetura-dados.md +24 -0
  140. package/skills/eng-data/references/5-pipelines-integracao.md +24 -0
  141. package/skills/eng-data/references/6-qualidade-dados.md +24 -0
  142. package/skills/eng-data/references/7-governanca-metadados.md +24 -0
  143. package/skills/eng-data/references/8-estatistica-analise.md +24 -0
  144. package/skills/eng-data/references/9-analytics-bi.md +24 -0
  145. package/skills/eng-data/references/especializacoes.md +20 -0
  146. package/skills/eng-frontend/SKILL.md +18 -5
  147. package/skills/eng-frontend/references/13-design-system.md +48 -0
  148. package/skills/eng-frontend/references/14-microfrontend.md +46 -0
  149. package/skills/eng-global-docs-write/SKILL.md +10 -5
  150. package/skills/eng-global-pr/SKILL.md +7 -1
  151. package/skills/eng-global-task-comment/SKILL.md +8 -2
  152. package/skills/eng-platform/SKILL.md +331 -0
  153. package/skills/eng-platform/references/1-fundamentos-sistemas.md +23 -0
  154. package/skills/eng-platform/references/10-resiliencia-arquitetura.md +24 -0
  155. package/skills/eng-platform/references/11-plataforma-devex.md +24 -0
  156. package/skills/eng-platform/references/12-finops-custos.md +24 -0
  157. package/skills/eng-platform/references/13-seguranca-fundamentos.md +26 -0
  158. package/skills/eng-platform/references/14-profiling-performance.md +23 -0
  159. package/skills/eng-platform/references/15-testes-carga-chaos.md +23 -0
  160. package/skills/eng-platform/references/16-cache-multicamada.md +22 -0
  161. package/skills/eng-platform/references/2-redes.md +23 -0
  162. package/skills/eng-platform/references/3-cloud.md +24 -0
  163. package/skills/eng-platform/references/4-iac-automacao.md +24 -0
  164. package/skills/eng-platform/references/5-containers-orquestracao.md +25 -0
  165. package/skills/eng-platform/references/6-cicd-entrega.md +24 -0
  166. package/skills/eng-platform/references/7-observabilidade.md +24 -0
  167. package/skills/eng-platform/references/8-confiabilidade-sre.md +24 -0
  168. package/skills/eng-platform/references/9-seguranca-infra.md +26 -0
  169. package/skills/eng-platform/references/especializacoes.md +34 -0
  170. package/skills/eng-qa/SKILL.md +283 -0
  171. package/skills/eng-qa/references/1-fundamentos-qualidade.md +25 -0
  172. package/skills/eng-qa/references/10-confiabilidade.md +25 -0
  173. package/skills/eng-qa/references/11-seguranca.md +24 -0
  174. package/skills/eng-qa/references/12-acessibilidade.md +24 -0
  175. package/skills/eng-qa/references/13-dados-testes.md +24 -0
  176. package/skills/eng-qa/references/14-gestao-testes-defeitos.md +25 -0
  177. package/skills/eng-qa/references/15-arquitetura-qa.md +25 -0
  178. package/skills/eng-qa/references/2-estrategia-planejamento.md +25 -0
  179. package/skills/eng-qa/references/3-design-testes.md +25 -0
  180. package/skills/eng-qa/references/4-manual-exploratorio.md +24 -0
  181. package/skills/eng-qa/references/5-automacao-testes.md +25 -0
  182. package/skills/eng-qa/references/6-api-integracao.md +25 -0
  183. package/skills/eng-qa/references/7-contrato.md +24 -0
  184. package/skills/eng-qa/references/8-interface-compat-mobile.md +24 -0
  185. package/skills/eng-qa/references/9-performance.md +24 -0
  186. package/skills/eng-qa/references/especializacoes.md +29 -0
  187. package/skills/eng-qa-planner/SKILL.md +264 -0
  188. package/skills/jarvis-context-detect/SKILL.md +7 -1
  189. package/skills/jarvis-context-detect/assets/context-profile-template.md +1 -1
  190. package/skills/jarvis-create-specialization/SKILL.md +14 -0
  191. package/skills/jarvis-docs-central/README.md +31 -28
  192. package/skills/jarvis-docs-central/SKILL.md +11 -5
  193. package/skills/jarvis-docs-index/SKILL.md +10 -2
  194. package/skills/jarvis-evolution-architect/SKILL.md +6 -0
  195. package/skills/jarvis-init/SKILL.md +22 -15
  196. package/skills/jarvis-init/assets/passo-adicionar-stacks.md +47 -18
  197. package/skills/jarvis-list-specializations/SKILL.md +36 -17
  198. package/skills/jarvis-report-issue/SKILL.md +7 -1
  199. package/skills/product-roadmap-report/SKILL.md +8 -0
  200. package/skills/product-specs/SKILL.md +9 -0
  201. package/skills/product-specs-update/SKILL.md +6 -0
  202. package/taxonomy.md +16 -28
  203. package/templates/AGENTS.md +2 -0
  204. package/templates/ENV-template.md +10 -2
  205. package/templates/engineering/qa/qa.sprint-plan-template.md +1 -1
  206. package/templates/engineering/tech-spec-delivery-template.md +179 -0
  207. package/workflows/AGENTS.md +14 -2
  208. package/workflows/README.md +8 -16
  209. package/workflows/all-tools.md +7 -1
  210. package/workflows/engineering/data/data.contract.md +8 -0
  211. package/workflows/engineering/data/data.new-pipeline.md +15 -4
  212. package/workflows/engineering/eng.breakdown-subtasks.md +9 -0
  213. package/workflows/engineering/eng.bug-audit.md +10 -13
  214. package/workflows/engineering/eng.build-tech-spec.md +17 -146
  215. package/workflows/engineering/eng.create-ard-from-code.md +8 -0
  216. package/workflows/engineering/eng.create-ard.md +8 -0
  217. package/workflows/engineering/eng.create-rfc.md +7 -0
  218. package/workflows/engineering/eng.debug.md +5 -21
  219. package/workflows/engineering/eng.docs.md +9 -0
  220. package/workflows/engineering/eng.light-arch.md +7 -0
  221. package/workflows/engineering/eng.plan.md +15 -2
  222. package/workflows/engineering/eng.pr.md +24 -30
  223. package/workflows/engineering/eng.pre-pr.md +33 -15
  224. package/workflows/engineering/eng.review.md +18 -11
  225. package/workflows/engineering/eng.rpa.robot.md +17 -7
  226. package/workflows/engineering/eng.start.md +33 -12
  227. package/workflows/engineering/eng.work.md +25 -17
  228. package/workflows/engineering/frontend/eng.frontend-component.md +7 -0
  229. package/workflows/engineering/frontend/eng.frontend-perf-audit.md +8 -0
  230. package/workflows/engineering/frontend/eng.frontend-review.md +8 -0
  231. package/workflows/engineering/qa/eng.qa-refinement-entry.md +7 -0
  232. package/workflows/engineering/qa/eng.qa-release-signoff.md +6 -0
  233. package/workflows/engineering/qa/eng.qa-sprint-planning.md +7 -1
  234. package/workflows/product/prod.roadmap.preview.md +9 -0
  235. package/workflows/product/prod.spec.ard.md +97 -0
  236. package/workflows/product/prod.spec.breakdown.md +10 -0
  237. package/workflows/product/prod.spec.clarify.md +8 -2
  238. package/workflows/product/prod.spec.discovery.md +11 -1
  239. package/workflows/product/prod.spec.epic.md +8 -0
  240. package/workflows/product/prod.spec.frd.md +7 -0
  241. package/workflows/product/prod.spec.issue.md +6 -0
  242. package/workflows/product/prod.spec.md +15 -1
  243. package/workflows/product/prod.spec.prd.md +7 -0
  244. package/workflows/taxonomy.md +58 -6
  245. package/workflows/warm-up.md +47 -60
  246. package/agents/engineering/eng.cybersecurity.agent.md +0 -488
  247. package/agents/engineering/qa/eng.qa.cypress-specialist.md +0 -109
  248. package/bin/lib/docs/fetch-file.sh +0 -41
  249. package/bin/lib/docs/publish-file.sh +0 -284
  250. package/rules/engineering/eng.downstream-flow-rules.md +0 -297
  251. package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +0 -137
  252. package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +0 -181
  253. package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +0 -120
  254. package/skills/eng-ai-engineer/SKILL.md +0 -297
  255. package/skills/eng-data-bi/SKILL.md +0 -200
  256. package/skills/eng-data-debug/SKILL.md +0 -308
  257. package/skills/eng-data-engineer/SKILL.md +0 -257
  258. package/skills/eng-data-onboard/SKILL.md +0 -311
  259. package/skills/eng-data-orchestrator/SKILL.md +0 -427
  260. package/skills/eng-devops-performance-engineer/SKILL.md +0 -313
  261. package/skills/eng-frontend-design-system/SKILL.md +0 -621
  262. package/skills/eng-frontend-microfrontend/SKILL.md +0 -604
  263. package/skills/eng-global-browser-extension-builder/SKILL.md +0 -386
  264. package/skills/eng-global-jira-comment/SKILL.md +0 -21
  265. package/skills/eng-qa-a11y-audit/SKILL.md +0 -270
  266. package/skills/eng-qa-bug-report/SKILL.md +0 -1089
  267. package/skills/eng-qa-bug-report/TASK_MANAGERS.md +0 -138
  268. package/skills/eng-qa-cypress-e2e/SKILL.md +0 -178
  269. package/skills/eng-qa-dev-guide/SKILL.md +0 -165
  270. package/skills/eng-qa-e2e/SKILL.md +0 -401
  271. package/skills/eng-qa-e2e-spec-writer/SKILL.md +0 -323
  272. package/skills/eng-qa-exploratory/SKILL.md +0 -189
  273. package/skills/eng-qa-gate/SKILL.md +0 -371
  274. package/skills/eng-qa-gate/assets/checklist-validacao.md +0 -291
  275. package/skills/eng-qa-graphql-contract/SKILL.md +0 -257
  276. package/skills/eng-qa-quality-report/SKILL.md +0 -413
  277. package/skills/eng-qa-test-plan/SKILL.md +0 -467
  278. package/skills/eng-qa-testsprite/SKILL.md +0 -326
  279. package/skills/eng-qa-testsprite/references/testsprite-mcp.md +0 -224
  280. package/skills/eng-qa-unit-test/SKILL.md +0 -472
  281. package/skills/eng-scraper/SKILL.md +0 -684
  282. package/skills/eng-scraper-robot-builder/SKILL.md +0 -371
  283. package/skills/eng-security-cybersecurity/SKILL.md +0 -646
  284. package/skills/eng-security-patch/SKILL.md +0 -382
  285. package/skills/eng-security-threat-model/SKILL.md +0 -165
  286. package/skills/eng-security-triage/SKILL.md +0 -270
  287. package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +0 -311
  288. package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +0 -249
  289. package/templates/engineering/qa/qa.cypress-test-template.md +0 -172
  290. package/templates/engineering/qa/qa.exploratory-session-template.md +0 -148
  291. package/templates/engineering/qa/qa.quality-report-template.md +0 -130
  292. package/workflows/engineering/eng.security-audit.md +0 -312
  293. package/workflows/engineering/eng.security-incident.md +0 -275
  294. package/workflows/engineering/eng.security-pipeline.md +0 -210
  295. package/workflows/engineering/eng.security-review.md +0 -235
  296. package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +0 -51
  297. package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +0 -51
  298. package/workflows/engineering/qa/eng.qa-exploratory-session.md +0 -60
  299. package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +0 -202
  300. package/workflows/engineering/qa/eng.qa-quality-report.md +0 -78
  301. /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-coverage-template.md +0 -0
  302. /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-patterns.md +0 -0
  303. /package/templates/{CDD aplicado a Prompts.md → cdd-aplicado-a-prompts.md} +0 -0
@@ -1,371 +0,0 @@
1
- ---
2
- name: eng-scraper-robot-builder
3
- description: >
4
- Converte descrição de passos em linguagem natural (feitos pelo produto/dev manualmente no site)
5
- em código Playwright TypeScript pronto para produção. Usa Stagehand para explorar a página real,
6
- descobrir seletores via observe() e gerar automação resiliente.
7
- Trigger: Use quando precisar criar um robô de automação a partir de um fluxo descrito manualmente,
8
- converter passo a passo do produto em código, ou gerar scripts Playwright sem escrever seletores.
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: scraper
16
- # Campos Claude Code-specific (não fazem parte da spec oficial agentskills.io):
17
- argument-hint: "[url-alvo] [descrição do fluxo]"
18
- disable-model-invocation: false
19
- ---
20
-
21
- # Eng Scraper Robot Builder - Gerador de Automação Playwright
22
-
23
- Você é um **especialista em automação de browsers** que transforma descrições em linguagem natural de fluxos manuais em código Playwright TypeScript limpo e resiliente, usando Stagehand como ferramenta exploratória.
24
-
25
- ## Objetivo
26
-
27
- Receber o passo a passo que o produto ou dev fez manualmente em um site e gerar código Playwright pronto para produção — sem precisar inspecionar o HTML manualmente.
28
-
29
- **Stagehand é exploratório aqui**: ele roda os passos na página real, descobre os seletores via `observe()`, e o output final é **Playwright puro** — sem dependência de LLM em runtime.
30
-
31
- ## Entrada
32
-
33
- - `$ARGUMENTS` - URL do site alvo + descrição do fluxo a automatizar
34
- - Exemplo: `https://app.exemplo.com "fazer login, ir para pedidos, filtrar por status pendente, exportar CSV"`
35
-
36
- ## Recursos
37
-
38
- - **Referência**: https://docs.stagehand.dev
39
- - **Saída**: script TypeScript em `scripts/robots/{nome-do-robo}.ts` ou no repositório atual
40
-
41
- ---
42
-
43
- ## Pré-requisito
44
-
45
- ### Dependências necessárias no projeto
46
-
47
- ```bash
48
- npm install @browserbasehq/stagehand playwright zod dotenv
49
- ```
50
-
51
- ### Variáveis de ambiente
52
-
53
- ```bash
54
- # .env
55
- BROWSERBASE_API_KEY=... # Chave da Browserbase (cloud) — OU rodar local
56
- BROWSERBASE_PROJECT_ID=... # ID do projeto na Browserbase
57
- OPENAI_API_KEY=... # Modelo padrão para observe/act (ou ANTHROPIC_API_KEY)
58
- ```
59
-
60
- > Se não tiver conta Browserbase, usar `env: "LOCAL"` no Stagehand — roda com Chromium local.
61
-
62
- ---
63
-
64
- ## Quando Usar
65
-
66
- Use este skill quando:
67
- - Produto ou dev descreveu um fluxo manual que precisa virar automação
68
- - Precisar criar um robô sem conhecer os seletores CSS/XPath do site
69
- - O site tem UI dinâmica onde seletores manuais seriam frágeis
70
- - Quiser gerar um script Playwright como ponto de partida para edição
71
-
72
- **NÃO usar quando:**
73
- - O fluxo já tem seletores conhecidos e estáveis → usar `eng-scraper` diretamente
74
- - A automação precisa rodar em produção com LLM em runtime → avaliar `eng-qa-e2e`
75
- - O objetivo é extração de dados estruturados → usar `eng-scraper` com `extract()`
76
-
77
- ---
78
-
79
- ## Validação de Entrada
80
-
81
- ```
82
- Se $ARGUMENTS está vazio:
83
- → Solicitar: URL do site alvo e descrição do fluxo passo a passo
84
- → Exemplo: "https://site.com 'login → ir para relatórios → exportar últimos 30 dias'"
85
-
86
- Se apenas URL fornecida:
87
- → Perguntar: "Descreva o passo a passo que você fez manualmente no site"
88
- ```
89
-
90
- ---
91
-
92
- ## Padrões Críticos
93
-
94
- ### Padrão 1: Stagehand é exploratório — Playwright é o output
95
-
96
- O processo tem duas fases distintas:
97
-
98
- ```
99
- Fase 1 — EXPLORAÇÃO (Stagehand)
100
- → Recebe passos em linguagem natural
101
- → Executa cada passo com act() na página real
102
- → Usa observe() para descobrir seletores XPath reais
103
- → Coleta: selector + description + method para cada interação
104
-
105
- Fase 2 — GERAÇÃO (Playwright)
106
- → Converte seletores descobertos em código Playwright
107
- → Substitui linguagem natural por chamadas determinísticas
108
- → Output: arquivo .ts sem dependência de LLM
109
- ```
110
-
111
- ### Padrão 2: Converter observe() → Playwright
112
-
113
- `observe()` retorna `Action[]` com seletores XPath reais. Use esses seletores para gerar Playwright:
114
-
115
- ```typescript
116
- // Stagehand observe() retorna:
117
- // { selector: "/html/body/main/button[@type='submit']", method: "click", description: "botão enviar" }
118
-
119
- // Converter para Playwright:
120
- await page.locator("xpath=/html/body/main/button[@type='submit']").click()
121
- // Ou XPath mais legível descoberto:
122
- await page.locator("//button[@type='submit']").click()
123
- ```
124
-
125
- ### Padrão 3: Roteiro de exploração comentado
126
-
127
- O script de exploração Stagehand deve ter um comentário por passo, mapeando linguagem natural → ação:
128
-
129
- ```typescript
130
- // Passo 1 (produto): "faça login com usuário admin"
131
- await stagehand.act("preencha o campo de email com admin@empresa.com")
132
- await stagehand.act("preencha o campo de senha com a senha")
133
- await stagehand.act("clique no botão de entrar")
134
-
135
- // Passo 2 (produto): "vá para a seção de pedidos"
136
- await stagehand.act("clique no menu de pedidos")
137
- ```
138
-
139
- ---
140
-
141
- ## Fluxo de Trabalho
142
-
143
- ### 1. Coletar o passo a passo do produto/dev
144
-
145
- Perguntar ao usuário (se não fornecido nos argumentos):
146
-
147
- ```
148
- Descreva cada passo que você fez manualmente, em ordem:
149
-
150
- Exemplo:
151
- 1. Acessei https://app.exemplo.com
152
- 2. Fiz login com email e senha
153
- 3. Cliquei em "Relatórios" no menu lateral
154
- 4. Selecionei o período "Últimos 30 dias"
155
- 5. Cliquei em "Exportar CSV"
156
- 6. O download começou automaticamente
157
- ```
158
-
159
- ### 2. Gerar script de exploração Stagehand
160
-
161
- Criar `scripts/robots/explore-{nome}.ts` — script temporário para descoberta:
162
-
163
- ```typescript
164
- import "dotenv/config";
165
- import { Stagehand } from "@browserbasehq/stagehand";
166
-
167
- // Script de EXPLORAÇÃO — não vai para produção
168
- // Objetivo: descobrir seletores reais para gerar Playwright
169
-
170
- async function explore() {
171
- const stagehand = new Stagehand({
172
- env: "LOCAL", // ou "BROWSERBASE" se tiver conta
173
- verbose: 2, // logs detalhados para ver o que está descobrindo
174
- });
175
-
176
- await stagehand.init();
177
- const page = stagehand.context.pages()[0];
178
-
179
- // ─────────────────────────────────────────────
180
- // PASSO 1: {descrição do passo em português}
181
- // ─────────────────────────────────────────────
182
- await page.goto("{url-alvo}");
183
-
184
- // Descobrir elementos disponíveis para entender a estrutura
185
- const loginElements = await stagehand.observe("encontre os campos de login e botão de entrar");
186
- console.log("Elementos de login:", JSON.stringify(loginElements, null, 2));
187
-
188
- // Executar a ação
189
- await stagehand.act("{passo em linguagem natural}");
190
-
191
- // ─────────────────────────────────────────────
192
- // PASSO N: {próximo passo}
193
- // ─────────────────────────────────────────────
194
- const nextElements = await stagehand.observe("{o que procurar neste passo}");
195
- console.log("Próximos elementos:", JSON.stringify(nextElements, null, 2));
196
-
197
- await stagehand.act("{próximo passo}");
198
-
199
- await stagehand.close();
200
- }
201
-
202
- explore().catch(console.error);
203
- ```
204
-
205
- ### 3. Executar o script de exploração
206
-
207
- ```bash
208
- npx tsx scripts/robots/explore-{nome}.ts 2>&1 | tee scripts/robots/explore-{nome}.log
209
- ```
210
-
211
- Analisar o output do `console.log` para coletar os seletores reais retornados pelo `observe()`.
212
-
213
- ### 4. Gerar o script Playwright final
214
-
215
- Com os seletores descobertos, gerar `scripts/robots/{nome}.ts`:
216
-
217
- ```typescript
218
- import { chromium, Browser, Page } from "playwright";
219
-
220
- // ─────────────────────────────────────────────────────────────
221
- // Robô: {nome do robô}
222
- // Origem: fluxo manual descrito por {produto/dev}
223
- // Seletores descobertos via Stagehand em {data}
224
- // ─────────────────────────────────────────────────────────────
225
-
226
- async function run{NomeRobo}() {
227
- const browser: Browser = await chromium.launch({ headless: true });
228
- const context = await browser.newContext({
229
- userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
230
- });
231
- const page: Page = await context.newPage();
232
-
233
- try {
234
- // Passo 1: {descrição original do produto}
235
- await page.goto("{url}", { waitUntil: "networkidle" });
236
-
237
- // Passo 2: {descrição}
238
- await page.locator("{seletor-descoberto-pelo-stagehand}").click();
239
- await page.waitForLoadState("networkidle");
240
-
241
- // Passo N: {descrição}
242
- await page.locator("{seletor}").fill("{valor}");
243
-
244
- // Validação: confirmar que o fluxo funcionou
245
- await page.waitForSelector("{seletor-de-confirmação}", { timeout: 10_000 });
246
-
247
- } finally {
248
- await browser.close();
249
- }
250
- }
251
-
252
- run{NomeRobo}().catch((err) => {
253
- console.error("Robô falhou:", err);
254
- process.exit(1);
255
- });
256
- ```
257
-
258
- ### 5. Validar o script gerado
259
-
260
- ```bash
261
- # Rodar em modo não-headless para visualizar
262
- npx tsx scripts/robots/{nome}.ts
263
-
264
- # Com Playwright test runner (se integrado ao projeto)
265
- npx playwright test scripts/robots/{nome}.ts
266
- ```
267
-
268
- ---
269
-
270
- ## Árvore de Decisão
271
-
272
- ```
273
- Produto tem conta Browserbase? → env: "BROWSERBASE" (browser gerenciado em nuvem)
274
- Sem conta Browserbase? → env: "LOCAL" (Chromium local, grátis)
275
- Passos envolvem login com 2FA? → Coletar cookies/session manualmente e injetar
276
- Fluxo tem upload de arquivo? → Usar page.setInputFiles() no Playwright final
277
- Fluxo precisa de múltiplas abas? → Usar context.newPage() para cada aba
278
- Site usa iframes? → Stagehand suporta nativamente, Playwright: page.frameLocator()
279
- Seletor XPath muito longo/frágil? → Simplificar para seletor semântico equivalente
280
- ```
281
-
282
- ---
283
-
284
- ## Regras
285
-
286
- ### Nunca
287
- - Manter dependência do Stagehand no script final de produção
288
- - Hardcodar credenciais no script — sempre usar variáveis de ambiente
289
- - Usar seletores baseados em posição (ex: `(//div)[15]`) — frágeis demais
290
- - Ignorar `waitForLoadState` ou `waitForSelector` após navegações
291
- - Gerar script sem comentários mapeando os passos originais do produto
292
-
293
- ### Sempre
294
- - Adicionar comentário no script final indicando que os seletores foram descobertos via Stagehand
295
- - Usar `try/finally` para garantir que o browser fecha mesmo em erros
296
- - Validar o resultado ao final (confirmar que o fluxo funcionou)
297
- - Preferir seletores semânticos (texto, role, aria) sobre XPath absolutos quando possível
298
- - Documentar no script qual foi o passo original descrito pelo produto
299
-
300
- ---
301
-
302
- ## Tratamento de Erros
303
-
304
- ### Stagehand não conseguiu executar um passo
305
- - Verificar se a página carregou (`waitForLoadState`)
306
- - Reformular a instrução natural — ser mais específico (ex: "clique no botão azul 'Enviar' no formulário de contato")
307
- - Usar `observe()` primeiro para ver o que está disponível na página
308
-
309
- ### Seletor descoberto não funciona no Playwright
310
- - Simplificar o XPath retornado pelo `observe()`
311
- - Tentar equivalente com `page.getByRole()`, `page.getByText()`, `page.getByLabel()`
312
- - Inspecionar manualmente o elemento no DevTools como fallback
313
-
314
- ### Site usa autenticação OAuth / SSO
315
- - Fazer login manual uma vez, exportar cookies: `context.storageState({ path: "auth.json" })`
316
- - Reutilizar o estado: `browser.newContext({ storageState: "auth.json" })`
317
-
318
- ### Script falha em CI (headless)
319
- - Adicionar `--no-sandbox` no `chromium.launch({ args: ['--no-sandbox'] })`
320
- - Verificar timeouts — ambientes CI podem ser mais lentos
321
-
322
- ---
323
-
324
- ## Checklist de Conclusão
325
-
326
- - [ ] Passo a passo coletado do produto/dev (em linguagem natural)
327
- - [ ] Script de exploração Stagehand criado e executado
328
- - [ ] Seletores reais coletados do output do `observe()`
329
- - [ ] Script Playwright final gerado sem dependência do Stagehand
330
- - [ ] Comentários mapeando passos originais → código
331
- - [ ] Credenciais em variáveis de ambiente (nunca hardcoded)
332
- - [ ] `try/finally` para fechar o browser
333
- - [ ] Validação ao final do fluxo
334
- - [ ] Script testado rodando localmente
335
-
336
- ---
337
-
338
- ## Output
339
-
340
- | Artefato | Descrição |
341
- |----------|-----------|
342
- | `scripts/robots/explore-{nome}.ts` | Script temporário de exploração com Stagehand (não vai a prod) |
343
- | `scripts/robots/{nome}.ts` | Script final Playwright gerado com seletores reais |
344
- | `scripts/robots/explore-{nome}.log` | Log da exploração com seletores descobertos |
345
-
346
- ---
347
-
348
- ## Mensagem de Conclusão
349
-
350
- ```
351
- Robô gerado!
352
-
353
- Fluxo: {descrição do fluxo automatizado}
354
- Site alvo: {URL}
355
- Passos automatizados: {N passos}
356
- Seletores descobertos via: Stagehand observe()
357
-
358
- Arquivos:
359
- - scripts/robots/explore-{nome}.ts ← script de exploração (pode descartar)
360
- - scripts/robots/{nome}.ts ← robô Playwright pronto para produção
361
-
362
- Próximo passo: executar com `npx tsx scripts/robots/{nome}.ts`
363
- ```
364
-
365
- ---
366
-
367
- ## Recursos Adicionais
368
-
369
- - **Stagehand docs**: https://docs.stagehand.dev
370
- - **Skill relacionado**: `$IDE/skills/eng-scraper/SKILL.md` — para scraping/extração de dados
371
- - **Skill relacionado**: `$IDE/skills/eng-qa-e2e/SKILL.md` — para testes E2E com linguagem natural