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
@@ -175,17 +175,13 @@ Para detecção automática de contexto de tarefas:
175
175
  - Uso: `/jarvis-context-detect [jira-key]` ou `/jarvis-context-detect --override tipo=hotfix`
176
176
  - Chamado automaticamente pelo workflow `eng.start`
177
177
 
178
- ### eng-devops-performance-engineer
179
- Quando a tarefa envolver análise ou otimização de performance, observabilidade, gargalos, latência, load testing ou escalabilidade:
180
- - Arquivo: `$IDE/skills/eng-devops-performance-engineer/SKILL.md`
178
+ ### eng-platform (performance)
179
+ Quando a tarefa envolver análise ou otimização de performance, observabilidade, gargalos, latência, load testing, chaos engineering ou cache multi-camada — temas 7, 14, 15 e 16 da base de platform:
180
+ - Arquivo: `$IDE/skills/eng-platform/SKILL.md`
181
181
 
182
- ### eng-ai-engineer
182
+ ### eng-ai
183
183
  Quando a tarefa envolver features com LLM, sistemas RAG, agentes de IA, chatbots, embeddings, busca vetorial ou integrações com modelos de IA:
184
- - Arquivo: `$IDE/skills/eng-ai-engineer/SKILL.md`
185
-
186
- ### eng-global-browser-extension-builder
187
- Quando a tarefa envolver criação ou manutenção de extensões de navegador (Chrome, Firefox, Manifest V3, content scripts, popup UI):
188
- - Arquivo: `$IDE/skills/eng-global-browser-extension-builder/SKILL.md`
184
+ - Arquivo: `$IDE/skills/eng-ai/SKILL.md`
189
185
 
190
186
  ### Backend e frontend (skill base + especializações)
191
187
  Quando a tarefa envolver **backend** (APIs, autenticação, workers e jobs assíncronos, filas e mensageria, integrações externas, cache, banco de dados) ou **frontend** (componentes, estado, estilos, performance de UI, acessibilidade, testes de interface), não escolha o skill por nome: aplique a regra `$IDE/rules/engineering/eng.specializations-rules.md` para a área envolvida. Ela carrega o skill base e as especializações que o projeto registrou no `ENV.md`:
