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,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.2.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.
@@ -34,7 +34,9 @@ Com board definido, se o key não veio nos argumentos, perguntar o id do card na
34
34
 
35
35
  ## Comentário no card
36
36
 
37
- Só se `TASK_MANAGER` estiver preenchido com um vendor. Freelance → pular.
37
+ Só se `TASK_MANAGER` estiver preenchido com um vendor. Freelance → pular. Falha no comentário não bloqueia o workflow.
38
+
39
+ Comentar **somente** em eventos relevantes: (a) **desvio do plano** (mudança de direção, fase bloqueada), (b) **auditoria do Advisor** (as questões do `architecture.md` com as opções junto da escolha), (c) **bloqueio** com valor de rastreabilidade (ex.: pré-PR reprovado), (d) **link do MR**, uma única vez. **Nunca** comentar início ou fim de etapa ("Iniciando…", "concluído…"): o acompanhamento fica no fluxo e no PR.
38
40
 
39
41
  ```
40
42
  /eng-global-task-comment {TASK_MANAGER_KEY} {mensagem}
@@ -43,7 +45,7 @@ Só se `TASK_MANAGER` estiver preenchido com um vendor. Freelance → pular.
43
45
  ## MR / PR
44
46
 
45
47
  ```
46
- node bin/lib/vcs/create-merge.js --source BRANCH --target BRANCH --title "..." --body-file path
48
+ jarvis vcs create-merge --source BRANCH --target BRANCH --title "..." --body-file path
47
49
  ```
48
50
 
49
51
  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)
@@ -94,6 +94,6 @@ O workflow **deve sempre** terminar com:
94
94
  - 🟡 Yellow: pode abrir PR com ressalvas documentadas
95
95
  - 🔴 Red: bloqueado — listar o que impede o PR
96
96
 
97
- 2. **Comentário no card** com o status final (via `/eng-global-task-comment`) — pular se freelance
97
+ 2. **Comentário no card só se a validação reprovar** (🔴 RED, bloqueio), com o motivo (via `/eng-global-task-comment`) — pular se freelance; GREEN e YELLOW não comentam
98
98
 
99
99
  3. **Aguardar permissão explícita** do usuário para prosseguir para `/eng.pr`
@@ -44,6 +44,8 @@ O workflow **só é considerado completo** após:
44
44
  2. O usuário revisar o documento
45
45
  3. O usuário **aprovar explicitamente** para prosseguir
46
46
 
47
+ **Exceção (Advisor):** se o usuário escolheu usar o Advisor no início do `eng.start`, as questões em aberto são decididas pela sugestão dele e o gate segue a autonomia do `context.md`: com `autonomia: alta` o `start` apresenta o resumo e segue para o `eng.plan` sem aguardar; com `média` ou `baixa`, a aprovação explícita continua obrigatória.
48
+
47
49
  ---
48
50
 
49
51
  ## Comportamento Esperado