jarvis-ai-framework 1.0.0

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