@luanpdd/kit-mcp 1.33.0 → 1.35.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 (379) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +168 -168
  3. package/gates/agent-no-recursive-dispatch.md +84 -84
  4. package/kit/COMANDOS.md +138 -138
  5. package/kit/COMPATIBILITY.md +70 -70
  6. package/kit/README.md +76 -76
  7. package/kit/agents/advisor-researcher.md +109 -109
  8. package/kit/agents/ai-mutation-tester.md +289 -289
  9. package/kit/agents/assumptions-analyzer.md +110 -110
  10. package/kit/agents/audit-log-implementer.md +314 -314
  11. package/kit/agents/auditor-consistencia-isolamento.md +414 -414
  12. package/kit/agents/b2b-saas-architect.md +157 -157
  13. package/kit/agents/burn-rate-forecaster.md +153 -153
  14. package/kit/agents/cascading-failures-auditor.md +299 -299
  15. package/kit/agents/codebase-mapper.md +769 -769
  16. package/kit/agents/crm-pipeline-implementer.md +257 -257
  17. package/kit/agents/debugger.md +814 -814
  18. package/kit/agents/designer-ui.md +216 -216
  19. package/kit/agents/detector-tenant-quente.md +338 -338
  20. package/kit/agents/evolution-go-integrator.md +201 -201
  21. package/kit/agents/example-reviewer.md +22 -22
  22. package/kit/agents/executor.md +565 -565
  23. package/kit/agents/golden-signals-instrumenter.md +232 -232
  24. package/kit/agents/incident-investigator.md +238 -238
  25. package/kit/agents/integration-checker.md +203 -203
  26. package/kit/agents/invite-flow-implementer.md +190 -190
  27. package/kit/agents/legacy-characterizer.md +369 -369
  28. package/kit/agents/lgpd-compliance-auditor.md +296 -296
  29. package/kit/agents/load-shedding-instrumenter.md +290 -290
  30. package/kit/agents/multi-tenant-isolation-auditor.md +254 -254
  31. package/kit/agents/multi-tenant-rls-writer.md +341 -341
  32. package/kit/agents/nyquist-auditor.md +181 -181
  33. package/kit/agents/observability-coverage-auditor.md +316 -316
  34. package/kit/agents/observability-instrumenter.md +191 -191
  35. package/kit/agents/omm-auditor.md +291 -291
  36. package/kit/agents/org-onboarding-implementer.md +224 -224
  37. package/kit/agents/payload-capture-instrumenter.md +274 -274
  38. package/kit/agents/phase-researcher.md +697 -697
  39. package/kit/agents/plan-checker.md +275 -275
  40. package/kit/agents/planner.md +923 -923
  41. package/kit/agents/postmortem-writer.md +273 -273
  42. package/kit/agents/project-researcher.md +653 -653
  43. package/kit/agents/prr-conductor.md +287 -287
  44. package/kit/agents/refactor-safety-auditor.md +405 -405
  45. package/kit/agents/release-pipeline-auditor.md +364 -364
  46. package/kit/agents/research-synthesizer.md +246 -246
  47. package/kit/agents/roadmapper.md +678 -678
  48. package/kit/agents/schema-checker.md +160 -160
  49. package/kit/agents/seam-finder.md +360 -360
  50. package/kit/agents/shotgun-surgery-detector.md +350 -350
  51. package/kit/agents/slo-engineer.md +217 -217
  52. package/kit/agents/storytelling-analyst.md +300 -300
  53. package/kit/agents/supabase-architect.md +249 -249
  54. package/kit/agents/supabase-auth-bootstrapper.md +400 -400
  55. package/kit/agents/supabase-auth-hook-writer.md +418 -418
  56. package/kit/agents/supabase-branching-architect.md +563 -563
  57. package/kit/agents/supabase-cicd-pipeline-implementer.md +778 -778
  58. package/kit/agents/supabase-column-privileges-writer.md +400 -400
  59. package/kit/agents/supabase-edge-fn-tester.md +288 -288
  60. package/kit/agents/supabase-edge-fn-writer.md +341 -341
  61. package/kit/agents/supabase-mfa-implementer.md +439 -439
  62. package/kit/agents/supabase-migration-writer.md +386 -386
  63. package/kit/agents/supabase-oauth-server-implementer.md +507 -507
  64. package/kit/agents/supabase-rbac-implementer.md +393 -393
  65. package/kit/agents/supabase-realtime-implementer.md +364 -364
  66. package/kit/agents/supabase-rls-hardener.md +522 -522
  67. package/kit/agents/supabase-rls-writer.md +324 -324
  68. package/kit/agents/supabase-roles-implementer.md +356 -356
  69. package/kit/agents/supabase-social-auth-implementer.md +451 -451
  70. package/kit/agents/supabase-sso-saml-architect.md +549 -549
  71. package/kit/agents/supabase-storage-implementer.md +407 -407
  72. package/kit/agents/super-admin-implementer.md +282 -282
  73. package/kit/agents/toil-auditor.md +268 -268
  74. package/kit/agents/ui-auditor.md +438 -438
  75. package/kit/agents/ui-checker.md +305 -305
  76. package/kit/agents/ui-researcher.md +356 -356
  77. package/kit/agents/user-profiler.md +176 -176
  78. package/kit/agents/validador-evolucao-schema.md +336 -336
  79. package/kit/agents/verifier.md +729 -729
  80. package/kit/agents/workflow-generator.md +167 -0
  81. package/kit/commands/adicionar-backlog.md +75 -75
  82. package/kit/commands/adicionar-fase.md +42 -42
  83. package/kit/commands/adicionar-tarefa.md +45 -45
  84. package/kit/commands/adicionar-testes.md +41 -41
  85. package/kit/commands/ajuda.md +21 -21
  86. package/kit/commands/atualizar.md +37 -37
  87. package/kit/commands/auditar-cascading.md +111 -111
  88. package/kit/commands/auditar-marco.md +179 -179
  89. package/kit/commands/auditar-observabilidade-cobertura-workflow.md +121 -0
  90. package/kit/commands/auditar-observabilidade-cobertura.md +183 -183
  91. package/kit/commands/auditar-refactor.md +219 -219
  92. package/kit/commands/auditar-release.md +109 -109
  93. package/kit/commands/auditar-uat.md +23 -23
  94. package/kit/commands/autonomo.md +40 -40
  95. package/kit/commands/branch-pr.md +24 -24
  96. package/kit/commands/burn-rate-status.md +408 -408
  97. package/kit/commands/capturar-payloads.md +193 -193
  98. package/kit/commands/caracterizar.md +212 -212
  99. package/kit/commands/concluir-marco.md +247 -247
  100. package/kit/commands/configuracoes.md +36 -36
  101. package/kit/commands/criar-workflow.md +158 -0
  102. package/kit/commands/dados-distribuidos.md +188 -188
  103. package/kit/commands/definir-perfil.md +10 -10
  104. package/kit/commands/depurar.md +190 -190
  105. package/kit/commands/detectar-duplicacao.md +197 -197
  106. package/kit/commands/discutir-fase.md +131 -131
  107. package/kit/commands/encontrar-seams.md +136 -136
  108. package/kit/commands/entrar-discord.md +17 -17
  109. package/kit/commands/estatisticas.md +18 -18
  110. package/kit/commands/example-greeting.md +33 -33
  111. package/kit/commands/executar-fase.md +58 -58
  112. package/kit/commands/expresso.md +56 -56
  113. package/kit/commands/fase-ui.md +34 -34
  114. package/kit/commands/fazer.md +57 -57
  115. package/kit/commands/fio.md +125 -125
  116. package/kit/commands/fluxos-trabalho.md +64 -64
  117. package/kit/commands/forense.md +176 -176
  118. package/kit/commands/gerenciador.md +38 -38
  119. package/kit/commands/inserir-fase.md +31 -31
  120. package/kit/commands/legacy.md +263 -263
  121. package/kit/commands/limpeza.md +17 -17
  122. package/kit/commands/listar-hipoteses-fase.md +45 -45
  123. package/kit/commands/listar-workspaces.md +18 -18
  124. package/kit/commands/load-shedding.md +117 -117
  125. package/kit/commands/mapear-codebase.md +70 -70
  126. package/kit/commands/multi-tenant.md +163 -163
  127. package/kit/commands/nota.md +33 -33
  128. package/kit/commands/novo-marco.md +43 -43
  129. package/kit/commands/novo-projeto.md +41 -41
  130. package/kit/commands/novo-workspace.md +43 -43
  131. package/kit/commands/pausar-trabalho.md +37 -37
  132. package/kit/commands/perfil-usuario.md +45 -45
  133. package/kit/commands/pesquisar-fase.md +195 -195
  134. package/kit/commands/planejar-fase.md +67 -67
  135. package/kit/commands/planejar-lacunas.md +33 -33
  136. package/kit/commands/plantar-ideia.md +25 -25
  137. package/kit/commands/progresso.md +24 -24
  138. package/kit/commands/proximo.md +30 -30
  139. package/kit/commands/publicar.md +490 -490
  140. package/kit/commands/rapido.md +35 -35
  141. package/kit/commands/reaplicar-patches.md +124 -124
  142. package/kit/commands/refactor-seguro.md +321 -321
  143. package/kit/commands/relatorio-sessao.md +19 -19
  144. package/kit/commands/remover-fase.md +31 -31
  145. package/kit/commands/remover-workspace.md +26 -26
  146. package/kit/commands/resumo-marco.md +50 -50
  147. package/kit/commands/retomar-trabalho.md +40 -40
  148. package/kit/commands/revisar-backlog.md +60 -60
  149. package/kit/commands/revisar-ui.md +32 -32
  150. package/kit/commands/revisar.md +37 -37
  151. package/kit/commands/saude.md +21 -21
  152. package/kit/commands/setup-notion.md +93 -93
  153. package/kit/commands/storytelling.md +179 -179
  154. package/kit/commands/supabase.md +238 -238
  155. package/kit/commands/sync-main.md +68 -68
  156. package/kit/commands/validar-fase.md +35 -35
  157. package/kit/commands/verificar-tarefas.md +44 -44
  158. package/kit/commands/verificar-trabalho.md +64 -64
  159. package/kit/file-manifest.json +424 -419
  160. package/kit/framework/bin/lib/commands.cjs +959 -959
  161. package/kit/framework/bin/lib/config.cjs +442 -442
  162. package/kit/framework/bin/lib/core.cjs +1230 -1230
  163. package/kit/framework/bin/lib/frontmatter.cjs +336 -336
  164. package/kit/framework/bin/lib/init.cjs +1442 -1442
  165. package/kit/framework/bin/lib/milestone.cjs +252 -252
  166. package/kit/framework/bin/lib/model-profiles.cjs +68 -68
  167. package/kit/framework/bin/lib/phase.cjs +888 -888
  168. package/kit/framework/bin/lib/profile-output.cjs +952 -952
  169. package/kit/framework/bin/lib/profile-pipeline.cjs +539 -539
  170. package/kit/framework/bin/lib/roadmap.cjs +329 -329
  171. package/kit/framework/bin/lib/security.cjs +382 -382
  172. package/kit/framework/bin/lib/state.cjs +1031 -1031
  173. package/kit/framework/bin/lib/template.cjs +222 -222
  174. package/kit/framework/bin/lib/uat.cjs +282 -282
  175. package/kit/framework/bin/lib/verify.cjs +888 -888
  176. package/kit/framework/bin/lib/workstream.cjs +491 -491
  177. package/kit/framework/bin/tools.cjs +918 -918
  178. package/kit/framework/commands/workstreams.md +63 -63
  179. package/kit/framework/references/checkpoints.md +778 -778
  180. package/kit/framework/references/continuation-format.md +249 -249
  181. package/kit/framework/references/decimal-phase-calculation.md +64 -64
  182. package/kit/framework/references/git-integration.md +295 -295
  183. package/kit/framework/references/git-planning-commit.md +38 -38
  184. package/kit/framework/references/model-profile-resolution.md +36 -36
  185. package/kit/framework/references/model-profiles.md +139 -139
  186. package/kit/framework/references/phase-argument-parsing.md +61 -61
  187. package/kit/framework/references/planning-config.md +202 -202
  188. package/kit/framework/references/questioning.md +162 -162
  189. package/kit/framework/references/tdd.md +263 -263
  190. package/kit/framework/references/ui-brand.md +160 -160
  191. package/kit/framework/references/user-profiling.md +657 -657
  192. package/kit/framework/references/verification-patterns.md +612 -612
  193. package/kit/framework/references/workstream-flag.md +58 -58
  194. package/kit/framework/templates/DEBUG.md +164 -164
  195. package/kit/framework/templates/UAT.md +265 -265
  196. package/kit/framework/templates/UI-SPEC.md +100 -100
  197. package/kit/framework/templates/VALIDATION.md +76 -76
  198. package/kit/framework/templates/claude-md.md +122 -122
  199. package/kit/framework/templates/codebase/architecture.md +185 -185
  200. package/kit/framework/templates/codebase/concerns.md +205 -205
  201. package/kit/framework/templates/codebase/conventions.md +204 -204
  202. package/kit/framework/templates/codebase/integrations.md +192 -192
  203. package/kit/framework/templates/codebase/stack.md +158 -158
  204. package/kit/framework/templates/codebase/structure.md +199 -199
  205. package/kit/framework/templates/codebase/testing.md +301 -301
  206. package/kit/framework/templates/config.json +44 -44
  207. package/kit/framework/templates/context.md +352 -352
  208. package/kit/framework/templates/continue-here.md +78 -78
  209. package/kit/framework/templates/copilot-instructions.md +7 -7
  210. package/kit/framework/templates/debug-subagent-prompt.md +91 -91
  211. package/kit/framework/templates/dev-preferences.md +20 -20
  212. package/kit/framework/templates/discovery.md +146 -146
  213. package/kit/framework/templates/discussion-log.md +63 -63
  214. package/kit/framework/templates/milestone-archive.md +123 -123
  215. package/kit/framework/templates/milestone.md +115 -115
  216. package/kit/framework/templates/phase-prompt.md +610 -610
  217. package/kit/framework/templates/planner-subagent-prompt.md +117 -117
  218. package/kit/framework/templates/project.md +186 -186
  219. package/kit/framework/templates/requirements.md +231 -231
  220. package/kit/framework/templates/research-project/ARCHITECTURE.md +204 -204
  221. package/kit/framework/templates/research-project/FEATURES.md +147 -147
  222. package/kit/framework/templates/research-project/PITFALLS.md +200 -200
  223. package/kit/framework/templates/research-project/STACK.md +120 -120
  224. package/kit/framework/templates/research-project/SUMMARY.md +170 -170
  225. package/kit/framework/templates/research.md +419 -419
  226. package/kit/framework/templates/retrospective.md +54 -54
  227. package/kit/framework/templates/roadmap.md +202 -202
  228. package/kit/framework/templates/state.md +176 -176
  229. package/kit/framework/templates/summary-complex.md +59 -59
  230. package/kit/framework/templates/summary-minimal.md +41 -41
  231. package/kit/framework/templates/summary-standard.md +48 -48
  232. package/kit/framework/templates/summary.md +209 -209
  233. package/kit/framework/templates/user-profile.md +146 -146
  234. package/kit/framework/templates/user-setup.md +256 -256
  235. package/kit/framework/templates/verification-report.md +258 -258
  236. package/kit/framework/workflows/add-phase.md +112 -112
  237. package/kit/framework/workflows/add-tests.md +351 -351
  238. package/kit/framework/workflows/add-todo.md +158 -158
  239. package/kit/framework/workflows/audit-milestone.md +340 -340
  240. package/kit/framework/workflows/audit-uat.md +109 -109
  241. package/kit/framework/workflows/autonomous.md +891 -891
  242. package/kit/framework/workflows/check-todos.md +177 -177
  243. package/kit/framework/workflows/cleanup.md +152 -152
  244. package/kit/framework/workflows/complete-milestone.md +696 -696
  245. package/kit/framework/workflows/diagnose-issues.md +231 -231
  246. package/kit/framework/workflows/discovery-phase.md +289 -289
  247. package/kit/framework/workflows/discuss-phase-assumptions.md +653 -653
  248. package/kit/framework/workflows/discuss-phase.md +784 -784
  249. package/kit/framework/workflows/do.md +104 -104
  250. package/kit/framework/workflows/execute-phase.md +838 -838
  251. package/kit/framework/workflows/execute-plan.md +510 -510
  252. package/kit/framework/workflows/fast.md +102 -102
  253. package/kit/framework/workflows/forensics.md +265 -265
  254. package/kit/framework/workflows/health.md +181 -181
  255. package/kit/framework/workflows/help.md +619 -619
  256. package/kit/framework/workflows/insert-phase.md +130 -130
  257. package/kit/framework/workflows/list-phase-assumptions.md +178 -178
  258. package/kit/framework/workflows/list-workspaces.md +56 -56
  259. package/kit/framework/workflows/manager.md +362 -362
  260. package/kit/framework/workflows/map-codebase.md +377 -377
  261. package/kit/framework/workflows/milestone-summary.md +223 -223
  262. package/kit/framework/workflows/new-milestone.md +486 -486
  263. package/kit/framework/workflows/new-project.md +1159 -1159
  264. package/kit/framework/workflows/new-workspace.md +237 -237
  265. package/kit/framework/workflows/next.md +97 -97
  266. package/kit/framework/workflows/node-repair.md +92 -92
  267. package/kit/framework/workflows/note.md +156 -156
  268. package/kit/framework/workflows/pause-work.md +176 -176
  269. package/kit/framework/workflows/plan-milestone-gaps.md +273 -273
  270. package/kit/framework/workflows/plan-phase.md +765 -765
  271. package/kit/framework/workflows/plant-seed.md +169 -169
  272. package/kit/framework/workflows/pr-branch.md +129 -129
  273. package/kit/framework/workflows/profile-user.md +450 -450
  274. package/kit/framework/workflows/progress.md +507 -507
  275. package/kit/framework/workflows/quick.md +757 -757
  276. package/kit/framework/workflows/remove-phase.md +155 -155
  277. package/kit/framework/workflows/remove-workspace.md +90 -90
  278. package/kit/framework/workflows/research-phase.md +82 -82
  279. package/kit/framework/workflows/resume-project.md +326 -326
  280. package/kit/framework/workflows/review.md +228 -228
  281. package/kit/framework/workflows/session-report.md +146 -146
  282. package/kit/framework/workflows/settings.md +283 -283
  283. package/kit/framework/workflows/ship.md +228 -228
  284. package/kit/framework/workflows/stats.md +60 -60
  285. package/kit/framework/workflows/transition.md +671 -671
  286. package/kit/framework/workflows/ui-phase.md +302 -302
  287. package/kit/framework/workflows/ui-review.md +165 -165
  288. package/kit/framework/workflows/update.md +323 -323
  289. package/kit/framework/workflows/validate-phase.md +174 -174
  290. package/kit/framework/workflows/verify-phase.md +252 -252
  291. package/kit/framework/workflows/verify-work.md +637 -637
  292. package/kit/hooks/check-update.js +118 -118
  293. package/kit/hooks/context-monitor.js +163 -163
  294. package/kit/hooks/kit-attribution-reminder.cjs +92 -92
  295. package/kit/hooks/kit-router.cjs +137 -137
  296. package/kit/hooks/prompt-guard.js +103 -103
  297. package/kit/hooks/statusline.js +125 -125
  298. package/kit/hooks/workflow-guard.js +101 -101
  299. package/kit/settings.json +45 -45
  300. package/kit/skills/ai-prompt-characterization/SKILL.md +335 -335
  301. package/kit/skills/armadilhas-sistemas-distribuidos/SKILL.md +447 -447
  302. package/kit/skills/audit-log-multi-tenant/SKILL.md +340 -340
  303. package/kit/skills/b2b-saas-architecture/SKILL.md +300 -300
  304. package/kit/skills/consistencia-leitura-replica/SKILL.md +385 -385
  305. package/kit/skills/crm-lead-pipeline-patterns/SKILL.md +343 -343
  306. package/kit/skills/dynamic-workflow-authoring/SKILL.md +223 -0
  307. package/kit/skills/escolha-modelo-consistencia/SKILL.md +494 -494
  308. package/kit/skills/evolucao-schema-compativel/SKILL.md +448 -448
  309. package/kit/skills/evolution-go-whatsapp-integration/SKILL.md +322 -322
  310. package/kit/skills/example-skill/SKILL.md +42 -42
  311. package/kit/skills/legacy-api-only-applications/SKILL.md +358 -358
  312. package/kit/skills/legacy-characterization-tests/SKILL.md +330 -330
  313. package/kit/skills/legacy-effect-analysis/SKILL.md +331 -331
  314. package/kit/skills/legacy-extract-class/SKILL.md +203 -203
  315. package/kit/skills/legacy-programming-by-difference/SKILL.md +252 -252
  316. package/kit/skills/legacy-seams-and-test-harness/SKILL.md +460 -460
  317. package/kit/skills/legacy-shotgun-surgery/SKILL.md +286 -286
  318. package/kit/skills/legacy-sprout-wrap-techniques/SKILL.md +434 -434
  319. package/kit/skills/legacy-storytelling-naked-crc/SKILL.md +270 -270
  320. package/kit/skills/lgpd-multi-tenant-compliance/SKILL.md +340 -340
  321. package/kit/skills/member-invite-flow/SKILL.md +305 -305
  322. package/kit/skills/member-management-react-shadcn/SKILL.md +328 -328
  323. package/kit/skills/multi-tenant-performance-scaling/SKILL.md +316 -316
  324. package/kit/skills/multi-tenant-rls-hierarchy/SKILL.md +342 -342
  325. package/kit/skills/org-onboarding-flow/SKILL.md +257 -257
  326. package/kit/skills/org-switcher-react-pattern/SKILL.md +349 -349
  327. package/kit/skills/permission-gate-react-pattern/SKILL.md +271 -271
  328. package/kit/skills/postgres-isolamento-concorrencia/SKILL.md +552 -552
  329. package/kit/skills/pre-refactor-characterization/SKILL.md +421 -421
  330. package/kit/skills/rbac-permissions-matrix-supabase/SKILL.md +338 -338
  331. package/kit/skills/streams-eventos-cdc/SKILL.md +711 -711
  332. package/kit/skills/supabase-auth-hardening/SKILL.md +674 -674
  333. package/kit/skills/supabase-auth-hooks/SKILL.md +875 -875
  334. package/kit/skills/supabase-auth-methods/SKILL.md +486 -486
  335. package/kit/skills/supabase-auth-sessions/SKILL.md +579 -579
  336. package/kit/skills/supabase-auth-ssr/SKILL.md +306 -306
  337. package/kit/skills/supabase-branching-workflow/SKILL.md +544 -544
  338. package/kit/skills/supabase-ci-cd-github-actions/SKILL.md +880 -880
  339. package/kit/skills/supabase-column-level-security/SKILL.md +426 -426
  340. package/kit/skills/supabase-config-toml-remotes/SKILL.md +807 -807
  341. package/kit/skills/supabase-custom-claims-rbac/SKILL.md +472 -472
  342. package/kit/skills/supabase-edge-functions/SKILL.md +330 -330
  343. package/kit/skills/supabase-edge-functions-auth/SKILL.md +309 -309
  344. package/kit/skills/supabase-edge-functions-limits/SKILL.md +302 -302
  345. package/kit/skills/supabase-edge-functions-mcp-server/SKILL.md +279 -279
  346. package/kit/skills/supabase-edge-functions-testing/SKILL.md +277 -277
  347. package/kit/skills/supabase-edge-runtime-builtins/SKILL.md +357 -357
  348. package/kit/skills/supabase-enterprise-sso-saml/SKILL.md +545 -545
  349. package/kit/skills/supabase-jwt-signing-keys/SKILL.md +399 -399
  350. package/kit/skills/supabase-mfa/SKILL.md +488 -488
  351. package/kit/skills/supabase-migration-repair/SKILL.md +823 -823
  352. package/kit/skills/supabase-migrations/SKILL.md +297 -297
  353. package/kit/skills/supabase-oauth-server/SKILL.md +537 -537
  354. package/kit/skills/supabase-pgtap-testing/SKILL.md +1053 -1053
  355. package/kit/skills/supabase-postgres-roles/SKILL.md +392 -392
  356. package/kit/skills/supabase-realtime/SKILL.md +460 -460
  357. package/kit/skills/supabase-rls-defense-in-depth/SKILL.md +418 -418
  358. package/kit/skills/supabase-rls-policies/SKILL.md +635 -635
  359. package/kit/skills/supabase-social-oauth/SKILL.md +480 -480
  360. package/kit/skills/supabase-third-party-auth/SKILL.md +450 -450
  361. package/kit/skills/super-admin-platform-pattern/SKILL.md +326 -326
  362. package/kit/skills/tenant-quente-mitigacao/SKILL.md +605 -605
  363. package/kit/skills/ui-anti-padroes-ia/SKILL.md +261 -261
  364. package/kit/skills/ui-contexto-produto/SKILL.md +248 -248
  365. package/kit/skills/ui-cor-estrategia/SKILL.md +213 -213
  366. package/kit/skills/ui-critica-auditoria/SKILL.md +260 -260
  367. package/kit/skills/ui-motion-funcional/SKILL.md +264 -264
  368. package/kit/skills/ui-ritmo-espacial/SKILL.md +259 -259
  369. package/kit/skills/ui-tipografia/SKILL.md +211 -211
  370. package/kit/skills/whatsapp-conversation-state-machine/SKILL.md +287 -287
  371. package/kit/workflows/auditar-observabilidade-cobertura.workflow.js +250 -0
  372. package/package.json +65 -63
  373. package/src/core/kit.js +333 -216
  374. package/src/core/reflect.js +247 -247
  375. package/src/core/registry.js +123 -112
  376. package/src/core/reverse-sync.js +448 -372
  377. package/src/core/sync.js +477 -437
  378. package/src/core/watch.js +121 -121
  379. package/src/mcp-server/index.js +794 -794
