@luanpdd/kit-mcp 1.35.0 → 1.36.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.
- package/bin/cli.js +2 -2
- package/bin/mcp.js +6 -6
- package/bin/ui.js +74 -74
- package/gates/ai-prompt-stability.md +120 -120
- package/gates/budget-description.md +68 -68
- package/gates/confidence.md +29 -29
- package/gates/dependency-check.md +33 -33
- package/gates/dept-cycle-prevention.md +179 -179
- package/gates/golden-signals-coverage.md +133 -133
- package/gates/legacy-refactor-safety.md +178 -178
- package/gates/multi-tenant-rls-coverage.md +102 -102
- package/gates/no-personal-uuid.md +72 -72
- package/gates/obs-agents-mcp-supabase.md +86 -86
- package/gates/obs-skills-frontmatter.md +76 -76
- package/gates/observability-coverage.md +151 -151
- package/gates/omm-no-regression.md +83 -83
- package/gates/postmortem-template-required.md +127 -127
- package/gates/prr-checklist-coverage.md +128 -128
- package/gates/regression.md +32 -32
- package/gates/release-pipeline-policy.md +132 -132
- package/gates/secrets-scan.md +33 -33
- package/gates/service-role-not-in-user-facing.md +113 -113
- package/gates/skill-must-include.md +71 -71
- package/gates/sync-idempotent.md +62 -62
- package/gates/verify-phase-goal.md +34 -34
- package/kit/agents/designer-ui.md +216 -216
- package/kit/agents/workflow-generator.md +537 -167
- package/kit/commands/adicionar-backlog.md +1 -1
- package/kit/commands/adicionar-fase.md +1 -1
- package/kit/commands/adicionar-tarefa.md +1 -1
- package/kit/commands/auditar-observabilidade.md +103 -103
- package/kit/commands/auditar-toil.md +129 -129
- package/kit/commands/caracterizar-prompt.md +195 -195
- package/kit/commands/criar-workflow.md +158 -158
- package/kit/commands/definir-perfil.md +1 -1
- package/kit/commands/definir-slo.md +108 -108
- package/kit/commands/fio.md +1 -1
- package/kit/commands/golden-signals.md +142 -142
- package/kit/commands/instrumentar-fase.md +200 -200
- package/kit/commands/investigar-producao.md +162 -162
- package/kit/commands/observabilidade.md +118 -118
- package/kit/commands/postmortem.md +179 -179
- package/kit/commands/prr.md +205 -205
- package/kit/commands/publicar-rapido.md +207 -207
- package/kit/commands/risk-budget.md +220 -220
- package/kit/commands/sre.md +230 -230
- package/kit/file-manifest.json +424 -424
- package/kit/framework/references/output-style.md +22 -22
- package/kit/hooks/post-apply-migration.js +199 -199
- package/kit/hooks/sidecar-tool-publisher.js +210 -210
- package/kit/skills/_shared-dados-distribuidos/glossary.md +224 -224
- package/kit/skills/_shared-legacy/glossary.md +389 -389
- package/kit/skills/_shared-multi-tenant/glossary.md +186 -186
- package/kit/skills/_shared-observability/glossary.md +396 -396
- package/kit/skills/_shared-sre/glossary.md +712 -712
- package/kit/skills/_shared-supabase/glossary.md +234 -234
- package/kit/skills/blameless-postmortems/SKILL.md +340 -340
- package/kit/skills/burn-rate-alerting/SKILL.md +258 -258
- package/kit/skills/cascading-failures/SKILL.md +311 -311
- package/kit/skills/core-analysis-loop/SKILL.md +352 -352
- package/kit/skills/distributed-tracing/SKILL.md +362 -362
- package/kit/skills/dynamic-workflow-authoring/SKILL.md +327 -223
- package/kit/skills/eliminating-toil/SKILL.md +243 -243
- package/kit/skills/event-based-slos/SKILL.md +296 -296
- package/kit/skills/four-golden-signals/SKILL.md +314 -314
- package/kit/skills/hermetic-builds/SKILL.md +323 -323
- package/kit/skills/legacy-monster-methods/SKILL.md +444 -444
- package/kit/skills/llm-as-dependency/SKILL.md +436 -436
- package/kit/skills/load-shedding-graceful-degradation/SKILL.md +396 -396
- package/kit/skills/observability-driven-development/SKILL.md +315 -315
- package/kit/skills/observability-maturity-model/SKILL.md +222 -222
- package/kit/skills/opentelemetry-standard/SKILL.md +351 -351
- package/kit/skills/production-readiness-review/SKILL.md +305 -305
- package/kit/skills/release-engineering/SKILL.md +367 -367
- package/kit/skills/retry-strategies/SKILL.md +372 -372
- package/kit/skills/sre-risk-management/SKILL.md +221 -221
- package/kit/skills/structured-events/SKILL.md +265 -265
- package/kit/skills/supabase-cron-queues/SKILL.md +275 -275
- package/kit/skills/supabase-database-functions/SKILL.md +332 -332
- package/kit/skills/supabase-declarative-schema/SKILL.md +183 -183
- package/kit/skills/supabase-pgvector-rag/SKILL.md +253 -253
- package/kit/skills/supabase-postgres-style/SKILL.md +138 -138
- package/kit/skills/supabase-storage/SKILL.md +234 -234
- package/kit/skills/telemetry-pipelines/SKILL.md +259 -259
- package/kit/skills/telemetry-sampling/SKILL.md +256 -256
- package/kit/skills/ui-anti-padroes-ia/SKILL.md +261 -261
- package/kit/skills/ui-contexto-produto/SKILL.md +248 -248
- package/kit/skills/ui-cor-estrategia/SKILL.md +213 -213
- package/kit/skills/ui-critica-auditoria/SKILL.md +260 -260
- package/kit/skills/ui-motion-funcional/SKILL.md +264 -264
- package/kit/skills/ui-ritmo-espacial/SKILL.md +259 -259
- package/kit/skills/ui-tipografia/SKILL.md +211 -211
- package/package.json +1 -1
- package/src/cli/index.js +1114 -1114
- package/src/cli/render.js +194 -194
- package/src/cli/upgrade-check.js +135 -135
- package/src/core/error-redaction.js +76 -76
- package/src/core/failures.js +153 -153
- package/src/core/gate-runner.js +205 -205
- package/src/core/gates.js +82 -82
- package/src/core/logger.js +170 -170
- package/src/core/manifest-verify.js +174 -174
- package/src/core/metrics.js +268 -268
- package/src/core/notify.js +60 -60
- package/src/core/path-safety.js +141 -141
- package/src/core/replays.js +120 -120
- package/src/core/ui.js +185 -185
- package/src/mcp-server/install.js +149 -149
- package/src/mcp-server/roots.js +124 -124
- package/src/ui/auto-spawn.js +113 -113
- package/src/ui/browser.js +78 -78
- package/src/ui/client.js +130 -130
- package/src/ui/events.js +65 -65
- package/src/ui/lockfile.js +191 -191
- package/src/ui/port.js +67 -67
- package/src/ui/server.js +547 -547
- package/src/ui/wrapper.js +129 -129
|
@@ -1,183 +1,183 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: supabase-declarative-schema
|
|
3
|
-
description: Use ao gerenciar schema via supabase/schemas/ — workflow stop → db diff -f → revisar → apply. Inclui caveats sobre views, RLS, partitions.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Supabase — Declarative Database Schema
|
|
7
|
-
|
|
8
|
-
## Quando usar
|
|
9
|
-
|
|
10
|
-
LLM carrega esta skill quando trabalhar com `supabase/schemas/` (declarative source-of-truth) em vez de migrations imperativas. Trigger phrases:
|
|
11
|
-
|
|
12
|
-
- "supabase schemas/", "declarative schema"
|
|
13
|
-
- "supabase db diff", "gerar migration de schema"
|
|
14
|
-
- "schema source of truth"
|
|
15
|
-
- "como adicionar tabela em projeto declarative"
|
|
16
|
-
|
|
17
|
-
## Regras absolutas
|
|
18
|
-
|
|
19
|
-
- **Workflow canônico:**
|
|
20
|
-
1. Editar arquivos `.sql` em `supabase/schemas/` (representando estado **final** desejado de cada entidade)
|
|
21
|
-
2. **`supabase stop`** — derrubar containers locais (necessário antes de diff)
|
|
22
|
-
3. **`supabase db diff -f <name>`** — gera migration em `supabase/migrations/<timestamp>_<name>.sql`
|
|
23
|
-
4. **Revisar manualmente** a migration gerada (diff é heurístico — pode gerar SQL incorreto em renames, drops, etc.)
|
|
24
|
-
5. `supabase db reset` para aplicar local; `supabase db push` para aplicar remote
|
|
25
|
-
- **Nunca pule `supabase stop`** antes de `db diff` — diff sem stop produz output inconsistente.
|
|
26
|
-
- **Nunca pule revisão** da migration gerada — especialmente para renames (diff pode gerar `drop+create` em vez de `rename column`).
|
|
27
|
-
- **DML (INSERT/UPDATE/DELETE) NÃO é declarative** — fica em migrations imperativas (`supabase/migrations/`) ou `supabase/seed.sql`.
|
|
28
|
-
- **Files ordenados lexicograficamente** — para gerenciar dependências (FKs), nomeie de forma que a ordem de execução resolva referências (ex: `01_users.sql`, `02_tasks.sql`).
|
|
29
|
-
- **Adicione novas colunas no fim** da definição da tabela — evita diffs falsos em PRs.
|
|
30
|
-
- Seu `kit` de schemas reflete estado final, **não** o histórico — migrations carregam o histórico.
|
|
31
|
-
|
|
32
|
-
## Patterns canônicos
|
|
33
|
-
|
|
34
|
-
### Estrutura típica de `supabase/schemas/`
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
supabase/
|
|
38
|
-
├── schemas/
|
|
39
|
-
│ ├── 01_extensions.sql -- create extension if not exists ...
|
|
40
|
-
│ ├── 02_users.sql -- public.users (mirror de auth.users)
|
|
41
|
-
│ ├── 03_tasks.sql -- public.tasks
|
|
42
|
-
│ ├── 04_tasks_rls.sql -- policies em public.tasks
|
|
43
|
-
│ └── 05_functions.sql -- public.set_updated_at, etc.
|
|
44
|
-
├── migrations/ -- gerado por db diff (revisado e commitado)
|
|
45
|
-
└── seed.sql -- DML (não declarative)
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### Workflow de mudança
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
# PT-BR: 1. editar schemas/
|
|
52
|
-
# (ex: adicionar coluna priority em supabase/schemas/03_tasks.sql)
|
|
53
|
-
|
|
54
|
-
# PT-BR: 2. parar containers (obrigatório antes de diff)
|
|
55
|
-
supabase stop
|
|
56
|
-
|
|
57
|
-
# PT-BR: 3. gerar migration
|
|
58
|
-
supabase db diff -f add_priority_to_tasks
|
|
59
|
-
|
|
60
|
-
# PT-BR: 4. revisar arquivo gerado
|
|
61
|
-
# supabase/migrations/<timestamp>_add_priority_to_tasks.sql
|
|
62
|
-
# (verificar se diff capturou só o intended change — não renames falsos, drops indevidos)
|
|
63
|
-
|
|
64
|
-
# PT-BR: 5. aplicar local
|
|
65
|
-
supabase db reset
|
|
66
|
-
|
|
67
|
-
# PT-BR: 6. (depois) aplicar remote
|
|
68
|
-
supabase db push
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Schema com FK e RLS
|
|
72
|
-
|
|
73
|
-
```sql
|
|
74
|
-
-- supabase/schemas/03_tasks.sql
|
|
75
|
-
create table if not exists public.tasks (
|
|
76
|
-
id uuid primary key default gen_random_uuid(),
|
|
77
|
-
user_id uuid not null references auth.users (id) on delete cascade,
|
|
78
|
-
title text not null,
|
|
79
|
-
status text not null default 'todo',
|
|
80
|
-
priority text not null default 'low', -- novas colunas: append no fim
|
|
81
|
-
created_at timestamptz not null default now()
|
|
82
|
-
);
|
|
83
|
-
|
|
84
|
-
alter table public.tasks enable row level security;
|
|
85
|
-
|
|
86
|
-
-- policies em arquivo separado (04_tasks_rls.sql) ou aqui
|
|
87
|
-
-- mas sempre granulares (ver supabase-rls-policies)
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
## Caveats — limitações conhecidas do declarative
|
|
91
|
-
|
|
92
|
-
O `migra` diff tool (usado por `supabase db diff`) tem edge cases. **Sempre revise** a migration gerada antes de aplicar.
|
|
93
|
-
|
|
94
|
-
### DML (INSERT/UPDATE/DELETE)
|
|
95
|
-
- **Não rastreável** por declarative (declarative só captura DDL — Data Definition Language).
|
|
96
|
-
- Use `supabase/seed.sql` para seed data ou migrations imperativas para mudanças de dados.
|
|
97
|
-
|
|
98
|
-
### View ownership e atributos
|
|
99
|
-
- Diff **não captura mudanças de owner** de views.
|
|
100
|
-
- **Security invoker em views** não é diferenciado por diff — usar migration manual se mudar.
|
|
101
|
-
- **Materialized views** têm suporte limitado.
|
|
102
|
-
- **Mudança de column type em views** não recria a view — diff pode falhar silenciosamente.
|
|
103
|
-
|
|
104
|
-
### RLS policies
|
|
105
|
-
- `alter policy` statements são suportados mas podem ter edge cases.
|
|
106
|
-
- **Column privileges** não são totalmente capturados.
|
|
107
|
-
|
|
108
|
-
### Outras entidades
|
|
109
|
-
- **Schema privileges:** não rastreados (cada schema diffado separadamente).
|
|
110
|
-
- **Comments on objects:** não rastreados.
|
|
111
|
-
- **Partitions:** suporte limitado — partitioned tables podem precisar migration manual.
|
|
112
|
-
- **`alter publication ... add table`:** não detectado por diff.
|
|
113
|
-
- **`create domain`:** ignorado por diff (usar migration imperativa).
|
|
114
|
-
- **`grant` statements:** duplicados a partir de default privileges — verificar saída.
|
|
115
|
-
|
|
116
|
-
## Anti-patterns
|
|
117
|
-
|
|
118
|
-
### Anti-pattern 1: `db diff` com containers up
|
|
119
|
-
|
|
120
|
-
**Errado:**
|
|
121
|
-
```bash
|
|
122
|
-
# containers ainda rodando
|
|
123
|
-
supabase db diff -f my_change # ⚠ output inconsistente
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
**Por quê:** diff compara schema declarado em `schemas/` com DB local atual. Se containers up, DB tem state inconsistente (mid-transaction, locks abertos).
|
|
127
|
-
|
|
128
|
-
**Certo:**
|
|
129
|
-
```bash
|
|
130
|
-
supabase stop
|
|
131
|
-
supabase db diff -f my_change
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
### Anti-pattern 2: Aplicar migration gerada sem revisão
|
|
135
|
-
|
|
136
|
-
**Errado:**
|
|
137
|
-
```bash
|
|
138
|
-
supabase db diff -f rename_column
|
|
139
|
-
supabase db push # ⚠ aplicou sem revisar
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**Por quê:** diff é heurístico. Em renames, pode gerar `drop column old + create column new` em vez de `alter table ... rename column`. Resultado: dados perdidos.
|
|
143
|
-
|
|
144
|
-
**Certo:** sempre abrir `supabase/migrations/<timestamp>_*.sql` e revisar antes de aplicar.
|
|
145
|
-
|
|
146
|
-
### Anti-pattern 3: DML em `supabase/schemas/`
|
|
147
|
-
|
|
148
|
-
**Errado:**
|
|
149
|
-
```sql
|
|
150
|
-
-- supabase/schemas/03_tasks.sql
|
|
151
|
-
create table if not exists public.tasks (...);
|
|
152
|
-
|
|
153
|
-
insert into public.tasks (id, title) values (...); -- ⚠ DML não é declarative
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
**Por quê:** declarative captura apenas DDL. Inserts em `schemas/` rodam quando schema é aplicado, mas não são rastreáveis em migrations — recriam sempre que `db reset`.
|
|
157
|
-
|
|
158
|
-
**Certo:** mover INSERTs para `supabase/seed.sql` ou migration imperativa.
|
|
159
|
-
|
|
160
|
-
### Anti-pattern 4: Adicionar coluna no meio da definição
|
|
161
|
-
|
|
162
|
-
**Errado:**
|
|
163
|
-
```sql
|
|
164
|
-
-- antes
|
|
165
|
-
create table public.tasks (id uuid, title text, created_at timestamptz);
|
|
166
|
-
|
|
167
|
-
-- depois (coluna adicionada NO MEIO)
|
|
168
|
-
create table public.tasks (id uuid, priority text, title text, created_at timestamptz);
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
**Por quê:** diff pode interpretar como reorder e gerar SQL ineficiente (drop + recreate de várias colunas).
|
|
172
|
-
|
|
173
|
-
**Certo:** appendar no fim:
|
|
174
|
-
```sql
|
|
175
|
-
create table public.tasks (id uuid, title text, created_at timestamptz, priority text);
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
## Ver também
|
|
179
|
-
|
|
180
|
-
- [supabase-migrations](../supabase-migrations/SKILL.md) — formato e regras dos arquivos gerados em `migrations/`
|
|
181
|
-
- [supabase-postgres-style](../supabase-postgres-style/SKILL.md) — estilo SQL nas declarações
|
|
182
|
-
- [supabase-rls-policies](../supabase-rls-policies/SKILL.md) — como expressar RLS em schemas/
|
|
183
|
-
- [glossário](../_shared-supabase/glossary.md) — comandos CLI canônicos (`supabase stop`, `db diff -f`, `db reset`)
|
|
1
|
+
---
|
|
2
|
+
name: supabase-declarative-schema
|
|
3
|
+
description: Use ao gerenciar schema via supabase/schemas/ — workflow stop → db diff -f → revisar → apply. Inclui caveats sobre views, RLS, partitions.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Supabase — Declarative Database Schema
|
|
7
|
+
|
|
8
|
+
## Quando usar
|
|
9
|
+
|
|
10
|
+
LLM carrega esta skill quando trabalhar com `supabase/schemas/` (declarative source-of-truth) em vez de migrations imperativas. Trigger phrases:
|
|
11
|
+
|
|
12
|
+
- "supabase schemas/", "declarative schema"
|
|
13
|
+
- "supabase db diff", "gerar migration de schema"
|
|
14
|
+
- "schema source of truth"
|
|
15
|
+
- "como adicionar tabela em projeto declarative"
|
|
16
|
+
|
|
17
|
+
## Regras absolutas
|
|
18
|
+
|
|
19
|
+
- **Workflow canônico:**
|
|
20
|
+
1. Editar arquivos `.sql` em `supabase/schemas/` (representando estado **final** desejado de cada entidade)
|
|
21
|
+
2. **`supabase stop`** — derrubar containers locais (necessário antes de diff)
|
|
22
|
+
3. **`supabase db diff -f <name>`** — gera migration em `supabase/migrations/<timestamp>_<name>.sql`
|
|
23
|
+
4. **Revisar manualmente** a migration gerada (diff é heurístico — pode gerar SQL incorreto em renames, drops, etc.)
|
|
24
|
+
5. `supabase db reset` para aplicar local; `supabase db push` para aplicar remote
|
|
25
|
+
- **Nunca pule `supabase stop`** antes de `db diff` — diff sem stop produz output inconsistente.
|
|
26
|
+
- **Nunca pule revisão** da migration gerada — especialmente para renames (diff pode gerar `drop+create` em vez de `rename column`).
|
|
27
|
+
- **DML (INSERT/UPDATE/DELETE) NÃO é declarative** — fica em migrations imperativas (`supabase/migrations/`) ou `supabase/seed.sql`.
|
|
28
|
+
- **Files ordenados lexicograficamente** — para gerenciar dependências (FKs), nomeie de forma que a ordem de execução resolva referências (ex: `01_users.sql`, `02_tasks.sql`).
|
|
29
|
+
- **Adicione novas colunas no fim** da definição da tabela — evita diffs falsos em PRs.
|
|
30
|
+
- Seu `kit` de schemas reflete estado final, **não** o histórico — migrations carregam o histórico.
|
|
31
|
+
|
|
32
|
+
## Patterns canônicos
|
|
33
|
+
|
|
34
|
+
### Estrutura típica de `supabase/schemas/`
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
supabase/
|
|
38
|
+
├── schemas/
|
|
39
|
+
│ ├── 01_extensions.sql -- create extension if not exists ...
|
|
40
|
+
│ ├── 02_users.sql -- public.users (mirror de auth.users)
|
|
41
|
+
│ ├── 03_tasks.sql -- public.tasks
|
|
42
|
+
│ ├── 04_tasks_rls.sql -- policies em public.tasks
|
|
43
|
+
│ └── 05_functions.sql -- public.set_updated_at, etc.
|
|
44
|
+
├── migrations/ -- gerado por db diff (revisado e commitado)
|
|
45
|
+
└── seed.sql -- DML (não declarative)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Workflow de mudança
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# PT-BR: 1. editar schemas/
|
|
52
|
+
# (ex: adicionar coluna priority em supabase/schemas/03_tasks.sql)
|
|
53
|
+
|
|
54
|
+
# PT-BR: 2. parar containers (obrigatório antes de diff)
|
|
55
|
+
supabase stop
|
|
56
|
+
|
|
57
|
+
# PT-BR: 3. gerar migration
|
|
58
|
+
supabase db diff -f add_priority_to_tasks
|
|
59
|
+
|
|
60
|
+
# PT-BR: 4. revisar arquivo gerado
|
|
61
|
+
# supabase/migrations/<timestamp>_add_priority_to_tasks.sql
|
|
62
|
+
# (verificar se diff capturou só o intended change — não renames falsos, drops indevidos)
|
|
63
|
+
|
|
64
|
+
# PT-BR: 5. aplicar local
|
|
65
|
+
supabase db reset
|
|
66
|
+
|
|
67
|
+
# PT-BR: 6. (depois) aplicar remote
|
|
68
|
+
supabase db push
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Schema com FK e RLS
|
|
72
|
+
|
|
73
|
+
```sql
|
|
74
|
+
-- supabase/schemas/03_tasks.sql
|
|
75
|
+
create table if not exists public.tasks (
|
|
76
|
+
id uuid primary key default gen_random_uuid(),
|
|
77
|
+
user_id uuid not null references auth.users (id) on delete cascade,
|
|
78
|
+
title text not null,
|
|
79
|
+
status text not null default 'todo',
|
|
80
|
+
priority text not null default 'low', -- novas colunas: append no fim
|
|
81
|
+
created_at timestamptz not null default now()
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
alter table public.tasks enable row level security;
|
|
85
|
+
|
|
86
|
+
-- policies em arquivo separado (04_tasks_rls.sql) ou aqui
|
|
87
|
+
-- mas sempre granulares (ver supabase-rls-policies)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Caveats — limitações conhecidas do declarative
|
|
91
|
+
|
|
92
|
+
O `migra` diff tool (usado por `supabase db diff`) tem edge cases. **Sempre revise** a migration gerada antes de aplicar.
|
|
93
|
+
|
|
94
|
+
### DML (INSERT/UPDATE/DELETE)
|
|
95
|
+
- **Não rastreável** por declarative (declarative só captura DDL — Data Definition Language).
|
|
96
|
+
- Use `supabase/seed.sql` para seed data ou migrations imperativas para mudanças de dados.
|
|
97
|
+
|
|
98
|
+
### View ownership e atributos
|
|
99
|
+
- Diff **não captura mudanças de owner** de views.
|
|
100
|
+
- **Security invoker em views** não é diferenciado por diff — usar migration manual se mudar.
|
|
101
|
+
- **Materialized views** têm suporte limitado.
|
|
102
|
+
- **Mudança de column type em views** não recria a view — diff pode falhar silenciosamente.
|
|
103
|
+
|
|
104
|
+
### RLS policies
|
|
105
|
+
- `alter policy` statements são suportados mas podem ter edge cases.
|
|
106
|
+
- **Column privileges** não são totalmente capturados.
|
|
107
|
+
|
|
108
|
+
### Outras entidades
|
|
109
|
+
- **Schema privileges:** não rastreados (cada schema diffado separadamente).
|
|
110
|
+
- **Comments on objects:** não rastreados.
|
|
111
|
+
- **Partitions:** suporte limitado — partitioned tables podem precisar migration manual.
|
|
112
|
+
- **`alter publication ... add table`:** não detectado por diff.
|
|
113
|
+
- **`create domain`:** ignorado por diff (usar migration imperativa).
|
|
114
|
+
- **`grant` statements:** duplicados a partir de default privileges — verificar saída.
|
|
115
|
+
|
|
116
|
+
## Anti-patterns
|
|
117
|
+
|
|
118
|
+
### Anti-pattern 1: `db diff` com containers up
|
|
119
|
+
|
|
120
|
+
**Errado:**
|
|
121
|
+
```bash
|
|
122
|
+
# containers ainda rodando
|
|
123
|
+
supabase db diff -f my_change # ⚠ output inconsistente
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Por quê:** diff compara schema declarado em `schemas/` com DB local atual. Se containers up, DB tem state inconsistente (mid-transaction, locks abertos).
|
|
127
|
+
|
|
128
|
+
**Certo:**
|
|
129
|
+
```bash
|
|
130
|
+
supabase stop
|
|
131
|
+
supabase db diff -f my_change
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Anti-pattern 2: Aplicar migration gerada sem revisão
|
|
135
|
+
|
|
136
|
+
**Errado:**
|
|
137
|
+
```bash
|
|
138
|
+
supabase db diff -f rename_column
|
|
139
|
+
supabase db push # ⚠ aplicou sem revisar
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Por quê:** diff é heurístico. Em renames, pode gerar `drop column old + create column new` em vez de `alter table ... rename column`. Resultado: dados perdidos.
|
|
143
|
+
|
|
144
|
+
**Certo:** sempre abrir `supabase/migrations/<timestamp>_*.sql` e revisar antes de aplicar.
|
|
145
|
+
|
|
146
|
+
### Anti-pattern 3: DML em `supabase/schemas/`
|
|
147
|
+
|
|
148
|
+
**Errado:**
|
|
149
|
+
```sql
|
|
150
|
+
-- supabase/schemas/03_tasks.sql
|
|
151
|
+
create table if not exists public.tasks (...);
|
|
152
|
+
|
|
153
|
+
insert into public.tasks (id, title) values (...); -- ⚠ DML não é declarative
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Por quê:** declarative captura apenas DDL. Inserts em `schemas/` rodam quando schema é aplicado, mas não são rastreáveis em migrations — recriam sempre que `db reset`.
|
|
157
|
+
|
|
158
|
+
**Certo:** mover INSERTs para `supabase/seed.sql` ou migration imperativa.
|
|
159
|
+
|
|
160
|
+
### Anti-pattern 4: Adicionar coluna no meio da definição
|
|
161
|
+
|
|
162
|
+
**Errado:**
|
|
163
|
+
```sql
|
|
164
|
+
-- antes
|
|
165
|
+
create table public.tasks (id uuid, title text, created_at timestamptz);
|
|
166
|
+
|
|
167
|
+
-- depois (coluna adicionada NO MEIO)
|
|
168
|
+
create table public.tasks (id uuid, priority text, title text, created_at timestamptz);
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Por quê:** diff pode interpretar como reorder e gerar SQL ineficiente (drop + recreate de várias colunas).
|
|
172
|
+
|
|
173
|
+
**Certo:** appendar no fim:
|
|
174
|
+
```sql
|
|
175
|
+
create table public.tasks (id uuid, title text, created_at timestamptz, priority text);
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Ver também
|
|
179
|
+
|
|
180
|
+
- [supabase-migrations](../supabase-migrations/SKILL.md) — formato e regras dos arquivos gerados em `migrations/`
|
|
181
|
+
- [supabase-postgres-style](../supabase-postgres-style/SKILL.md) — estilo SQL nas declarações
|
|
182
|
+
- [supabase-rls-policies](../supabase-rls-policies/SKILL.md) — como expressar RLS em schemas/
|
|
183
|
+
- [glossário](../_shared-supabase/glossary.md) — comandos CLI canônicos (`supabase stop`, `db diff -f`, `db reset`)
|