synapos 2.5.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 (238) hide show
  1. package/.github/copilot-instructions.md +72 -0
  2. package/.synapos/.manifest.json +155 -0
  3. package/.synapos/GUIDE.md +660 -0
  4. package/.synapos/VERSION +1 -0
  5. package/.synapos/_memory/company.md +11 -0
  6. package/.synapos/_memory/preferences.md +15 -0
  7. package/.synapos/copilot.md +451 -0
  8. package/.synapos/core/best-practices/_catalog.yaml +56 -0
  9. package/.synapos/core/best-practices/content/blog-post.md +238 -0
  10. package/.synapos/core/best-practices/content/copywriting.md +164 -0
  11. package/.synapos/core/best-practices/content/linkedin-post.md +186 -0
  12. package/.synapos/core/best-practices/dev/api-design.md +274 -0
  13. package/.synapos/core/best-practices/dev/code-review.md +138 -0
  14. package/.synapos/core/best-practices/dev/git-workflow.md +256 -0
  15. package/.synapos/core/best-practices/dev/testing-strategy.md +213 -0
  16. package/.synapos/core/best-practices/product/product-spec.md +235 -0
  17. package/.synapos/core/best-practices/product/technical-writing.md +264 -0
  18. package/.synapos/core/best-practices/product/user-research.md +242 -0
  19. package/.synapos/core/commands/bump.md +59 -0
  20. package/.synapos/core/commands/debug/session.md +100 -0
  21. package/.synapos/core/commands/migrate/v1-to-v2.md +142 -0
  22. package/.synapos/core/commands/set-model.md +197 -0
  23. package/.synapos/core/commands/setup/build-business.md +378 -0
  24. package/.synapos/core/commands/setup/build-tech.md +374 -0
  25. package/.synapos/core/commands/setup/discover.md +543 -0
  26. package/.synapos/core/commands/setup/from-code.md +407 -0
  27. package/.synapos/core/commands/setup/start.md +201 -0
  28. package/.synapos/core/copilot-adapter.md +283 -0
  29. package/.synapos/core/gate-system.md +417 -0
  30. package/.synapos/core/model-adapter.md +245 -0
  31. package/.synapos/core/orchestrator.md +794 -0
  32. package/.synapos/core/pipeline-runner.md +784 -0
  33. package/.synapos/core/pipelines/pre-execution.yaml +107 -0
  34. package/.synapos/core/rules/product-agent.mdc +59 -0
  35. package/.synapos/core/skills-engine.md +207 -0
  36. package/.synapos/core/versioning.md +218 -0
  37. package/.synapos/skills/.gitkeep +0 -0
  38. package/.synapos/skills/brave-search/SKILL.md +130 -0
  39. package/.synapos/skills/fetch-url/SKILL.md +135 -0
  40. package/.synapos/skills/filesystem/SKILL.md +162 -0
  41. package/.synapos/skills/github/SKILL.md +148 -0
  42. package/.synapos/skills/playwright-browser/SKILL.md +124 -0
  43. package/.synapos/squad-templates/backend/agents/alexandre-api.agent.md +243 -0
  44. package/.synapos/squad-templates/backend/agents/bruno-base.agent.md +240 -0
  45. package/.synapos/squad-templates/backend/agents/daniela-dados.agent.md +267 -0
  46. package/.synapos/squad-templates/backend/agents/roberto-revisao-be.agent.md +219 -0
  47. package/.synapos/squad-templates/backend/agents/sergio-seguranca.agent.md +266 -0
  48. package/.synapos/squad-templates/backend/pipelines/api-development.yaml +83 -0
  49. package/.synapos/squad-templates/backend/pipelines/bug-fix.yaml +41 -0
  50. package/.synapos/squad-templates/backend/pipelines/database-migration.yaml +56 -0
  51. package/.synapos/squad-templates/backend/pipelines/quick-fix.yaml +40 -0
  52. package/.synapos/squad-templates/backend/pipelines/steps/01-gate-integridade.md +66 -0
  53. package/.synapos/squad-templates/backend/pipelines/steps/02-design-api.md +155 -0
  54. package/.synapos/squad-templates/backend/pipelines/steps/03-checkpoint-contrato.md +44 -0
  55. package/.synapos/squad-templates/backend/pipelines/steps/04-implementacao.md +113 -0
  56. package/.synapos/squad-templates/backend/pipelines/steps/05-seguranca.md +100 -0
  57. package/.synapos/squad-templates/backend/pipelines/steps/06-review.md +80 -0
  58. package/.synapos/squad-templates/backend/pipelines/steps/atualizar-tarefa.md +138 -0
  59. package/.synapos/squad-templates/backend/pipelines/steps/bfbe-02-diagnostico.md +47 -0
  60. package/.synapos/squad-templates/backend/pipelines/steps/bfbe-03-fix.md +41 -0
  61. package/.synapos/squad-templates/backend/pipelines/steps/bfbe-04-review.md +42 -0
  62. package/.synapos/squad-templates/backend/pipelines/steps/dm-02-schema.md +85 -0
  63. package/.synapos/squad-templates/backend/pipelines/steps/dm-03-checkpoint.md +30 -0
  64. package/.synapos/squad-templates/backend/pipelines/steps/dm-04-migration.md +58 -0
  65. package/.synapos/squad-templates/backend/pipelines/steps/dm-05-review.md +44 -0
  66. package/.synapos/squad-templates/backend/pipelines/steps/qf-02-contexto.md +34 -0
  67. package/.synapos/squad-templates/backend/pipelines/steps/qf-03-executar.md +49 -0
  68. package/.synapos/squad-templates/backend/pipelines/steps/qf-04-registrar.md +35 -0
  69. package/.synapos/squad-templates/backend/template.yaml +72 -0
  70. package/.synapos/squad-templates/devops/agents/claudio-containers.agent.md +245 -0
  71. package/.synapos/squad-templates/devops/agents/igor-infra.agent.md +198 -0
  72. package/.synapos/squad-templates/devops/agents/osvaldo-observabilidade.agent.md +262 -0
  73. package/.synapos/squad-templates/devops/agents/patricia-pipeline.agent.md +253 -0
  74. package/.synapos/squad-templates/devops/pipelines/ci-cd-setup.yaml +93 -0
  75. package/.synapos/squad-templates/devops/pipelines/infra-provision.yaml +56 -0
  76. package/.synapos/squad-templates/devops/pipelines/quick-fix.yaml +41 -0
  77. package/.synapos/squad-templates/devops/pipelines/steps/01-gate-integridade.md +62 -0
  78. package/.synapos/squad-templates/devops/pipelines/steps/02-infra-design.md +31 -0
  79. package/.synapos/squad-templates/devops/pipelines/steps/03-containers.md +28 -0
  80. package/.synapos/squad-templates/devops/pipelines/steps/04-checkpoint.md +20 -0
  81. package/.synapos/squad-templates/devops/pipelines/steps/05-pipeline-cicd.md +29 -0
  82. package/.synapos/squad-templates/devops/pipelines/steps/06-observabilidade.md +28 -0
  83. package/.synapos/squad-templates/devops/pipelines/steps/07-review.md +27 -0
  84. package/.synapos/squad-templates/devops/pipelines/steps/atualizar-tarefa.md +138 -0
  85. package/.synapos/squad-templates/devops/pipelines/steps/ip-02-design.md +21 -0
  86. package/.synapos/squad-templates/devops/pipelines/steps/ip-03-iac.md +20 -0
  87. package/.synapos/squad-templates/devops/pipelines/steps/ip-04-checkpoint.md +22 -0
  88. package/.synapos/squad-templates/devops/pipelines/steps/ip-05-apply.md +22 -0
  89. package/.synapos/squad-templates/devops/pipelines/steps/qf-02-contexto.md +34 -0
  90. package/.synapos/squad-templates/devops/pipelines/steps/qf-03-executar.md +52 -0
  91. package/.synapos/squad-templates/devops/pipelines/steps/qf-04-registrar.md +35 -0
  92. package/.synapos/squad-templates/devops/template.yaml +68 -0
  93. package/.synapos/squad-templates/engineer/agents/leo-engenheiro.agent.md +203 -0
  94. package/.synapos/squad-templates/engineer/pipeline/steps/01-gate.md +22 -0
  95. package/.synapos/squad-templates/engineer/pipeline/steps/02-preparacao.md +66 -0
  96. package/.synapos/squad-templates/engineer/pipeline/steps/03-investigacao.md +110 -0
  97. package/.synapos/squad-templates/engineer/pipeline/steps/04-checkpoint-contexto.md +24 -0
  98. package/.synapos/squad-templates/engineer/pipeline/steps/05-arquitetura.md +127 -0
  99. package/.synapos/squad-templates/engineer/pipeline/steps/06-checkpoint-arquitetura.md +27 -0
  100. package/.synapos/squad-templates/engineer/pipeline/steps/07-planejamento.md +109 -0
  101. package/.synapos/squad-templates/engineer/pipeline/steps/08-checkpoint-plano.md +27 -0
  102. package/.synapos/squad-templates/engineer/pipeline/steps/09-execucao.md +121 -0
  103. package/.synapos/squad-templates/engineer/pipeline/steps/atualizar-tarefa.md +27 -0
  104. package/.synapos/squad-templates/engineer/pipeline/steps/visual-spec.md +74 -0
  105. package/.synapos/squad-templates/engineer/pipelines/feature-development.yaml +107 -0
  106. package/.synapos/squad-templates/engineer/template.yaml +56 -0
  107. package/.synapos/squad-templates/frontend/agents/ana-arquitetura-fe.agent.md +245 -0
  108. package/.synapos/squad-templates/frontend/agents/paulo-performance.agent.md +234 -0
  109. package/.synapos/squad-templates/frontend/agents/renata-revisao-fe.agent.md +219 -0
  110. package/.synapos/squad-templates/frontend/agents/rodrigo-react.agent.md +261 -0
  111. package/.synapos/squad-templates/frontend/agents/tiago-testes-fe.agent.md +229 -0
  112. package/.synapos/squad-templates/frontend/agents/ursula-ui.agent.md +283 -0
  113. package/.synapos/squad-templates/frontend/pipelines/bug-fix.yaml +40 -0
  114. package/.synapos/squad-templates/frontend/pipelines/component-development.yaml +48 -0
  115. package/.synapos/squad-templates/frontend/pipelines/feature-development.yaml +76 -0
  116. package/.synapos/squad-templates/frontend/pipelines/quick-fix.yaml +40 -0
  117. package/.synapos/squad-templates/frontend/pipelines/steps/01-gate-integridade.md +66 -0
  118. package/.synapos/squad-templates/frontend/pipelines/steps/02-arquitetura.md +100 -0
  119. package/.synapos/squad-templates/frontend/pipelines/steps/03-checkpoint-design.md +43 -0
  120. package/.synapos/squad-templates/frontend/pipelines/steps/04-implementacao.md +114 -0
  121. package/.synapos/squad-templates/frontend/pipelines/steps/05-review.md +104 -0
  122. package/.synapos/squad-templates/frontend/pipelines/steps/06-docs.md +51 -0
  123. package/.synapos/squad-templates/frontend/pipelines/steps/atualizar-tarefa.md +138 -0
  124. package/.synapos/squad-templates/frontend/pipelines/steps/bf-02-diagnostico.md +52 -0
  125. package/.synapos/squad-templates/frontend/pipelines/steps/bf-03-fix.md +58 -0
  126. package/.synapos/squad-templates/frontend/pipelines/steps/bf-04-review.md +43 -0
  127. package/.synapos/squad-templates/frontend/pipelines/steps/cd-02-spec.md +96 -0
  128. package/.synapos/squad-templates/frontend/pipelines/steps/qf-02-contexto.md +34 -0
  129. package/.synapos/squad-templates/frontend/pipelines/steps/qf-03-executar.md +45 -0
  130. package/.synapos/squad-templates/frontend/pipelines/steps/qf-04-registrar.md +35 -0
  131. package/.synapos/squad-templates/frontend/template.yaml +77 -0
  132. package/.synapos/squad-templates/fullstack/agents/carlos-coordenador.agent.md +266 -0
  133. package/.synapos/squad-templates/fullstack/pipelines/bug-fix.yaml +46 -0
  134. package/.synapos/squad-templates/fullstack/pipelines/integration-feature.yaml +92 -0
  135. package/.synapos/squad-templates/fullstack/pipelines/quick-fix.yaml +40 -0
  136. package/.synapos/squad-templates/fullstack/pipelines/steps/01-gate-integridade.md +66 -0
  137. package/.synapos/squad-templates/fullstack/pipelines/steps/02-contrato-api.md +63 -0
  138. package/.synapos/squad-templates/fullstack/pipelines/steps/03-checkpoint-contrato.md +25 -0
  139. package/.synapos/squad-templates/fullstack/pipelines/steps/04-frontend.md +35 -0
  140. package/.synapos/squad-templates/fullstack/pipelines/steps/05-backend.md +36 -0
  141. package/.synapos/squad-templates/fullstack/pipelines/steps/06-integracao.md +47 -0
  142. package/.synapos/squad-templates/fullstack/pipelines/steps/07-review.md +49 -0
  143. package/.synapos/squad-templates/fullstack/pipelines/steps/atualizar-tarefa.md +138 -0
  144. package/.synapos/squad-templates/fullstack/pipelines/steps/bf-02-diagnostico.md +34 -0
  145. package/.synapos/squad-templates/fullstack/pipelines/steps/bf-03-fix.md +22 -0
  146. package/.synapos/squad-templates/fullstack/pipelines/steps/bf-04-review.md +22 -0
  147. package/.synapos/squad-templates/fullstack/pipelines/steps/qf-02-contexto.md +34 -0
  148. package/.synapos/squad-templates/fullstack/pipelines/steps/qf-03-executar.md +49 -0
  149. package/.synapos/squad-templates/fullstack/pipelines/steps/qf-04-registrar.md +35 -0
  150. package/.synapos/squad-templates/fullstack/template.yaml +93 -0
  151. package/.synapos/squad-templates/ia-dados/agents/diana-dados.agent.md +269 -0
  152. package/.synapos/squad-templates/ia-dados/agents/larissa-llm.agent.md +255 -0
  153. package/.synapos/squad-templates/ia-dados/agents/marco-ml.agent.md +227 -0
  154. package/.synapos/squad-templates/ia-dados/agents/nelson-notebook.agent.md +252 -0
  155. package/.synapos/squad-templates/ia-dados/pipelines/data-pipeline.yaml +71 -0
  156. package/.synapos/squad-templates/ia-dados/pipelines/ml-feature.yaml +91 -0
  157. package/.synapos/squad-templates/ia-dados/pipelines/quick-fix.yaml +40 -0
  158. package/.synapos/squad-templates/ia-dados/pipelines/steps/01-gate-integridade.md +62 -0
  159. package/.synapos/squad-templates/ia-dados/pipelines/steps/02-exploracao.md +36 -0
  160. package/.synapos/squad-templates/ia-dados/pipelines/steps/03-design.md +25 -0
  161. package/.synapos/squad-templates/ia-dados/pipelines/steps/04-checkpoint.md +23 -0
  162. package/.synapos/squad-templates/ia-dados/pipelines/steps/05-implementacao.md +26 -0
  163. package/.synapos/squad-templates/ia-dados/pipelines/steps/06-avaliacao.md +29 -0
  164. package/.synapos/squad-templates/ia-dados/pipelines/steps/07-deploy.md +30 -0
  165. package/.synapos/squad-templates/ia-dados/pipelines/steps/atualizar-tarefa.md +138 -0
  166. package/.synapos/squad-templates/ia-dados/pipelines/steps/dp-02-design.md +21 -0
  167. package/.synapos/squad-templates/ia-dados/pipelines/steps/dp-03-checkpoint.md +14 -0
  168. package/.synapos/squad-templates/ia-dados/pipelines/steps/dp-04-implementacao.md +19 -0
  169. package/.synapos/squad-templates/ia-dados/pipelines/steps/dp-05-qualidade.md +21 -0
  170. package/.synapos/squad-templates/ia-dados/pipelines/steps/dp-06-deploy.md +22 -0
  171. package/.synapos/squad-templates/ia-dados/pipelines/steps/qf-02-contexto.md +34 -0
  172. package/.synapos/squad-templates/ia-dados/pipelines/steps/qf-03-executar.md +53 -0
  173. package/.synapos/squad-templates/ia-dados/pipelines/steps/qf-04-registrar.md +35 -0
  174. package/.synapos/squad-templates/ia-dados/template.yaml +68 -0
  175. package/.synapos/squad-templates/mobile/agents/felipe-feature.agent.md +234 -0
  176. package/.synapos/squad-templates/mobile/agents/marina-mobile.agent.md +219 -0
  177. package/.synapos/squad-templates/mobile/agents/viviane-visual.agent.md +218 -0
  178. package/.synapos/squad-templates/mobile/pipelines/bug-fix.yaml +47 -0
  179. package/.synapos/squad-templates/mobile/pipelines/feature-development.yaml +77 -0
  180. package/.synapos/squad-templates/mobile/pipelines/quick-fix.yaml +40 -0
  181. package/.synapos/squad-templates/mobile/pipelines/steps/01-gate-integridade.md +62 -0
  182. package/.synapos/squad-templates/mobile/pipelines/steps/02-arquitetura.md +35 -0
  183. package/.synapos/squad-templates/mobile/pipelines/steps/03-design-ux.md +29 -0
  184. package/.synapos/squad-templates/mobile/pipelines/steps/04-checkpoint.md +20 -0
  185. package/.synapos/squad-templates/mobile/pipelines/steps/05-implementacao.md +26 -0
  186. package/.synapos/squad-templates/mobile/pipelines/steps/06-review.md +27 -0
  187. package/.synapos/squad-templates/mobile/pipelines/steps/atualizar-tarefa.md +138 -0
  188. package/.synapos/squad-templates/mobile/pipelines/steps/bf-02-diagnostico.md +22 -0
  189. package/.synapos/squad-templates/mobile/pipelines/steps/bf-03-fix.md +23 -0
  190. package/.synapos/squad-templates/mobile/pipelines/steps/bf-04-review.md +20 -0
  191. package/.synapos/squad-templates/mobile/pipelines/steps/qf-02-contexto.md +34 -0
  192. package/.synapos/squad-templates/mobile/pipelines/steps/qf-03-executar.md +49 -0
  193. package/.synapos/squad-templates/mobile/pipelines/steps/qf-04-registrar.md +35 -0
  194. package/.synapos/squad-templates/mobile/template.yaml +73 -0
  195. package/.synapos/squad-templates/produto/agents/ana-analise.agent.md +243 -0
  196. package/.synapos/squad-templates/produto/agents/eduardo-estrategia.agent.md +258 -0
  197. package/.synapos/squad-templates/produto/agents/paulo-pesquisa.agent.md +226 -0
  198. package/.synapos/squad-templates/produto/agents/priscila-produto.agent.md +235 -0
  199. package/.synapos/squad-templates/produto/agents/tania-tecnica.agent.md +239 -0
  200. package/.synapos/squad-templates/produto/agents/ursula-ux.agent.md +231 -0
  201. package/.synapos/squad-templates/produto/pipelines/discovery-spec-handoff.yaml +152 -0
  202. package/.synapos/squad-templates/produto/pipelines/nova-feature.yaml +77 -0
  203. package/.synapos/squad-templates/produto/pipelines/quick-fix.yaml +40 -0
  204. package/.synapos/squad-templates/produto/pipelines/quick-spec.yaml +60 -0
  205. package/.synapos/squad-templates/produto/pipelines/refinar-docs.yaml +33 -0
  206. package/.synapos/squad-templates/produto/pipelines/steps/01-gate-integridade.md +48 -0
  207. package/.synapos/squad-templates/produto/pipelines/steps/02-contexto-negocio.md +119 -0
  208. package/.synapos/squad-templates/produto/pipelines/steps/03-personas.md +107 -0
  209. package/.synapos/squad-templates/produto/pipelines/steps/04-checkpoint-research.md +53 -0
  210. package/.synapos/squad-templates/produto/pipelines/steps/04b-alinhamento-estrategico.md +92 -0
  211. package/.synapos/squad-templates/produto/pipelines/steps/05-spec.md +138 -0
  212. package/.synapos/squad-templates/produto/pipelines/steps/05b-checkpoint-spec.md +60 -0
  213. package/.synapos/squad-templates/produto/pipelines/steps/06-requisitos.md +118 -0
  214. package/.synapos/squad-templates/produto/pipelines/steps/06b-checkpoint-requisitos.md +53 -0
  215. package/.synapos/squad-templates/produto/pipelines/steps/06c-visual-spec.md +59 -0
  216. package/.synapos/squad-templates/produto/pipelines/steps/07-arquitetura.md +160 -0
  217. package/.synapos/squad-templates/produto/pipelines/steps/08-handoff.md +130 -0
  218. package/.synapos/squad-templates/produto/pipelines/steps/nf-02-validar-requisito.md +73 -0
  219. package/.synapos/squad-templates/produto/pipelines/steps/nf-03-verificar-docs.md +69 -0
  220. package/.synapos/squad-templates/produto/pipelines/steps/nf-04-spec.md +160 -0
  221. package/.synapos/squad-templates/produto/pipelines/steps/nf-05-checkpoint-aprovacao.md +50 -0
  222. package/.synapos/squad-templates/produto/pipelines/steps/nf-06-versionar.md +71 -0
  223. package/.synapos/squad-templates/produto/pipelines/steps/nf-07-handoff.md +99 -0
  224. package/.synapos/squad-templates/produto/pipelines/steps/nf-08-criar-tarefas.md +232 -0
  225. package/.synapos/squad-templates/produto/pipelines/steps/qf-02-contexto.md +34 -0
  226. package/.synapos/squad-templates/produto/pipelines/steps/qf-03-executar.md +49 -0
  227. package/.synapos/squad-templates/produto/pipelines/steps/qf-04-registrar.md +35 -0
  228. package/.synapos/squad-templates/produto/pipelines/steps/qs-02-contexto.md +59 -0
  229. package/.synapos/squad-templates/produto/pipelines/steps/qs-03-spec.md +67 -0
  230. package/.synapos/squad-templates/produto/pipelines/steps/qs-05-handoff.md +49 -0
  231. package/.synapos/squad-templates/produto/pipelines/steps/rf-02-selecionar.md +66 -0
  232. package/.synapos/squad-templates/produto/pipelines/steps/rf-03-delta.md +73 -0
  233. package/.synapos/squad-templates/produto/pipelines/steps/rf-04-criar-versao.md +86 -0
  234. package/.synapos/squad-templates/produto/template.yaml +91 -0
  235. package/.synapos/squads/.gitkeep +0 -0
  236. package/README.md +285 -0
  237. package/bin/synapos.js +331 -0
  238. package/package.json +26 -0
