jarvis-ai-framework 2.1.1 → 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 (259) hide show
  1. package/AGENTS.md +14 -115
  2. package/agents/AGENTS.md +11 -23
  3. package/agents/README.md +25 -129
  4. package/agents/engineering/data/eng.data-engineer.agent.md +11 -34
  5. package/agents/engineering/eng.agent.md +14 -24
  6. package/agents/engineering/eng.bug-hunter.md +7 -15
  7. package/agents/engineering/eng.dev-code-reviewer.md +1 -1
  8. package/agents/engineering/eng.frontend.agent.md +3 -7
  9. package/agents/engineering/eng.rpa.agent.md +2 -8
  10. package/agents/engineering/qa/eng.qa.quality-strategist.md +6 -11
  11. package/agents/engineering/qa/eng.qa.test-architect.md +8 -18
  12. package/agents/engineering/qa/eng.qa.test-planner.md +10 -14
  13. package/agents/engineering/qa/eng.qa.testing-engineer.md +91 -24
  14. package/agents/product/prod.discovery-interviewer.md +3 -3
  15. package/bin/README.md +142 -0
  16. package/bin/commands/docs-publish.js +105 -141
  17. package/bin/commands/docs-sync.js +66 -104
  18. package/bin/commands/info.js +7 -27
  19. package/bin/commands/init.js +23 -51
  20. package/bin/commands/install-rtk.js +9 -3
  21. package/bin/commands/list.js +5 -18
  22. package/bin/commands/map.js +20 -5
  23. package/bin/commands/qa-signoff.js +58 -55
  24. package/bin/commands/tokens.js +14 -17
  25. package/bin/commands/whoami.js +30 -26
  26. package/bin/jarvis.js +9 -163
  27. package/bin/lib/auth/session.js +20 -20
  28. package/bin/lib/cli/program.js +219 -0
  29. package/bin/lib/cli/shared-options.js +29 -0
  30. package/bin/lib/config/constants.js +59 -2
  31. package/bin/lib/config/ide-config.js +4 -8
  32. package/bin/lib/core/profile-filter.js +4 -1
  33. package/bin/lib/core/scanner.js +3 -29
  34. package/bin/lib/core/sync-engine.js +21 -14
  35. package/bin/lib/core/token-report.js +12 -2
  36. package/bin/lib/docs/fetch-file.js +39 -0
  37. package/bin/lib/docs/publish-file.js +194 -0
  38. package/bin/lib/docs/redis-cache.js +49 -0
  39. package/bin/lib/docs/validate-frontmatter.js +9 -39
  40. package/bin/lib/env-loader.js +11 -34
  41. package/bin/lib/flow-map/parse.js +11 -5
  42. package/bin/lib/flow-map/render.js +5 -2
  43. package/bin/lib/flow-map/tree.js +59 -10
  44. package/bin/lib/tasks/comment.js +40 -35
  45. package/bin/lib/utils/frontmatter.js +57 -0
  46. package/bin/lib/utils/git-parser.js +4 -6
  47. package/bin/lib/utils/npmrc-parser.js +6 -13
  48. package/bin/lib/utils/paths.js +2 -4
  49. package/bin/lib/utils/ui.js +3 -9
  50. package/bin/lib/vcs/api.js +25 -41
  51. package/bin/lib/vcs/create-issue.js +49 -33
  52. package/bin/lib/vcs/create-merge.js +47 -31
  53. package/bin/lib/vcs/fetch-raw.js +35 -23
  54. package/package.json +14 -5
  55. package/rules/engineering/eng-rules.md +1 -1
  56. package/rules/engineering/eng-security-rules.md +18 -16
  57. package/rules/engineering/eng.bump-rules.md +3 -2
  58. package/rules/engineering/eng.docs-scraping-rules.md +4 -4
  59. package/rules/engineering/eng.integrations-rules.md +3 -3
  60. package/rules/engineering/eng.skills-rules.md +1 -1
  61. package/rules/engineering/eng.specializations-rules.md +18 -4
  62. package/rules/engineering/frontend/eng.frontend-rules.md +1 -4
  63. package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +1 -1
  64. package/rules/engineering/rpa/eng.rpa-rules.md +4 -9
  65. package/skills/AGENTS.md +52 -87
  66. package/skills/SKILLS-ROADMAP.md +47 -128
  67. package/skills/eng-ai/SKILL.md +270 -0
  68. package/skills/eng-ai/references/1-fundamentos-ml.md +24 -0
  69. package/skills/eng-ai/references/10-arquitetura-solucoes-ia.md +24 -0
  70. package/skills/eng-ai/references/11-governanca-ia.md +24 -0
  71. package/skills/eng-ai/references/12-seguranca-ia-responsavel.md +25 -0
  72. package/skills/eng-ai/references/2-matematica-estatistica.md +24 -0
  73. package/skills/eng-ai/references/3-dados-para-ia.md +24 -0
  74. package/skills/eng-ai/references/4-deep-learning-fundacionais.md +24 -0
  75. package/skills/eng-ai/references/5-llms-chatbots-agentes-rag.md +25 -0
  76. package/skills/eng-ai/references/6-avaliacao-experimentacao.md +24 -0
  77. package/skills/eng-ai/references/7-engenharia-sistemas-ia.md +24 -0
  78. package/skills/eng-ai/references/8-mlops-plataforma.md +24 -0
  79. package/skills/eng-ai/references/9-produto-ia.md +24 -0
  80. package/skills/eng-ai/references/especializacoes.md +17 -0
  81. package/skills/eng-automation/SKILL.md +290 -0
  82. package/skills/eng-automation/references/1-fundamentos-automacao.md +25 -0
  83. package/skills/eng-automation/references/10-ingestao-dados.md +25 -0
  84. package/skills/eng-automation/references/11-captcha-antibot.md +25 -0
  85. package/skills/eng-automation/references/12-limites-taxa-sessoes.md +25 -0
  86. package/skills/eng-automation/references/13-agendamento-orquestracao.md +24 -0
  87. package/skills/eng-automation/references/14-retentativa-erros.md +25 -0
  88. package/skills/eng-automation/references/15-autenticacao-credenciais.md +24 -0
  89. package/skills/eng-automation/references/16-observabilidade-confiabilidade.md +24 -0
  90. package/skills/eng-automation/references/2-aquisicao-dados.md +25 -0
  91. package/skills/eng-automation/references/3-automacao-navegador.md +24 -0
  92. package/skills/eng-automation/references/4-scraping-crawling.md +25 -0
  93. package/skills/eng-automation/references/5-apis-rest-graphql-soap.md +26 -0
  94. package/skills/eng-automation/references/6-webhooks-integracao.md +25 -0
  95. package/skills/eng-automation/references/7-rpa.md +25 -0
  96. package/skills/eng-automation/references/8-extracao-estruturada.md +25 -0
  97. package/skills/eng-automation/references/9-extracao-documentos.md +25 -0
  98. package/skills/eng-automation/references/especializacoes.md +18 -0
  99. package/skills/eng-backend-nestjs/SKILL.md +1 -1
  100. package/skills/eng-data/SKILL.md +271 -0
  101. package/skills/eng-data/references/1-fundamentos-dados.md +24 -0
  102. package/skills/eng-data/references/10-ciencia-dados.md +24 -0
  103. package/skills/eng-data/references/11-dataops-plataforma.md +24 -0
  104. package/skills/eng-data/references/12-seguranca-privacidade.md +24 -0
  105. package/skills/eng-data/references/2-modelagem-dados.md +24 -0
  106. package/skills/eng-data/references/3-bancos-dados.md +24 -0
  107. package/skills/eng-data/references/4-arquitetura-dados.md +24 -0
  108. package/skills/eng-data/references/5-pipelines-integracao.md +24 -0
  109. package/skills/eng-data/references/6-qualidade-dados.md +24 -0
  110. package/skills/eng-data/references/7-governanca-metadados.md +24 -0
  111. package/skills/eng-data/references/8-estatistica-analise.md +24 -0
  112. package/skills/eng-data/references/9-analytics-bi.md +24 -0
  113. package/skills/eng-data/references/especializacoes.md +20 -0
  114. package/skills/eng-frontend/SKILL.md +12 -5
  115. package/skills/eng-frontend/references/13-design-system.md +48 -0
  116. package/skills/eng-frontend/references/14-microfrontend.md +46 -0
  117. package/skills/eng-global-task-comment/SKILL.md +2 -2
  118. package/skills/eng-platform/SKILL.md +331 -0
  119. package/skills/eng-platform/references/1-fundamentos-sistemas.md +23 -0
  120. package/skills/eng-platform/references/10-resiliencia-arquitetura.md +24 -0
  121. package/skills/eng-platform/references/11-plataforma-devex.md +24 -0
  122. package/skills/eng-platform/references/12-finops-custos.md +24 -0
  123. package/skills/eng-platform/references/13-seguranca-fundamentos.md +26 -0
  124. package/skills/eng-platform/references/14-profiling-performance.md +23 -0
  125. package/skills/eng-platform/references/15-testes-carga-chaos.md +23 -0
  126. package/skills/eng-platform/references/16-cache-multicamada.md +22 -0
  127. package/skills/eng-platform/references/2-redes.md +23 -0
  128. package/skills/eng-platform/references/3-cloud.md +24 -0
  129. package/skills/eng-platform/references/4-iac-automacao.md +24 -0
  130. package/skills/eng-platform/references/5-containers-orquestracao.md +25 -0
  131. package/skills/eng-platform/references/6-cicd-entrega.md +24 -0
  132. package/skills/eng-platform/references/7-observabilidade.md +24 -0
  133. package/skills/eng-platform/references/8-confiabilidade-sre.md +24 -0
  134. package/skills/eng-platform/references/9-seguranca-infra.md +26 -0
  135. package/skills/eng-platform/references/especializacoes.md +34 -0
  136. package/skills/eng-qa/SKILL.md +283 -0
  137. package/skills/eng-qa/references/1-fundamentos-qualidade.md +25 -0
  138. package/skills/eng-qa/references/10-confiabilidade.md +25 -0
  139. package/skills/eng-qa/references/11-seguranca.md +24 -0
  140. package/skills/eng-qa/references/12-acessibilidade.md +24 -0
  141. package/skills/eng-qa/references/13-dados-testes.md +24 -0
  142. package/skills/eng-qa/references/14-gestao-testes-defeitos.md +25 -0
  143. package/skills/eng-qa/references/15-arquitetura-qa.md +25 -0
  144. package/skills/eng-qa/references/2-estrategia-planejamento.md +25 -0
  145. package/skills/eng-qa/references/3-design-testes.md +25 -0
  146. package/skills/eng-qa/references/4-manual-exploratorio.md +24 -0
  147. package/skills/eng-qa/references/5-automacao-testes.md +25 -0
  148. package/skills/eng-qa/references/6-api-integracao.md +25 -0
  149. package/skills/eng-qa/references/7-contrato.md +24 -0
  150. package/skills/eng-qa/references/8-interface-compat-mobile.md +24 -0
  151. package/skills/eng-qa/references/9-performance.md +24 -0
  152. package/skills/eng-qa/references/especializacoes.md +29 -0
  153. package/skills/eng-qa-planner/SKILL.md +264 -0
  154. package/skills/jarvis-context-detect/SKILL.md +1 -1
  155. package/skills/jarvis-context-detect/assets/context-profile-template.md +1 -1
  156. package/skills/jarvis-create-specialization/SKILL.md +8 -0
  157. package/skills/jarvis-docs-central/README.md +31 -28
  158. package/skills/jarvis-docs-central/SKILL.md +5 -5
  159. package/skills/jarvis-init/SKILL.md +8 -8
  160. package/skills/jarvis-init/assets/passo-adicionar-stacks.md +47 -18
  161. package/skills/jarvis-list-specializations/SKILL.md +30 -17
  162. package/skills/jarvis-report-issue/SKILL.md +1 -1
  163. package/taxonomy.md +4 -16
  164. package/templates/ENV-template.md +10 -2
  165. package/templates/engineering/qa/qa.sprint-plan-template.md +1 -1
  166. package/workflows/AGENTS.md +3 -1
  167. package/workflows/README.md +0 -10
  168. package/workflows/engineering/data/data.new-pipeline.md +6 -5
  169. package/workflows/engineering/eng.bug-audit.md +4 -14
  170. package/workflows/engineering/eng.debug.md +4 -20
  171. package/workflows/engineering/eng.pr.md +10 -28
  172. package/workflows/engineering/eng.pre-pr.md +11 -19
  173. package/workflows/engineering/eng.review.md +7 -13
  174. package/workflows/engineering/eng.rpa.robot.md +3 -9
  175. package/workflows/engineering/eng.start.md +16 -11
  176. package/workflows/engineering/eng.work.md +10 -18
  177. package/workflows/engineering/qa/eng.qa-sprint-planning.md +1 -1
  178. package/workflows/product/prod.spec.discovery.md +2 -2
  179. package/workflows/warm-up.md +35 -63
  180. package/agents/engineering/eng.cybersecurity.agent.md +0 -486
  181. package/agents/engineering/qa/eng.qa.cypress-specialist.md +0 -112
  182. package/bin/lib/docs/fetch-file.sh +0 -41
  183. package/bin/lib/docs/publish-file.sh +0 -284
  184. package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +0 -137
  185. package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +0 -181
  186. package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +0 -120
  187. package/skills/eng-ai-engineer/SKILL.md +0 -303
  188. package/skills/eng-data-bi/SKILL.md +0 -206
  189. package/skills/eng-data-debug/SKILL.md +0 -314
  190. package/skills/eng-data-engineer/SKILL.md +0 -266
  191. package/skills/eng-data-onboard/SKILL.md +0 -317
  192. package/skills/eng-data-orchestrator/SKILL.md +0 -433
  193. package/skills/eng-devops-performance-engineer/SKILL.md +0 -319
  194. package/skills/eng-frontend-design-system/SKILL.md +0 -155
  195. package/skills/eng-frontend-design-system/references/1-estrutura-pacote.md +0 -57
  196. package/skills/eng-frontend-design-system/references/2-tokens.md +0 -116
  197. package/skills/eng-frontend-design-system/references/3-componentes.md +0 -165
  198. package/skills/eng-frontend-design-system/references/4-storybook.md +0 -85
  199. package/skills/eng-frontend-design-system/references/5-auditoria-versionamento.md +0 -76
  200. package/skills/eng-frontend-microfrontend/SKILL.md +0 -164
  201. package/skills/eng-frontend-microfrontend/references/1-criando-remote.md +0 -109
  202. package/skills/eng-frontend-microfrontend/references/2-configurando-shell.md +0 -70
  203. package/skills/eng-frontend-microfrontend/references/3-contratos-interface.md +0 -73
  204. package/skills/eng-frontend-microfrontend/references/4-shared-dependencies.md +0 -48
  205. package/skills/eng-frontend-microfrontend/references/5-event-bus.md +0 -59
  206. package/skills/eng-frontend-microfrontend/references/6-monorepo-deploy.md +0 -77
  207. package/skills/eng-frontend-microfrontend/references/7-troubleshooting.md +0 -45
  208. package/skills/eng-global-browser-extension-builder/SKILL.md +0 -392
  209. package/skills/eng-global-jira-comment/SKILL.md +0 -27
  210. package/skills/eng-qa-a11y-audit/SKILL.md +0 -276
  211. package/skills/eng-qa-bug-report/SKILL.md +0 -877
  212. package/skills/eng-qa-bug-report/TASK_MANAGERS.md +0 -138
  213. package/skills/eng-qa-bug-report/references/1-integracao-task-managers.md +0 -148
  214. package/skills/eng-qa-bug-report/references/2-exemplos-de-uso.md +0 -46
  215. package/skills/eng-qa-bug-report/references/3-bug-to-test.md +0 -45
  216. package/skills/eng-qa-cypress-e2e/SKILL.md +0 -184
  217. package/skills/eng-qa-dev-guide/SKILL.md +0 -173
  218. package/skills/eng-qa-e2e/SKILL.md +0 -407
  219. package/skills/eng-qa-e2e-spec-writer/SKILL.md +0 -329
  220. package/skills/eng-qa-exploratory/SKILL.md +0 -196
  221. package/skills/eng-qa-gate/SKILL.md +0 -377
  222. package/skills/eng-qa-gate/assets/checklist-validacao.md +0 -291
  223. package/skills/eng-qa-graphql-contract/SKILL.md +0 -263
  224. package/skills/eng-qa-quality-report/SKILL.md +0 -419
  225. package/skills/eng-qa-test-plan/SKILL.md +0 -473
  226. package/skills/eng-qa-testsprite/SKILL.md +0 -332
  227. package/skills/eng-qa-testsprite/references/testsprite-mcp.md +0 -224
  228. package/skills/eng-qa-unit-test/SKILL.md +0 -478
  229. package/skills/eng-scraper/SKILL.md +0 -260
  230. package/skills/eng-scraper/references/1-puppeteer.md +0 -140
  231. package/skills/eng-scraper/references/2-playwright-cheerio-pdf.md +0 -82
  232. package/skills/eng-scraper/references/3-anti-bot.md +0 -94
  233. package/skills/eng-scraper/references/4-resiliencia-etl-monitoramento.md +0 -137
  234. package/skills/eng-scraper-robot-builder/SKILL.md +0 -377
  235. package/skills/eng-security-cybersecurity/SKILL.md +0 -250
  236. package/skills/eng-security-cybersecurity/references/1-owasp-top-10.md +0 -331
  237. package/skills/eng-security-cybersecurity/references/2-secrets-management.md +0 -31
  238. package/skills/eng-security-cybersecurity/references/3-input-validation.md +0 -43
  239. package/skills/eng-security-cybersecurity/references/4-compliance.md +0 -20
  240. package/skills/eng-security-patch/SKILL.md +0 -388
  241. package/skills/eng-security-threat-model/SKILL.md +0 -171
  242. package/skills/eng-security-triage/SKILL.md +0 -276
  243. package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +0 -311
  244. package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +0 -249
  245. package/templates/engineering/qa/qa.cypress-test-template.md +0 -172
  246. package/templates/engineering/qa/qa.exploratory-session-template.md +0 -148
  247. package/templates/engineering/qa/qa.quality-report-template.md +0 -130
  248. package/workflows/engineering/eng.security-audit.md +0 -319
  249. package/workflows/engineering/eng.security-incident.md +0 -281
  250. package/workflows/engineering/eng.security-pipeline.md +0 -219
  251. package/workflows/engineering/eng.security-review.md +0 -241
  252. package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +0 -57
  253. package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +0 -57
  254. package/workflows/engineering/qa/eng.qa-exploratory-session.md +0 -68
  255. package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +0 -209
  256. package/workflows/engineering/qa/eng.qa-quality-report.md +0 -85
  257. /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-coverage-template.md +0 -0
  258. /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-patterns.md +0 -0
  259. /package/templates/{CDD aplicado a Prompts.md → cdd-aplicado-a-prompts.md} +0 -0