@@ -1,544 +1,544 @@
1
- ---
2
- name: supabase-branching-workflow
3
- description: Use ao adotar Supabase Branching — preview vs persistent branches, deploy DAG 7 steps (clone→pull→health→configure→migrate→seed→deploy), GitHub integration setup, Dashboard alpha…
4
- ---
5
-
6
- # Supabase — Branching Workflow
7
-
8
- ## Quando usar
9
-
10
- Supabase Branching cria cópias **isoladas** do projeto Postgres + Edge Functions + Storage config para cada branch git — workflow tipo Vercel preview deployments, mas com schema/migrations versionados.
11
-
12
- Trigger phrases:
13
-
14
- - "preview branch Supabase", "persistent branch staging"
15
- - "deploy DAG Supabase", "branching workflow"
16
- - "GitHub integration Supabase", "automatic branching"
17
- - "Dashboard branching alpha"
18
- - "Branching Compute Hours custo", "custo branching Supabase"
19
- - "preview ephemeral vs long-lived"
20
- - "PR-driven Supabase workflow"
21
-
22
- **Use Supabase Branching APENAS para:**
23
-
24
- - Validar migrations + schema declarativo em PR antes do merge
25
- - Isolar mudanças destrutivas (DROP COLUMN, ALTER TYPE) em preview
26
- - QA team rodar smoke tests em staging persistente
27
- - Validar deploy de Edge Functions com `[remotes]` block em `config.toml`
28
-
29
- **NÃO use Supabase Branching para:**
30
-
31
- - QA com dados reais de produção — branches são **dataless by design** (seed.sql é dados sintéticos)
32
- - Replicar production traffic — preview branches têm compute Micro por default (não dimensionado para load)
33
- - Substituir staging Supabase project separado quando precisar SLA/uptime
34
- - Test environments sem expirar — preview branches são **ephemeral** (auto-delete em PR merge/close)
35
-
36
- ## Princípio canônico
37
-
38
- **Preview branches:** ephemeral, criados em PR open, auto-pause em inatividade, **auto-delete em PR merge/close**.
39
-
40
- **Persistent branches:** long-lived (staging/QA), NÃO auto-pause, requerem delete **manual** via Dashboard ou CLI.
41
-
42
- Critério de escolha canônico:
43
-
44
- - PR-driven dev workflow + features curtas (< 1 semana) → **preview**
45
- - Staging compartilhada + features longas + manual control → **persistent**
46
- - Mix possível: 1 persistent staging compartilhado + N ephemeral previews por PR
47
-
48
- ## ALERTA DE CUSTO — Branching Compute Hours
49
-
50
- > **ATENÇÃO CANÔNICA — leia antes de habilitar branching em produção.**
51
- >
52
- > Cada branch Supabase (preview ou persistent) consome **Branching Compute Hours** independentes do projeto principal.
53
- >
54
- > - **Micro Compute size starts at $0.01344/h** (cobrança por hora de branch ativo)
55
- > - **Branching Compute Hours FORA do Spend Cap** — Spend Cap do projeto NÃO protege contra este custo
56
- > - **Compute Credits NÃO aplicam** a Branching Compute (FAQ pricing oficial)
57
- > - **Billing aparece como "Branching Compute Hours"** no invoice (linha separada)
58
- >
59
- > ### Estimativa concreta
60
- >
61
- > - **10 PRs/mês × 24h média de vida útil** = 240h × $0.01344 = **~$3.23/mês adicional**
62
- > - **30 PRs/mês × 72h média (PRs grandes)** = 2160h × $0.01344 = **~$29.03/mês adicional**
63
- > - **Persistent staging branch 24/7** = 720h × $0.01344 = **~$9.67/mês adicional** (acumula continuamente)
64
- >
65
- > ### Atenção
66
- >
67
- > - Persistent branches **acumulam horas continuamente** (não pausam) — custo previsível por mês
68
- > - Preview branches **auto-pausam** em inatividade — custo varia com atividade do PR
69
- > - Branch creation pode levar até **30 minutos** (health check) — primeira hora já é cobrada
70
- >
71
- > ### Mitigações canônicas
72
- >
73
- > - Habilitar **"Supabase changes only" filter** (Pattern 3) — preview branch SÓ para PRs que tocam `supabase/`
74
- > - Considerar **1 persistent staging** compartilhado em vez de N preview branches
75
- > - Monitorar billing manualmente — **Spend Cap NÃO protege**, reforço
76
-
77
- ## Pattern 1: Preview vs Persistent Branches
78
-
79
- Distinção operacional canônica (BRANCH-01):
80
-
81
- | | Preview Branch | Persistent Branch |
82
- |---|---|---|
83
- | Ciclo de vida | Ephemeral (criado em PR open) | Long-lived (criado manualmente) |
84
- | Auto-pause | Sim (inatividade) | NÃO |
85
- | Auto-delete | Sim (PR merge/close) | NÃO (delete manual via Dashboard/CLI) |
86
- | Caso de uso | PR-driven dev workflow | Staging/QA compartilhada |
87
- | Custo (Branching Compute Hours) | Acumula durante PR vida útil | Acumula continuamente 24/7 |
88
- | Trigger | GitHub PR webhook (automatic) | CLI ou Dashboard (manual) |
89
- | Naming | Auto: `pr-<N>-<branch-name>` | User-defined (ex: `staging`, `qa`) |
90
- | Health check inicial | Até 30 minutos | Até 30 minutos |
91
-
92
- ### Critério de escolha
93
-
94
- **Use preview SE:**
95
-
96
- - Equipe usa PR workflow disciplinado (features curtas, < 1 semana de PR aberto)
97
- - Cada PR deve ter ambiente isolado para review
98
- - Aceita custo proporcional a número de PRs ativos
99
-
100
- **Use persistent SE:**
101
-
102
- - Precisa staging compartilhado para QA team validar release
103
- - Features longas (sprints multi-semana com PR aberto continuamente)
104
- - Manual control sobre lifecycle (não querer auto-delete)
105
-
106
- **Pode haver MIX (recomendação canônica para times maduros):**
107
-
108
- - 1 persistent branch `staging` para QA team rodar smoke tests pós-merge para `main`
109
- - N preview branches ephemeral, 1 por PR ativo, para review de mudanças
110
-
111
- ### CLI canônico
112
-
113
- ```bash
114
- # criar persistent branch via CLI
115
- supabase --experimental branches create staging --persistent
116
-
117
- # listar branches do projeto
118
- supabase --experimental branches list
119
-
120
- # inspecionar branch específico
121
- supabase --experimental branches get staging
122
-
123
- # deletar branch
124
- supabase --experimental branches delete staging
125
-
126
- # atualizar persistent branch para latest main
127
- supabase --experimental branches update staging
128
- ```
129
-
130
- ### Caveat — Health check pode levar 30 minutos
131
-
132
- Branch creation aplica DAG (Pattern 2) — health check do Postgres pode demorar **até 30 minutos** dependendo de:
133
-
134
- - Tamanho do schema migrado
135
- - Número de migrations
136
- - Tamanho do seed.sql
137
-
138
- Durante este tempo, a primeira **hora de Branching Compute** já é cobrada (Pattern 5 — custo arrendondado a hora cheia inicial).
139
-
140
- ## Pattern 2: Deploy DAG — 7 steps canônicos
141
-
142
- Cada branch (preview ou persistent) aplica um **DAG (Directed Acyclic Graph)** de 7 steps em ordem (BRANCH-02):
143
-
144
- 1. **clone** — clone do repositório git no contexto do branch Supabase
145
- 2. **pull** — pull das migrations (`supabase/migrations/`) e schema declarativo (`supabase/schemas/`)
146
- 3. **health** — health check do branch DB (espera até 30 min — Postgres ready + connection pooler ativo)
147
- 4. **configure** — aplica `config.toml` (incluindo `[remotes.<branch>]` block — cross-ref skill `supabase-config-toml-remotes` v1.27)
148
- 5. **migrate** — executa migrations em ordem cronológica (`supabase/migrations/*.sql`)
149
- 6. **seed** — aplica `supabase/seed.sql` (dataless by design — sem dados de produção)
150
- 7. **deploy** — deploy de Edge Functions e secrets (via `supabase functions deploy`)
151
-
152
- ### Diagrama ASCII
153
-
154
- ```
155
- clone → pull → health → configure → migrate → seed → deploy
156
- ✓ ✓ ✓ ✓ ✓ ✓ ✓
157
- ↓ falha
158
- [seed: SKIPPED]
159
- [deploy: SKIPPED]
160
- ```
161
-
162
- ### Skip behavior canônico (anti-cascading failure)
163
-
164
- **Falha em step N → todos steps N+1...7 são SKIPPED.**
165
-
166
- Exemplo concreto:
167
-
168
- - **migrate falha no step 5** (ex: migration com `DROP COLUMN` em coluna que tem FK)
169
- - **seed (step 6) é SKIPPED** — sem aplicar seed.sql
170
- - **deploy (step 7) é SKIPPED** — sem deploy de Edge Functions
171
- - DAG status no Dashboard mostra: ✗ migrate (step 5), ⊘ seed (skipped), ⊘ deploy (skipped)
172
-
173
- Este comportamento previne **cascading failures** — se schema falha, não aplicar Edge Functions que dependem do schema.
174
-
175
- ### Logs por step
176
-
177
- Cada step tem stdout/stderr **próprio** acessível no Dashboard:
178
-
179
- - **Settings → Integrations → GitHub → "View deployment logs"** (link no PR comment)
180
- - Logs persistidos durante vida útil do branch
181
- - Útil para debug: step 5 (migrate) tem stderr com SQL error específico
182
-
183
- ### Recovery pattern
184
-
185
- **Sem rollback automático** — branch fica em estado "failed".
186
-
187
- Para recovery:
188
-
189
- 1. Push **novo commit** no PR com migration corrigida
190
- 2. GitHub webhook → re-run DAG (steps 1-7 do zero)
191
- 3. Se step 5 (migrate) passa → step 6 (seed) e step 7 (deploy) executam
192
-
193
- Se migration drift entre branches → ver skill `supabase-migration-repair` (v1.27, Phase 153) para `migration list/repair`.
194
-
195
- ### Caveat — Dataless by design
196
-
197
- `seed.sql` aplicado no step 6 NÃO deve conter:
198
-
199
- - Dados sensíveis de produção (PII, tokens, secrets)
200
- - Snapshot real de tabelas grandes
201
- - Dados com FKs para tabelas Auth (`auth.users`) — preview branches têm Auth schema separado
202
-
203
- **Recomendação canônica:** seed.sql contém apenas:
204
-
205
- - Dados de referência (ex: lista de países, categorias estáticas)
206
- - Fixtures sintéticos pequenos para smoke tests
207
- - Setup de roles + permissions iniciais (cross-ref skill `supabase-postgres-roles` v1.26)
208
-
209
- Preview branches são para **dev workflow**, não para QA com dados reais — se precisar dados reais, use staging Supabase project separado.
210
-
211
- ## Pattern 3: GitHub Integration Setup
212
-
213
- Setup canônico para preview branching automatizado via GitHub (BRANCH-03):
214
-
215
- ### Step 1: Authorize Supabase no GitHub
216
-
217
- 1. Dashboard → **Project Settings → Integrations → GitHub**
218
- 2. Clicar **"Authorize Supabase"** — OAuth flow do GitHub
219
- 3. Selecionar **organization** + **repos específicos** (princípio do least privilege — não autorizar todos os repos)
220
-
221
- ### Step 2: Working directory
222
-
223
- Definir diretório raiz do projeto Supabase no repositório:
224
-
225
- - **Monorepo single Supabase project:** `./`
226
- - **Monorepo com Supabase em subdiretório:** `./supabase` ou `./apps/api/supabase`
227
- - **Default:** `./` (raiz do repo)
228
-
229
- Working directory deve conter `supabase/migrations/`, `supabase/schemas/`, `supabase/config.toml`.
230
-
231
- ### Step 3: Automatic branching toggle
232
-
233
- - **ON (recomendado):** preview branch criado **automaticamente** quando PR é aberto
234
- - **OFF:** branches criados apenas manualmente via CLI ou Dashboard
235
-
236
- Recomendação: **ON** para workflow PR-driven canônico.
237
-
238
- ### Step 4: "Supabase changes only" filter
239
-
240
- **Recomendação canônica para reduzir custo Branching Compute Hours:**
241
-
242
- - **ON:** preview branch criado **APENAS** se o PR toca arquivos em `supabase/` (migrations, schemas, functions, config.toml)
243
- - **OFF:** preview branch criado em **TODOS** os PRs (alto custo se time abre muitos PRs frontend-only)
244
-
245
- Recomendação: **ON** em todos projetos com Spend Cap awareness (cross-ref Pattern 5).
246
-
247
- ### Step 5: Deploy to production toggle
248
-
249
- - **ON:** quando PR é merged para `main`, mudanças são automaticamente push para production project Supabase
250
- - **OFF:** merge não trigger deploy production (deploy manual via CLI ou outro workflow CI)
251
-
252
- **Use com CAUTELA** — exige:
253
-
254
- - Migrations bem testadas em preview branch
255
- - Required check "Supabase Preview" gating merge (sem ✓ verde, sem merge)
256
- - Política de rollback documentada (cross-ref skill `supabase-migration-repair` v1.27)
257
-
258
- Recomendação inicial: **OFF** até equipe estabelecer disciplina de PR review.
259
-
260
- ### Workflow esperado após setup
261
-
262
- ```
263
- Dev abre PR
264
-
265
- GitHub webhook → Supabase cria preview branch
266
-
267
- Deploy DAG roda (7 steps canônicos)
268
-
269
- Required check "Supabase Preview" reportado no PR
270
-
271
- Dev valida em preview (smoke tests, manual QA)
272
-
273
- Merge para main (se check ✓ verde)
274
-
275
- (se "deploy to production" ON) → push para production project Supabase
276
-
277
- Preview branch auto-delete (em PR merge ou close)
278
- ```
279
-
280
- ### Required check enforcement
281
-
282
- GitHub branch protection rules:
283
-
284
- 1. Settings → Branches → Add rule para `main`
285
- 2. **Require status checks to pass before merging** — selecionar **"Supabase Preview"** como required
286
- 3. **Sem check ✓ verde → bloqueia merge** (gate canônico — DAG falha = merge bloqueado)
287
-
288
- ### Recomendação canônica
289
-
290
- **Use GitHub integration em qualquer projeto sério.** Dashboard branching alpha (Pattern 4) tem limitações documentadas que tornam unsuitable para production workflow.
291
-
292
- ## Pattern 4: Dashboard Branching Alpha — Caveats canônicos
293
-
294
- **Dashboard branching está em ALPHA — desencorajado para projetos sério. Use GitHub integration (Pattern 3).**
295
-
296
- Caveats canônicos documentados (BRANCH-04):
297
-
298
- ### Caveat 1: Custom roles NÃO capturados
299
-
300
- Branches criados via Dashboard alpha **NÃO capturam Postgres custom roles** definidos no DB principal.
301
-
302
- - **Roles definidos em migrations** (`CREATE ROLE` em arquivo `.sql`) → aplicados pelo DAG step 5 (migrate) → presentes no branch
303
- - **Roles criados via Dashboard SQL editor** ou diretamente no DB → **perdidos** no branch creation
304
-
305
- Cross-ref skill `supabase-postgres-roles` v1.26: roles **DEVEM** ser definidos em migrations versionadas, nunca via Dashboard ad-hoc.
306
-
307
- ### Caveat 2: Merge só para `main`
308
-
309
- Dashboard alpha aceita **merge só para `main`** — não suporta merge entre preview branches.
310
-
311
- - Direção suportada: `preview → main` (1 sentido apenas)
312
- - **NÃO suportado:** `preview-A → preview-B`, ou seja, não combinar 2 features em desenvolvimento via Dashboard
313
-
314
- **Workaround:** combinar features via git workflow:
315
-
316
- ```
317
- git checkout feature-B
318
- git rebase feature-A # ou git merge feature-A
319
- git push --force-with-lease
320
- # PR-B atualizado contém commits de A + B
321
- ```
322
-
323
- ### Caveat 3: Edge Functions sobrescritas no "update branch"
324
-
325
- Clicar **"Update branch"** no Dashboard sobrescreve **TODAS** as Edge Functions no preview branch com versão atual de `main`.
326
-
327
- - **Perda silenciosa** — sem confirmation prompt
328
- - Mudanças in-flight em Edge Functions no preview são **perdidas**
329
- - Deploy de edge functions via Dashboard alpha é **high-risk**
330
-
331
- **Mitigação:** sempre commit Edge Functions em git antes de clicar "Update branch".
332
-
333
- ### Caveat 4: Delete de functions MANUAL em main
334
-
335
- Se você **deleta** uma Edge Function em preview branch, no merge para `main` a deletion **NÃO é propagada automaticamente**.
336
-
337
- - Edge Function continua existindo em produção mesmo após merge
338
- - Você deve **manualmente** executar `supabase functions delete <name>` em main após merge
339
-
340
- Cross-ref: GitHub integration (Pattern 3) propaga deletion via git diff — comportamento esperado em production workflow.
341
-
342
- ### Recomendação canônica explícita
343
-
344
- - Para qualquer projeto em produção: **GitHub integration** (Pattern 3)
345
- - Dashboard alpha aceitável APENAS para:
346
- - Experimentação solo (1 dev, sem time)
347
- - Prototipagem rápida (sem intenção de production)
348
- - Projetos sem migration history estável
349
-
350
- ### Tabela comparativa Dashboard alpha vs GitHub integration
351
-
352
- | | Dashboard alpha | GitHub integration |
353
- |---|---|---|
354
- | Custom roles capturados | NÃO | SIM (via migrations) |
355
- | Merge entre previews | NÃO | SIM (git workflow) |
356
- | Edge functions safety | Sobrescreve silenciosamente | Versioned via git |
357
- | Delete propagation | Manual em main | Automatic via merge |
358
- | Required check enforcement | NÃO | SIM (branch protection rules) |
359
- | Audit trail | Limited Dashboard logs | Full git history |
360
- | Maturity | Alpha | Estável (recomendação canônica) |
361
- | Recomendação | Experimentação solo | Produção |
362
-
363
- ## Pattern 5: Custo Branching Compute Hours
364
-
365
- Branching tem custo **independente** do projeto principal — atenção canônica para evitar surpresas no invoice (BRANCH-05).
366
-
367
- ### Pricing oficial
368
-
369
- - **Micro Compute size** (default para preview branches): **$0.01344/h**
370
- - **Maior compute sizes** disponíveis para persistent branches via `supabase branches update --size <size>`
371
- - Cobrança **por hora** (arredonda para hora cheia mesmo em branches curtos)
372
-
373
- ### Spend Cap canônico — caveat crítico
374
-
375
- > **Branching Compute Hours são FORA do Spend Cap do projeto.**
376
- >
377
- > Mesmo com Spend Cap configurado em $0 (Pro plan), Branching Compute Hours **continuam sendo cobradas**.
378
-
379
- Implicação: equipe que adota branching sem revisar billing pode receber invoice surpresa de $50-200/mês adicional em projetos com muitos PRs.
380
-
381
- ### Compute Credits NÃO aplicam
382
-
383
- - Pro plan vem com **$10/mês de Compute Credits** que cobrem instance do projeto principal
384
- - **Compute Credits NÃO aplicam a Branching Compute Hours** (FAQ pricing oficial)
385
- - Cada hora de branch é cobrada **adicionalmente** ao plan base
386
-
387
- ### Linha de billing canônica
388
-
389
- No invoice mensal Supabase, Branching Compute aparece como linha separada:
390
-
391
- ```
392
- Pro Plan $25.00/mês
393
- Compute (Project Main) $0.00 (covered by Compute Credits)
394
- Branching Compute Hours 240h × $0.01344 = $3.23/mês
395
- Database egress $0.00 (under threshold)
396
- -------
397
- Total $28.23/mês
398
- ```
399
-
400
- ### Mitigações canônicas
401
-
402
- 1. **"Supabase changes only" filter ON** (Pattern 3) — preview branch só para PRs com mudanças em `supabase/`
403
- 2. **1 persistent staging** compartilhado em vez de N preview branches (custo previsível)
404
- 3. **PR lifetime curto** — disciplina de team merge em < 1 semana reduz horas acumuladas
405
- 4. **Monitorar billing manualmente** — Spend Cap NÃO protege contra Branching Compute
406
- 5. **Documentar custo esperado** no onboarding do projeto — equipe sabe o trade-off
407
-
408
- ### Cálculo de capacity planning
409
-
410
- Fórmula canônica:
411
-
412
- ```
413
- Custo Branching Compute/mês = (N_PRs_ativos × duracao_media_horas × compute_size_hourly_rate)
414
-
415
- Exemplo:
416
- 20 PRs/mês × 48h média × $0.01344/h = $12.90/mês adicional
417
- ```
418
-
419
- Para persistent branches:
420
-
421
- ```
422
- Custo persistent branch/mês = (24h × 30 dias × compute_size_hourly_rate)
423
-
424
- Exemplo (Micro 24/7):
425
- 720h × $0.01344/h = $9.67/mês por branch persistent
426
- ```
427
-
428
- ## Anti-patterns
429
-
430
- ### Anti-pattern 1: Usar Dashboard branching alpha para projeto sério
431
-
432
- **Errado:** Time de 5+ devs gerencia branches via Dashboard alpha em projeto production.
433
-
434
- **Por quê:** custom roles não capturados + edge functions sobrescritas silenciosamente + merge só p/ main = surprise bugs em produção; sem audit trail confiável; sem required check enforcement.
435
-
436
- **Certo:** GitHub integration (Pattern 3) — versionado, audit trail completo via git, branch protection rules enforced, deploy DAG transparente com logs por step.
437
-
438
- ### Anti-pattern 2: Ignorar Spend Cap caveat
439
-
440
- **Errado:** Habilitar branching assumindo Spend Cap protege contra cost overrun.
441
-
442
- **Por quê:** Branching Compute Hours são **FORA do Spend Cap** — projeto Pro plan com 30 PRs/mês de 72h média pode gerar **$29-100/mês adicional sem alert algum**. Compute Credits NÃO aplicam — cada hora é cobrança nova.
443
-
444
- **Certo:**
445
-
446
- - monitorar billing manualmente (Settings → Usage → Branching Compute Hours)
447
- - "Supabase changes only" filter ON (Pattern 3 step 4)
448
- - considerar persistent branch único compartilhado em vez de 1 preview/PR
449
- - documentar custo no onboarding do time
450
-
451
- ### Anti-pattern 3: Tentar merge entre preview branches
452
-
453
- **Errado:** Time tenta `preview-feature-A → preview-feature-B` via Dashboard branching.
454
-
455
- **Por quê:** Dashboard NÃO suporta merge entre preview branches — só direção `preview → main`. Tentativa resulta em state inconsistente, schemas dessincronizados, ou silent no-op.
456
-
457
- **Certo:** combinar features via git workflow:
458
-
459
- ```
460
- # PR-A merges to main primeiro
461
- git checkout main
462
- git pull
463
-
464
- # PR-B rebase on top
465
- git checkout feature-B
466
- git rebase main
467
- git push --force-with-lease
468
-
469
- # preview-B é recriado com mudanças de A + B
470
- # merge to main
471
- ```
472
-
473
- ### Anti-pattern 4: Push direto na main sem preview branch
474
-
475
- **Errado:** Dev pusha migration direto em `main` sem PR/preview branch — "vai dar certo, é só um ALTER TABLE".
476
-
477
- **Por quê:** sem validação de DAG → migration falha em production → downtime + rollback complexo + possíveis dados perdidos. Especialmente perigoso para `DROP COLUMN`, `ALTER TYPE`, mudanças destrutivas.
478
-
479
- **Certo:** SEMPRE PR + preview branch validado:
480
-
481
- 1. Migration em PR aberto
482
- 2. Preview branch DAG executa (step 5 migrate validado)
483
- 3. Required check "Supabase Preview" ✓ verde
484
- 4. Merge gated por required check + branch protection rule
485
- 5. (Se "deploy to production" ON) → automatic push para production
486
-
487
- Cross-ref skill `evolucao-schema-compativel` (v1.22) — 3-step migration safe para mudanças destrutivas.
488
-
489
- ### Anti-pattern 5: Esperar persistent branch funcionar como production
490
-
491
- **Errado:** Assumir persistent staging branch é "cópia de produção" para QA team.
492
-
493
- **Por quê:** branches são **dataless by design** — `seed.sql` é dados sintéticos, não snapshot real. Auth.users separado, sem dados de prod, sem volume real, sem latência real.
494
-
495
- **Certo:**
496
-
497
- - persistent branches são para **schema/code validation**, NÃO para QA com dados reais
498
- - Se precisar QA com dados reais → use staging Supabase project **separado** (não branching)
499
- - Staging project separado tem SLA, dados reais via replicação, custo previsível Pro plan
500
-
501
- ### Anti-pattern 6: Criar persistent branch sem cleanup policy
502
-
503
- **Errado:** Criar persistent branches ad-hoc sem documentar lifecycle ou owner.
504
-
505
- **Por quê:** persistent branches não auto-pausam — acumulam Branching Compute Hours **24/7 indefinidamente**. 6 meses depois, ninguém sabe pra que serve o branch `qa-test-old`, mas continua sendo cobrado $9.67/mês × 6 = **$58 desperdiçados**.
506
-
507
- **Certo:**
508
-
509
- - documentar persistent branches em README ou onboarding doc
510
- - definir owner por branch (Slack handle + função)
511
- - review trimestral: `supabase --experimental branches list` + cleanup
512
- - comment no Dashboard descrevendo propósito + data de criação
513
-
514
- ## Cross-suite integration (v1.27)
515
-
516
- Esta skill é base para skills v1.27 (Phases 150-153):
517
-
518
- - **supabase-config-toml-remotes** (Phase 150) — `[remotes]` block + branch-specific config + secrets per-branch
519
- - **supabase-ci-cd-github-actions** (Phase 151) — 8 workflows canônicos GitHub Actions (preview deploy, prod deploy, migration gates)
520
- - **supabase-pgtap-testing** (Phase 152) — testes pgTAP que rodam no DAG step 5/6
521
- - **supabase-migration-repair** (Phase 153) — `migration list/repair` + rollback preview branch quando step migrate falha
522
-
523
- Base para agents v1.27 (Phase 154):
524
-
525
- - **supabase-branching-architect** — projeta strategy (preview-only vs preview + persistent staging mix)
526
- - **supabase-cicd-pipeline-implementer** — materializa GitHub Actions workflows + Supabase integration config
527
-
528
- Pattern de handoff cooperativo herdado v1.23-v1.26: **architect** projeta → **cicd-pipeline-implementer** materializa → **release-pipeline-auditor** (v1.10) audita hermeticidade do pipeline final. Nenhum agente descarta upstream — handoff cooperativo SQL (princípio canônico v1.23).
529
-
530
- ## Ver também
531
-
532
- - [supabase-config-toml-remotes](../supabase-config-toml-remotes/SKILL.md) (v1.27, Phase 150) — `[remotes]` block + branch-specific config + secrets per-branch
533
- - [supabase-ci-cd-github-actions](../supabase-ci-cd-github-actions/SKILL.md) (v1.27, Phase 151) — 8 workflows canônicos GitHub Actions
534
- - [supabase-pgtap-testing](../supabase-pgtap-testing/SKILL.md) (v1.27, Phase 152) — testes pgTAP integrados no DAG
535
- - [supabase-migration-repair](../supabase-migration-repair/SKILL.md) (v1.27, Phase 153) — `migration list/repair` + rollback preview branch
536
- - [supabase-migrations](../supabase-migrations/SKILL.md) (v1.23) — 5 blocos obrigatórios CREATE TABLE, naming canônico
537
- - [supabase-declarative-schema](../supabase-declarative-schema/SKILL.md) — schema declarative workflow (`supabase/schemas/`)
538
- - [evolucao-schema-compativel](../evolucao-schema-compativel/SKILL.md) (v1.22) — 3-step migration safe rolling upgrade (expand → migrate data → contract)
539
- - [release-engineering](../release-engineering/SKILL.md) — deployment philosophy + self-service deploys
540
- - [hermetic-builds](../hermetic-builds/SKILL.md) — pipeline reproducibility + isolation + provenance
541
- - [supabase-postgres-roles](../supabase-postgres-roles/SKILL.md) (v1.26) — caveat custom roles NÃO capturados em Dashboard alpha (Pattern 4 Caveat 1)
542
- - [supabase-edge-functions](../supabase-edge-functions/SKILL.md) — Edge Functions deploy no DAG step 7
543
- - [glossário compartilhado](../_shared-supabase/glossary.md) — termos branching workflow, preview branch, persistent branch, deploy DAG, Branching Compute Hours (será +10 termos em REL-04 v1.27)
544
- - Doc oficial: [Supabase Branching](https://supabase.com/docs/guides/deployment/branching), [GitHub Integration](https://supabase.com/docs/guides/deployment/branching#github-integration), [Pricing](https://supabase.com/pricing)
1
+ ---
2
+ name: supabase-branching-workflow
3
+ description: Use ao adotar Supabase Branching — preview vs persistent branches, deploy DAG 7 steps (clone→pull→health→configure→migrate→seed→deploy), GitHub integration setup, Dashboard alpha…
4
+ ---
5
+
6
+ # Supabase — Branching Workflow
7
+
8
+ ## Quando usar
9
+
10
+ Supabase Branching cria cópias **isoladas** do projeto Postgres + Edge Functions + Storage config para cada branch git — workflow tipo Vercel preview deployments, mas com schema/migrations versionados.
11
+
12
+ Trigger phrases:
13
+
14
+ - "preview branch Supabase", "persistent branch staging"
15
+ - "deploy DAG Supabase", "branching workflow"
16
+ - "GitHub integration Supabase", "automatic branching"
17
+ - "Dashboard branching alpha"
18
+ - "Branching Compute Hours custo", "custo branching Supabase"
19
+ - "preview ephemeral vs long-lived"
20
+ - "PR-driven Supabase workflow"
21
+
22
+ **Use Supabase Branching APENAS para:**
23
+
24
+ - Validar migrations + schema declarativo em PR antes do merge
25
+ - Isolar mudanças destrutivas (DROP COLUMN, ALTER TYPE) em preview
26
+ - QA team rodar smoke tests em staging persistente
27
+ - Validar deploy de Edge Functions com `[remotes]` block em `config.toml`
28
+
29
+ **NÃO use Supabase Branching para:**
30
+
31
+ - QA com dados reais de produção — branches são **dataless by design** (seed.sql é dados sintéticos)
32
+ - Replicar production traffic — preview branches têm compute Micro por default (não dimensionado para load)
33
+ - Substituir staging Supabase project separado quando precisar SLA/uptime
34
+ - Test environments sem expirar — preview branches são **ephemeral** (auto-delete em PR merge/close)
35
+
36
+ ## Princípio canônico
37
+
38
+ **Preview branches:** ephemeral, criados em PR open, auto-pause em inatividade, **auto-delete em PR merge/close**.
39
+
40
+ **Persistent branches:** long-lived (staging/QA), NÃO auto-pause, requerem delete **manual** via Dashboard ou CLI.
41
+
42
+ Critério de escolha canônico:
43
+
44
+ - PR-driven dev workflow + features curtas (< 1 semana) → **preview**
45
+ - Staging compartilhada + features longas + manual control → **persistent**
46
+ - Mix possível: 1 persistent staging compartilhado + N ephemeral previews por PR
47
+
48
+ ## ALERTA DE CUSTO — Branching Compute Hours
49
+
50
+ > **ATENÇÃO CANÔNICA — leia antes de habilitar branching em produção.**
51
+ >
52
+ > Cada branch Supabase (preview ou persistent) consome **Branching Compute Hours** independentes do projeto principal.
53
+ >
54
+ > - **Micro Compute size starts at $0.01344/h** (cobrança por hora de branch ativo)
55
+ > - **Branching Compute Hours FORA do Spend Cap** — Spend Cap do projeto NÃO protege contra este custo
56
+ > - **Compute Credits NÃO aplicam** a Branching Compute (FAQ pricing oficial)
57
+ > - **Billing aparece como "Branching Compute Hours"** no invoice (linha separada)
58
+ >
59
+ > ### Estimativa concreta
60
+ >
61
+ > - **10 PRs/mês × 24h média de vida útil** = 240h × $0.01344 = **~$3.23/mês adicional**
62
+ > - **30 PRs/mês × 72h média (PRs grandes)** = 2160h × $0.01344 = **~$29.03/mês adicional**
63
+ > - **Persistent staging branch 24/7** = 720h × $0.01344 = **~$9.67/mês adicional** (acumula continuamente)
64
+ >
65
+ > ### Atenção
66
+ >
67
+ > - Persistent branches **acumulam horas continuamente** (não pausam) — custo previsível por mês
68
+ > - Preview branches **auto-pausam** em inatividade — custo varia com atividade do PR
69
+ > - Branch creation pode levar até **30 minutos** (health check) — primeira hora já é cobrada
70
+ >
71
+ > ### Mitigações canônicas
72
+ >
73
+ > - Habilitar **"Supabase changes only" filter** (Pattern 3) — preview branch SÓ para PRs que tocam `supabase/`
74
+ > - Considerar **1 persistent staging** compartilhado em vez de N preview branches
75
+ > - Monitorar billing manualmente — **Spend Cap NÃO protege**, reforço
76
+
77
+ ## Pattern 1: Preview vs Persistent Branches
78
+
79
+ Distinção operacional canônica (BRANCH-01):
80
+
81
+ | | Preview Branch | Persistent Branch |
82
+ |---|---|---|
83
+ | Ciclo de vida | Ephemeral (criado em PR open) | Long-lived (criado manualmente) |
84
+ | Auto-pause | Sim (inatividade) | NÃO |
85
+ | Auto-delete | Sim (PR merge/close) | NÃO (delete manual via Dashboard/CLI) |
86
+ | Caso de uso | PR-driven dev workflow | Staging/QA compartilhada |
87
+ | Custo (Branching Compute Hours) | Acumula durante PR vida útil | Acumula continuamente 24/7 |
88
+ | Trigger | GitHub PR webhook (automatic) | CLI ou Dashboard (manual) |
89
+ | Naming | Auto: `pr-<N>-<branch-name>` | User-defined (ex: `staging`, `qa`) |
90
+ | Health check inicial | Até 30 minutos | Até 30 minutos |
91
+
92
+ ### Critério de escolha
93
+
94
+ **Use preview SE:**
95
+
96
+ - Equipe usa PR workflow disciplinado (features curtas, < 1 semana de PR aberto)
97
+ - Cada PR deve ter ambiente isolado para review
98
+ - Aceita custo proporcional a número de PRs ativos
99
+
100
+ **Use persistent SE:**
101
+
102
+ - Precisa staging compartilhado para QA team validar release
103
+ - Features longas (sprints multi-semana com PR aberto continuamente)
104
+ - Manual control sobre lifecycle (não querer auto-delete)
105
+
106
+ **Pode haver MIX (recomendação canônica para times maduros):**
107
+
108
+ - 1 persistent branch `staging` para QA team rodar smoke tests pós-merge para `main`
109
+ - N preview branches ephemeral, 1 por PR ativo, para review de mudanças
110
+
111
+ ### CLI canônico
112
+
113
+ ```bash
114
+ # criar persistent branch via CLI
115
+ supabase --experimental branches create staging --persistent
116
+
117
+ # listar branches do projeto
118
+ supabase --experimental branches list
119
+
120
+ # inspecionar branch específico
121
+ supabase --experimental branches get staging
122
+
123
+ # deletar branch
124
+ supabase --experimental branches delete staging
125
+
126
+ # atualizar persistent branch para latest main
127
+ supabase --experimental branches update staging
128
+ ```
129
+
130
+ ### Caveat — Health check pode levar 30 minutos
131
+
132
+ Branch creation aplica DAG (Pattern 2) — health check do Postgres pode demorar **até 30 minutos** dependendo de:
133
+
134
+ - Tamanho do schema migrado
135
+ - Número de migrations
136
+ - Tamanho do seed.sql
137
+
138
+ Durante este tempo, a primeira **hora de Branching Compute** já é cobrada (Pattern 5 — custo arrendondado a hora cheia inicial).
139
+
140
+ ## Pattern 2: Deploy DAG — 7 steps canônicos
141
+
142
+ Cada branch (preview ou persistent) aplica um **DAG (Directed Acyclic Graph)** de 7 steps em ordem (BRANCH-02):
143
+
144
+ 1. **clone** — clone do repositório git no contexto do branch Supabase
145
+ 2. **pull** — pull das migrations (`supabase/migrations/`) e schema declarativo (`supabase/schemas/`)
146
+ 3. **health** — health check do branch DB (espera até 30 min — Postgres ready + connection pooler ativo)
147
+ 4. **configure** — aplica `config.toml` (incluindo `[remotes.<branch>]` block — cross-ref skill `supabase-config-toml-remotes` v1.27)
148
+ 5. **migrate** — executa migrations em ordem cronológica (`supabase/migrations/*.sql`)
149
+ 6. **seed** — aplica `supabase/seed.sql` (dataless by design — sem dados de produção)
150
+ 7. **deploy** — deploy de Edge Functions e secrets (via `supabase functions deploy`)
151
+
152
+ ### Diagrama ASCII
153
+
154
+ ```
155
+ clone → pull → health → configure → migrate → seed → deploy
156
+ ✓ ✓ ✓ ✓ ✓ ✓ ✓
157
+ ↓ falha
158
+ [seed: SKIPPED]
159
+ [deploy: SKIPPED]
160
+ ```
161
+
162
+ ### Skip behavior canônico (anti-cascading failure)
163
+
164
+ **Falha em step N → todos steps N+1...7 são SKIPPED.**
165
+
166
+ Exemplo concreto:
167
+
168
+ - **migrate falha no step 5** (ex: migration com `DROP COLUMN` em coluna que tem FK)
169
+ - **seed (step 6) é SKIPPED** — sem aplicar seed.sql
170
+ - **deploy (step 7) é SKIPPED** — sem deploy de Edge Functions
171
+ - DAG status no Dashboard mostra: ✗ migrate (step 5), ⊘ seed (skipped), ⊘ deploy (skipped)
172
+
173
+ Este comportamento previne **cascading failures** — se schema falha, não aplicar Edge Functions que dependem do schema.
174
+
175
+ ### Logs por step
176
+
177
+ Cada step tem stdout/stderr **próprio** acessível no Dashboard:
178
+
179
+ - **Settings → Integrations → GitHub → "View deployment logs"** (link no PR comment)
180
+ - Logs persistidos durante vida útil do branch
181
+ - Útil para debug: step 5 (migrate) tem stderr com SQL error específico
182
+
183
+ ### Recovery pattern
184
+
185
+ **Sem rollback automático** — branch fica em estado "failed".
186
+
187
+ Para recovery:
188
+
189
+ 1. Push **novo commit** no PR com migration corrigida
190
+ 2. GitHub webhook → re-run DAG (steps 1-7 do zero)
191
+ 3. Se step 5 (migrate) passa → step 6 (seed) e step 7 (deploy) executam
192
+
193
+ Se migration drift entre branches → ver skill `supabase-migration-repair` (v1.27, Phase 153) para `migration list/repair`.
194
+
195
+ ### Caveat — Dataless by design
196
+
197
+ `seed.sql` aplicado no step 6 NÃO deve conter:
198
+
199
+ - Dados sensíveis de produção (PII, tokens, secrets)
200
+ - Snapshot real de tabelas grandes
201
+ - Dados com FKs para tabelas Auth (`auth.users`) — preview branches têm Auth schema separado
202
+
203
+ **Recomendação canônica:** seed.sql contém apenas:
204
+
205
+ - Dados de referência (ex: lista de países, categorias estáticas)
206
+ - Fixtures sintéticos pequenos para smoke tests
207
+ - Setup de roles + permissions iniciais (cross-ref skill `supabase-postgres-roles` v1.26)
208
+
209
+ Preview branches são para **dev workflow**, não para QA com dados reais — se precisar dados reais, use staging Supabase project separado.
210
+
211
+ ## Pattern 3: GitHub Integration Setup
212
+
213
+ Setup canônico para preview branching automatizado via GitHub (BRANCH-03):
214
+
215
+ ### Step 1: Authorize Supabase no GitHub
216
+
217
+ 1. Dashboard → **Project Settings → Integrations → GitHub**
218
+ 2. Clicar **"Authorize Supabase"** — OAuth flow do GitHub
219
+ 3. Selecionar **organization** + **repos específicos** (princípio do least privilege — não autorizar todos os repos)
220
+
221
+ ### Step 2: Working directory
222
+
223
+ Definir diretório raiz do projeto Supabase no repositório:
224
+
225
+ - **Monorepo single Supabase project:** `./`
226
+ - **Monorepo com Supabase em subdiretório:** `./supabase` ou `./apps/api/supabase`
227
+ - **Default:** `./` (raiz do repo)
228
+
229
+ Working directory deve conter `supabase/migrations/`, `supabase/schemas/`, `supabase/config.toml`.
230
+
231
+ ### Step 3: Automatic branching toggle
232
+
233
+ - **ON (recomendado):** preview branch criado **automaticamente** quando PR é aberto
234
+ - **OFF:** branches criados apenas manualmente via CLI ou Dashboard
235
+
236
+ Recomendação: **ON** para workflow PR-driven canônico.
237
+
238
+ ### Step 4: "Supabase changes only" filter
239
+
240
+ **Recomendação canônica para reduzir custo Branching Compute Hours:**
241
+
242
+ - **ON:** preview branch criado **APENAS** se o PR toca arquivos em `supabase/` (migrations, schemas, functions, config.toml)
243
+ - **OFF:** preview branch criado em **TODOS** os PRs (alto custo se time abre muitos PRs frontend-only)
244
+
245
+ Recomendação: **ON** em todos projetos com Spend Cap awareness (cross-ref Pattern 5).
246
+
247
+ ### Step 5: Deploy to production toggle
248
+
249
+ - **ON:** quando PR é merged para `main`, mudanças são automaticamente push para production project Supabase
250
+ - **OFF:** merge não trigger deploy production (deploy manual via CLI ou outro workflow CI)
251
+
252
+ **Use com CAUTELA** — exige:
253
+
254
+ - Migrations bem testadas em preview branch
255
+ - Required check "Supabase Preview" gating merge (sem ✓ verde, sem merge)
256
+ - Política de rollback documentada (cross-ref skill `supabase-migration-repair` v1.27)
257
+
258
+ Recomendação inicial: **OFF** até equipe estabelecer disciplina de PR review.
259
+
260
+ ### Workflow esperado após setup
261
+
262
+ ```
263
+ Dev abre PR
264
+
265
+ GitHub webhook → Supabase cria preview branch
266
+
267
+ Deploy DAG roda (7 steps canônicos)
268
+
269
+ Required check "Supabase Preview" reportado no PR
270
+
271
+ Dev valida em preview (smoke tests, manual QA)
272
+
273
+ Merge para main (se check ✓ verde)
274
+
275
+ (se "deploy to production" ON) → push para production project Supabase
276
+
277
+ Preview branch auto-delete (em PR merge ou close)
278
+ ```
279
+
280
+ ### Required check enforcement
281
+
282
+ GitHub branch protection rules:
283
+
284
+ 1. Settings → Branches → Add rule para `main`
285
+ 2. **Require status checks to pass before merging** — selecionar **"Supabase Preview"** como required
286
+ 3. **Sem check ✓ verde → bloqueia merge** (gate canônico — DAG falha = merge bloqueado)
287
+
288
+ ### Recomendação canônica
289
+
290
+ **Use GitHub integration em qualquer projeto sério.** Dashboard branching alpha (Pattern 4) tem limitações documentadas que tornam unsuitable para production workflow.
291
+
292
+ ## Pattern 4: Dashboard Branching Alpha — Caveats canônicos
293
+
294
+ **Dashboard branching está em ALPHA — desencorajado para projetos sério. Use GitHub integration (Pattern 3).**
295
+
296
+ Caveats canônicos documentados (BRANCH-04):
297
+
298
+ ### Caveat 1: Custom roles NÃO capturados
299
+
300
+ Branches criados via Dashboard alpha **NÃO capturam Postgres custom roles** definidos no DB principal.
301
+
302
+ - **Roles definidos em migrations** (`CREATE ROLE` em arquivo `.sql`) → aplicados pelo DAG step 5 (migrate) → presentes no branch
303
+ - **Roles criados via Dashboard SQL editor** ou diretamente no DB → **perdidos** no branch creation
304
+
305
+ Cross-ref skill `supabase-postgres-roles` v1.26: roles **DEVEM** ser definidos em migrations versionadas, nunca via Dashboard ad-hoc.
306
+
307
+ ### Caveat 2: Merge só para `main`
308
+
309
+ Dashboard alpha aceita **merge só para `main`** — não suporta merge entre preview branches.
310
+
311
+ - Direção suportada: `preview → main` (1 sentido apenas)
312
+ - **NÃO suportado:** `preview-A → preview-B`, ou seja, não combinar 2 features em desenvolvimento via Dashboard
313
+
314
+ **Workaround:** combinar features via git workflow:
315
+
316
+ ```
317
+ git checkout feature-B
318
+ git rebase feature-A # ou git merge feature-A
319
+ git push --force-with-lease
320
+ # PR-B atualizado contém commits de A + B
321
+ ```
322
+
323
+ ### Caveat 3: Edge Functions sobrescritas no "update branch"
324
+
325
+ Clicar **"Update branch"** no Dashboard sobrescreve **TODAS** as Edge Functions no preview branch com versão atual de `main`.
326
+
327
+ - **Perda silenciosa** — sem confirmation prompt
328
+ - Mudanças in-flight em Edge Functions no preview são **perdidas**
329
+ - Deploy de edge functions via Dashboard alpha é **high-risk**
330
+
331
+ **Mitigação:** sempre commit Edge Functions em git antes de clicar "Update branch".
332
+
333
+ ### Caveat 4: Delete de functions MANUAL em main
334
+
335
+ Se você **deleta** uma Edge Function em preview branch, no merge para `main` a deletion **NÃO é propagada automaticamente**.
336
+
337
+ - Edge Function continua existindo em produção mesmo após merge
338
+ - Você deve **manualmente** executar `supabase functions delete <name>` em main após merge
339
+
340
+ Cross-ref: GitHub integration (Pattern 3) propaga deletion via git diff — comportamento esperado em production workflow.
341
+
342
+ ### Recomendação canônica explícita
343
+
344
+ - Para qualquer projeto em produção: **GitHub integration** (Pattern 3)
345
+ - Dashboard alpha aceitável APENAS para:
346
+ - Experimentação solo (1 dev, sem time)
347
+ - Prototipagem rápida (sem intenção de production)
348
+ - Projetos sem migration history estável
349
+
350
+ ### Tabela comparativa Dashboard alpha vs GitHub integration
351
+
352
+ | | Dashboard alpha | GitHub integration |
353
+ |---|---|---|
354
+ | Custom roles capturados | NÃO | SIM (via migrations) |
355
+ | Merge entre previews | NÃO | SIM (git workflow) |
356
+ | Edge functions safety | Sobrescreve silenciosamente | Versioned via git |
357
+ | Delete propagation | Manual em main | Automatic via merge |
358
+ | Required check enforcement | NÃO | SIM (branch protection rules) |
359
+ | Audit trail | Limited Dashboard logs | Full git history |
360
+ | Maturity | Alpha | Estável (recomendação canônica) |
361
+ | Recomendação | Experimentação solo | Produção |
362
+
363
+ ## Pattern 5: Custo Branching Compute Hours
364
+
365
+ Branching tem custo **independente** do projeto principal — atenção canônica para evitar surpresas no invoice (BRANCH-05).
366
+
367
+ ### Pricing oficial
368
+
369
+ - **Micro Compute size** (default para preview branches): **$0.01344/h**
370
+ - **Maior compute sizes** disponíveis para persistent branches via `supabase branches update --size <size>`
371
+ - Cobrança **por hora** (arredonda para hora cheia mesmo em branches curtos)
372
+
373
+ ### Spend Cap canônico — caveat crítico
374
+
375
+ > **Branching Compute Hours são FORA do Spend Cap do projeto.**
376
+ >
377
+ > Mesmo com Spend Cap configurado em $0 (Pro plan), Branching Compute Hours **continuam sendo cobradas**.
378
+
379
+ Implicação: equipe que adota branching sem revisar billing pode receber invoice surpresa de $50-200/mês adicional em projetos com muitos PRs.
380
+
381
+ ### Compute Credits NÃO aplicam
382
+
383
+ - Pro plan vem com **$10/mês de Compute Credits** que cobrem instance do projeto principal
384
+ - **Compute Credits NÃO aplicam a Branching Compute Hours** (FAQ pricing oficial)
385
+ - Cada hora de branch é cobrada **adicionalmente** ao plan base
386
+
387
+ ### Linha de billing canônica
388
+
389
+ No invoice mensal Supabase, Branching Compute aparece como linha separada:
390
+
391
+ ```
392
+ Pro Plan $25.00/mês
393
+ Compute (Project Main) $0.00 (covered by Compute Credits)
394
+ Branching Compute Hours 240h × $0.01344 = $3.23/mês
395
+ Database egress $0.00 (under threshold)
396
+ -------
397
+ Total $28.23/mês
398
+ ```
399
+
400
+ ### Mitigações canônicas
401
+
402
+ 1. **"Supabase changes only" filter ON** (Pattern 3) — preview branch só para PRs com mudanças em `supabase/`
403
+ 2. **1 persistent staging** compartilhado em vez de N preview branches (custo previsível)
404
+ 3. **PR lifetime curto** — disciplina de team merge em < 1 semana reduz horas acumuladas
405
+ 4. **Monitorar billing manualmente** — Spend Cap NÃO protege contra Branching Compute
406
+ 5. **Documentar custo esperado** no onboarding do projeto — equipe sabe o trade-off
407
+
408
+ ### Cálculo de capacity planning
409
+
410
+ Fórmula canônica:
411
+
412
+ ```
413
+ Custo Branching Compute/mês = (N_PRs_ativos × duracao_media_horas × compute_size_hourly_rate)
414
+
415
+ Exemplo:
416
+ 20 PRs/mês × 48h média × $0.01344/h = $12.90/mês adicional
417
+ ```
418
+
419
+ Para persistent branches:
420
+
421
+ ```
422
+ Custo persistent branch/mês = (24h × 30 dias × compute_size_hourly_rate)
423
+
424
+ Exemplo (Micro 24/7):
425
+ 720h × $0.01344/h = $9.67/mês por branch persistent
426
+ ```
427
+
428
+ ## Anti-patterns
429
+
430
+ ### Anti-pattern 1: Usar Dashboard branching alpha para projeto sério
431
+
432
+ **Errado:** Time de 5+ devs gerencia branches via Dashboard alpha em projeto production.
433
+
434
+ **Por quê:** custom roles não capturados + edge functions sobrescritas silenciosamente + merge só p/ main = surprise bugs em produção; sem audit trail confiável; sem required check enforcement.
435
+
436
+ **Certo:** GitHub integration (Pattern 3) — versionado, audit trail completo via git, branch protection rules enforced, deploy DAG transparente com logs por step.
437
+
438
+ ### Anti-pattern 2: Ignorar Spend Cap caveat
439
+
440
+ **Errado:** Habilitar branching assumindo Spend Cap protege contra cost overrun.
441
+
442
+ **Por quê:** Branching Compute Hours são **FORA do Spend Cap** — projeto Pro plan com 30 PRs/mês de 72h média pode gerar **$29-100/mês adicional sem alert algum**. Compute Credits NÃO aplicam — cada hora é cobrança nova.
443
+
444
+ **Certo:**
445
+
446
+ - monitorar billing manualmente (Settings → Usage → Branching Compute Hours)
447
+ - "Supabase changes only" filter ON (Pattern 3 step 4)
448
+ - considerar persistent branch único compartilhado em vez de 1 preview/PR
449
+ - documentar custo no onboarding do time
450
+
451
+ ### Anti-pattern 3: Tentar merge entre preview branches
452
+
453
+ **Errado:** Time tenta `preview-feature-A → preview-feature-B` via Dashboard branching.
454
+
455
+ **Por quê:** Dashboard NÃO suporta merge entre preview branches — só direção `preview → main`. Tentativa resulta em state inconsistente, schemas dessincronizados, ou silent no-op.
456
+
457
+ **Certo:** combinar features via git workflow:
458
+
459
+ ```
460
+ # PR-A merges to main primeiro
461
+ git checkout main
462
+ git pull
463
+
464
+ # PR-B rebase on top
465
+ git checkout feature-B
466
+ git rebase main
467
+ git push --force-with-lease
468
+
469
+ # preview-B é recriado com mudanças de A + B
470
+ # merge to main
471
+ ```
472
+
473
+ ### Anti-pattern 4: Push direto na main sem preview branch
474
+
475
+ **Errado:** Dev pusha migration direto em `main` sem PR/preview branch — "vai dar certo, é só um ALTER TABLE".
476
+
477
+ **Por quê:** sem validação de DAG → migration falha em production → downtime + rollback complexo + possíveis dados perdidos. Especialmente perigoso para `DROP COLUMN`, `ALTER TYPE`, mudanças destrutivas.
478
+
479
+ **Certo:** SEMPRE PR + preview branch validado:
480
+
481
+ 1. Migration em PR aberto
482
+ 2. Preview branch DAG executa (step 5 migrate validado)
483
+ 3. Required check "Supabase Preview" ✓ verde
484
+ 4. Merge gated por required check + branch protection rule
485
+ 5. (Se "deploy to production" ON) → automatic push para production
486
+
487
+ Cross-ref skill `evolucao-schema-compativel` (v1.22) — 3-step migration safe para mudanças destrutivas.
488
+
489
+ ### Anti-pattern 5: Esperar persistent branch funcionar como production
490
+
491
+ **Errado:** Assumir persistent staging branch é "cópia de produção" para QA team.
492
+
493
+ **Por quê:** branches são **dataless by design** — `seed.sql` é dados sintéticos, não snapshot real. Auth.users separado, sem dados de prod, sem volume real, sem latência real.
494
+
495
+ **Certo:**
496
+
497
+ - persistent branches são para **schema/code validation**, NÃO para QA com dados reais
498
+ - Se precisar QA com dados reais → use staging Supabase project **separado** (não branching)
499
+ - Staging project separado tem SLA, dados reais via replicação, custo previsível Pro plan
500
+
501
+ ### Anti-pattern 6: Criar persistent branch sem cleanup policy
502
+
503
+ **Errado:** Criar persistent branches ad-hoc sem documentar lifecycle ou owner.
504
+
505
+ **Por quê:** persistent branches não auto-pausam — acumulam Branching Compute Hours **24/7 indefinidamente**. 6 meses depois, ninguém sabe pra que serve o branch `qa-test-old`, mas continua sendo cobrado $9.67/mês × 6 = **$58 desperdiçados**.
506
+
507
+ **Certo:**
508
+
509
+ - documentar persistent branches em README ou onboarding doc
510
+ - definir owner por branch (Slack handle + função)
511
+ - review trimestral: `supabase --experimental branches list` + cleanup
512
+ - comment no Dashboard descrevendo propósito + data de criação
513
+
514
+ ## Cross-suite integration (v1.27)
515
+
516
+ Esta skill é base para skills v1.27 (Phases 150-153):
517
+
518
+ - **supabase-config-toml-remotes** (Phase 150) — `[remotes]` block + branch-specific config + secrets per-branch
519
+ - **supabase-ci-cd-github-actions** (Phase 151) — 8 workflows canônicos GitHub Actions (preview deploy, prod deploy, migration gates)
520
+ - **supabase-pgtap-testing** (Phase 152) — testes pgTAP que rodam no DAG step 5/6
521
+ - **supabase-migration-repair** (Phase 153) — `migration list/repair` + rollback preview branch quando step migrate falha
522
+
523
+ Base para agents v1.27 (Phase 154):
524
+
525
+ - **supabase-branching-architect** — projeta strategy (preview-only vs preview + persistent staging mix)
526
+ - **supabase-cicd-pipeline-implementer** — materializa GitHub Actions workflows + Supabase integration config
527
+
528
+ Pattern de handoff cooperativo herdado v1.23-v1.26: **architect** projeta → **cicd-pipeline-implementer** materializa → **release-pipeline-auditor** (v1.10) audita hermeticidade do pipeline final. Nenhum agente descarta upstream — handoff cooperativo SQL (princípio canônico v1.23).
529
+
530
+ ## Ver também
531
+
532
+ - [supabase-config-toml-remotes](../supabase-config-toml-remotes/SKILL.md) (v1.27, Phase 150) — `[remotes]` block + branch-specific config + secrets per-branch
533
+ - [supabase-ci-cd-github-actions](../supabase-ci-cd-github-actions/SKILL.md) (v1.27, Phase 151) — 8 workflows canônicos GitHub Actions
534
+ - [supabase-pgtap-testing](../supabase-pgtap-testing/SKILL.md) (v1.27, Phase 152) — testes pgTAP integrados no DAG
535
+ - [supabase-migration-repair](../supabase-migration-repair/SKILL.md) (v1.27, Phase 153) — `migration list/repair` + rollback preview branch
536
+ - [supabase-migrations](../supabase-migrations/SKILL.md) (v1.23) — 5 blocos obrigatórios CREATE TABLE, naming canônico
537
+ - [supabase-declarative-schema](../supabase-declarative-schema/SKILL.md) — schema declarative workflow (`supabase/schemas/`)
538
+ - [evolucao-schema-compativel](../evolucao-schema-compativel/SKILL.md) (v1.22) — 3-step migration safe rolling upgrade (expand → migrate data → contract)
539
+ - [release-engineering](../release-engineering/SKILL.md) — deployment philosophy + self-service deploys
540
+ - [hermetic-builds](../hermetic-builds/SKILL.md) — pipeline reproducibility + isolation + provenance
541
+ - [supabase-postgres-roles](../supabase-postgres-roles/SKILL.md) (v1.26) — caveat custom roles NÃO capturados em Dashboard alpha (Pattern 4 Caveat 1)
542
+ - [supabase-edge-functions](../supabase-edge-functions/SKILL.md) — Edge Functions deploy no DAG step 7
543
+ - [glossário compartilhado](../_shared-supabase/glossary.md) — termos branching workflow, preview branch, persistent branch, deploy DAG, Branching Compute Hours (será +10 termos em REL-04 v1.27)
544
+ - Doc oficial: [Supabase Branching](https://supabase.com/docs/guides/deployment/branching), [GitHub Integration](https://supabase.com/docs/guides/deployment/branching#github-integration), [Pricing](https://supabase.com/pricing)