@@ -194,26 +190,20 @@ Quando a tarefa envolver **backend** (APIs, autenticação, workers e jobs assí
194
190
  - Workflows relacionados: `eng.start` (arquitetura), `eng.work` (implementação), `eng.debug` (troubleshooting)
195
191
  - Para ver o que está instalado e registrado: `/jarvis-list-specializations`
196
192
 
197
- ### eng-scraper
193
+ ### eng-automation
198
194
  Quando a tarefa envolver web scraping, extração de dados de páginas web, automação de browser com Puppeteer, parsing de HTML/XML/PDF, pipelines ETL leves ou monitoramento de mudanças em sites:
199
- - Arquivo: `$IDE/skills/eng-scraper/SKILL.md`
195
+ - Arquivo: `$IDE/skills/eng-automation/SKILL.md`
200
196
  - Workflows relacionados: `eng.work` (implementação de scrapers)
201
197
 
202
- ### eng-scraper-robot-builder
203
- Quando o produto ou dev descrever um fluxo manual em linguagem natural que precisa virar automação (robô), ou quando for necessário criar um script Playwright sem conhecer seletores do site. Usa Stagehand para exploração e `observe()` para descoberta de seletores — o output final é Playwright TypeScript puro, sem dependência de LLM em runtime:
204
- - Arquivo: `$IDE/skills/eng-scraper-robot-builder/SKILL.md`
205
- - Workflows relacionados: `eng.work` (criação de scripts de automação)
206
-
207
- ### eng-qa-e2e
208
- Quando o QA precisar criar testes E2E de sistema em linguagem natural, validar fluxos completos de usuário ou gerar testes resilientes a mudanças de UI. Usa Stagehand — testes permanecem em linguagem natural (sem seletores hardcoded). Suporta exportação para Cypress quando necessário para CI/CD:
209
- - Arquivo: `$IDE/skills/eng-qa-e2e/SKILL.md`
198
+ ### eng-qa
199
+ Quando precisar planejar estratégia de testes, validar fluxos completos de usuário ou cobrir testes E2E — base de QA, complementada pela especialização registrada em `QA_SPECIALIZATIONS`:
200
+ - Arquivo: `$IDE/skills/eng-qa/SKILL.md`
210
201
  - Workflows relacionados: `eng.pr` (validação pré-PR), `eng.pre-pr` (cobertura de testes E2E)
211
202
 
212
- ### eng-security-cybersecurity
213
- Quando a tarefa envolver segurança de aplicação, auditoria OWASP, secrets management, sanitização de inputs, headers de segurança (CSP, HSTS, CORS), supply chain (npm audit, lockfile), compliance (LGPD/GDPR) ou resposta a CVEs/incidentes de segurança:
214
- - Arquivo: `$IDE/skills/eng-security-cybersecurity/SKILL.md`
215
- - Agente dedicado: `$IDE/agents/engineering/eng.cybersecurity.agent.md` (SENTINEL) — para auditorias completas e incident response
216
- - Workflows relacionados: `eng.security-audit` (auditoria proativa), `eng.security-incident` (resposta a CVEs), `eng.security-review` (gate pré-merge)
203
+ ### eng-platform
204
+ Quando a tarefa envolver segurança de infraestrutura, fundamentos de segurança da informação (risco, ameaças, identidade, resposta a incidente, GRC, privacidade) ou auditoria de dependências/supply chain — base de platform, complementada pela especialização registrada em `PLATFORM_SPECIALIZATIONS`:
205
+ - Arquivo: `$IDE/skills/eng-platform/SKILL.md` (temas 9 e 13)
206
+ - Segurança de código de aplicação (OWASP, inputs, auth) já é padrão embutido em `eng-backend`/`eng-frontend`
217
207
 
218
208
  ---
219
209
 
@@ -191,18 +191,16 @@ CONTEXT_PROFILE:
191
191
  - Priorize:
192
192
  - `$IDE/workflows/engineering/eng.debug.md` (Resolution Mode)
193
193
  - `$IDE/workflows/engineering/eng.bug-audit.md` (Audit Mode)
194
- - `$IDE/skills/eng-qa-bug-report/SKILL.md` (geração de relatórios)
194
+ - `$IDE/skills/eng-qa/SKILL.md` (estruturação de achados, tema 14 — Gestão de Testes e de Defeitos)
195
195
  - Não acione workflows de outros domínios sem autorização explícita do usuário
196
196
 
197
197
  ---
198
198
 
199
199
  ## Skills Disponíveis
200
200
 
201
- ### eng-qa-bug-report
202
- Para geração de relatórios estruturados de bugs encontrados:
203
- - Arquivo: `$IDE/skills/eng-qa-bug-report/SKILL.md`
204
- - Uso: `/eng-qa-bug-report [modo] [argumentos]`
205
- - Integração com Jira para criação automática de cards
201
+ ### eng-qa
202
+ Para estruturar os bugs encontrados (tema 14 — Gestão de Testes e de Defeitos) antes de abrir o card no `$TASK_MANAGER` do projeto — base de QA, complementada pela especialização registrada em `QA_SPECIALIZATIONS`:
203
+ - Arquivo: `$IDE/skills/eng-qa/SKILL.md`
206
204
 
207
205
  ### jarvis-context-detect (CDD)
208
206
  Para detecção automática de contexto:
@@ -218,10 +216,9 @@ Para rastreamento automático de bugs em arquitetura de microsserviços, use a e
218
216
  - Mapeia cadeia de chamadas HTTP + AMQP, analisa contratos em cada boundary e rankeia hipóteses por risco
219
217
  - Sem a especialização registrada, siga a investigação cross-service manualmente
220
218
 
221
- ### eng-security-cybersecurity
222
- Quando o bug tiver impacto de segurança (injection, auth bypass, data exposure), como referência na escalação ao SENTINEL:
223
- - Arquivo: `$IDE/skills/eng-security-cybersecurity/SKILL.md`
224
- - Agente dedicado: `$IDE/agents/engineering/eng.cybersecurity.agent.md` (SENTINEL)
219
+ ### eng-platform
220
+ Quando o bug tiver impacto de segurança de infraestrutura (injection, auth bypass, data exposure), como referência — segurança de código de aplicação já é padrão embutido em `eng-backend`/`eng-frontend`:
221
+ - Arquivo: `$IDE/skills/eng-platform/SKILL.md` (temas 9 e 13)
225
222
 
226
223
  ---
227
224
 
@@ -322,11 +319,6 @@ Quando o bug tiver impacto de segurança (injection, auth bypass, data exposure)
322
319
  - Valida qualidade da correção proposta
323
320
  - Garante aderência a padrões do projeto
324
321
 
325
- - **Com SENTINEL (eng.cybersecurity.agent)**
326
- - Bugs com impacto de segurança (injection, auth bypass, data exposure) são escalados para SENTINEL
327
- - SENTINEL classifica por severidade CVSS e coordena a resposta
328
- - Skill de referência: `$IDE/skills/eng-security-cybersecurity/SKILL.md`
329
-
330
322
  ---
331
323
 
332
324
  ## Checklist de Qualidade
@@ -49,7 +49,7 @@ Para cada arquivo alterado, avalie:
49
49
  - Exposição de dados sensíveis (PII em logs, stack traces em produção)
50
50
  - Vulnerabilidades em dependências (npm audit)
51
51
  - Secrets hardcoded no código (tokens, senhas, API keys)
52
- - Se achados de segurança HIGH/CRITICAL: escalar para SENTINEL (`$IDE/agents/engineering/eng.cybersecurity.agent.md`) ou recomendar `/eng.security-review`
52
+ - Se achados de segurança HIGH/CRITICAL: bloquear o PR e pedir revisão humana de um tech lead antes do merge
53
53
 
54
54
  3. Revisão de Documentação
55
55
  Verifique se a documentação reflete as mudanças realizadas:
@@ -57,13 +57,9 @@ Para criar ou refatorar componente, estado ou estilos, aplique a regra `eng.spec
57
57
  - Skill base: `$IDE/skills/eng-frontend/SKILL.md` + itens de `FRONTEND_SPECIALIZATIONS`
58
58
  - Auditoria de performance: seção Performance do `eng-frontend`
59
59
 
60
- ### eng-qa-e2e
61
- Para testes E2E de fluxo de usuário:
62
- - Arquivo: `$IDE/skills/eng-qa-e2e/SKILL.md`
63
-
64
- ### eng-qa-cypress-e2e
65
- Para testes Cypress (Page Objects, intercept):
66
- - Arquivo: `$IDE/skills/eng-qa-cypress-e2e/SKILL.md`
60
+ ### eng-qa
61
+ Para testes E2E de fluxo de usuário — base de QA, complementada pela especialização registrada em `QA_SPECIALIZATIONS`:
62
+ - Arquivo: `$IDE/skills/eng-qa/SKILL.md`
67
63
 
68
64
  ## Workflows e Agentes Relacionados
69
65
 
@@ -98,16 +98,11 @@ CONTEXT_PROFILE:
98
98
 
99
99
  ## Skills Disponíveis
100
100
 
101
- ### eng-scraper
101
+ ### eng-automation
102
102
  Para scraping, parsing HTML/XML/PDF, ETL leve, monitoramento de mudanças:
103
- - Arquivo: `$IDE/skills/eng-scraper/SKILL.md`
103
+ - Arquivo: `$IDE/skills/eng-automation/SKILL.md`
104
104
  - Trigger: extração de dados de fontes web, headless browser, pipelines ETL
105
105
 
106
- ### eng-scraper-robot-builder
107
- Para converter fluxo manual em robô Playwright via Stagehand:
108
- - Arquivo: `$IDE/skills/eng-scraper-robot-builder/SKILL.md`
109
- - Trigger: produto/dev descreveu passos manuais e quer automação, sem conhecer seletores
110
-
111
106
  ### Backend (skill base + especializações)
112
107
  Para filas, retry DLX, publicação e consumo de mensagens, workers, cron jobs e integrações externas com retry/circuit breaker, aplique a regra `$IDE/rules/engineering/eng.specializations-rules.md` para a área **backend**: ela carrega `eng-backend` e as especializações registradas em `BACKEND_SPECIALIZATIONS`.
113
108
  - Trigger: robô precisa publicar resultados em fila, consumir tarefas, implementar retry, ter um worker persistente, scheduler ou API de consumo dos dados extraídos
@@ -147,7 +142,6 @@ Para criar um robô novo ou manter um existente:
147
142
  |----------|-----------|
148
143
  | MCP Playwright disponível na sessão | **Playwright MCP** — navega e inspeciona direto da IDE |
149
144
  | Dev quer demonstrar o fluxo | **Playwright CLI** (`npx playwright codegen {url}`) |
150
- | Fluxo descrito em linguagem natural | **Stagehand** (`observe()`) via `/eng-scraper-robot-builder` |
151
145
 
152
146
  > Perguntar ao dev qual prefere. Só decidir automaticamente se `MAX_AI_EXECUTION_PERCENTAGE=100`.
153
147
 
@@ -21,22 +21,17 @@ Você responde perguntas como:
21
21
 
22
22
  ## Skills Disponíveis
23
23
 
24
- ### eng-qa-test-plan
24
+ ### eng-qa-planner
25
25
  Para planejar os testes de uma feature específica:
26
- - Arquivo: `$IDE/skills/eng-qa-test-plan/SKILL.md`
26
+ - Arquivo: `$IDE/skills/eng-qa-planner/SKILL.md`
27
27
 
28
- ### eng-qa-gate
29
- Para a análise de risco pré-release:
30
- - Arquivo: `$IDE/skills/eng-qa-gate/SKILL.md`
31
-
32
- ### eng-qa-dev-guide
33
- Para features de médio risco: o QA orienta e o dev implementa os testes:
34
- - Arquivo: `$IDE/skills/eng-qa-dev-guide/SKILL.md`
28
+ ### eng-qa
29
+ Para a análise de risco pré-release e para orientar o dev em features de médio risco — base de QA, complementada pela especialização registrada em `QA_SPECIALIZATIONS`:
30
+ - Arquivo: `$IDE/skills/eng-qa/SKILL.md`
35
31
 
36
32
  ## Workflows e Agentes Relacionados
37
33
 
38
34
  - `eng.qa-refinement-entry` (workflow): entrada no refinamento de uma feature
39
- - `eng.qa-quality-report` (workflow): gerar o relatório de qualidade do período
40
35
 
41
36
  ---
42
37
 
@@ -72,7 +67,7 @@ Para times com alta proporção de devs por QA:
72
67
  | Fator | Estratégia |
73
68
  |-------|-----------|
74
69
  | Features de alto risco | QA conduz — prioridade máxima |
75
- | Features de médio risco | QA orienta via `eng-qa-dev-guide`, dev implementa testes |
70
+ | Features de médio risco | QA orienta via a base `eng-qa` + `QA_SPECIALIZATIONS`, dev implementa testes |
76
71
  | Features de baixo risco | Dev responsável pela cobertura, QA revisa |
77
72
  | Bugs críticos | QA cobre com sessão exploratória após fix |
78
73
 
@@ -81,23 +81,19 @@ Este agente foca em:
81
81
  **Para outros tipos de teste, use:**
82
82
  - `eng.qa.test-planner` → Análise de cobertura e identificação de gaps
83
83
  - `eng.qa.testing-engineer` → Escrita de testes unitários
84
- - `eng-qa-testsprite` → Execução automatizada E2E/API
84
+ - `eng-qa` → Base de QA, incluindo E2E e automação (via especialização registrada em `QA_SPECIALIZATIONS`)
85
85
 
86
86
  ---
87
87
 
88
88
  ## Skills Disponíveis
89
89
 
90
- ### eng-qa-testsprite
91
- Para execução automatizada E2E/API:
92
- - Arquivo: `$IDE/skills/eng-qa-testsprite/SKILL.md`
90
+ ### eng-qa
91
+ Para execução automatizada E2E/API e padrões de testes unitários — base de QA, complementada pela especialização registrada em `QA_SPECIALIZATIONS`:
92
+ - Arquivo: `$IDE/skills/eng-qa/SKILL.md`
93
93
 
94
- ### eng-qa-test-plan
94
+ ### eng-qa-planner
95
95
  Para análise de cobertura:
96
- - Arquivo: `$IDE/skills/eng-qa-test-plan/SKILL.md`
97
-
98
- ### eng-qa-unit-test
99
- Para padrões de testes unitários:
100
- - Arquivo: `$IDE/skills/eng-qa-unit-test/SKILL.md`
96
+ - Arquivo: `$IDE/skills/eng-qa-planner/SKILL.md`
101
97
 
102
98
  ### jarvis-context-detect (CDD)
103
99
  Para detecção automatizada do contexto (calibração contextual do agente):
@@ -400,12 +396,6 @@ Dependendo da solicitação, gere:
400
396
 
401
397
  ---
402
398
 
403
- ## Integração com TestSprite
404
-
405
- Para complementar com testes E2E automatizados:
406
-
407
- ```bash
408
- /eng-qa-testsprite codebase
409
- ```
399
+ ## Testes E2E automatizados
410
400
 
411
- O TestSprite gera scripts de teste automatizados e relatórios em `testsprite_tests/` que complementam a estratégia definida por este agente.
401
+ Para complementar com testes E2E automatizados, use a especialização registrada em `QA_SPECIALIZATIONS` (via a base `eng-qa`) para o codebase, complementando a estratégia definida por este agente.
@@ -20,7 +20,7 @@ Aplicar quando invocado via `eng.qa-refinement-entry` ou quando o argumento rece
20
20
  - Saída: `$DOCS_FOLDER/engineering/qa/strategies/{task-id}-test-strategy.md`
21
21
 
22
22
  **Modo B — Análise de Cobertura (pós-código)**
23
- Aplicar quando invocado via `eng-qa-unit-test`, `eng-qa-test-plan` ou quando houver código implementado na branch (git diff retorna resultados).
23
+ Aplicar quando invocado via `eng-qa`, `eng-qa-planner` ou quando houver código implementado na branch (git diff retorna resultados).
24
24
  - Fonte de dados: `git diff origin/main...HEAD`
25
25
  - Saída: `$DOCS_FOLDER/engineering/qa/{task-id}-test_coverage_branch_report.md`
26
26
 
@@ -30,13 +30,13 @@ Regra de decisão: se `git diff origin/main...HEAD` retornar vazio, operar em Mo
30
30
 
31
31
  Use os recursos abaixo como fonte de verdade do processo:
32
32
 
33
- ### eng-qa-test-plan
33
+ ### eng-qa-planner
34
34
  Para análise de cobertura e planejamento de testes:
35
- - Arquivo: `$IDE/skills/eng-qa-test-plan/SKILL.md`
35
+ - Arquivo: `$IDE/skills/eng-qa-planner/SKILL.md`
36
36
 
37
- ### eng-qa-testsprite
38
- Para execução automatizada de testes com TestSprite MCP:
39
- - Arquivo: `$IDE/skills/eng-qa-testsprite/SKILL.md`
37
+ ### eng-qa
38
+ Para execução automatizada de testes — base de QA, complementada pela especialização registrada em `QA_SPECIALIZATIONS`:
39
+ - Arquivo: `$IDE/skills/eng-qa/SKILL.md`
40
40
 
41
41
  ### jarvis-context-detect (CDD)
42
42
  Para detecção automatizada do contexto (calibração contextual do agente):
@@ -284,7 +284,7 @@ Regras de formato:
284
284
 
285
285
  ## Fluxo de Trabalho — Modo B (Análise de Cobertura pós-código)
286
286
 
287
- Usar quando: invocado via `eng-qa-unit-test` ou `eng-qa-test-plan`, ou quando git diff retornar resultados.
287
+ Usar quando: invocado via `eng-qa` ou `eng-qa-planner`, ou quando git diff retornar resultados.
288
288
 
289
289
  ### B.1. Analisar Mudanças da Branch
290
290
 
@@ -342,13 +342,9 @@ Determine quais testes estão faltando:
342
342
 
343
343
  ---
344
344
 
345
- ### B.5. Validar com TestSprite (Opcional)
345
+ ### B.5. Validar com Especialização Registrada (Opcional)
346
346
 
347
- Se o projeto estiver rodando localmente, sugira executar o skill **eng-qa-testsprite** para validação automatizada:
348
-
349
- ```
350
- /eng-qa-testsprite diff
351
- ```
347
+ Se houver uma especialização de execução/geração automatizada registrada em `QA_SPECIALIZATIONS`, sugira usá-la (via a base `eng-qa`) para validação automatizada do diff.
352
348
 
353
349
  Isso permite:
354
350
  - Gerar testes automatizados para as mudanças
@@ -482,5 +478,5 @@ Fluxo completo recomendado:
482
478
  eng.qa.test-planner (análise)
483
479
  → eng.qa.testing-engineer (escrita)
484
480
  → eng.qa.test-architect (performance/security)
485
- → eng-qa-testsprite (validação E2E)
481
+ → eng-qa (validação E2E, via especialização de QA_SPECIALIZATIONS)
486
482
  ```
@@ -12,25 +12,13 @@ realmente funciona como pretendido — tanto testes unitários quanto E2E Cypres
12
12
 
13
13
  ## Skills Disponíveis
14
14
 
15
- ### eng-qa-cypress-e2e
16
- Para gerar specs Cypress + TypeScript para fluxos de usuário:
17
- - Arquivo: `$IDE/skills/eng-qa-cypress-e2e/SKILL.md`
15
+ ### eng-qa
16
+ Para gerar specs E2E, escrever testes unitários e orientar devs sobre cobertura — base de QA, complementada pela especialização registrada em `QA_SPECIALIZATIONS`:
17
+ - Arquivo: `$IDE/skills/eng-qa/SKILL.md`
18
18
 
19
- ### eng-qa-unit-test
20
- Para templates e padrões ao **escrever** testes unitários:
21
- - Arquivo: `$IDE/skills/eng-qa-unit-test/SKILL.md`
22
-
23
- ### eng-qa-test-plan
19
+ ### eng-qa-planner
24
20
  Para **analisar** cobertura antes de escrever:
25
- - Arquivo: `$IDE/skills/eng-qa-test-plan/SKILL.md`
26
-
27
- ### eng-qa-testsprite
28
- Para testes E2E/API em linguagem natural via Stagehand:
29
- - Arquivo: `$IDE/skills/eng-qa-testsprite/SKILL.md`
30
-
31
- ### eng-qa-dev-guide
32
- Para orientar devs sobre cobertura sem escrever o teste:
33
- - Arquivo: `$IDE/skills/eng-qa-dev-guide/SKILL.md`
21
+ - Arquivo: `$IDE/skills/eng-qa-planner/SKILL.md`
34
22
 
35
23
  ### jarvis-context-detect (CDD)
36
24
  Para detecção automatizada do contexto (calibração contextual do agente):
@@ -41,7 +29,90 @@ Para detecção automatizada do contexto (calibração contextual do agente):
41
29
  > Consultar `$RULES_FOLDER/engineering/qa/eng.qa.cypress-standards-rules.md` para convenções do projeto.
42
30
  >
43
31
  > **Testes unitários**: linguagem/framework nativo do projeto (TypeScript/Jest, Python/pytest, etc.)
44
- > O `eng-qa-testsprite` cobre E2E via Stagehand (linguagem natural) — complementa, não substitui Cypress.
32
+ > A especialização de E2E registrada em `QA_SPECIALIZATIONS` (via a base `eng-qa`) complementa, não substitui Cypress.
33
+
34
+ ---
35
+
36
+ ## Cypress E2E — Domínio e Debugging
37
+
38
+ > 🔒 **Fonte de verdade de convenções**: `$RULES_FOLDER/engineering/qa/eng.qa.cypress-standards-rules.md`
39
+ > Sempre ler antes de sugerir padrões ou gerar código. Para **gerar** uma spec nova, use a especialização de Cypress registrada em `QA_SPECIALIZATIONS` (via a base `eng-qa`); esta seção cobre o julgamento por trás de revisar, debugar e manter specs existentes.
40
+
41
+ ### Domínios de Expertise
42
+
43
+ #### Page Objects
44
+ - Estrutura fluent (retorno `this`)
45
+ - Organização por domínio vs. por página
46
+ - Herança e composição entre Page Objects
47
+ - Quando criar vs. quando estender um existente
48
+
49
+ #### Custom Commands
50
+ - Tipagem com TypeScript (`Cypress.Commands.add`)
51
+ - Declaração em `support/index.d.ts`
52
+ - Commands de autenticação via `cy.request` (não via UI)
53
+ - Commands de setup de estado (seed de dados, limpeza)
54
+
55
+ #### Fixtures e Intercepts
56
+ - Estrutura de pastas de fixtures por domínio
57
+ - Tipagem de fixtures com tipos do projeto (`cy.fixture<T>`)
58
+ - Padrões de `cy.intercept` para REST e GraphQL
59
+ - Gestão de aliases e `cy.wait`
60
+ - Estratégia de intercept para diferentes cenários (sucesso, erro, timeout)
61
+
62
+ #### Viewport e Responsividade
63
+ - `cy.viewport()` para testes multi-device
64
+ - Breakpoints a cobrir conforme o projeto
65
+ - Configuração em `cypress.config.ts`
66
+
67
+ #### Configuração e CI
68
+ - `cypress.config.ts` — baseUrl, env, retries, video
69
+ - Estratégia de retries para flakiness (retry ≠ resolver o problema)
70
+ - Paralelização com Cypress Cloud ou via CI nativo
71
+ - Variáveis de ambiente seguras (`Cypress.env()` vs. hardcode)
72
+ - Artefatos de CI: screenshots, vídeos, relatórios
73
+
74
+ ### Debugging de Testes Flaky
75
+
76
+ Causas comuns e soluções:
77
+
78
+ | Causa | Sintoma | Solução |
79
+ |-------|---------|---------|
80
+ | Race condition | Teste falha 1 em 5 vezes | Usar `cy.wait('@alias')` em vez de `cy.wait(ms)` |
81
+ | Estado compartilhado | Teste passa isolado, falha em suite | `beforeEach` garante estado limpo |
82
+ | Animação/transição | Clique em elemento não dispara | `.should('be.visible')` antes de `.click()` |
83
+ | Dados dinâmicos | Assertion em texto que muda | Usar `contain` em vez de `eq`, ou mockar dado |
84
+ | API real | Falha intermitente por timeout | Interceptar sempre — nunca depender de API real |
85
+ | Seletor frágil | Falha após deploy de UI | Migrar para `data-testid` |
86
+
87
+ ### Para Debugging de Spec Cypress
88
+
89
+ 1. Perguntar: o teste falha sempre ou às vezes? (determina se é flaky ou quebrado)
90
+ 2. Pedir o erro e o trecho de código relevante
91
+ 3. Identificar a causa raiz antes de sugerir solução
92
+ 4. Nunca recomendar aumentar retry como solução definitiva
93
+
94
+ ### Para Revisão de Spec Cypress
95
+
96
+ Ler a spec fornecida e verificar:
97
+ - Seletores: algum usando classe/id? → migrar para `data-testid`
98
+ - Intercepts: alguma API não interceptada? → adicionar
99
+ - Dependência entre testes: algum `it` depende de outro? → corrigir
100
+ - `cy.wait(ms)` hardcoded? → substituir por alias
101
+ - Page Object ausente? → criar ou indicar onde adicionar
102
+
103
+ ### Regras Específicas de Cypress
104
+
105
+ **Nunca**
106
+ - Sugerir `cy.wait({número})` como solução — identificar a causa real da espera
107
+ - Aceitar seletores por classe CSS em specs novas
108
+ - Recomendar retry como fix de flakiness — é um paliativo, não solução
109
+ - Ignorar tipagem TypeScript — fixtures, commands e Page Objects devem ser tipados
110
+
111
+ **Sempre**
112
+ - Ler `eng.qa.cypress-standards-rules.md` antes de qualquer sugestão de padrão
113
+ - Justificar por que uma prática é ruim antes de sugerir a alternativa
114
+ - Verificar se já existe Page Object/command para o domínio antes de criar novo
115
+ - Considerar manutenibilidade: um teste bom é um teste que não falha sem razão
45
116
 
46
117
  ---
47
118
 
@@ -302,13 +373,9 @@ pytest test_filename.py -v
302
373
 
303
374
  ---
304
375
 
305
- ## Validação com TestSprite (Opcional)
306
-
307
- Após escrever os testes, sugira executar o skill **eng-qa-testsprite** para validação automatizada E2E:
376
+ ## Validação Automatizada E2E (Opcional)
308
377
 
309
- ```bash
310
- /eng-qa-testsprite diff
311
- ```
378
+ Após escrever os testes, se houver uma especialização de execução automatizada registrada em `QA_SPECIALIZATIONS`, sugira usá-la (via a base `eng-qa`) para validação E2E do diff.
312
379
 
313
380
  Isso complementa os testes unitários com:
314
381
  - Testes E2E (frontend) ou API (backend)
@@ -89,9 +89,9 @@ Para consultar a arquitetura atual:
89
89
  - Arquivo: `$IDE/skills/eng-backend-arch-c4/SKILL.md`
90
90
  - Confiança: só com a confirmação do usuário (skill de engenharia: pergunte antes de consultá-la; o que ela retornar entra no discovery como **suposição a validar**, não como fato)
91
91
 
92
- ### eng-security-cybersecurity
93
- Para quando a ideia envolve autenticação, dados pessoais ou fluxo financeiro:
94
- - Arquivo: `$IDE/skills/eng-security-cybersecurity/SKILL.md`
92
+ ### eng-platform
93
+ Para quando a ideia envolve infraestrutura, dados pessoais ou fluxo financeiro com risco de segurança/privacidade:
94
+ - Arquivo: `$IDE/skills/eng-platform/SKILL.md` (temas 9 e 13)
95
95
  - Confiança: só com a confirmação do usuário (skill de engenharia: pergunte antes de consultá-la; o que ela retornar entra no discovery como **suposição a validar**, não como fato)
96
96
 
97
97
  ## Restrições
package/bin/README.md ADDED
@@ -0,0 +1,142 @@
1
+ # bin/ — CLI `jarvis`
2
+
3
+ Fonte do binário `jarvis` (instalado via `npm install -g jarvis-ai-framework`, entrypoint declarado em `package.json#bin`). Este README documenta a arquitetura para quem for adicionar, remover ou alterar um comando.
4
+
5
+ ## Estrutura
6
+
7
+ ```
8
+ bin/
9
+ ├── jarvis.js # Entrypoint (shebang). ~10 linhas, não cresce.
10
+ ├── postinstall.js # Roda no `npm install` (sincroniza assets se já havia .{ide}/ no cwd)
11
+ ├── commands/ # Um arquivo por comando. Lógica pura, zero commander.
12
+ │ ├── init.js, list.js, info.js, whoami.js, ...
13
+ │ ├── docs-sync.js, docs-publish.js
14
+ │ └── qa-signoff.js, install-rtk.js, tokens.js, map.js
15
+ └── lib/
16
+ ├── cli/
17
+ │ ├── program.js # Único lugar que monta o commander — ver "Arquitetura"
18
+ │ └── shared-options.js # .option() repetidos entre comandos (--ide, --quiet, etc.)
19
+ ├── vcs/ # Adapters de Git host (GitLab/GitHub/Bitbucket)
20
+ │ ├── api.js # Lógica HTTP real (createIssue, createMergeRequest, fetchRawFile)
21
+ │ ├── create-merge.js, create-issue.js, fetch-raw.js # função exportada + CLI direto (ver abaixo)
22
+ ├── tasks/
23
+ │ └── comment.js # Adapter de task manager (jira/linear/github/asana) — mesmo padrão
24
+ ├── config/ # ide-config.js (fonte de verdade de IDEs), constants.js
25
+ ├── core/ # scanner.js, sync-engine.js, profile-filter.js, token-report.js
26
+ ├── docs/ # central-docs: fetch/publish + validação de frontmatter
27
+ │ ├── validate-frontmatter.js # Valida/extrai frontmatter de PRD/FRD/ARD/RFC
28
+ │ ├── redis-cache.js # Cache best-effort via `redis-cli` (get/setex/del)
29
+ │ ├── fetch-file.js # fetchFile() — usado por `docs sync`/`docs fetch` e por publish-file.js
30
+ │ └── publish-file.js # publishFile() — usado por `docs publish`
31
+ ├── utils/ # logger.js, ui.js, paths.js, frontmatter.js, git-parser.js, npmrc-parser.js
32
+ ├── flow-map/ # `jarvis map` — grafo de chamadas entre workflows/skills/agents
33
+ ├── auth/ # session.js (auth.json legado, hoje só `jarvis logout` o lê)
34
+ └── env-loader.js # Resolve e lê o ENV.md ($IDE/ENV.md)
35
+ ```
36
+
37
+ ## Arquitetura: 3 camadas, cada uma com uma responsabilidade
38
+
39
+ ```
40
+ bin/jarvis.js → entrypoint: cria o program e faz parseAsync(argv)
41
+ ↓
42
+ bin/lib/cli/program.js → ÚNICO lugar que sabe que existe commander
43
+ ↓ (chama, já com o `flags` remontado)
44
+ bin/commands/*.js → lógica de negócio pura: async (flags) => {...}
45
+ ```
46
+
47
+ **Por que separar assim?** `bin/commands/*.js` nunca importa `commander` nem sabe o que é um `Command`. Cada arquivo só recebe um objeto `flags` e faz o que precisa. Isso significa:
48
+ - Testar a lógica de um comando não exige simular argv/commander — chama a função direto com um objeto.
49
+ - Trocar de biblioteca de CLI um dia (se um dia fizer sentido) significa reescrever só `program.js`, não os 10 arquivos de comando.
50
+ - `program.js` é o **mapa completo** do CLI: para saber todo comando que existe, todas as flags que cada um aceita, é o único arquivo que precisa abrir.
51
+
52
+ ## O adapter: commander → formato antigo de `flags`
53
+
54
+ O commander entrega ao `.action()` as opções em **camelCase** (`--env-file` → `options.envFile`, `--max-age` → `options.maxAge`) e cada positional como seu próprio parâmetro. As funções em `bin/commands/*.js` foram escritas para um objeto `flags` no formato que o parser manual antigo produzia: chaves com hífen literal (`flags["env-file"]`) e um array `flags._` para positionals.
55
+
56
+ Em vez de reescrever as 10 funções para o formato novo (risco maior, mexe em lógica que já funciona), `program.js` tem uma função `toLegacyFlags(options, extra)` que remonta o objeto no formato antigo antes de cada chamada:
57
+
58
+ ```js
59
+ // bin/lib/cli/program.js
60
+ const whoamiCmd = cmd(program, "whoami").description("...");
61
+ withEnvOptions(withLogOptions(whoamiCmd)).action((options) => whoami(toLegacyFlags(options)));
62
+ ```
63
+
64
+ `toLegacyFlags` remapeia só as duas chaves que mudam de formato (`envFile`→`"env-file"`, `maxAge`→`"max-age"`); todo o resto passa direto. O `extra` (segundo argumento) serve para injetar positionals como `_` ou flags sintéticas como `{ logout: true }` (usado por `jarvis logout`, que chama a mesma função de `whoami.js` com essa flag).
65
+
66
+ **Ao adicionar uma opção nova que usa hífen** (ex: `--body-file`), decida: se a função de `bin/commands/*.js` vai ler `flags["body-file"]` (formato antigo) ou se você vai atualizá-la para ler `options.bodyFile` direto. Os 4 comandos novos (`vcs create-merge`, `vcs create-issue`, etc.) já usam o segundo caminho — passam o objeto de opções do commander quase direto, sem o adapter — porque não têm lógica legada para preservar.
67
+
68
+ ## O helper `cmd()` — por que todo comando passa por ele
69
+
70
+ ```js
71
+ function cmd(parent, name) {
72
+ return parent.command(name).allowUnknownOption().allowExcessArguments();
73
+ }
74
+ ```
75
+
76
+ O parser manual antigo nunca validava nada: qualquer `--flag` era aceito e ignorado silenciosamente se o comando não o lesse. O commander, por padrão, dá erro em flag não declarada e em positional excedente. `allowUnknownOption()`/`allowExcessArguments()` replicam a permissividade antiga — mas **o commander não propaga essas duas configs do comando pai para os subcomandos**: setar só no `program` raiz não é suficiente (testado e confirmado durante a implementação). Por isso `cmd()` existe e **todo** comando — incluindo os aninhados (`docs sync`, `vcs create-merge`) — é criado com ele, nunca com `.command()` direto.
77
+
78
+ ## Argumentos: `[opcional]`, não `<obrigatório>` — de propósito
79
+
80
+ Note que `info`, `vcs fetch-raw` e `tasks comment` declaram seus positionals como **opcionais** (`[target]`, `[file-path]`) mesmo sendo, na prática, obrigatórios para o comando funcionar. Isso é deliberado: se o commander validar "argumento obrigatório ausente" sozinho, ele intercepta **antes** da função rodar — e cada uma dessas funções já tem sua própria validação com mensagem de uso customizada e mais específica (`info.js`: `"❌ Uso incorreto\nUso: jarvis info <type/name>\nExemplo: ..."`). Deixar o positional opcional no commander e a validação dentro da função preserva essa mensagem.
81
+
82
+ **A mesma regra vale para `--flag` que já tem validação própria.** Nenhum comando aqui usa `.requiredOption()` ou `.choices()` do commander, mesmo quando faria sentido à primeira vista (ex: `--tipo` em `docs publish` só aceita `prd|frd|ard|rfc|swagger|qa-report`). `docsPublish.js` já valida isso e mostra um bloco de exemplos de uso bem mais rico que o que o commander mostraria. Usar `.choices()` ali faria o commander interceptar o valor errado com uma mensagem genérica, perdendo esse texto. **Ao adicionar uma opção nova**: se a função já vai validar o valor por dentro, deixe o commander permissivo (`.option()` simples) e confie na validação interna. Se não há validação nenhuma hoje, `.choices()`/`.argParser()` são bons lugares para adicionar uma — não há essa perda a proteger.
83
+
84
+ ## `program.command()` vs `program.addCommand()`
85
+
86
+ Este código usa `.command(nome)` (que cria e já anexa o subcomando) em todo lugar — não `.addCommand(instanciaDeCommand)`. São equivalentes; `.addCommand()` só compensa quando o `Command` é montado em outro módulo e precisa ser importado antes de anexar. Como tudo mora em `program.js`, não há motivo para o nível extra de indireção.
87
+
88
+ ## Os 4 "scripts standalone" (`vcs/*.js`, `tasks/comment.js`): dupla forma
89
+
90
+ `create-merge.js`, `create-issue.js`, `fetch-raw.js` e `comment.js` são chamados de duas formas:
91
+
92
+ 1. **Como subcomando do CLI**: `jarvis vcs create-merge --source ... --target ...` (via `program.js`)
93
+ 2. **Direto, por skills/workflows que ainda shell-am pra eles**: `node bin/lib/vcs/create-merge.js --source ...`
94
+
95
+ Cada um dos 4 arquivos segue o mesmo padrão: exporta uma função (`runCreateMerge`, `runCreateIssue`, `runFetchRaw`, `runComment`) com a lógica, e termina com um guard que só lê `process.argv` quando o arquivo é executado diretamente:
96
+
97
+ ```js
98
+ // Compatibilidade: continua funcionando como `node bin/lib/vcs/create-merge.js --source ...`
99
+ if (fileURLToPath(import.meta.url) === process.argv[1]) {
100
+ await runCreateMerge({ source: arg("source"), ... });
101
+ }
102
+ ```
103
+
104
+ **Ao editar um desses 4 arquivos**: a lógica de negócio fica dentro da função exportada. O bloco de `arg()`/guard no final é só para quem ainda invoca via `node bin/lib/.../arquivo.js` direto (uso legado — todo caller novo deve preferir o subcomando `jarvis`). Não remova o guard sem primeiro confirmar que nenhuma skill/workflow ainda referencia o path direto (`grep -rn "bin/lib/vcs\|bin/lib/tasks/comment" --include="*.md" .`).
105
+
106
+ ## Como adicionar um comando novo
107
+
108
+ 1. Criar `bin/commands/meu-comando.js` exportando `export async function meuComando(flags) { ... }` — igual aos outros, sem importar `commander`.
109
+ 2. Em `bin/lib/cli/program.js`:
110
+ - Importar a função no topo.
111
+ - Registrar com `cmd(program, "meu-comando")` (ou `cmd(parentExistente, "nome")` se for subcomando de um grupo como `docs`/`vcs`/`tasks`).
112
+ - Declarar as opções/positionals com `.option()`/`.argument()`. Usar `withEnvOptions()`/`withLogOptions()` de `shared-options.js` se o comando precisar de `--ide`/`--env-file` ou `--quiet`/`--verbose`/`--silent`.
113
+ - No `.action()`, chamar `toLegacyFlags(options, extra)` se a função usa o formato antigo de flags, ou passar `options` quase direto se for um comando novo sem lógica legada (ver os 4 de `vcs`/`tasks` como exemplo).
114
+ 3. Rodar manualmente o comando novo e **todos os outros** (não há suíte automatizada de CLI end-to-end — só `test/comandos-docs.test.js`, que valida a documentação dos workflows/skills, não o comportamento do CLI em si). Checklist mínimo: `--help` do comando novo, caminho feliz, caminho de erro (flag/argumento faltando).
115
+ 4. `npm run lint && npm run test:comandos && npm run test:filtro` antes de comitar.
116
+
117
+ ## Variáveis de ambiente lidas diretamente (fora do ENV.md)
118
+
119
+ `bin/lib/tasks/comment.js` e `bin/lib/vcs/*.js` leem `process.env` direto (`TASK_MANAGER`, `TOKEN_TASK_MANAGER`, `CENTRAL_DOCS_REPO`, `VERSION_CONTROL`, etc.) — não passam pelo `env-loader.js`/ENV.md. Isso é intencional: esses adapters são chamados por skills/workflows que já exportam essas variáveis do `ENV.md` para o processo (`set -a; eval "$(grep ... $IDE/ENV.md)"; set +a`) antes de invocar o comando. Se um comando novo precisar ler o `ENV.md` diretamente, use `env-loader.js#resolveEnvPath`/`loadEnv` (ver `whoami.js`, `tokens.js`, `qa-signoff.js` como exemplo) em vez de `process.env`.
120
+
121
+ ## Testes
122
+
123
+ - `npm run test:comandos` — valida que toda referência a comando/skill nos workflows e skills existe de fato (não testa o CLI em runtime).
124
+ - `npm run test:filtro` — testes unitários de `profile-filter.js`, `token-report.js`, `flow-map`, `env-loader.js`, `sync-engine.js` e `vcs/api.js`.
125
+ - Não há teste automatizado de ponta a ponta do CLI (`jarvis <comando>` real) — a camada de dispatch (`program.js`, `bin/commands/*.js`) não é cobrida pelos testes unitários. Qualquer mudança ali precisa de validação manual dos comandos afetados.
126
+
127
+ ### Como testar código que lê `fs`/rede sem mockar módulo
128
+
129
+ Os 3 arquivos mais críticos sem cobertura até pouco tempo atrás (`env-loader.js`, `sync-engine.js`, `vcs/api.js`) tocam filesystem real ou rede real — nenhum foi refatorado para isso, cada um usou o hook que já existia:
130
+
131
+ - **`env-loader.js`** (e `flow-map.test.js`, mais antigo): `mkdtempSync(join(tmpdir(), "jarvis-..."))` monta um workspace fake com `.{ide}/ENV.md`, roda a função contra ele, `rmSync` no `finally`.
132
+ - **`sync-engine.js`**: `getFrameworkRoot()` (`utils/paths.js`) já tem um escape hatch — `process.env.JARVIS_ROOT`, se definido e existir, vence sobre o framework real. O teste aponta `JARVIS_ROOT` para um fixture mínimo (`agents/`, `skills/`, etc. com 1 arquivo cada) em vez de sincronizar o framework inteiro.
133
+ - **`vcs/api.js`**: usa `mock.method(globalThis, "fetch", ...)` do `node:test` pra controlar a resposta por vendor, sem mockar o módulo nem tocar rede real. **Atenção**: toda função de rede chama `getVcsToken()` antes do fetch — fixe `GITLAB_TOKEN`/`GITHUB_TOKEN`/`BITBUCKET_TOKEN` via env var no teste (ver `withEnv` em `vcs-api.test.js`), senão o resultado depende do que a máquina que roda o teste tiver em `.npmrc`/`gh auth`.
134
+ - **`docs/fetch-file.js`/`docs/publish-file.js`**: mesmo mock de `fetch`. `redis-cli` (chamado por `docs/redis-cache.js`) **não dá pra mockar** — é um módulo nativo (`node:child_process`) não configurável, `mock.method` lança `TypeError: Cannot redefine property`. Como pode haver um `redis-cli` de verdade instalado (com ou sem servidor acessível) na máquina que roda o teste, cada teste usa uma chave de cache única (`docs:${randomUUID()}...`) em vez de mockar o cache — garante cache-miss determinístico sem depender do estado de nenhum Redis real.
135
+
136
+ **Armadilha com `async`**: o helper `withEnv(vars, fn)` (repetido nos 3 arquivos acima) precisa de `return **await** fn()`, não `return fn()`, dentro do `try`. Sem o `await`, o `finally` que restaura a env var roda assim que `fn()` retorna uma Promise pendente — ou seja, **antes** da função terminar. Isso só não quebra quando a leitura da env var acontece antes do primeiro `await` de `fn` (ex: `fetchRawFile` lê o token antes do seu próprio `fetch`); quebra silenciosamente em qualquer função com mais de um `await` no meio do caminho (ex: `publishFile`, que busca o `index.md` antes de chegar no commit, que é onde o token é lido).
137
+
138
+ Ao escrever um teste novo para um arquivo que toca `fs`/rede, prefira um desses padrões a mockar o módulo inteiro ou refatorar pra injeção de dependência — nenhum dos arquivos acima precisou mudar uma linha de lógica de produção para ganhar teste.
139
+
140
+ ## Lint e formatação
141
+
142
+ `eslint.config.js` (raiz) + `.prettierrc.json` cobrem `bin/` e `test/`. `npm run lint` / `npm run format` — ver `package.json#scripts`.