@@ -0,0 +1,274 @@
1
+ ---
2
+ id: api-design
3
+ version: "1.0.0"
4
+ domain: [backend, fullstack]
5
+ whenToUse: "Quando o squad projeta ou documenta APIs REST ou GraphQL"
6
+ ---
7
+
8
+ # Design de API
9
+
10
+ > Convenções para criar APIs REST e GraphQL consistentes, versionadas e fáceis de consumir.
11
+
12
+ ---
13
+
14
+ ## REST
15
+
16
+ ### Nomenclatura de Recursos
17
+
18
+ Use **substantivos no plural** para recursos, nunca verbos:
19
+
20
+ ```
21
+ ✅ GET /users
22
+ ✅ GET /users/:id
23
+ ✅ POST /users
24
+ ✅ PUT /users/:id
25
+ ✅ DELETE /users/:id
26
+
27
+ ❌ GET /getUser
28
+ ❌ POST /createUser
29
+ ❌ DELETE /deleteUser/:id
30
+ ```
31
+
32
+ ### Hierarquia de Recursos
33
+
34
+ ```
35
+ GET /projects/:id/tasks → lista tasks de um projeto
36
+ POST /projects/:id/tasks → cria task no projeto
37
+ GET /projects/:id/tasks/:taskId → detalhe de task específica
38
+ ```
39
+
40
+ Evite hierarquias com mais de 2 níveis — sinalize com `?filter=` ou recurso separado.
41
+
42
+ ### Métodos HTTP
43
+
44
+ | Método | Uso | Idempotente? | Body? |
45
+ |--------|-----|-------------|-------|
46
+ | GET | Leitura | ✅ | ❌ |
47
+ | POST | Criação | ❌ | ✅ |
48
+ | PUT | Substituição total | ✅ | ✅ |
49
+ | PATCH | Atualização parcial | ✅ | ✅ |
50
+ | DELETE | Remoção | ✅ | ❌ |
51
+
52
+ ---
53
+
54
+ ## Códigos de Status HTTP
55
+
56
+ ### Sucesso (2xx)
57
+ | Status | Quando usar |
58
+ |--------|-------------|
59
+ | `200 OK` | GET, PUT, PATCH bem-sucedidos |
60
+ | `201 Created` | POST que cria recurso — inclua `Location` header |
61
+ | `204 No Content` | DELETE bem-sucedido, PATCH sem corpo de resposta |
62
+
63
+ ### Erro do cliente (4xx)
64
+ | Status | Quando usar |
65
+ |--------|-------------|
66
+ | `400 Bad Request` | Dados inválidos, validação falhou |
67
+ | `401 Unauthorized` | Não autenticado — token ausente ou inválido |
68
+ | `403 Forbidden` | Autenticado mas sem permissão |
69
+ | `404 Not Found` | Recurso não existe |
70
+ | `409 Conflict` | Conflito de estado — ex: email já cadastrado |
71
+ | `422 Unprocessable Entity` | Sintaxe válida mas semanticamente incorreto |
72
+ | `429 Too Many Requests` | Rate limit atingido |
73
+
74
+ ### Erro do servidor (5xx)
75
+ | Status | Quando usar |
76
+ |--------|-------------|
77
+ | `500 Internal Server Error` | Erro inesperado no servidor |
78
+ | `503 Service Unavailable` | Serviço temporariamente indisponível |
79
+
80
+ ---
81
+
82
+ ## Formato de Resposta
83
+
84
+ ### Sucesso — lista
85
+ ```json
86
+ {
87
+ "data": [
88
+ { "id": "uuid", "name": "Ana", "email": "ana@example.com" }
89
+ ],
90
+ "pagination": {
91
+ "page": 1,
92
+ "pageSize": 20,
93
+ "total": 143,
94
+ "totalPages": 8
95
+ }
96
+ }
97
+ ```
98
+
99
+ ### Sucesso — item único
100
+ ```json
101
+ {
102
+ "data": {
103
+ "id": "uuid",
104
+ "name": "Ana",
105
+ "email": "ana@example.com",
106
+ "createdAt": "2026-03-23T10:00:00Z"
107
+ }
108
+ }
109
+ ```
110
+
111
+ ### Erro
112
+ ```json
113
+ {
114
+ "error": {
115
+ "code": "VALIDATION_ERROR",
116
+ "message": "Dados inválidos",
117
+ "details": [
118
+ { "field": "email", "message": "Email inválido" },
119
+ { "field": "name", "message": "Nome é obrigatório" }
120
+ ]
121
+ }
122
+ }
123
+ ```
124
+
125
+ ### Convenções de campos
126
+ - Datas: **ISO 8601** (`2026-03-23T10:00:00Z`)
127
+ - IDs: **UUID v4** (evite IDs numéricos sequenciais expostos)
128
+ - Campos monetários: **inteiro em centavos** (`1999` = R$ 19,99)
129
+ - Case: **camelCase** para JSON
130
+
131
+ ---
132
+
133
+ ## Paginação
134
+
135
+ ### Offset-based (padrão)
136
+ ```
137
+ GET /users?page=2&pageSize=20
138
+ ```
139
+
140
+ Resposta inclui `pagination.total` para calcular páginas.
141
+
142
+ ### Cursor-based (grandes volumes, feeds em tempo real)
143
+ ```
144
+ GET /notifications?cursor=eyJpZCI6MTIzfQ&limit=20
145
+ ```
146
+
147
+ Resposta inclui `nextCursor` (null quando última página).
148
+
149
+ ### Quando usar cada um
150
+ | Situação | Tipo |
151
+ |----------|------|
152
+ | Tabelas admin, relatórios | Offset |
153
+ | Feeds, timelines, grande volume | Cursor |
154
+ | Itens que mudam frequentemente | Cursor |
155
+
156
+ ---
157
+
158
+ ## Filtros e Ordenação
159
+
160
+ ```
161
+ GET /users?role=admin&status=active
162
+ GET /users?sort=createdAt&order=desc
163
+ GET /users?search=ana
164
+ GET /products?minPrice=100&maxPrice=500
165
+ ```
166
+
167
+ ---
168
+
169
+ ## Versionamento
170
+
171
+ ### Estratégia recomendada: URL path
172
+
173
+ ```
174
+ /api/v1/users
175
+ /api/v2/users
176
+ ```
177
+
178
+ ### Regras
179
+ - Versão **MAJOR** na URL apenas quando há breaking change
180
+ - Mantenha v-anterior ativa por pelo menos **6 meses** após lançamento da nova
181
+ - Documente o que mudou entre versões
182
+ - Comunique deprecation via header: `Deprecation: 2026-09-23`
183
+
184
+ ### Breaking changes (exigem nova versão)
185
+ - Remoção de campo obrigatório
186
+ - Mudança de tipo de campo
187
+ - Remoção de endpoint
188
+ - Mudança de comportamento de autenticação
189
+
190
+ ### Non-breaking changes (não exigem nova versão)
191
+ - Adicionar campo opcional à resposta
192
+ - Adicionar novo endpoint
193
+ - Adicionar novo parâmetro de filtro opcional
194
+
195
+ ---
196
+
197
+ ## GraphQL
198
+
199
+ ### Convenções de Schema
200
+
201
+ ```graphql
202
+ type User {
203
+ id: ID!
204
+ name: String!
205
+ email: String!
206
+ role: UserRole!
207
+ createdAt: DateTime!
208
+ posts: [Post!]!
209
+ }
210
+
211
+ enum UserRole {
212
+ ADMIN
213
+ MEMBER
214
+ VIEWER
215
+ }
216
+
217
+ type Query {
218
+ user(id: ID!): User
219
+ users(filter: UserFilter, pagination: PaginationInput): UserConnection!
220
+ }
221
+
222
+ type Mutation {
223
+ createUser(input: CreateUserInput!): CreateUserPayload!
224
+ updateUser(id: ID!, input: UpdateUserInput!): UpdateUserPayload!
225
+ }
226
+ ```
227
+
228
+ ### Padrões obrigatórios
229
+ - Use **Input types** para mutations (não argumentos avulsos)
230
+ - Use **Payload types** para retorno de mutations (permite adicionar campos sem breaking change)
231
+ - Use **Connection pattern** para listas paginadas
232
+ - Nunca exponha campos de senha ou dados sensíveis no schema
233
+
234
+ ### Erros em GraphQL
235
+ ```json
236
+ {
237
+ "errors": [
238
+ {
239
+ "message": "Email já cadastrado",
240
+ "extensions": {
241
+ "code": "EMAIL_ALREADY_EXISTS",
242
+ "field": "email"
243
+ }
244
+ }
245
+ ],
246
+ "data": null
247
+ }
248
+ ```
249
+
250
+ ### N+1 em GraphQL
251
+ - Use **DataLoader** para batch de queries relacionadas
252
+ - Implemente **query depth limiting** (máx 5–7 níveis)
253
+ - Monitore queries lentas com APM
254
+
255
+ ---
256
+
257
+ ## Segurança
258
+
259
+ - **Sempre use HTTPS** — sem exceções
260
+ - **Autentique todos os endpoints** exceto os explicitamente públicos
261
+ - **Rate limiting**: 100 req/min para usuários autenticados, 20 req/min para anônimos
262
+ - **Valide e sanitize** todos os inputs no servidor
263
+ - **Não exponha stack traces** em respostas de erro em produção
264
+ - **Versione segredos** fora do código (env vars / secret manager)
265
+
266
+ ---
267
+
268
+ ## Documentação
269
+
270
+ - Use **OpenAPI 3.x** para documentar REST
271
+ - Inclua exemplos reais de request e response
272
+ - Documente todos os códigos de erro possíveis
273
+ - Mantenha docs atualizadas junto com o código (code-first ou schema-first)
274
+ - Ferramentas: Swagger UI, Redoc, Scalar
@@ -0,0 +1,138 @@
1
+ ---
2
+ id: code-review
3
+ version: "1.0.0"
4
+ domain: [frontend, backend, fullstack, mobile]
5
+ whenToUse: "Quando o squad faz review de código em qualquer linguagem"
6
+ ---
7
+
8
+ # Guia de Code Review
9
+
10
+ > Referência para conduzir reviews construtivos, eficientes e consistentes.
11
+
12
+ ---
13
+
14
+ ## Princípios
15
+
16
+ - **Review é colaboração, não crítica pessoal** — o alvo é o código, não o autor
17
+ - **Clareza sobre completude** — um review útil é melhor que um review perfeito que demora dias
18
+ - **Contexto sempre** — entenda o objetivo do PR antes de avaliar as escolhas
19
+ - **Automatize o óbvio** — lint, formatação e testes devem ser verificados por CI, não por humanos
20
+
21
+ ---
22
+
23
+ ## Categorias de Comentário
24
+
25
+ Use prefixos para indicar a gravidade e intenção de cada comentário:
26
+
27
+ | Prefixo | Significado | Bloqueia merge? |
28
+ |---------|-------------|-----------------|
29
+ | `BLOCKER:` | Problema que deve ser corrigido antes do merge | ✅ Sim |
30
+ | `SUGGESTION:` | Melhoria recomendada, mas não obrigatória | ❌ Não |
31
+ | `QUESTION:` | Dúvida legítima — pode ser falta de contexto | ❌ Não |
32
+ | `PRAISE:` | Algo que merece reconhecimento explícito | ❌ Não |
33
+ | `NITPICK:` | Preferência pessoal, baixíssima prioridade | ❌ Não |
34
+
35
+ ### Exemplos
36
+
37
+ ```
38
+ BLOCKER: Esta query não tem índice em `user_id`. Em produção com volume vai travar.
39
+
40
+ SUGGESTION: Extrair esse bloco para um custom hook `useFormValidation` melhoraria
41
+ a legibilidade e facilitaria os testes.
42
+
43
+ QUESTION: Por que optou por `useEffect` aqui em vez de `useMemo`? Há alguma
44
+ dependência externa que precisa de side effect?
45
+
46
+ PRAISE: Boa escolha em usar `AbortController` — o tratamento de cancelamento
47
+ de fetch estava faltando há tempo.
48
+
49
+ NITPICK: Prefiro `const` ao invés de `let` aqui, mas ambos funcionam.
50
+ ```
51
+
52
+ ---
53
+
54
+ ## Checklist do Reviewer
55
+
56
+ ### Lógica e Corretude
57
+ - [ ] O código faz o que o PR descreve?
58
+ - [ ] Edge cases e valores nulos são tratados?
59
+ - [ ] Condições de corrida ou problemas de concorrência?
60
+ - [ ] Reversibilidade: o PR pode ser revertido sem efeitos colaterais?
61
+
62
+ ### Qualidade e Manutenibilidade
63
+ - [ ] O código é legível sem precisar de comentário explicativo?
64
+ - [ ] Funções/métodos têm responsabilidade única?
65
+ - [ ] Há duplicação que poderia ser extraída?
66
+ - [ ] Nomes de variáveis e funções são descritivos e consistentes?
67
+
68
+ ### Performance
69
+ - [ ] Há chamadas N+1 em loops?
70
+ - [ ] Queries ao banco são otimizadas (índices, projeção de campos)?
71
+ - [ ] Há operações custosas que poderiam ser cacheadas?
72
+
73
+ ### Segurança
74
+ - [ ] Inputs do usuário são validados e sanitizados?
75
+ - [ ] Dados sensíveis não são logados ou expostos?
76
+ - [ ] Autenticação e autorização verificadas nos novos endpoints?
77
+
78
+ ### Testes
79
+ - [ ] Os testes cobrem o caminho feliz?
80
+ - [ ] Os testes cobrem casos de erro e edge cases relevantes?
81
+ - [ ] Os testes são legíveis e descrevem o comportamento esperado?
82
+
83
+ ### Documentação
84
+ - [ ] Mudanças de API estão documentadas?
85
+ - [ ] Decisões não óbvias têm comentário ou ADR?
86
+
87
+ ---
88
+
89
+ ## Tom Construtivo
90
+
91
+ ### Faça
92
+ - Explique o **porquê** da sua sugestão
93
+ - Ofereça alternativas concretas quando apontar problemas
94
+ - Reconheça explicitamente boas escolhas
95
+ - Pergunte antes de assumir que é um erro
96
+
97
+ ### Evite
98
+ - Comentários vagos: ~~"Isso está errado"~~ → diga o que está errado e por quê
99
+ - Tom imperativo sem explicação: ~~"Muda isso"~~ → "Sugiro mudar X porque Y"
100
+ - Reviews exaustivas sobre estilo que o linter deveria pegar
101
+ - Ignorar o contexto do PR (deadline, constraint técnica, débito aceito)
102
+
103
+ ---
104
+
105
+ ## Fluxo de Review
106
+
107
+ ```
108
+ Autor abre PR
109
+
110
+ CI roda (lint + testes) — falha aqui bloqueia review
111
+
112
+ Reviewer lê descrição + contexto
113
+
114
+ Reviewer comenta com categorias claras
115
+
116
+ Autor responde / corrige / justifica
117
+
118
+ Reviewer aprova ou abre nova rodada (max 2 rodadas para BLOCKERs)
119
+
120
+ Merge
121
+ ```
122
+
123
+ ### Tempo esperado
124
+ - PRs pequenos (< 200 linhas): review em até 24h
125
+ - PRs médios (200–500 linhas): review em até 48h
126
+ - PRs grandes (> 500 linhas): considere quebrar o PR
127
+
128
+ ---
129
+
130
+ ## Tamanho de PR
131
+
132
+ | Tamanho | Linhas | Qualidade do review |
133
+ |---------|--------|---------------------|
134
+ | Ótimo | < 200 | Alta — fácil de revisar completamente |
135
+ | Aceitável | 200–500 | Média — revisor pode perder detalhes |
136
+ | Problemático | > 500 | Baixa — dividir em PRs menores |
137
+
138
+ > PRs grandes não são mais produtivos — são mais difíceis de revisar, mais difíceis de reverter e têm maior chance de conflito.
@@ -0,0 +1,256 @@
1
+ ---
2
+ id: git-workflow
3
+ version: "1.0.0"
4
+ domain: [frontend, backend, fullstack, mobile, devops]
5
+ whenToUse: "Quando o squad trabalha com branches, commits e PRs"
6
+ ---
7
+
8
+ # Git Workflow
9
+
10
+ > Convenções de branching, commits semânticos, PRs e estratégia de merge.
11
+
12
+ ---
13
+
14
+ ## Branch Strategy
15
+
16
+ ### Modelo: GitHub Flow (recomendado para a maioria dos projetos)
17
+
18
+ ```
19
+ main
20
+ ├── feat/auth-login
21
+ ├── feat/checkout-v2
22
+ ├── fix/payment-timeout
23
+ └── chore/upgrade-deps
24
+ ```
25
+
26
+ **Regras:**
27
+ - `main` é sempre deployável
28
+ - Todo trabalho acontece em feature branches
29
+ - Merge via PR com ao menos 1 aprovação
30
+ - Branch de curta duração (idealmente < 3 dias)
31
+
32
+ ### Modelo: Git Flow (projetos com releases cadenciadas)
33
+
34
+ ```
35
+ main ← produção
36
+ develop ← integração contínua
37
+ ├── feat/ ← features
38
+ ├── fix/ ← bugfixes
39
+ ├── hotfix/← correções urgentes em prod
40
+ └── release/← preparação de release
41
+ ```
42
+
43
+ Use quando: produto mobile com release na loja, projetos com janelas de deploy fixas.
44
+
45
+ ---
46
+
47
+ ## Nomenclatura de Branches
48
+
49
+ ```
50
+ {tipo}/{descricao-curta}
51
+ ```
52
+
53
+ | Tipo | Uso |
54
+ |------|-----|
55
+ | `feat/` | Nova funcionalidade |
56
+ | `fix/` | Correção de bug |
57
+ | `chore/` | Manutenção, deps, configs |
58
+ | `refactor/` | Refatoração sem mudança de comportamento |
59
+ | `test/` | Adição ou melhoria de testes |
60
+ | `docs/` | Documentação |
61
+ | `hotfix/` | Correção urgente em produção |
62
+
63
+ ### Exemplos
64
+
65
+ ```
66
+ feat/user-authentication
67
+ feat/checkout-pix-payment
68
+ fix/cart-total-calculation
69
+ fix/login-redirect-loop
70
+ chore/upgrade-react-19
71
+ refactor/extract-payment-service
72
+ hotfix/payment-gateway-timeout
73
+ ```
74
+
75
+ ---
76
+
77
+ ## Commits Semânticos
78
+
79
+ Formato: `{tipo}({escopo}): {descrição}`
80
+
81
+ ```
82
+ feat(auth): adicionar autenticação via Google OAuth
83
+ fix(cart): corrigir cálculo de desconto com cupom
84
+ chore(deps): atualizar react para v19
85
+ refactor(api): extrair camada de serviço de pagamentos
86
+ test(checkout): adicionar testes E2E do fluxo de compra
87
+ docs(api): documentar endpoints de usuário
88
+ perf(dashboard): lazy load de gráficos pesados
89
+ ci: configurar deploy automático para staging
90
+ ```
91
+
92
+ ### Tipos válidos
93
+
94
+ | Tipo | Quando usar |
95
+ |------|-------------|
96
+ | `feat` | Nova funcionalidade |
97
+ | `fix` | Correção de bug |
98
+ | `chore` | Tarefas de manutenção, deps, scripts |
99
+ | `refactor` | Refatoração sem mudança de comportamento |
100
+ | `test` | Testes novos ou melhorados |
101
+ | `docs` | Documentação |
102
+ | `perf` | Melhoria de performance |
103
+ | `ci` | Mudanças em CI/CD |
104
+ | `build` | Build system, packaging |
105
+ | `revert` | Reversão de commit anterior |
106
+
107
+ ### Regras para a mensagem
108
+ - **Imperativo presente**: "adicionar" não "adicionei" ou "adicionando"
109
+ - **Sem ponto final**
110
+ - **Máx 72 caracteres** na primeira linha
111
+ - Body opcional para contexto: o quê, por quê (não o como)
112
+
113
+ ```
114
+ fix(auth): corrigir expiração de token em fuso UTC-3
115
+
116
+ O token era validado em UTC mas comparado com timestamp local,
117
+ causando logout prematuro para usuários no Brasil.
118
+
119
+ Closes #342
120
+ ```
121
+
122
+ ---
123
+
124
+ ## Pull Requests
125
+
126
+ ### Antes de abrir o PR
127
+ - [ ] Branch está atualizada com `main` (ou `develop`)
128
+ - [ ] CI local passa (testes + lint)
129
+ - [ ] Código auto-revisado (leia seu próprio diff antes de pedir review)
130
+ - [ ] PR é pequeno e focado em um objetivo
131
+
132
+ ### Descrição do PR
133
+
134
+ ```markdown
135
+ ## O que esse PR faz
136
+ Implementa autenticação via Google OAuth usando a estratégia Passport.js.
137
+
138
+ ## Por que
139
+ Usuários solicitaram login social — reduz fricção de cadastro.
140
+
141
+ ## Como testar
142
+ 1. Configurar `.env` com `GOOGLE_CLIENT_ID` e `GOOGLE_CLIENT_SECRET`
143
+ 2. Acessar `/auth/google`
144
+ 3. Completar fluxo OAuth
145
+ 4. Verificar redirecionamento para dashboard
146
+
147
+ ## Checklist
148
+ - [x] Testes passando
149
+ - [x] Sem console.log esquecidos
150
+ - [x] Variáveis de ambiente documentadas no .env.example
151
+ ```
152
+
153
+ ### Tamanho do PR
154
+
155
+ | Tamanho | Linhas | Recomendação |
156
+ |---------|--------|--------------|
157
+ | Ideal | < 200 | Revisar no mesmo dia |
158
+ | Aceitável | 200–400 | Revisar em até 24h |
159
+ | Problemático | > 400 | Quebrar em PRs menores |
160
+
161
+ ---
162
+
163
+ ## Squash vs Merge vs Rebase
164
+
165
+ | Estratégia | Quando usar | Resultado |
166
+ |------------|-------------|-----------|
167
+ | **Squash merge** | Feature branches | 1 commit limpo no main |
168
+ | **Merge commit** | Release branches, histórico importante | Todos os commits preservados |
169
+ | **Rebase** | Branches próprias antes do PR | Histórico linear, sem merge commits |
170
+
171
+ ### Recomendação padrão
172
+ - Feature branches → **Squash merge** (histórico limpo no main)
173
+ - Hotfixes → **Merge commit** (rastreabilidade de emergência)
174
+ - Nunca force-push em `main` ou `develop`
175
+
176
+ ---
177
+
178
+ ## Proteção de Branch
179
+
180
+ Configure no GitHub/GitLab:
181
+
182
+ ```yaml
183
+ main:
184
+ - Require PR before merging
185
+ - Require at least 1 approval
186
+ - Require status checks: CI, lint, tests
187
+ - Dismiss stale approvals on new commits
188
+ - Restrict force-push
189
+ ```
190
+
191
+ ---
192
+
193
+ ## Git Hooks Recomendados
194
+
195
+ Use **Husky** + **lint-staged**:
196
+
197
+ ```json
198
+ {
199
+ "pre-commit": "lint-staged",
200
+ "commit-msg": "commitlint --edit $1"
201
+ }
202
+ ```
203
+
204
+ ```json
205
+ {
206
+ "lint-staged": {
207
+ "*.{ts,tsx}": ["eslint --fix", "prettier --write"],
208
+ "*.{json,md,yaml}": ["prettier --write"]
209
+ }
210
+ }
211
+ ```
212
+
213
+ ---
214
+
215
+ ## Resolução de Conflitos
216
+
217
+ ```bash
218
+ # Atualizar branch com main antes do PR
219
+ git fetch origin
220
+ git rebase origin/main
221
+
222
+ # Se conflito: resolver manualmente, depois
223
+ git add .
224
+ git rebase --continue
225
+
226
+ # Em caso de confusão, abortar e recomeçar
227
+ git rebase --abort
228
+ ```
229
+
230
+ **Regras:**
231
+ - Resolva conflitos na sua branch, não em `main`
232
+ - Nunca resolva conflito em `main` diretamente
233
+ - Em caso de conflito complexo, pair com o autor do código conflitante
234
+
235
+ ---
236
+
237
+ ## Fluxo Resumido
238
+
239
+ ```
240
+ git checkout -b feat/minha-feature
241
+
242
+ # ... trabalho ...
243
+
244
+ git add src/feature.ts
245
+ git commit -m "feat(feature): implementar nova funcionalidade"
246
+
247
+ git fetch origin
248
+ git rebase origin/main
249
+
250
+ git push origin feat/minha-feature
251
+ # → Abre PR no GitHub
252
+ # → CI passa
253
+ # → Code review aprovado
254
+ # → Squash merge em main
255
+ # → Branch deletada automaticamente
256
+ ```