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,263 +0,0 @@
1
- ---
2
- name: eng-qa-graphql-contract
3
- description: Gera testes de contrato que validam queries/mutations GraphQL do frontend contra o schema do BFF. Se o schema mudar, o teste quebra antes do deploy.
4
- argument-hint: "{path-do-schema} [path-das-queries]"
5
- disable-model-invocation: false
6
- allowed-tools: Read Write Edit Grep Glob Bash AskUserQuestion
7
- license: AGPL-3.0
8
- compatibility: Designed for Claude Code (or similar products)
9
- metadata:
10
- author: jarvis-framework
11
- version: "1.0"
12
- area: qa
13
- ---
14
-
15
- # eng-qa-graphql-contract
16
-
17
- Você é um especialista em testes de contrato GraphQL. Sua função é gerar testes
18
- que validam a compatibilidade entre queries/mutations do frontend e o schema
19
- do BFF, garantindo que mudanças no schema sejam detectadas antes do deploy.
20
-
21
- ---
22
-
23
- ## Objetivo
24
-
25
- Criar arquivo de teste (Jest/Vitest) que importa o schema GraphQL do BFF,
26
- parseia todas as queries do frontend e valida cada uma contra o schema.
27
- Se o BFF remover um campo ou mudar um tipo, o teste quebra no CI.
28
-
29
- ---
30
-
31
- ## Entrada
32
-
33
- ```
34
- /eng-qa-graphql-contract {path-do-schema} [path-das-queries]
35
- ```
36
-
37
- - `path-do-schema` (obrigatório) — caminho para o schema GraphQL do BFF
38
- - Arquivo `.graphql` / `.gql`
39
- - Arquivo `.ts` / `.js` que exporta o schema (SDL string ou `DocumentNode`)
40
- - URL de introspection (ex: `http://localhost:4000/graphql`)
41
- - `path-das-queries` (opcional) — diretório com queries do frontend
42
- - Default: detectar automaticamente (`src/**/*.graphql`, `src/**/*.gql`, ou queries inline em `gql` tagged templates)
43
-
44
- ---
45
-
46
- ## Recursos
47
-
48
- | Recurso | Caminho |
49
- |---------|---------|
50
- | Schema do BFF | argumento do usuário (local ou URL) |
51
- | Queries do frontend | `src/**/*.graphql`, `src/**/*.gql`, ou inline em `src/**/*.ts` |
52
- | Config de testes | `jest.config.*`, `vitest.config.*` |
53
-
54
- ---
55
-
56
- ## Pré-requisito
57
-
58
- 1. **ENV.md** válido
59
- 2. **Schema GraphQL acessível** (arquivo local, repo clonado, ou endpoint de introspection)
60
- 3. **Queries GraphQL no frontend** (arquivos `.graphql` ou tagged templates `gql`)
61
- 4. **Pacote `graphql`** instalado no projeto (peer dependency)
62
-
63
- ---
64
-
65
- ## Quando Usar
66
-
67
- **Usar quando:**
68
- - Frontend consome API GraphQL de um BFF/backend separado
69
- - Mudanças no schema do BFF já quebraram o frontend em produção
70
- - Sprint inclui alterações no schema GraphQL
71
- - Onboarding de contract testing em projeto existente
72
-
73
- **NÃO usar quando:**
74
- - Frontend usa REST (não GraphQL)
75
- - Frontend e BFF estão no mesmo repo com code generation (ex: graphql-codegen já valida)
76
- - Objetivo é testar resolvers do BFF (isso é teste de integração do backend)
77
-
78
- ---
79
-
80
- ## Padrões Críticos
81
-
82
- 1. **Schema como source of truth** — o schema do BFF define o contrato; queries que não conformam são bugs do frontend
83
- 2. **Cobertura de 100% das queries** — o teste deve validar TODAS as queries/mutations, não apenas algumas
84
- 3. **Test de cobertura reverso** — detectar queries novas que escaparam da validação
85
- 4. **Cross-repo tolerante** — o schema pode vir de arquivo local, repo externo ou introspection
86
-
87
- ---
88
-
89
- ## Fluxo de Trabalho
90
-
91
- ### Fase 1 — Obter schema
92
-
93
- **1.1** Determinar fonte do schema:
94
-
95
- - **Arquivo local**: ler diretamente
96
- ```bash
97
- cat {path-do-schema}
98
- ```
99
- - **URL de introspection**: executar query de introspection
100
- ```bash
101
- curl -s -X POST {url} \
102
- -H "Content-Type: application/json" \
103
- -d '{"query": "{ __schema { types { name kind fields { name type { name kind ofType { name } } } } } }"}'
104
- ```
105
- - **Arquivo TypeScript**: detectar se exporta SDL string ou DocumentNode
106
-
107
- **1.2** Validar que o schema é parseável:
108
- ```javascript
109
- const { buildSchema, parse } = require('graphql');
110
- buildSchema(schemaSDL); // deve funcionar sem erros
111
- ```
112
-
113
- ### Fase 2 — Descobrir queries do frontend
114
-
115
- **2.1** Buscar arquivos de query (usar `path-das-queries` se fornecido, senão detectar raiz do projeto):
116
- ```bash
117
- find {path-das-queries ou raiz do projeto} -name "*.graphql" -o -name "*.gql" 2>/dev/null
118
- ```
119
-
120
- **2.2** Buscar queries inline (tagged templates `gql`):
121
- ```bash
122
- grep -rl "gql\`" {path-das-queries ou raiz do projeto} --include="*.ts" --include="*.tsx"
123
- ```
124
-
125
- **2.3** Para cada fonte, extrair o conteúdo da query/mutation.
126
-
127
- **2.4** Reportar:
128
- ```
129
- Schema: {fonte} ({N} types, {M} fields)
130
- Queries encontradas: {Q} queries, {Mu} mutations, {F} fragments
131
- ```
132
-
133
- ### Fase 3 — Gerar teste de contrato
134
-
135
- **3.1** Criar arquivo de teste:
136
- ```
137
- {$TEST_FOLDER}/contracts/graphql-contract.spec.ts
138
- ```
139
- > Se `$TEST_FOLDER` não definido, usar `src/__tests__/contracts/`
140
-
141
- **3.2** Estrutura do teste:
142
-
143
- ```typescript
144
- import { buildSchema, parse, validate } from 'graphql';
145
- import fs from 'fs';
146
-
147
- // Schema do BFF
148
- const schemaSDL = fs.readFileSync('{path-do-schema}', 'utf-8');
149
- const schema = buildSchema(schemaSDL);
150
-
151
- // Queries do frontend
152
- const queries: Record<string, string> = {
153
- '{nome-da-query}': fs.readFileSync('{path-da-query}', 'utf-8'),
154
- // ... todas as queries
155
- };
156
-
157
- describe('Contrato GraphQL — Frontend vs BFF', () => {
158
- Object.entries(queries).forEach(([name, source]) => {
159
- it(`query "${name}" é compatível com o schema do BFF`, () => {
160
- const document = parse(source);
161
- const errors = validate(schema, document);
162
- expect(errors).toEqual([]);
163
- });
164
- });
165
-
166
- it('todas as queries do frontend estão cobertas', () => {
167
- const queryFiles = fs.readdirSync('{dir-queries}')
168
- .filter(f => f.endsWith('.graphql') || f.endsWith('.gql'));
169
- const testedQueries = Object.keys(queries);
170
- const missing = queryFiles.filter(f => !testedQueries.includes(f));
171
- expect(missing).toEqual([]);
172
- });
173
- });
174
- ```
175
-
176
- **3.3** Adaptar imports e paths conforme framework de teste (Jest vs Vitest) e module system (ESM vs CJS).
177
-
178
- ### Fase 4 — Executar e reportar
179
-
180
- **4.1** Executar o teste usando o runner detectado na Fase 1:
181
- ```bash
182
- # Jest
183
- npx jest --testPathPattern="graphql-contract" --no-coverage
184
- # Vitest
185
- npx vitest run graphql-contract
186
- ```
187
- > Usar o runner que o projeto já utiliza — nunca forçar um runner diferente.
188
-
189
- **4.2** Para cada falha, gerar report:
190
-
191
- ```markdown
192
- ### Query incompatível: {nome}
193
-
194
- **Erro:** {mensagem do validate}
195
- **Campo problemático:** `{field}` no type `{type}`
196
- **Ação:** verificar se o schema do BFF ainda expõe este campo
197
- ```
198
-
199
- **4.3** Resumo:
200
- ```
201
- ── GraphQL Contract ──────────────────────────────────────
202
- Schema : {fonte}
203
- Queries : {Q} validadas
204
- Compatíveis : {OK}
205
- Incompatíveis: {FAIL}
206
- Cobertura : {Q}/{total} queries cobertas
207
- ──────────────────────────────────────────────────────────
208
- ```
209
-
210
- ### Skills invocados durante a execução do skill
211
-
212
- | Passo | Skill | Condição |
213
- |-------|-------|----------|
214
- | — | Nenhuma — skill autocontida | — |
215
-
216
- ---
217
-
218
- ## Regras
219
-
220
- ### Nunca
221
- - Modificar o schema do BFF — o contrato pertence ao backend
222
- - Ignorar queries inline (tagged templates) — são tão importantes quanto arquivos `.graphql`
223
- - Hardcodar paths de schema ou queries — receber como argumento
224
- - Gerar teste que depende de runtime do BFF (deve funcionar offline com schema estático)
225
-
226
- ### Sempre
227
- - Validar 100% das queries encontradas
228
- - Incluir teste de cobertura reverso (queries novas detectadas)
229
- - Sugerir correção para queries incompatíveis
230
- - Reportar fonte do schema e método de obtenção
231
-
232
- ---
233
-
234
- ## Checklist de Conclusão
235
-
236
- - [ ] Schema obtido e validado
237
- - [ ] Queries do frontend descobertas (arquivos + inline)
238
- - [ ] Teste de contrato gerado
239
- - [ ] Teste de cobertura reverso incluído
240
- - [ ] Testes executados
241
- - [ ] Incompatibilidades reportadas com sugestões
242
-
243
- ---
244
-
245
- ## Output
246
-
247
- | Artefato | Destino |
248
- |----------|---------|
249
- | Teste de contrato | `{$TEST_FOLDER}/contracts/graphql-contract.spec.ts` |
250
- | Report de incompatibilidades | Output no terminal |
251
-
252
- ---
253
-
254
- ## Mensagem de Conclusão
255
-
256
- ```
257
- ── eng-qa-graphql-contract concluído ─────────────────────────
258
- Schema : {fonte}
259
- Queries : {Q} validadas ({OK} ok, {FAIL} incompatíveis)
260
- Cobertura : {Q}/{total}
261
- Teste em : {path do arquivo gerado}
262
- ──────────────────────────────────────────────────────────
263
- ```
@@ -1,419 +0,0 @@
1
- ---
2
- name: eng-qa-quality-report
3
- description: >
4
- Consolida sessões exploratórias, bug reports e quality gates de um período (sprint ou release)
5
- e gera relatório de qualidade em markdown pronto para publicar via jarvis-docs-central.
6
- Pressupõe que as skills eng-qa-exploratory, eng-qa-cypress-e2e e eng-qa-gate tenham sido usadas no período.
7
- Trigger: Use quando precisar gerar o relatório de qualidade de uma sprint ou release.
8
- license: AGPL-3.0
9
- compatibility: Designed for Claude Code (or similar products)
10
- allowed-tools: Read Write Edit Grep Glob Bash
11
- metadata:
12
- author: jarvis-framework
13
- version: "1.0"
14
- area: qa
15
- argument-hint: "[Sprint N | Release X.Y | mês YYYY-MM]"
16
- disable-model-invocation: false
17
- ---
18
-
19
- # QA Quality Report — Relatório de Qualidade Consolidado
20
-
21
- Você é um **QA Engineer** responsável por consolidar as evidências de qualidade de um período
22
- e transformá-las em um relatório objetivo, rastreável e pronto para stakeholders.
23
-
24
- > ⚠️ **Pré-condição**: esta skill assume que sessões exploratórias, quality gates e bug reports
25
- > do período foram gerados pelas skills `eng-qa-exploratory`, `eng-qa-gate` e `eng-qa-bug-report`.
26
- > Se nenhum dado existir, a skill irá informar o usuário e gerar um relatório em branco.
27
-
28
- ---
29
-
30
- ## Entrada
31
-
32
- ```
33
- #$ARGUMENTS
34
- ```
35
-
36
- Aceita: período em texto livre.
37
-
38
- Exemplos válidos:
39
- - `Sprint 42`
40
- - `release 1.4`
41
- - `abril/2026`
42
- - `2026-04` (formato ISO)
43
-
44
- **Se não receber argumentos**, perguntar:
45
- ```
46
- Qual período deseja cobrir no relatório?
47
- Exemplos: Sprint 42 · release 1.4 · abril/2026
48
- ```
49
-
50
- ---
51
-
52
- ## Recursos
53
-
54
- - **Template**: `$TEMPLATES_FOLDER/engineering/qa/qa.quality-report-template.md`
55
- - **Sessões exploratórias**: `$SESSIONS_DIR/qa/`
56
- - **Relatórios anteriores**: `$DOCS_FOLDER/engineering/qa/reports/`
57
- - **Test backlog**: `$DOCS_FOLDER/engineering/qa/test-backlog.md`
58
- - **Suite de testes E2E**: `$TEST_FOLDER`
59
-
60
- ---
61
-
62
- ## Pré-requisito
63
-
64
- Validar ENV.md antes de executar:
65
-
66
- ```bash
67
- if [ ! -f "$IDE/ENV.md" ]; then
68
- echo "⚠️ ENV.md não encontrado. Execute /jarvis-init primeiro."
69
- exit 1
70
- fi
71
-
72
- SQUAD=$(grep "^SQUAD=" "$IDE/ENV.md" | cut -d= -f2)
73
- DOCS_FOLDER=$(grep "^DOCS_FOLDER=" "$IDE/ENV.md" | cut -d= -f2)
74
- TEMPLATES_FOLDER=$(grep "^TEMPLATES_FOLDER=" "$IDE/ENV.md" | cut -d= -f2)
75
- TEST_FOLDER=$(grep "^TEST_FOLDER=" "$IDE/ENV.md" | cut -d= -f2)
76
- TASK_MANAGER=$(grep "^TASK_MANAGER=" "$IDE/ENV.md" | cut -d= -f2)
77
- CENTRAL_DOCS_REPO=$(grep "^CENTRAL_DOCS_REPO=" "$IDE/ENV.md" | cut -d= -f2)
78
- ```
79
-
80
- ---
81
-
82
- ## Quando Usar
83
-
84
- - Ao final de cada sprint ou release para documentar a saúde de qualidade
85
- - Antes de uma release major para consolidar evidências de cobertura
86
- - Para comunicar métricas de QA ao time de produto e liderança
87
- - Como insumo para retrospectivas de qualidade
88
-
89
- ---
90
-
91
- ## Padrões Críticos
92
-
93
- - **Nunca inventar métricas** — se não houver dado, registrar como "não disponível" ou "0"
94
- - **Transparência sobre gaps** — se algum tipo de dado não foi encontrado, documentar explicitamente
95
- - **Período preciso** — o relatório deve ter datas de início e fim inferidas ou confirmadas com o usuário
96
- - **Baseado em evidência** — cada número deve ter origem rastreável (arquivo de sessão, card do $TASK_MANAGER, etc.)
97
-
98
- ---
99
-
100
- ## Fluxo de Trabalho
101
-
102
- ### Fase 1 — Definir período e escopo
103
-
104
- #### 1.1 Parsear período
105
-
106
- A partir do argumento fornecido, determinar:
107
- - **Rótulo do período**: como será exibido no relatório (ex: "Sprint 42", "Release 1.4")
108
- - **Slug do período**: para usar no nome do arquivo (ex: `sprint-42`, `release-1-4`, `2026-04`)
109
- - **Intervalo de datas**: se possível inferir do argumento; se não, perguntar:
110
-
111
- ```
112
- Qual o intervalo de datas do período?
113
- Início (YYYY-MM-DD): ___
114
- Fim (YYYY-MM-DD): ___
115
-
116
- (Opcional — deixe em branco para usar "a definir" no relatório)
117
- ```
118
-
119
- #### 1.2 Verificar relatório existente
120
-
121
- ```bash
122
- ls "$DOCS_FOLDER/engineering/qa/reports/" 2>/dev/null | grep -i "{slug-do-periodo}"
123
- ```
124
-
125
- Se já existir relatório do mesmo período, perguntar:
126
- ```
127
- Já existe um relatório para este período: {arquivo}
128
-
129
- O que deseja fazer?
130
- [A] Sobrescrever com novos dados
131
- [B] Criar nova versão (QA-REPORT-{SQUAD}-{PERIODO}-v2.md)
132
- [C] Cancelar
133
- ```
134
-
135
- ---
136
-
137
- ### Fase 2 — Coletar sessões exploratórias
138
-
139
- ```bash
140
- ls "$SESSIONS_DIR/qa/" 2>/dev/null | sort
141
- ```
142
-
143
- Para cada arquivo `.md` na pasta de sessões:
144
- 1. Ler o arquivo
145
- 2. Verificar se pertence ao período (por data no nome ou frontmatter)
146
- 3. Extrair as seguintes informações:
147
-
148
- ```
149
- De cada sessão, extrair:
150
- - ID da sessão (ex: EXP-20260415-1)
151
- - Feature/módulo explorado
152
- - Duração estimada
153
- - Status do charter (✅ atingido / ⚠️ parcial / ❌ bloqueado)
154
- - Bugs encontrados por severidade (S1, S2, S3, S4)
155
- - Total de bugs
156
- ```
157
-
158
- Se nenhuma sessão for encontrada para o período:
159
- ```
160
- ⚠️ Nenhuma sessão exploratória encontrada em:
161
- $SESSIONS_DIR/qa/
162
-
163
- Para o período "{período}", as sessões serão registradas como "0".
164
- Se as sessões existirem em outro local, informe o caminho.
165
- ```
166
-
167
- ---
168
-
169
- ### Fase 3 — Coletar bugs do período
170
-
171
- #### 3.1 Buscar no $TASK_MANAGER (se configurado)
172
-
173
- Dependendo do `$TASK_MANAGER` configurado no ENV.md:
174
-
175
- **JIRA** (via MCP Atlassian):
176
- ```
177
- mcp__claude_ai_Atlassian__searchJiraIssuesUsingJql({
178
- jql: "project = \"{PROJECT_KEY}\" AND issuetype = Bug AND created >= \"{data-inicio}\" AND created <= \"{data-fim}\" ORDER BY priority ASC",
179
- maxResults: 100
180
- })
181
- ```
182
-
183
- **LINEAR / GITHUB / GITLAB / CLICKUP** (via CLI ou API):
184
- ```bash
185
- # Fallback genérico: buscar em docs locais
186
- ls "$SESSIONS_DIR/qa/bug-reports/" 2>/dev/null | sort
187
- ```
188
-
189
- **LOCAL ou não configurado**: buscar em `$SESSIONS_DIR/qa/` por arquivos de sessão exploratória que documentam bugs.
190
-
191
- #### 3.2 Consolidar bugs por severidade
192
-
193
- Para cada bug coletado, classificar conforme mapeamento:
194
-
195
- | $TASK_MANAGER | Severidade S1 | S2 | S3 | S4 |
196
- |---|---|---|---|---|
197
- | **JIRA** | P0 / Highest / Crítico | P1 / High / Alto | P2 / Medium / Médio | P3 / Low / Baixo |
198
- | **LINEAR** | Urgent | High | Medium | Low |
199
- | **GITHUB/GITLAB** | priority-critical | priority-high | priority-medium | priority-low |
200
- | **LOCAL** | S1 (literal no doc de sessão) | S2 | S3 | S4 |
201
-
202
- Montar tabela:
203
- ```
204
- bugs_s1=0, bugs_s2=0, bugs_s3=0, bugs_s4=0
205
- bugs_resolved=0, bugs_open=0
206
- ```
207
-
208
- ---
209
-
210
- ### Fase 4 — Coletar quality gates
211
-
212
- Buscar resultados de quality gate no período:
213
-
214
- ```bash
215
- # Docs de quality gate salvos localmente (gerados por eng-qa-gate)
216
- ls "$DOCS_FOLDER/engineering/qa/" 2>/dev/null | grep -i "quality-gate\|qa-gate\|qg-" | sort
217
- ```
218
-
219
- Para cada resultado encontrado:
220
- - Verificar se pertence ao período
221
- - Extrair: feature/task, resultado (✅ / ⚠️ / 🚫), score percentual
222
-
223
- Se nenhum resultado for encontrado, registrar como "0 quality gates documentados".
224
-
225
- ---
226
-
227
- ### Fase 5 — Coletar cobertura E2E
228
-
229
- ```bash
230
- # Contar spec files no suite Cypress
231
- find "$TEST_FOLDER" -name "*.cy.ts" -o -name "*.cy.js" -o -name "*.spec.ts" -o -name "*.spec.js" \
232
- 2>/dev/null | sort
233
- ```
234
-
235
- Agrupar por domínio (pasta pai do arquivo):
236
-
237
- ```
238
- specs_por_dominio = {}
239
- Para cada spec encontrada:
240
- dominio = nome da pasta pai
241
- specs_por_dominio[dominio] += 1
242
- ```
243
-
244
- Avaliar cobertura estimada por domínio:
245
- - **Alta**: 5+ specs cobrindo fluxos principais e casos de erro
246
- - **Média**: 2–4 specs cobrindo fluxo principal
247
- - **Baixa**: 0–1 spec ou nenhuma para o domínio
248
-
249
- Verificar test-backlog para identificar gaps registrados:
250
-
251
- ```bash
252
- cat "$DOCS_FOLDER/engineering/qa/test-backlog.md" 2>/dev/null
253
- ```
254
-
255
- ---
256
-
257
- ### Fase 6 — Gerar relatório
258
-
259
- #### 6.1 Montar métricas consolidadas
260
-
261
- ```
262
- Período: {rótulo} ({data_inicio} a {data_fim})
263
- Squad: {SQUAD}
264
-
265
- Sessões exploratórias realizadas: {N}
266
- Quality gates validados: {N}
267
- - ✅ Conforme (100%): {N}
268
- - ⚠️ Parcial (50–99%): {N}
269
- - 🚫 Bloqueado (<50%): {N}
270
-
271
- Bugs reportados:
272
- - S1 Crítico: {N} (resolvidos: {N} | em aberto: {N})
273
- - S2 Alto: {N} (resolvidos: {N} | em aberto: {N})
274
- - S3 Médio: {N}
275
- - S4 Baixo: {N}
276
- - Total: {N}
277
-
278
- Specs E2E ativas: {N} em {N} domínios
279
- ```
280
-
281
- #### 6.2 Identificar tendências e riscos
282
-
283
- A partir dos dados coletados, analisar:
284
- - Quais módulos/features concentram mais bugs (S1/S2)?
285
- - Há domínios sem cobertura E2E com bugs registrados?
286
- - Quality gates com padrão de bloqueio recorrente?
287
- - Bugs S1/S2 em aberto há mais de 1 sprint?
288
-
289
- #### 6.3 Preparar resumo executivo
290
-
291
- Gerar 3–5 linhas com:
292
- - Principal conquista do período (maior cobertura, zero S1, etc.)
293
- - Principal risco identificado
294
- - Tendência observada em relação ao período anterior (se existir relatório anterior)
295
-
296
- #### 6.4 Definir recomendações
297
-
298
- Gerar até 5 recomendações priorizadas (Alta / Média / Baixa) com base nos gaps identificados.
299
-
300
- #### 6.5 Ler template e preencher
301
-
302
- ```bash
303
- cat "$TEMPLATES_FOLDER/engineering/qa/qa.quality-report-template.md"
304
- ```
305
-
306
- Preencher o template com todos os dados coletados. Para campos sem dados, usar `—` (não deixar vazio).
307
-
308
- #### 6.6 Salvar relatório
309
-
310
- ```
311
- Caminho: $DOCS_FOLDER/engineering/qa/reports/QA-REPORT-{SQUAD}-{SLUG-PERIODO}.md
312
- ```
313
-
314
- Garantir que o frontmatter esteja preenchido:
315
- ```yaml
316
- ---
317
- period: "{rótulo do período}"
318
- squad: "{SQUAD}"
319
- version: "1.0"
320
- status: Draft
321
- ---
322
- ```
323
-
324
- ---
325
-
326
- ### Fase 7 — Publicação no Central Docs (condicional)
327
-
328
- Se `CENTRAL_DOCS_REPO` estiver configurado no ENV.md, perguntar:
329
-
330
- ```
331
- Relatório salvo em: {caminho}
332
-
333
- Deseja publicar no central-docs?
334
- [S] Publicar agora (cria MR no GitLab)
335
- [N] Não publicar agora
336
- ```
337
-
338
- **Se sim**, executar:
339
-
340
- ```bash
341
- jarvis docs publish \
342
- --file "$DOCS_FOLDER/engineering/qa/reports/QA-REPORT-{SQUAD}-{SLUG-PERIODO}.md" \
343
- --tipo qa-report \
344
- --feature "{squad-slug}-{periodo-slug}"
345
- ```
346
-
347
- - ✅ Sucesso: "Relatório publicado. MR criado: [URL]"
348
- - ❌ Frontmatter inválido: orientar o usuário a preencher os campos `period`, `squad` e `version`
349
- - ℹ️ Recusou: informar o comando para publicar manualmente depois
350
-
351
- Se `CENTRAL_DOCS_REPO` não estiver definido: apenas informar que a publicação pode ser habilitada via ENV.md.
352
-
353
- ### Skills invocados durante a execução do skill
354
-
355
- | Passo | Skill | Condição |
356
- |-------|-------|----------|
357
- | Fase 7 — Publicação no Central Docs | `/jarvis-docs-central` (via `jarvis docs publish`) | Se `CENTRAL_DOCS_REPO` estiver configurado no ENV.md e o usuário aceitar publicar |
358
-
359
- ---
360
-
361
- ## Regras
362
-
363
- ### Nunca
364
- - Inventar números — se não há dado, registrar como "0" ou "não disponível"
365
- - Gerar relatório sem identificar claramente o período e o squad
366
- - Omitir bugs S1/S2 em aberto — eles devem sempre aparecer no relatório, mesmo sem dados completos
367
- - Considerar dados de períodos diferentes como parte do período corrente
368
-
369
- ### Sempre
370
- - Registrar a fonte de cada dado (arquivo de sessão, card do $TASK_MANAGER, suite Cypress)
371
- - Indicar quando um tipo de dado não foi encontrado e por quê
372
- - Incluir recomendações acionáveis — não apenas listar problemas
373
- - Garantir que o frontmatter (`period`, `squad`, `version`) esteja preenchido antes de salvar
374
-
375
- ---
376
-
377
- ## Checklist de Conclusão
378
-
379
- - [ ] Período definido com rótulo e slug
380
- - [ ] Sessões exploratórias coletadas e sumarizadas
381
- - [ ] Bugs consolidados por severidade com status (resolvido / em aberto)
382
- - [ ] Quality gates contabilizados por status
383
- - [ ] Cobertura E2E mapeada por domínio
384
- - [ ] Resumo executivo redigido (3–5 linhas)
385
- - [ ] Tendências e riscos identificados
386
- - [ ] Recomendações geradas (pelo menos 1)
387
- - [ ] Template preenchido com frontmatter válido
388
- - [ ] Relatório salvo em `$DOCS_FOLDER/engineering/qa/reports/`
389
- - [ ] Publicação no central-docs perguntada (se `CENTRAL_DOCS_REPO` configurado)
390
-
391
- ---
392
-
393
- ## Output
394
-
395
- ```
396
- $DOCS_FOLDER/engineering/qa/reports/QA-REPORT-{SQUAD}-{SLUG-PERIODO}.md
397
- ```
398
-
399
- ---
400
-
401
- ## Mensagem de Conclusão
402
-
403
- ```
404
- ✅ Relatório de qualidade gerado
405
-
406
- Período : {rótulo do período}
407
- Squad : {SQUAD}
408
- Arquivo : {caminho do relatório}
409
-
410
- Resumo:
411
- Sessões exploratórias : {N}
412
- Bugs reportados : {N} (S1: {N} · S2: {N} · S3: {N} · S4: {N})
413
- Quality gates : ✅ {N} conforme · ⚠️ {N} parcial · 🚫 {N} bloqueado
414
- Specs E2E ativas : {N} specs em {N} domínios
415
-
416
- {Se CENTRAL_DOCS_REPO configurado}
417
- Para publicar no central-docs:
418
- jarvis docs publish --file {caminho} --tipo qa-report --feature {squad}-{periodo-slug}
419
- ```