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,259 @@
1
+ # Regras de Padrões Cypress — QA Engineering
2
+
3
+ > **Applies to:** HUB: QA | POSITION: all | AREA: ENGINEERING | SQUAD: all
4
+
5
+ Convenções obrigatórias para a escrita e manutenção da suíte de testes E2E em Cypress + TypeScript.
6
+ Estas regras são carregadas automaticamente pelo `warm-up` quando `HUB=QA`.
7
+
8
+ > **Fonte de verdade**: este arquivo define o padrão para toda a sessão.
9
+ > A skill `eng-qa-cypress-e2e` assume que estas regras foram carregadas — não as redescobre.
10
+
11
+ ---
12
+
13
+ ## 1. Estrutura de Pastas
14
+
15
+ ```
16
+ $TEST_FOLDER/
17
+ ├── e2e/ ← specs organizados por domínio/feature
18
+ │ ├── {dominio}/
19
+ │ │ └── {feature}.cy.ts
20
+ ├── fixtures/ ← dados de teste tipados
21
+ │ └── {dominio}/
22
+ │ └── {entidade}.json
23
+ ├── support/
24
+ │ ├── commands/ ← custom commands por domínio
25
+ │ │ └── {dominio}.commands.ts
26
+ │ ├── pages/ ← Page Objects
27
+ │ │ └── {Dominio}Page.ts
28
+ │ ├── commands.ts ← barrel de imports dos commands
29
+ │ └── e2e.ts ← configuração global
30
+ └── cypress.config.ts
31
+ ```
32
+
33
+ > `$TEST_FOLDER` é definido no `ENV.md` do projeto.
34
+ > Se não definido, inferir do `cypress.config.ts` na raiz.
35
+
36
+ ---
37
+
38
+ ## 2. Nomenclatura de Arquivos
39
+
40
+ | Tipo | Padrão | Exemplo |
41
+ |------|--------|---------|
42
+ | Spec | `{feature}.cy.ts` | `login.cy.ts` |
43
+ | Page Object | `{Dominio}Page.ts` (PascalCase) | `LoginPage.ts` |
44
+ | Custom command | `{dominio}.commands.ts` | `auth.commands.ts` |
45
+ | Fixture | `{entidade}.json` | `usuario.json` |
46
+ | Intercept fixture | `{endpoint}-{metodo}.json` | `usuarios-get.json` |
47
+
48
+ ---
49
+
50
+ ## 3. Estrutura de Spec (describe/it)
51
+
52
+ ```typescript
53
+ describe('{Domínio} — {Feature}', () => {
54
+ beforeEach(() => {
55
+ // setup comum: autenticação, navegação inicial
56
+ })
57
+
58
+ afterEach(() => {
59
+ // limpeza se necessário
60
+ })
61
+
62
+ context('quando {condição}', () => {
63
+ it('deve {comportamento esperado}', () => {
64
+ // Arrange → Act → Assert
65
+ })
66
+ })
67
+ })
68
+ ```
69
+
70
+ **Regras de nomenclatura:**
71
+ - `describe`: `{Domínio} — {Feature}` (domínio sempre em PascalCase)
72
+ - `context`: `quando {condição}` — descreve o estado/pré-condição
73
+ - `it`: `deve {comportamento}` — verifica um único comportamento
74
+ - Nunca usar `it('test 1')`, `it('cenário A')` ou nomes vagos
75
+
76
+ ---
77
+
78
+ ## 4. Page Object Pattern
79
+
80
+ ```typescript
81
+ // support/pages/LoginPage.ts
82
+ export class LoginPage {
83
+ visit() {
84
+ cy.visit('/login')
85
+ return this
86
+ }
87
+
88
+ fillEmail(email: string) {
89
+ cy.get('[data-testid="input-email"]').type(email)
90
+ return this
91
+ }
92
+
93
+ fillPassword(password: string) {
94
+ cy.get('[data-testid="input-password"]').type(password)
95
+ return this
96
+ }
97
+
98
+ submit() {
99
+ cy.get('[data-testid="btn-submit"]').click()
100
+ return this
101
+ }
102
+
103
+ // Asserções ficam no Page Object quando são reutilizáveis
104
+ shouldShowError(message: string) {
105
+ cy.get('[data-testid="alert-error"]').should('contain', message)
106
+ return this
107
+ }
108
+ }
109
+ ```
110
+
111
+ **Regras do Page Object:**
112
+ - Retornar `this` em todos os métodos de ação (fluent interface)
113
+ - Métodos de asserção começam com `should`
114
+ - Nunca colocar lógica de negócio — apenas interação com a UI
115
+ - Um Page Object por página ou componente de alto nível
116
+ - Importar e instanciar no topo da spec: `const page = new LoginPage()`
117
+
118
+ ---
119
+
120
+ ## 5. Seletores — Uso de `data-testid`
121
+
122
+ **Hierarquia de preferência de seletores:**
123
+
124
+ ```
125
+ 1. cy.get('[data-testid="..."]') ← PADRÃO — sempre preferir
126
+ 2. cy.get('[aria-label="..."]') ← acessibilidade — segundo recurso
127
+ 3. cy.get('[role="..."]') ← semântico — terceiro recurso
128
+ 4. cy.contains('Texto visível') ← apenas para elementos de texto
129
+ 5. cy.get('.classe') / cy.get('#id') ← PROIBIDO em specs novas
130
+ ```
131
+
132
+ **Convenção de nomes para `data-testid`:**
133
+
134
+ ```
135
+ {tipo}-{dominio}-{identificador}
136
+
137
+ Exemplos:
138
+ btn-auth-login
139
+ input-form-email
140
+ table-users-list
141
+ row-users-{id} ← para listas dinâmicas
142
+ modal-confirm-delete
143
+ alert-error-message
144
+ ```
145
+
146
+ ---
147
+
148
+ ## 6. Interceptação de API com `cy.intercept`
149
+
150
+ ```typescript
151
+ // Padrão de intercept com fixture tipada
152
+ cy.intercept('GET', '**/api/usuarios', { fixture: 'usuarios/usuarios-get.json' })
153
+ .as('getUsuarios')
154
+
155
+ // Aguardar antes de asserção
156
+ cy.wait('@getUsuarios')
157
+ cy.get('[data-testid="table-users-list"]').should('be.visible')
158
+ ```
159
+
160
+ **Regras de intercept:**
161
+ - Sempre usar `.as('{verbo}{Recurso}')` — ex: `@getUsuarios`, `@postPagamento`
162
+ - Sempre usar `cy.wait('@alias')` antes de asserções que dependem da resposta
163
+ - Fixtures de intercept ficam em `fixtures/{dominio}/{endpoint}-{metodo}.json`
164
+ - Para erros: passar `{ statusCode: 422, body: { message: '...' } }` diretamente (não fixture)
165
+ - Nunca depender do estado real da API em testes E2E — sempre interceptar chamadas externas
166
+
167
+ ---
168
+
169
+ ## 7. Fixtures Tipadas
170
+
171
+ ```typescript
172
+ // cypress/fixtures/usuarios/usuario.json
173
+ {
174
+ "id": "usr-001",
175
+ "nome": "Dev Teste",
176
+ "email": "dev@example.com",
177
+ "perfil": "admin"
178
+ }
179
+
180
+ // Uso na spec com tipo
181
+ import type { Usuario } from '../../src/types/usuario'
182
+
183
+ cy.fixture<Usuario>('usuarios/usuario').then((usuario) => {
184
+ cy.get('[data-testid="input-email"]').type(usuario.email)
185
+ })
186
+ ```
187
+
188
+ **Regras de fixtures:**
189
+ - Dados sensíveis (senhas, tokens) nunca em fixtures — usar `Cypress.env()`
190
+ - Fixtures refletem contratos reais de API — atualizá-las quando a API muda
191
+ - Usar tipos do projeto (`import type`) para garantir sincronia com o código
192
+
193
+ ---
194
+
195
+ ## 8. Custom Commands
196
+
197
+ ```typescript
198
+ // support/commands/auth.commands.ts
199
+ Cypress.Commands.add('loginAs', (perfil: 'admin' | 'viewer' | 'editor') => {
200
+ cy.fixture(`usuarios/${perfil}`).then((usuario) => {
201
+ cy.request('POST', '/api/auth/login', {
202
+ email: usuario.email,
203
+ password: Cypress.env('DEFAULT_PASSWORD'),
204
+ }).then(({ body }) => {
205
+ window.localStorage.setItem('auth_token', body.token)
206
+ })
207
+ })
208
+ })
209
+ ```
210
+
211
+ **Regras de custom commands:**
212
+ - Prefixo do domínio no nome: `loginAs`, `selectCompany`, `fillAddress`
213
+ - Login/autenticação sempre via `cy.request` (não via UI) — mais rápido e estável
214
+ - Tipar os parâmetros com union types quando há opções fixas
215
+ - Registrar em `support/commands.ts` e declarar tipo em `support/index.d.ts`
216
+
217
+ ---
218
+
219
+ ## 9. Cenários Obrigatórios por Spec
220
+
221
+ Toda spec deve cobrir no mínimo:
222
+
223
+ | Cenário | Obrigatório? |
224
+ |---------|-------------|
225
+ | Happy Path — fluxo principal com dados válidos | ✅ Sempre |
226
+ | Edge Case — dados limite, campos opcionais | ✅ Se aplicável |
227
+ | Negative Test — dados inválidos, erros esperados | ✅ Se há validação |
228
+ | Estado vazio — lista sem itens, tela inicial | ⚠️ Quando relevante |
229
+ | Permissão — comportamento por perfil de usuário | ⚠️ Quando há controle de acesso |
230
+
231
+ ---
232
+
233
+ ## 10. Antipadrões — Nunca Fazer
234
+
235
+ ```typescript
236
+ // ❌ Seletor frágil
237
+ cy.get('.btn-primary').click()
238
+ cy.get('#submit').click()
239
+
240
+ // ✅ Correto
241
+ cy.get('[data-testid="btn-auth-submit"]').click()
242
+
243
+ // ❌ Sleep hardcoded
244
+ cy.wait(3000)
245
+
246
+ // ✅ Correto — aguardar elemento ou intercept
247
+ cy.wait('@postLogin')
248
+ cy.get('[data-testid="dashboard-title"]').should('be.visible')
249
+
250
+ // ❌ Lógica condicional no teste
251
+ if (Cypress.env('USE_MOCK')) { ... }
252
+
253
+ // ✅ Correto — sempre interceptar, nunca depender de flag
254
+
255
+ // ❌ Dependência entre testes
256
+ // Teste 2 só funciona se Teste 1 rodou antes
257
+
258
+ // ✅ Correto — cada `it` deve ser independente (usar beforeEach para setup)
259
+ ```
@@ -0,0 +1,137 @@
1
+ # Regras de Sessão de Teste Exploratório — QA Engineering
2
+
3
+ > **Applies to:** HUB: QA | POSITION: all | AREA: ENGINEERING | SQUAD: all
4
+
5
+ Convenções para planejamento, execução e documentação de sessões de teste exploratório estruturado.
6
+ Carregadas automaticamente pelo `warm-up` quando `HUB=QA`.
7
+
8
+ ---
9
+
10
+ ## 1. Estrutura de Charter
11
+
12
+ Todo teste exploratório começa com um **charter** — a declaração do objetivo da sessão.
13
+
14
+ **Formato obrigatório:**
15
+
16
+ ```
17
+ Explorar {área/feature/fluxo}
18
+ para descobrir {tipo de informação / riscos a validar}
19
+ com foco em {dimensão de qualidade}
20
+ ```
21
+
22
+ **Exemplos:**
23
+
24
+ ```
25
+ Explorar o fluxo de cadastro de veículos
26
+ para descobrir comportamentos inesperados em campos opcionais e limites de dados
27
+ com foco em robustez e validação de formulário
28
+
29
+ Explorar a integração de pagamentos após alteração de plano
30
+ para descobrir regressões introduzidas pela última release
31
+ com foco em consistência de estado e mensagens ao usuário
32
+ ```
33
+
34
+ **Regras do charter:**
35
+ - Máximo 3 linhas — objetivo claro, não um roteiro detalhado
36
+ - Não listar passos no charter — exploração decide o caminho
37
+ - Um charter por sessão (sessões paralelas têm charters independentes)
38
+
39
+ ---
40
+
41
+ ## 2. Time-box Padrão
42
+
43
+ | Tipo de sessão | Duração | Quando usar |
44
+ |----------------|---------|-------------|
45
+ | Rápida (spot check) | 30 min | Verificação pontual, pós-fix rápido |
46
+ | Padrão | 60 min | Feature nova, área de risco moderado |
47
+ | Profunda | 90 min | Feature crítica, área de alto risco, pré-release |
48
+
49
+ **Regras de time-box:**
50
+ - Nunca estender uma sessão além do tempo definido — iniciar nova sessão se necessário
51
+ - Os primeiros 10 min são de setup e entendimento — não contam como execução
52
+ - Registrar hora de início e fim no documento de sessão
53
+ - Pausa obrigatória de 15 min entre sessões consecutivas
54
+
55
+ ---
56
+
57
+ ## 3. Classificação de Severidade de Bugs
58
+
59
+ | Severidade | Label | Critério | Ação imediata |
60
+ |------------|-------|----------|---------------|
61
+ | **Crítico** | `S1` | Sistema inutilizável, perda de dados, falha de segurança | Reportar imediatamente — não esperar fim da sessão |
62
+ | **Alto** | `S2` | Feature principal quebrada, sem workaround óbvio | Reportar ao final da sessão, com evidência |
63
+ | **Médio** | `S3` | Feature funciona mas com comportamento incorreto ou inconsistente | Registrar no doc da sessão, criar card após |
64
+ | **Baixo** | `S4` | UI incorreta, texto errado, comportamento subótimo mas funcional | Registrar no doc da sessão, agrupar em batch |
65
+ | **Melhoria** | `S5` | Não é bug — sugestão de UX ou comportamento melhor | Separar claramente de bugs reais |
66
+
67
+ **Regras de severidade:**
68
+ - Nunca sub-reportar para "não incomodar" — severidade é objetiva, não subjetiva
69
+ - Um bug S1 interrompe a sessão e é reportado via canal direto ao time
70
+ - Bugs S4 e S5 podem ser agrupados em um card único "ajustes UI/UX — {área}"
71
+
72
+ ---
73
+
74
+ ## 4. Critérios de Parada de Sessão
75
+
76
+ Encerrar a sessão antes do time-box quando:
77
+
78
+ | Critério | Ação |
79
+ |----------|------|
80
+ | Bug S1 encontrado | Interromper, reportar imediatamente, documentar contexto |
81
+ | Ambiente instável (falhas de infra, não de software) | Encerrar, registrar causa, reagendar |
82
+ | Charter atingido antes do tempo | Encerrar normalmente, registrar cobertura atingida |
83
+ | Descoberta muda completamente o escopo | Encerrar, definir novo charter para próxima sessão |
84
+
85
+ **Nunca encerrar uma sessão sem:**
86
+ - Registrar o que foi explorado (mesmo que parcialmente)
87
+ - Classificar cada achado com severidade
88
+ - Marcar se o charter foi atingido (`completo`, `parcial`, `bloqueado`)
89
+
90
+ ---
91
+
92
+ ## 5. Dimensões de Qualidade para Foco
93
+
94
+ Ao definir o charter, escolher no máximo 2 dimensões de qualidade:
95
+
96
+ | Dimensão | O que verificar |
97
+ |----------|----------------|
98
+ | **Funcionalidade** | O comportamento faz o que a spec diz? |
99
+ | **Robustez** | Reage bem a entradas inesperadas, limites, dados faltantes? |
100
+ | **Consistência** | Estado do sistema permanece coerente após a ação? |
101
+ | **Performance percebida** | Tempos de resposta aceitáveis para o usuário? |
102
+ | **Acessibilidade** | Navegação por teclado, leitores de tela, contraste? |
103
+ | **Segurança superficial** | Dados expostos indevidamente, autorização correta? |
104
+ | **Integração** | Comunicação correta com outros módulos/serviços? |
105
+ | **Regressão** | Funcionalidades existentes ainda funcionam após mudança? |
106
+
107
+ ---
108
+
109
+ ## 6. Evidências Obrigatórias
110
+
111
+ Para cada bug reportado:
112
+
113
+ ```
114
+ - Severidade: S{1-5}
115
+ - Passos para reproduzir: numerados, a partir do estado inicial
116
+ - Comportamento observado: o que aconteceu
117
+ - Comportamento esperado: o que deveria acontecer
118
+ - Evidência: screenshot, vídeo ou log (obrigatório para S1/S2)
119
+ - Ambiente: URL/versão/dados usados no momento do bug
120
+ - Reprodutível?: sim / às vezes / não consegui reproduzir novamente
121
+ ```
122
+
123
+ ---
124
+
125
+ ## 7. Integração com `eng-qa-bug-report`
126
+
127
+ Ao final de cada sessão, para cada achado S1–S4, acionar o skill `eng-qa-bug-report`:
128
+
129
+ ```
130
+ /eng-qa-bug-report create
131
+ --title="{descrição concisa}"
132
+ --severity="S{1-4}"
133
+ --session="{id da sessão}"
134
+ --passos="{passos reproduzidos}"
135
+ ```
136
+
137
+ Achados S5 (melhorias) são registrados apenas no doc da sessão — não viram card automaticamente.
@@ -0,0 +1,181 @@
1
+ > **Applies to:** HUB: QA | POSITION: QA-ENGINEER, SPECIALIST | AREA: ENGINEERING | SQUAD: all
2
+
3
+ # Regras de Classificação de Score
4
+
5
+ Sistema de pontuação e bloqueio para quality gates de tech specs.
6
+
7
+ ## Faixas de Score
8
+
9
+ ### 🚫 BLOQUEANTE - Score < 50%
10
+
11
+ **Status**: Não conforme
12
+ **Label**: `QualityGate::Bloqueado`
13
+ **Ação**: Card **NÃO PODE** prosseguir para breakdown. Deve retornar para refinamento.
14
+
15
+ #### Quando bloquear:
16
+ - Faltam 3 ou mais critérios obrigatórios
17
+ - Descrição completamente vazia ou genérica
18
+ - SPIKE sem referências de discovery
19
+ - Critérios de aceitação ausentes ou muito vagos
20
+ - Bug sem passos para reproduzir
21
+ - Análise técnica inexistente ou incompleta
22
+ - Subtarefas propostas são fatias horizontais (só enum, só repository, só factory, só DTO, só contratos sem implementação funcional) ou não passam no Teste de Validação de independência
23
+
24
+ #### Mensagem ao time:
25
+ > ⚠️ **Card bloqueado para breakdown**. Tech spec não atende aos critérios mínimos de qualidade. Refine conforme recomendações e solicite nova análise.
26
+
27
+ ---
28
+
29
+ ### ⚠️ PARCIAL - Score 50-99%
30
+
31
+ **Status**: Parcialmente conforme
32
+ **Label**: `QualityGate::Parcial`
33
+ **Ação**: Card **PODE** prosseguir, mas com ressalvas. Recomenda-se refinamento antes.
34
+
35
+ #### Quando classificar como parcial:
36
+ - 1-2 critérios obrigatórios faltando
37
+ - Critérios presentes mas podem ser melhorados
38
+ - Faltam alguns cenários de teste
39
+ - Análise técnica superficial
40
+ - Dependências parcialmente mapeadas
41
+
42
+ #### Mensagem ao time:
43
+ > ℹ️ **Card pode prosseguir com ressalvas**. A tech spec está funcional mas pode ser melhorada. Considere as recomendações para aumentar qualidade.
44
+
45
+ ---
46
+
47
+ ### ✅ CONFORME - Score 100%
48
+
49
+ **Status**: Conforme
50
+ **Label**: `QualityGate::Conforme`
51
+ **Ação**: Card está **PRONTO** para breakdown de subtarefas.
52
+
53
+ #### Quando aprovar:
54
+ - Todos os critérios obrigatórios atendidos
55
+ - Tech spec clara, completa e acionável
56
+ - Equipe pode iniciar implementação sem dúvidas
57
+ - Critérios de aceitação mensuráveis
58
+ - Cenários de teste identificados
59
+ - Análise técnica detalhada
60
+ - Dependências mapeadas
61
+
62
+ #### Mensagem ao time:
63
+ > ✅ **Tech spec aprovada!** Todos os critérios de qualidade atendidos. Card pronto para breakdown de subtarefas.
64
+
65
+ ---
66
+
67
+ ## Cálculo de Score
68
+
69
+ ### Metodologia
70
+
71
+ 1. **Identificar critérios obrigatórios** do tipo de card (Task/Spike/Bug)
72
+ 2. **Verificar cada critério**: Atendido = 1 ponto, Não atendido = 0 pontos
73
+ 3. **Calcular percentual**: (Critérios atendidos / Total critérios) × 100
74
+
75
+ ### Exemplo: Task
76
+
77
+ | Critério | Atendido? | Peso |
78
+ |----------|-----------|------|
79
+ | Descrição Clara | ✅ Sim | 15% |
80
+ | Critérios de Aceitação | ✅ Sim | 20% |
81
+ | Cenários de Teste | ❌ Não | 15% |
82
+ | Análise Técnica | ✅ Sim | 15% |
83
+ | Dependências | ⚠️ Parcial | 10% |
84
+ | **Valor Unitário (fatia vertical)** | ✅ Sim | **25%** |
85
+
86
+ **Score**: 80/100 → **Parcial**
87
+
88
+ > **Critério 6 — Valor Unitário (fatia vertical)** é o critério de maior peso. Avalia se as subtarefas propostas são **entregáveis completos e independentes** (endpoint inteiro, modal inteiro, tela inteira) e **não** fatias horizontais (só enum, só repository, só factory, só DTO). Uma subtarefa só é válida se, mergeada isoladamente, a aplicação continua funcionando e a entrega é observável.
89
+
90
+ ---
91
+
92
+ ## Matriz de Decisão
93
+
94
+ | Score | Status | Label | Pode prosseguir? | Ação requerida |
95
+ |-------|--------|-------|------------------|----------------|
96
+ | 0-49% | 🚫 Não conforme | `QualityGate::Bloqueado` | ❌ Não | Refinamento obrigatório |
97
+ | 50-99% | ⚠️ Parcial | `QualityGate::Parcial` | ⚠️ Com ressalvas | Refinamento recomendado |
98
+ | 100% | ✅ Conforme | `QualityGate::Conforme` | ✅ Sim | Prosseguir para breakdown |
99
+
100
+ ---
101
+
102
+ ## Regras Especiais
103
+
104
+ ### Critérios Críticos (Bloqueantes Automáticos)
105
+
106
+ Mesmo com score > 50%, o card é **automaticamente bloqueado** se:
107
+
108
+ #### Para SPIKE:
109
+ - ❌ Ausência completa de referências de discovery
110
+
111
+ #### Para BUG:
112
+ - ❌ Ausência de passos para reproduzir
113
+ - ❌ Ausência de análise técnica
114
+
115
+ #### Para TASK:
116
+ - ❌ Ausência de critérios de aceitação
117
+ - ❌ Descrição vazia ou extremamente genérica (< 50 caracteres)
118
+ - ❌ Subtarefas propostas são fatias horizontais (split por camada) — ex: cards separados para "criar enum", "criar repository", "criar factory", "criar DTO", "criar contratos/interfaces" sem implementação funcional
119
+ - ❌ Subtarefas não passam no Teste de Validação de independência (não mergeáveis isoladamente sem quebrar o sistema)
120
+
121
+ ### Exemplo:
122
+ ```
123
+ Score calculado: 60% (Parcial)
124
+ Mas: Task sem critérios de aceitação
125
+ Resultado final: BLOQUEADO (critério crítico não atendido)
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Processo de Reavaliação
131
+
132
+ ### Após Correções
133
+
134
+ 1. Desenvolvedor corrige problemas apontados
135
+ 2. Solicita nova análise (comentário mencionando Quality Champion)
136
+ 3. Nova validação é realizada
137
+ 4. Score é recalculado
138
+ 5. Label é atualizada
139
+
140
+ ### Histórico de Validações
141
+
142
+ Cada validação deve incluir:
143
+ - Data/hora da análise
144
+ - Score obtido
145
+ - Status resultante
146
+ - Principais gaps identificados
147
+
148
+ Isso permite rastreabilidade e melhoria contínua do processo.
149
+
150
+ ---
151
+
152
+ ## Exceções e Escalação
153
+
154
+ ### Quando Escalar
155
+
156
+ Em casos excepcionais, pode-se solicitar aprovação manual:
157
+
158
+ - Urgência crítica (produção parada)
159
+ - Contexto especial conhecido pelo time
160
+ - Tech spec de spike exploratório inicial
161
+
162
+ **Processo**:
163
+ 1. Adicionar comentário justificando exceção
164
+ 2. Mencionar tech lead ou arquiteto
165
+ 3. Obter aprovação explícita
166
+ 4. Documentar decisão no card
167
+
168
+ **Label**: `QualityGate::Exceção` (substitui label automática)
169
+
170
+ ---
171
+
172
+ ## Métricas de Qualidade
173
+
174
+ ### KPIs Sugeridos
175
+
176
+ - **Taxa de conformidade**: % de cards com score 100%
177
+ - **Taxa de bloqueio**: % de cards < 50%
178
+ - **Tempo médio de refinamento**: Tempo entre bloqueio e aprovação
179
+ - **Reincidência**: Cards bloqueados > 1 vez
180
+
181
+ Essas métricas ajudam a identificar gaps de processo e melhorar qualidade geral das tech specs.
@@ -0,0 +1,120 @@
1
+ > **Applies to:** HUB: QA | POSITION: QA-ENGINEER, SPECIALIST | AREA: ENGINEERING | SQUAD: all
2
+
3
+ # Critérios de Validação de Tech Spec
4
+
5
+ Critérios objetivos para validação de especificações técnicas, organizados por tipo de card.
6
+
7
+ ## Para TASKS Normais
8
+
9
+ ### ✅ Obrigatório (Bloqueante)
10
+
11
+ #### 1. Descrição Clara e Objetiva
12
+ - Contexto do problema/necessidade
13
+ - Objetivo da tarefa bem definido
14
+ - Escopo delimitado
15
+
16
+ #### 2. Critérios de Aceitação
17
+ - Pelo menos 3 critérios bem definidos
18
+ - Critérios específicos e mensuráveis
19
+ - Formato: "O sistema deve..." ou "Quando... então..."
20
+
21
+ #### 3. Cenários de Teste
22
+ - Pelo menos 2 cenários identificados
23
+ - Casos de sucesso definidos
24
+ - Casos de erro/exceção identificados
25
+
26
+ #### 4. Análise Técnica
27
+ - Abordagem técnica documentada
28
+ - Tecnologias/bibliotecas a serem utilizadas
29
+ - Impactos em outras partes do sistema identificados
30
+
31
+ #### 5. Dependências
32
+ - Dependências técnicas mapeadas
33
+ - Dependências de outros cards identificadas (se houver)
34
+
35
+ ### ⚡ Desejável (Não Bloqueante)
36
+
37
+ - Estimativa de complexidade (P, M, G)
38
+ - Riscos identificados
39
+ - Alternativas de implementação consideradas
40
+ - Diagrama ou fluxo (quando aplicável)
41
+
42
+ ---
43
+
44
+ ## Para SPIKE (Discovery)
45
+
46
+ ### ✅ Obrigatório (Bloqueante)
47
+
48
+ #### 1. Objetivo do Spike
49
+ - O que precisa ser investigado/descoberto
50
+ - Perguntas que precisam ser respondidas
51
+ - Escopo bem definido
52
+
53
+ #### 2. Referência de Discovery
54
+ - **CRÍTICO**: Local onde será realizado o discovery
55
+ - Links para documentação oficial
56
+ - APIs, SDKs ou ferramentas a serem investigadas
57
+ - Exemplo: "Banco Rendimento - https://desenvolvedores.rendimento.com.br/api-portal/"
58
+
59
+ #### 3. Critérios de Conclusão
60
+ - O que define o spike como concluído
61
+ - Entregáveis esperados (POC, documento, análise comparativa, etc.)
62
+ - Tempo máximo estimado
63
+
64
+ #### 4. Contexto e Justificativa
65
+ - Por que este spike é necessário
66
+ - Qual decisão depende deste discovery
67
+
68
+ ### ⚡ Desejável (Não Bloqueante)
69
+
70
+ - Alternativas a serem comparadas
71
+ - Critérios de avaliação
72
+ - Impacto da decisão no projeto
73
+
74
+ ---
75
+
76
+ ## Para BUG
77
+
78
+ ### ✅ Obrigatório (Bloqueante)
79
+
80
+ #### 1. Descrição do Bug
81
+ - Comportamento esperado
82
+ - Comportamento atual (incorreto)
83
+ - Impacto do bug
84
+
85
+ #### 2. Passos para Reproduzir
86
+ - Lista numerada e clara
87
+ - Dados de teste necessários
88
+ - Ambiente onde ocorre
89
+
90
+ #### 3. Análise Técnica
91
+ - Causa raiz identificada (ou hipótese)
92
+ - Arquivos/componentes afetados
93
+ - Solução proposta
94
+
95
+ #### 4. Severidade e Prioridade
96
+ - Classificação de severidade
97
+ - Justificativa da prioridade
98
+
99
+ ---
100
+
101
+ ## Checklist Rápido por Tipo
102
+
103
+ ### Task
104
+ - [ ] Descrição com contexto, objetivo e escopo
105
+ - [ ] Mínimo 3 critérios de aceitação mensuráveis
106
+ - [ ] Mínimo 2 cenários de teste (sucesso + erro)
107
+ - [ ] Análise técnica com stack e impactos
108
+ - [ ] Dependências mapeadas
109
+
110
+ ### Spike
111
+ - [ ] Objetivo e perguntas definidas
112
+ - [ ] **Referências de discovery** (docs, APIs, SDKs)
113
+ - [ ] Critérios de conclusão e entregáveis
114
+ - [ ] Contexto e justificativa do spike
115
+
116
+ ### Bug
117
+ - [ ] Comportamento esperado vs atual
118
+ - [ ] Passos para reproduzir numerados
119
+ - [ ] Causa raiz e arquivos afetados
120
+ - [ ] Severidade e prioridade justificadas