@@ -1,43 +1,59 @@
1
1
  import { readFileSync, existsSync } from "node:fs";
2
+ import { fileURLToPath } from "node:url";
2
3
  import { createIssue, parseRepoUrl } from "./api.js";
3
4
 
4
- function arg(name, fallback = "") {
5
- const idx = process.argv.indexOf(`--${name}`);
6
- if (idx === -1) return fallback;
7
- return process.argv[idx + 1] || fallback;
8
- }
5
+ /**
6
+ * Abre uma issue via adapter (GitLab/GitHub/Bitbucket).
7
+ * Usada por `jarvis vcs create-issue` e pelo skill `jarvis-report-issue`.
8
+ * @param {Object} options
9
+ * @param {string} options.repo - URL ou `org/repo` do repositório
10
+ * @param {string} options.title - Título da issue
11
+ * @param {string} options.bodyFile - Path de um arquivo com o corpo em markdown
12
+ */
13
+ export async function runCreateIssue({ repo, title, bodyFile }) {
14
+ if (!title || !bodyFile || !repo) {
15
+ console.error(
16
+ "Uso: jarvis vcs create-issue --repo <url-ou-path> --title <titulo> --body-file <path>"
17
+ );
18
+ process.exit(1);
19
+ }
9
20
 
10
- const title = arg("title");
11
- const bodyFile = arg("body-file");
12
- const repo = arg("repo");
21
+ let repoUrl = repo.trim();
22
+ if (!/^https?:\/\//.test(repoUrl) && !repoUrl.includes("@")) {
23
+ const hostGuess = (process.env.VERSION_CONTROL || "gitlab").toLowerCase();
24
+ const host =
25
+ hostGuess === "github"
26
+ ? "github.com"
27
+ : hostGuess === "bitbucket"
28
+ ? "bitbucket.org"
29
+ : "gitlab.com";
30
+ repoUrl = `https://${host}/${repoUrl.replace(/^\/+/, "")}`;
31
+ }
13
32
 
14
- if (!title || !bodyFile || !repo) {
15
- console.error(
16
- "Uso: create-issue.js --repo <url-ou-path> --title <titulo> --body-file <path>",
17
- );
18
- process.exit(1);
19
- }
33
+ const body = existsSync(bodyFile) ? readFileSync(bodyFile, "utf-8") : "";
20
34
 
21
- let repoUrl = repo.trim();
22
- if (!/^https?:\/\//.test(repoUrl) && !repoUrl.includes("@")) {
23
- const hostGuess = (process.env.VERSION_CONTROL || "gitlab").toLowerCase();
24
- const host =
25
- hostGuess === "github"
26
- ? "github.com"
27
- : hostGuess === "bitbucket"
28
- ? "bitbucket.org"
29
- : "gitlab.com";
30
- repoUrl = `https://${host}/${repoUrl.replace(/^\/+/, "")}`;
35
+ try {
36
+ const result = await createIssue(repoUrl, { title, body });
37
+ parseRepoUrl(repoUrl);
38
+ console.log(`✅ Issue aberto: ${result.url}`);
39
+ console.log(JSON.stringify(result));
40
+ } catch (err) {
41
+ console.error(err.message);
42
+ process.exit(1);
43
+ }
31
44
  }
32
45
 
33
- const body = existsSync(bodyFile) ? readFileSync(bodyFile, "utf-8") : "";
46
+ function arg(name, fallback = "") {
47
+ const idx = process.argv.indexOf(`--${name}`);
48
+ if (idx === -1) return fallback;
49
+ return process.argv[idx + 1] || fallback;
50
+ }
34
51
 
35
- try {
36
- const result = await createIssue(repoUrl, { title, body });
37
- parseRepoUrl(repoUrl);
38
- console.log(`✅ Issue aberto: ${result.url}`);
39
- console.log(JSON.stringify(result));
40
- } catch (err) {
41
- console.error(err.message);
42
- process.exit(1);
52
+ // Compatibilidade: continua funcionando como `node bin/lib/vcs/create-issue.js --repo ...`
53
+ if (fileURLToPath(import.meta.url) === process.argv[1]) {
54
+ await runCreateIssue({
55
+ title: arg("title"),
56
+ bodyFile: arg("body-file"),
57
+ repo: arg("repo"),
58
+ });
43
59
  }
@@ -1,43 +1,59 @@
1
1
  import { execSync } from "node:child_process";
2
2
  import { readFileSync } from "node:fs";
3
+ import { fileURLToPath } from "node:url";
3
4
  import { createMergeRequest, parseRepoUrl } from "./api.js";
4
5
 
6
+ /**
7
+ * Abre um MR/PR via adapter (GitLab/GitHub/Bitbucket, pelo hostname do remote).
8
+ * Usada por `jarvis vcs create-merge` e, diretamente, por `eng.pr`.
9
+ * @param {Object} options
10
+ * @param {string} options.source - Branch de origem
11
+ * @param {string} options.target - Branch de destino
12
+ * @param {string} options.title - Título do MR/PR
13
+ * @param {string} [options.bodyFile] - Path de um arquivo com a descrição
14
+ * @param {string} [options.repo] - URL do repo (padrão: `git remote get-url origin`)
15
+ */
16
+ export async function runCreateMerge({ source, target, title, bodyFile, repo }) {
17
+ if (!source || !target || !title) {
18
+ console.error(
19
+ "Uso: jarvis vcs create-merge --source <branch> --target <branch> --title <titulo> [--body-file path] [--repo url]"
20
+ );
21
+ process.exit(1);
22
+ }
23
+
24
+ const repoUrl = repo || execSync("git remote get-url origin", { encoding: "utf-8" }).trim();
25
+ const description = bodyFile ? readFileSync(bodyFile, "utf-8") : "";
26
+
27
+ try {
28
+ const result = await createMergeRequest(repoUrl, {
29
+ source,
30
+ target,
31
+ title,
32
+ description,
33
+ });
34
+ const parsed = parseRepoUrl(repoUrl);
35
+ const noun = parsed.vendor === "gitlab" ? "MR" : "PR";
36
+ console.log(`✅ ${noun} criado: ${result.url}`);
37
+ console.log(JSON.stringify(result));
38
+ } catch (err) {
39
+ console.error(err.message);
40
+ process.exit(1);
41
+ }
42
+ }
43
+
5
44
  function arg(name, fallback = "") {
6
45
  const idx = process.argv.indexOf(`--${name}`);
7
46
  if (idx === -1) return fallback;
8
47
  return process.argv[idx + 1] || fallback;
9
48
  }
10
49
 
11
- const source = arg("source");
12
- const target = arg("target");
13
- const title = arg("title");
14
- const bodyFile = arg("body-file");
15
- const repoArg = arg("repo");
16
-
17
- if (!source || !target || !title) {
18
- console.error(
19
- "Uso: create-merge.js --source <branch> --target <branch> --title <titulo> [--body-file path] [--repo url]",
20
- );
21
- process.exit(1);
22
- }
23
-
24
- const repoUrl =
25
- repoArg ||
26
- execSync("git remote get-url origin", { encoding: "utf-8" }).trim();
27
- const description = bodyFile ? readFileSync(bodyFile, "utf-8") : "";
28
-
29
- try {
30
- const result = await createMergeRequest(repoUrl, {
31
- source,
32
- target,
33
- title,
34
- description,
50
+ // Compatibilidade: continua funcionando como `node bin/lib/vcs/create-merge.js --source ...`
51
+ if (fileURLToPath(import.meta.url) === process.argv[1]) {
52
+ await runCreateMerge({
53
+ source: arg("source"),
54
+ target: arg("target"),
55
+ title: arg("title"),
56
+ bodyFile: arg("body-file"),
57
+ repo: arg("repo"),
35
58
  });
36
- const parsed = parseRepoUrl(repoUrl);
37
- const noun = parsed.vendor === "gitlab" ? "MR" : "PR";
38
- console.log(`✅ ${noun} criado: ${result.url}`);
39
- console.log(JSON.stringify(result));
40
- } catch (err) {
41
- console.error(err.message);
42
- process.exit(1);
43
59
  }
@@ -1,30 +1,42 @@
1
+ import { fileURLToPath } from "node:url";
1
2
  import { fetchRawFile } from "./api.js";
2
3
 
3
- const filePath = process.argv[2];
4
- const ref = process.argv[3] || "main";
5
- const repo = process.env.CENTRAL_DOCS_REPO;
4
+ /**
5
+ * Busca o conteúdo bruto de um arquivo no central-docs via adapter.
6
+ * Usada por `jarvis vcs fetch-raw`.
7
+ * @param {string} filePath - Path do arquivo dentro do repo central-docs
8
+ * @param {string} [ref] - Branch/ref (padrão: "main")
9
+ */
10
+ export async function runFetchRaw(filePath, ref = "main") {
11
+ const repo = process.env.CENTRAL_DOCS_REPO;
6
12
 
7
- if (!filePath) {
8
- console.error("Uso: fetch-raw.js <file-path> [ref]");
9
- process.exit(1);
10
- }
11
- if (!repo) {
12
- console.error("CENTRAL_DOCS_REPO não definido");
13
- process.exit(1);
14
- }
15
-
16
- try {
17
- const content = await fetchRawFile(repo, filePath, ref);
18
- process.stdout.write(content);
19
- } catch (err) {
20
- if (err.code === 404) {
21
- console.error(`⚠️ Arquivo não encontrado no central-docs: ${filePath}`);
22
- process.exit(2);
13
+ if (!filePath) {
14
+ console.error("Uso: jarvis vcs fetch-raw <file-path> [ref]");
15
+ process.exit(1);
23
16
  }
24
- if (err.code === 401 || err.code === 403) {
25
- console.error("❌ Token sem permissão para acessar o repositório");
17
+ if (!repo) {
18
+ console.error("CENTRAL_DOCS_REPO não definido");
26
19
  process.exit(1);
27
20
  }
28
- console.error(err.message);
29
- process.exit(1);
21
+
22
+ try {
23
+ const content = await fetchRawFile(repo, filePath, ref);
24
+ process.stdout.write(content);
25
+ } catch (err) {
26
+ if (err.code === 404) {
27
+ console.error(`⚠️ Arquivo não encontrado no central-docs: ${filePath}`);
28
+ process.exit(2);
29
+ }
30
+ if (err.code === 401 || err.code === 403) {
31
+ console.error("❌ Token sem permissão para acessar o repositório");
32
+ process.exit(1);
33
+ }
34
+ console.error(err.message);
35
+ process.exit(1);
36
+ }
37
+ }
38
+
39
+ // Compatibilidade: continua funcionando como `node bin/lib/vcs/fetch-raw.js <file-path> [ref]`
40
+ if (fileURLToPath(import.meta.url) === process.argv[1]) {
41
+ await runFetchRaw(process.argv[2], process.argv[3] || "main");
30
42
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jarvis-ai-framework",
3
- "version": "2.1.1",
3
+ "version": "3.0.0",
4
4
  "description": "Jarvis framework",
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,8 +10,12 @@
10
10
  "postinstall": "node bin/postinstall.js",
11
11
  "prepublishOnly": "echo 'Publishing jarvis-framework...'",
12
12
  "publish:gitlab": "npm publish",
13
- "test:comandos": "node test/test-comandos-docs.js",
14
- "test:filtro": "node --test test/profile-filter.test.js test/token-report.test.js test/flow-map.test.js"
13
+ "test:comandos": "node test/comandos-docs.test.js",
14
+ "test:filtro": "node --test test/profile-filter.test.js test/token-report.test.js test/flow-map.test.js test/env-loader.test.js test/sync-engine.test.js test/vcs-api.test.js test/fetch-file.test.js test/publish-file.test.js",
15
+ "lint": "eslint bin/ test/",
16
+ "lint:fix": "eslint bin/ test/ --fix",
17
+ "format": "prettier --write bin/ test/",
18
+ "format:check": "prettier --check bin/ test/"
15
19
  },
16
20
  "files": [
17
21
  "bin/",
@@ -45,11 +49,16 @@
45
49
  "bugs": {
46
50
  "url": "https://github.com/phelipperibeiro/jarvis-framework/issues"
47
51
  },
48
- "dependencies": {},
49
52
  "engines": {
50
53
  "node": ">=18.0.0"
51
54
  },
52
55
  "devDependencies": {
53
- "sharp": "^0.34.5"
56
+ "@eslint/js": "^9.39.5",
57
+ "eslint": "^9.39.5",
58
+ "eslint-config-prettier": "^10.1.8",
59
+ "prettier": "^3.9.9"
60
+ },
61
+ "dependencies": {
62
+ "commander": "^13.1.0"
54
63
  }
55
64
  }
@@ -26,7 +26,7 @@ env_file: "@/ENV.md"
26
26
  O arquivo ENV.md não existe ou está incompleto.
27
27
  Por favor, execute `/jarvis-init` para configurar o ambiente antes de continuar.
28
28
  ```
29
- - **Listas de especializações (presentes, podem estar vazias)**: `BACKEND_SPECIALIZATIONS` e `FRONTEND_SPECIALIZATIONS` devem **existir** no `ENV.md`. Lista **vazia** é válida (só o skill base). Variável **ausente** interrompe o comando de backend ou de frontend e orienta o Upgrade do `/jarvis-init`. Detalhes e mensagens em `eng.specializations-rules.md`.
29
+ - **Listas de especializações (presentes, podem estar vazias)**: `BACKEND_SPECIALIZATIONS`, `FRONTEND_SPECIALIZATIONS`, `QA_SPECIALIZATIONS`, `DATA_SPECIALIZATIONS`, `AUTOMATION_SPECIALIZATIONS` e `PLATFORM_SPECIALIZATIONS` devem **existir** no `ENV.md`. Lista **vazia** é válida (só o skill base). Variável **ausente** interrompe o comando daquela área e orienta o Upgrade do `/jarvis-init` — mas só quando um comando daquela área específica é executado (igual já valia pra backend/frontend; não bloqueia comando de uma área não tocada). Detalhes e mensagens em `eng.specializations-rules.md`.
30
30
  - **Skills sem área**: skill instalado sem `metadata.area` reconhecida bloqueia o comando, e skill pedido que não existe gera aviso. Detalhes e mensagens em `eng.skills-rules.md`.
31
31
 
32
32
  - **🔧 VARIÁVEL `$IDE` - DETECÇÃO AUTOMÁTICA DA PASTA DA IDE**
@@ -7,7 +7,10 @@ env_file: "@/ENV.md"
7
7
  # Regras de Seguranca para Engenharia
8
8
 
9
9
  Regras de seguranca aplicaveis a todo o fluxo de engenharia — do planejamento ao merge.
10
- Toda implementacao deve seguir estas regras por padrao, sem necessidade de invocar o skill `eng-security-cybersecurity` explicitamente.
10
+ Toda implementacao deve seguir estas regras por padrao. Seguranca de codigo de aplicacao ja e
11
+ padrao embutido nas bases `eng-backend`/`eng-frontend`; seguranca de infraestrutura e fundamentos
12
+ de seguranca da informacao (risco, ameacas, identidade, resposta a incidente, GRC, privacidade)
13
+ ficam no `eng-platform` (temas 9 e 13).
11
14
 
12
15
  ---
13
16
 
@@ -103,21 +106,22 @@ O agente DEVE incluir no checklist de pre-PR as seguintes verificacoes de segura
103
106
 
104
107
  Se o PR toca em areas sensiveis (auth, sessions, RBAC, CORS, CSP, permissoes), o agente DEVE:
105
108
  1. Adicionar label `security` ao PR
106
- 2. Recomendar ao usuario executar `/eng.security-review` antes do merge
109
+ 2. Seguir o gate de seguranca inline do `eng.pre-pr` (sanitizacao, auth guards, headers, secrets scan, `npm audit`) antes do merge
107
110
 
108
111
  ---
109
112
 
110
113
  ## Fase: eng.pr (Merge)
111
114
 
112
- - PRs com label `security` devem ter review de seguranca aprovado (manual ou via `/eng.security-review`)
115
+ - PRs com label `security` devem ter review de seguranca aprovado manualmente antes do merge
113
116
  - Nunca aprovar PR com secret detectado no diff — sem excecoes
114
117
  - Se o PR adiciona endpoint publico, documentar justificativa no description do PR
115
118
 
116
119
  ---
117
120
 
118
- ## Fronteira Read-Only (Analise de Seguranca)
121
+ ## Analise Read-Only de Seguranca
119
122
 
120
- Os skills de seguranca (`eng-security-threat-model`, `eng.security-audit`, `eng-security-triage`) operam em **modo estatico apenas**:
123
+ Qualquer analise de ameacas, auditoria ou investigacao de seguranca feita pelo agente opera em
124
+ **modo estatico apenas**:
121
125
 
122
126
  - Leem codigo-fonte, historico git e relatorios fornecidos pelo usuario
123
127
  - **Nunca** executam, buildam, fuzzam ou modificam o codigo-alvo
@@ -130,11 +134,11 @@ Os skills de seguranca (`eng-security-threat-model`, `eng.security-audit`, `eng-
130
134
 
131
135
  Usar `jarvis-context-detect` para calibrar a profundidade da analise de seguranca:
132
136
 
133
- | Nivel de risco | Criterio | Estrategia | Tokens (estimado) |
134
- |---|---|---|---|
135
- | **Baixo** — PR comum | Logica de negocio sem superficie sensivel | Single-pass, sem fan-out | ~15k (main thread) |
136
- | **Medio** — PR sensivel | Toca auth, sessions, RBAC, CORS, CSP, PII, fluxo financeiro, criptografia | Fan-out por area + single-vote | ~80k (subagentes isolados) |
137
- | **Alto** — Audit completo | Usuario invoca `/eng.security-audit` explicitamente | Fan-out + multi-voto (3 votos por achado) | ~200k-1M (subagentes isolados) |
137
+ | Nivel de risco | Criterio | Estrategia |
138
+ |---|---|---|
139
+ | **Baixo** — PR comum | Logica de negocio sem superficie sensivel | Single-pass, sem fan-out |
140
+ | **Medio** — PR sensivel | Toca auth, sessions, RBAC, CORS, CSP, PII, fluxo financeiro, criptografia | Fan-out por area + single-vote |
141
+ | **Alto** — Auditoria completa | Usuario pede uma auditoria dedicada do projeto | Fan-out + multi-voto (3 votos por achado) |
138
142
 
139
143
  O peso do token fica em subagentes isolados — janela da sessao principal nao lota.
140
144
  PR comum sem risco identificado = zero token extra (so as rules, que ja ficam carregadas).
@@ -149,23 +153,21 @@ As regras acima se aplicam a TODOS os engenheiros. A responsabilidade escala com
149
153
  |----------|---------------------------|
150
154
  | JUNIOR, PLENO | Seguir as regras. Em duvida de seguranca, consultar senior/TL — nao bloqueia a entrega se o risco for registrado |
151
155
  | SENIOR, SPECIALIST | Seguir + revisar seguranca de PRs do squad quando solicitado |
152
- | TECH LEAD, HEAD | Seguir + garantir que `/eng.security-review` foi executado em PRs com label `security`. Decidir se escala incidente |
156
+ | TECH LEAD, HEAD | Seguir + garantir que o gate de seguranca do `eng.pre-pr` foi seguido em PRs com label `security`. Decidir se escala incidente |
153
157
  | CTO | Seguir + visao de compliance (LGPD/GDPR) e risco organizacional. Aprovar excecoes de seguranca |
154
158
 
155
159
  ---
156
160
 
157
- ## Quando escalar para o agente SENTINEL
161
+ ## Quando o risco excede estas regras
158
162
 
159
- O agente de engenharia (ATHENA) deve recomendar o uso do agente SENTINEL (`eng.cybersecurity.agent.md`) quando:
163
+ O agente de engenharia (ATHENA) deve sinalizar explicitamente ao usuario e pedir revisao humana quando:
160
164
 
161
165
  - Vulnerabilidade conhecida (CVE) afeta uma dependencia do projeto
162
- - Auditoria de seguranca completa e solicitada
166
+ - Auditoria de seguranca completa e solicitada (sem skill dedicado hoje — se for recorrente, considere criar uma especializacao em `PLATFORM_SPECIALIZATIONS`)
163
167
  - Incidente de seguranca em producao
164
168
  - Feature envolve fluxo financeiro, PII ou auth complexa (OAuth, MFA)
165
169
  - Duvida sobre impacto de seguranca que excede o escopo das regras acima
166
170
 
167
- > O skill `/eng-security-cybersecurity` pode ser invocado diretamente para consulta rapida sem ativar o agente completo.
168
-
169
171
  ---
170
172
 
171
173
  ## Nunca
@@ -23,5 +23,6 @@ Corrigir bugs sem alterar feature pretendida.
23
23
  Pequenas melhorias de performance.
24
24
  Atualizações de documentação ou mudanças de metadata.
25
25
 
26
- Altere a versão no pyproject.toml.
27
- Então, execute `uv sync --all-extras` para regenerar o lock file.
26
+ Altere a versão em `package.json`.
27
+ Então, execute `npm install` para regenerar o `package-lock.json`.
28
+ Adicione uma entrada em `CHANGELOG.md` para a nova versão, seguindo o formato [Keep a Changelog](https://keepachangelog.com/).
@@ -19,7 +19,7 @@ Aplicável sempre que um robô novo for implementado, um bug estrutural for reso
19
19
  #### Localização
20
20
 
21
21
  - Sempre criar em `docs/engineering/robots/{robot-tag}-robot.md`
22
- - Exemplos: `docs/engineering/robots/ba-robot.md`, `docs/engineering/robots/sp-robot.md`
22
+ - Exemplos: `docs/engineering/robots/consulta-orgao-robot.md`, `docs/engineering/robots/extrator-dados-robot.md`
23
23
 
24
24
  #### Conteúdo obrigatório
25
25
 
@@ -30,8 +30,8 @@ Todo arquivo `{robot-tag}-robot.md` deve conter:
30
30
  | **Visão Geral** | O que o robô coleta e o que **não** coleta (limitações por design) |
31
31
  | **Fluxo de Execução** | Sequência de chamadas HTTP com URLs completas de cada etapa |
32
32
  | **Fontes de Dados** | Cada fonte (PDF, HTML, API) com mapeamento de campos/colunas |
33
- | **Campos Extraídos** | Tabela por `situation` (ex: IMPOSTA vs AGUARDANDO IMPOSICAO) — quais campos existem em cada uma e a fonte |
34
- | **Limitações Conhecidas** | Campos indisponíveis na fonte do DETRAN/órgão — documentar por que não é possível extrair |
33
+ | **Campos Extraídos** | Tabela por `situation` (ex: CONCLUIDO vs PENDENTE) — quais campos existem em cada uma e a fonte |
34
+ | **Limitações Conhecidas** | Campos indisponíveis na fonte do sistema/órgão externo — documentar por que não é possível extrair |
35
35
  | **Histórico de Bugs** | Bugs resolvidos com referência ao Jira key, sintoma, causa e fix aplicado |
36
36
  | **Checklist de Troubleshooting** | Tabela: sintoma → causa provável → ação |
37
37
 
@@ -39,7 +39,7 @@ Todo arquivo `{robot-tag}-robot.md` deve conter:
39
39
 
40
40
  - Ao implementar um robô novo
41
41
  - Ao resolver qualquer bug estrutural (ex: campo retornando vazio, matching falho)
42
- - Ao fazer descobertas relevantes sobre o comportamento do site-alvo (ex: estrutura de colunas HTML, campos disponíveis por situação de multa)
42
+ - Ao fazer descobertas relevantes sobre o comportamento do site-alvo (ex: estrutura de colunas HTML, campos disponíveis por situação do registro)
43
43
  - Sempre referenciar o Jira key no histórico de bugs
44
44
 
45
45
  ### Proibido
@@ -8,8 +8,8 @@ O Jarvis não assume Jira, GitLab ou Slack. Leia `$IDE/ENV.md` e despache pelo a
8
8
 
9
9
  | Variável | Vendors | Adapter |
10
10
  |----------|---------|---------|
11
- | `TASK_MANAGER` | jira, linear, github, asana | `bin/lib/tasks/comment.js` |
12
- | `VERSION_CONTROL` | gitlab, github, bitbucket | `bin/lib/vcs/` |
11
+ | `TASK_MANAGER` | jira, linear, github, asana | `jarvis tasks comment` |
12
+ | `VERSION_CONTROL` | gitlab, github, bitbucket | `jarvis vcs create-merge` / `create-issue` / `fetch-raw` |
13
13
  | `MESSAGE_COMUNICATOR` | slack, discord, teams | runtime `communicator/` |
14
14
 
15
15
  `{TASK_MANAGER_KEY}` = id da tarefa. Com board, é o id do card. Sem board, é o número de controle do usuário.
@@ -43,7 +43,7 @@ Só se `TASK_MANAGER` estiver preenchido com um vendor. Freelance → pular.
43
43
  ## MR / PR
44
44
 
45
45
  ```
46
- node bin/lib/vcs/create-merge.js --source BRANCH --target BRANCH --title "..." --body-file path
46
+ jarvis vcs create-merge --source BRANCH --target BRANCH --title "..." --body-file path
47
47
  ```
48
48
 
49
49
  Vendor pelo hostname de `git remote get-url origin` (ou `VERSION_CONTROL`).
@@ -10,7 +10,7 @@ Garantir que todo skill instalado tenha uma área reconhecida e avisar a pessoa,
10
10
 
11
11
  Vale para todo comando `eng.*` e seus agentes, **ao iniciar**. A pasta de skills considerada é `$IDE/skills/`.
12
12
 
13
- **Áreas reconhecidas:** `qa`, `data`, `ai`, `frontend`, `backend`, `security`, `scraper`, `devops`, `global`, `product`.
13
+ **Áreas reconhecidas:** `qa`, `data`, `ai`, `frontend`, `backend`, `automation`, `devops`, `platform`, `global`, `product`.
14
14
 
15
15
  ## Regras
16
16
 
@@ -1,6 +1,6 @@
1
1
  > **Applies to:** HUB: all | POSITION: all | AREA: ENGINEERING | SQUAD: all
2
2
 
3
- # Regras de Especializações por Stack
3
+ # Regras de Especializações por Área
4
4
 
5
5
  ## Objetivo
6
6
 
@@ -8,12 +8,25 @@ Fazer todo comando `eng.*` carregar o **skill base** da área mais as **especial
8
8
 
9
9
  ## Escopo
10
10
 
11
- Vale para qualquer comando `eng.*` e seus agentes, **ao iniciar um trabalho de backend** (APIs, autenticação, workers, banco de dados, servidor) **ou de frontend** (componentes, interface, estilos, estado). Se o trabalho envolve as duas áreas, aplique a regra a cada uma. Se não é de nenhuma das duas, não carregue nada.
11
+ Vale para qualquer comando `eng.*` e seus agentes, ao iniciar um trabalho que seja claramente de uma destas áreas. Se o trabalho envolve mais de uma, aplique a regra a cada uma. Se não é de nenhuma, não carregue nada.
12
+
13
+ | Área | Indicadores de quando se aplica |
14
+ |------|----------------------------------|
15
+ | backend | APIs, autenticação, workers, banco de dados, servidor |
16
+ | frontend | Componentes, interface, estilos, estado |
17
+ | qa | Testes, cobertura, quality gates, planejamento de testes |
18
+ | data | Pipelines, ETL/ELT, modelagem, contratos de dados, qualidade de dados |
19
+ | automation | RPA (robôs, automação de browser/fluxos de trabalho), web scraping, crawling, parsing |
20
+ | platform | Infraestrutura, cloud, IaC, contêineres, CI/CD, observabilidade, SRE, segurança de infra, FinOps |
12
21
 
13
22
  | Área | Variável no `ENV.md` | Skill base |
14
23
  |------|----------------------|------------|
15
24
  | backend | `BACKEND_SPECIALIZATIONS` | `eng-backend` |
16
25
  | frontend | `FRONTEND_SPECIALIZATIONS` | `eng-frontend` |
26
+ | qa | `QA_SPECIALIZATIONS` | `eng-qa` |
27
+ | data | `DATA_SPECIALIZATIONS` | `eng-data` |
28
+ | automation | `AUTOMATION_SPECIALIZATIONS` | `eng-automation` |
29
+ | platform | `PLATFORM_SPECIALIZATIONS` | `eng-platform` |
17
30
 
18
31
  ## Regras
19
32
 
@@ -53,8 +66,9 @@ Vale para qualquer comando `eng.*` e seus agentes, **ao iniciar um trabalho de b
53
66
 
54
67
  ## Exceções
55
68
 
56
- - Áreas além de backend e frontend não têm lista (evolução futura).
57
- - Skills de outras áreas não passam por esta regra.
69
+ - `ai`, `devops`, `global` e `product` ainda não têm lista — fora do escopo desta regra até que apareça necessidade real (evolução futura).
70
+ - Skills dessas áreas não passam por esta regra.
71
+ - A área `security` foi descontinuada (2026-10-05): não existe mais skill própria nem lista. Segurança de infraestrutura e fundamentos de segurança da informação entram em `PLATFORM_SPECIALIZATIONS`; segurança de código de aplicação já é padrão embutido em `eng-backend`/`eng-frontend`. Ver `skills/security-skills-deleted.md`.
58
72
 
59
73
  ## Referências
60
74
 
@@ -88,10 +88,7 @@ Aplica-se quando a linguagem do projeto tem tipagem estática ou contratos expl
88
88
 
89
89
  ### Ferramentas disponíveis no framework
90
90
 
91
- - **TestSprite** (`/eng-qa-testsprite`): se estiver instalado no projeto, usá-lo para gerar e executar testes de componente e de ponta a ponta — ele gera planos de teste e código automaticamente.
92
- Verificar: `ls node_modules/@testsprite 2>/dev/null || cat package.json | grep testsprite`
93
- - **Stagehand** (`/eng-scraper-robot-builder`, `/eng-qa-e2e`): para testes de ponta a ponta em linguagem natural ou automação de fluxos complexos, descrevendo o fluxo em português.
94
- Verificar: `cat package.json | grep stagehand`
91
+ - **Especialização de testes automatizados registrada em `QA_SPECIALIZATIONS`** (via a base `/eng-qa`): se o projeto tiver uma, usá-la para gerar e executar testes de componente e de ponta a ponta.
95
92
 
96
93
  > Quando qualquer dessas ferramentas estiver disponível no projeto, **preferir sobre a implementação manual** — reduz o custo de manutenção e aumenta a cobertura mais rápido.
97
94
 
@@ -6,7 +6,7 @@ Convenções obrigatórias para a escrita e manutenção da suíte de testes E2E
6
6
  Estas regras são carregadas automaticamente pelo `warm-up` quando `HUB=QA`.
7
7
 
8
8
  > **Fonte de verdade**: este arquivo define o padrão para toda a sessão.
9
- > A skill `eng-qa-cypress-e2e` assume que estas regras foram carregadas — não as redescobre.
9
+ > A especialização de Cypress registrada em `QA_SPECIALIZATIONS` assume que estas regras foram carregadas — não as redescobre.
10
10
 
11
11
  ---
12
12
 
@@ -174,17 +174,13 @@ Documentar o resultado no `{robot-tag}-robot.md` na seção de Visão Geral.
174
174
  - Executar manualmente antes do PR em ambiente com acesso ao sistema-alvo
175
175
  - Não incluir no pipeline de CI sem ambiente controlado
176
176
 
177
- ### TestSprite (recomendado para fluxos de UI)
177
+ ### Validação E2E (recomendada para fluxos de UI)
178
178
 
179
- Quando o robô interage com interface visual (browser headless), usar o skill `eng-qa-testsprite` para gerar e executar testes do fluxo de automação:
180
-
181
- ```
182
- /eng-qa-testsprite
183
- ```
179
+ Quando o robô interage com interface visual (browser headless), usar a especialização de testes automatizados registrada em `QA_SPECIALIZATIONS` (via a base `eng-qa`) para gerar e executar testes do fluxo de automação:
184
180
 
185
181
  - Útil para validar que o fluxo completo (login → navegação → extração) continua funcionando após mudanças
186
182
  - Complementa os testes unitários com validação end-to-end contra o sistema-alvo em ambiente controlado
187
- - Referência: `$IDE/skills/eng-qa-testsprite/SKILL.md`
183
+ - Referência: `$IDE/skills/eng-qa/SKILL.md`
188
184
 
189
185
  ---
190
186
 
@@ -225,6 +221,5 @@ com justificativa explícita. Exceções recorrentes devem ser propostas como at
225
221
  ## Referências
226
222
 
227
223
  - `$IDE/rules/engineering/eng.docs-scraping-rules.md` — padrão de documentação de robôs
228
- - `$IDE/skills/eng-scraper/SKILL.md` — skill de scraping (Puppeteer, Playwright, ETL)
229
- - `$IDE/skills/eng-scraper-robot-builder/SKILL.md` — skill de automação via Stagehand
224
+ - `$IDE/skills/eng-automation/SKILL.md` — skill base de automação (+ especializações em `AUTOMATION_SPECIALIZATIONS`)
230
225
  - `$IDE/agents/engineering/eng.rpa.agent.md` — agente especializado RPA (ARACHNE)