superkit-mcp-server 1.2.2 → 1.2.3
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/ARCHITECTURE.md +102 -102
- package/README.md +71 -71
- package/SUPERKIT.md +168 -168
- package/agents/code-archaeologist.md +106 -106
- package/agents/coder.md +90 -90
- package/agents/data-engineer.md +28 -28
- package/agents/devops-engineer.md +242 -242
- package/agents/git-manager.md +203 -203
- package/agents/orchestrator.md +420 -420
- package/agents/penetration-tester.md +188 -188
- package/agents/performance-optimizer.md +187 -187
- package/agents/planner.md +270 -270
- package/agents/qa-automation-engineer.md +103 -103
- package/agents/quant-developer.md +32 -32
- package/agents/reviewer.md +100 -100
- package/agents/scout.md +222 -222
- package/agents/security-auditor.md +3 -2
- package/agents/tester.md +274 -274
- package/agents/ui-designer.md +208 -208
- package/build/index.js +18 -9
- package/build/tools/__tests__/loggerTools.test.js +5 -5
- package/build/tools/archTools.js +2 -19
- package/build/tools/autoPreview.js +2 -2
- package/build/tools/compoundTools.js +4 -4
- package/build/tools/docsTools.js +5 -10
- package/build/tools/loggerTools.js +1 -1
- package/build/tools/todoTools.js +39 -39
- package/build/tools/validators/__tests__/apiSchema.test.js +23 -23
- package/build/tools/validators/__tests__/convertRules.test.js +5 -5
- package/build/tools/validators/__tests__/frontendDesign.test.js +12 -12
- package/build/tools/validators/__tests__/geoChecker.test.js +19 -19
- package/build/tools/validators/__tests__/mobileAudit.test.js +12 -12
- package/build/tools/validators/__tests__/reactPerformanceChecker.test.js +17 -17
- package/build/tools/validators/__tests__/securityScan.test.js +6 -6
- package/build/tools/validators/__tests__/seoChecker.test.js +16 -16
- package/build/tools/validators/__tests__/typeCoverage.test.js +14 -14
- package/build/tools/validators/convertRules.js +2 -2
- package/commands/README.md +122 -122
- package/commands/ask.toml +72 -72
- package/commands/brainstorm.toml +119 -119
- package/commands/chat.toml +77 -77
- package/commands/code-preview.toml +37 -37
- package/commands/code.toml +28 -28
- package/commands/content.toml +200 -200
- package/commands/cook.toml +77 -77
- package/commands/copywrite.toml +131 -131
- package/commands/db.toml +192 -192
- package/commands/debug.toml +166 -166
- package/commands/design.toml +158 -158
- package/commands/dev-rules.toml +14 -14
- package/commands/do.toml +117 -117
- package/commands/doc-rules.toml +14 -14
- package/commands/docs.toml +148 -148
- package/commands/fix.toml +440 -440
- package/commands/fullstack.toml +175 -175
- package/commands/git.toml +235 -235
- package/commands/help.toml +84 -84
- package/commands/integrate.toml +127 -127
- package/commands/journal.toml +136 -136
- package/commands/kit-setup.toml +40 -40
- package/commands/mcp.toml +183 -183
- package/commands/orchestration.toml +15 -15
- package/commands/plan.toml +171 -171
- package/commands/pm.toml +148 -148
- package/commands/pr.toml +50 -50
- package/commands/project.toml +32 -32
- package/commands/research.toml +117 -117
- package/commands/review-pr.toml +63 -63
- package/commands/review.toml +190 -190
- package/commands/scout-ext.toml +97 -97
- package/commands/scout.toml +79 -79
- package/commands/screenshot.toml +65 -65
- package/commands/session.toml +102 -102
- package/commands/skill.toml +384 -384
- package/commands/status.toml +22 -22
- package/commands/team.toml +56 -56
- package/commands/test.toml +164 -164
- package/commands/ticket.toml +70 -70
- package/commands/use.toml +106 -106
- package/commands/video.toml +83 -83
- package/commands/watzup.toml +71 -71
- package/commands/workflow.toml +14 -14
- package/package.json +35 -35
- package/skills/meta/README.md +30 -30
- package/skills/meta/api-design/SKILL.md +134 -134
- package/skills/meta/code-review/SKILL.md +44 -44
- package/skills/meta/code-review/checklists/pre-merge.md +25 -25
- package/skills/meta/code-review/workflows/architecture-pass.md +26 -26
- package/skills/meta/code-review/workflows/performance-pass.md +27 -27
- package/skills/meta/code-review/workflows/security-pass.md +29 -29
- package/skills/meta/compound-docs/SKILL.md +133 -133
- package/skills/meta/debug/SKILL.md +40 -40
- package/skills/meta/debug/templates/bug-report.template.md +31 -31
- package/skills/meta/debug/workflows/reproduce-issue.md +20 -20
- package/skills/meta/docker/SKILL.md +126 -126
- package/skills/meta/examples/supabase/SKILL.md +46 -46
- package/skills/meta/examples/supabase/references/best-practices.md +319 -319
- package/skills/meta/examples/supabase/references/common-patterns.md +373 -373
- package/skills/meta/examples/supabase/templates/migration-template.sql +49 -49
- package/skills/meta/examples/supabase/templates/rls-policy-template.sql +77 -77
- package/skills/meta/examples/supabase/workflows/debugging.md +260 -260
- package/skills/meta/examples/supabase/workflows/migration-workflow.md +211 -211
- package/skills/meta/examples/supabase/workflows/rls-policies.md +244 -244
- package/skills/meta/examples/supabase/workflows/schema-design.md +321 -321
- package/skills/meta/file-todos/SKILL.md +88 -88
- package/skills/meta/mobile/SKILL.md +140 -140
- package/skills/meta/nextjs/SKILL.md +101 -101
- package/skills/meta/performance/SKILL.md +130 -130
- package/skills/meta/react-patterns/SKILL.md +83 -83
- package/skills/meta/security/SKILL.md +114 -114
- package/skills/meta/session-resume/SKILL.md +96 -96
- package/skills/meta/tailwind/SKILL.md +139 -139
- package/skills/meta/testing/SKILL.md +43 -43
- package/skills/meta/testing/references/vitest-patterns.md +45 -45
- package/skills/meta/testing/templates/component-test.template.tsx +37 -37
- package/skills/tech/alpha-vantage/SKILL.md +142 -142
- package/skills/tech/alpha-vantage/references/commodities.md +153 -153
- package/skills/tech/alpha-vantage/references/economic-indicators.md +158 -158
- package/skills/tech/alpha-vantage/references/forex-crypto.md +154 -154
- package/skills/tech/alpha-vantage/references/fundamentals.md +223 -223
- package/skills/tech/alpha-vantage/references/intelligence.md +138 -138
- package/skills/tech/alpha-vantage/references/options.md +93 -93
- package/skills/tech/alpha-vantage/references/technical-indicators.md +374 -374
- package/skills/tech/alpha-vantage/references/time-series.md +157 -157
- package/skills/tech/doc.md +6 -6
- package/skills/tech/financial-modeling/SKILL.md +18 -18
- package/skills/tech/financial-modeling/skills/3-statements/SKILL.md +368 -368
- package/skills/tech/financial-modeling/skills/3-statements/references/formatting.md +118 -118
- package/skills/tech/financial-modeling/skills/3-statements/references/formulas.md +292 -292
- package/skills/tech/financial-modeling/skills/3-statements/references/sec-filings.md +125 -125
- package/skills/tech/financial-modeling/skills/dcf-model/SKILL.md +1210 -1210
- package/skills/tech/financial-modeling/skills/dcf-model/TROUBLESHOOTING.md +40 -40
- package/skills/tech/financial-modeling/skills/dcf-model/requirements.txt +8 -8
- package/skills/tech/financial-modeling/skills/dcf-model/scripts/validate_dcf.py +292 -292
- package/skills/tech/financial-modeling/skills/lbo-model/SKILL.md +236 -236
- package/skills/tech/financial-modeling/skills/merger-model/SKILL.md +108 -108
- package/skills/workflows/README.md +203 -203
- package/skills/workflows/adr.md +174 -174
- package/skills/workflows/changelog.md +74 -74
- package/skills/workflows/compound.md +323 -323
- package/skills/workflows/compound_health.md +74 -74
- package/skills/workflows/create-agent-skill.md +138 -139
- package/skills/workflows/cycle.md +144 -144
- package/skills/workflows/deploy-docs.md +84 -84
- package/skills/workflows/development-rules.md +42 -42
- package/skills/workflows/doc.md +95 -95
- package/skills/workflows/documentation-management.md +34 -34
- package/skills/workflows/explore.md +146 -146
- package/skills/workflows/generate_command.md +106 -106
- package/skills/workflows/heal-skill.md +97 -97
- package/skills/workflows/housekeeping.md +229 -229
- package/skills/workflows/kit-setup.md +102 -102
- package/skills/workflows/map-codebase.md +78 -78
- package/skills/workflows/orchestration-protocol.md +43 -43
- package/skills/workflows/plan-compound.md +439 -439
- package/skills/workflows/plan_review.md +269 -269
- package/skills/workflows/primary-workflow.md +37 -37
- package/skills/workflows/promote_pattern.md +86 -86
- package/skills/workflows/release-docs.md +82 -82
- package/skills/workflows/report-bug.md +135 -135
- package/skills/workflows/reproduce-bug.md +118 -118
- package/skills/workflows/resolve_pr.md +133 -133
- package/skills/workflows/resolve_todo.md +128 -128
- package/skills/workflows/review-compound.md +376 -376
- package/skills/workflows/skill-review.md +127 -127
- package/skills/workflows/specs.md +257 -257
- package/skills/workflows/triage-sprint.md +102 -102
- package/skills/workflows/triage.md +152 -152
- package/skills/workflows/work.md +399 -399
- package/skills/workflows/xcode-test.md +93 -93
|
@@ -1,211 +1,211 @@
|
|
|
1
|
-
# Database Migration Workflow
|
|
2
|
-
|
|
3
|
-
Safe, systematic approach to creating and applying database migrations in [PROJECT_NAME].
|
|
4
|
-
|
|
5
|
-
## When To Use
|
|
6
|
-
|
|
7
|
-
- Adding new tables or columns
|
|
8
|
-
- Modifying existing schema
|
|
9
|
-
- Creating indexes or constraints
|
|
10
|
-
- Setting up RLS policies
|
|
11
|
-
- Creating database functions or triggers
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Prerequisites
|
|
16
|
-
|
|
17
|
-
- [ ] Understand the schema change required
|
|
18
|
-
- [ ] Know which tables/columns are affected
|
|
19
|
-
- [ ] Have a rollback plan
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Workflow
|
|
24
|
-
|
|
25
|
-
### Step 1: Plan the Migration
|
|
26
|
-
|
|
27
|
-
**What needs to change?**
|
|
28
|
-
- New tables?
|
|
29
|
-
- New columns?
|
|
30
|
-
- Indexes?
|
|
31
|
-
- RLS policies?
|
|
32
|
-
- Functions or triggers?
|
|
33
|
-
|
|
34
|
-
**Document:**
|
|
35
|
-
```markdown
|
|
36
|
-
## Migration Purpose
|
|
37
|
-
{What this migration accomplishes}
|
|
38
|
-
|
|
39
|
-
## Affected Tables
|
|
40
|
-
- {table1}
|
|
41
|
-
- {table2}
|
|
42
|
-
|
|
43
|
-
## Dependencies
|
|
44
|
-
- {existing migration}
|
|
45
|
-
- {required tables}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
### Step 2: Create Migration File
|
|
51
|
-
|
|
52
|
-
**Naming convention:** `YYYYMMDD_description.sql`
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
# Example
|
|
56
|
-
touch backend/migrations/$(date +%Y%m%d)_add_user_preferences.sql
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
**File structure:** Use the migration template from `templates/migration-template.sql`
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
### Step 3: Write Migration SQL
|
|
64
|
-
|
|
65
|
-
**Follow [PROJECT_NAME] patterns:**
|
|
66
|
-
|
|
67
|
-
1. **Add header comment:**
|
|
68
|
-
```sql
|
|
69
|
-
-- Migration: {Description}
|
|
70
|
-
-- Date: {YYYY-MM-DD}
|
|
71
|
-
-- Purpose: {What this accomplishes}
|
|
72
|
-
-- Requirements: {Requirement IDs if applicable}
|
|
73
|
-
-- Feature: {feature-name}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
2. **Use idempotent operations:**
|
|
77
|
-
```sql
|
|
78
|
-
-- Good: Safe to run multiple times
|
|
79
|
-
CREATE TABLE IF NOT EXISTS ...
|
|
80
|
-
CREATE INDEX IF NOT EXISTS ...
|
|
81
|
-
|
|
82
|
-
-- For types, wrap in error handling
|
|
83
|
-
DO $$ BEGIN
|
|
84
|
-
CREATE TYPE status_type AS ENUM ('active', 'inactive');
|
|
85
|
-
EXCEPTION
|
|
86
|
-
WHEN duplicate_object THEN null;
|
|
87
|
-
END $$;
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
3. **Add indexes for foreign keys and common queries:**
|
|
91
|
-
```sql
|
|
92
|
-
CREATE INDEX IF NOT EXISTS idx_table_column
|
|
93
|
-
ON schema.table (column);
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
4. **Enable RLS on new tables:**
|
|
97
|
-
```sql
|
|
98
|
-
ALTER TABLE schema.table ENABLE ROW LEVEL SECURITY;
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
5. **Add documentation comments:**
|
|
102
|
-
```sql
|
|
103
|
-
COMMENT ON TABLE schema.table IS 'Description of table purpose';
|
|
104
|
-
COMMENT ON COLUMN schema.table.column IS 'Description of column';
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
### Step 4: Review Migration
|
|
110
|
-
|
|
111
|
-
**Checklist:**
|
|
112
|
-
- [ ] Header comment includes date, purpose, requirements
|
|
113
|
-
- [ ] All operations are idempotent (safe to re-run)
|
|
114
|
-
- [ ] Foreign keys have ON DELETE CASCADE or appropriate action
|
|
115
|
-
- [ ] Indexes created for foreign keys
|
|
116
|
-
- [ ] RLS enabled on tables with sensitive data
|
|
117
|
-
- [ ] COMMENT statements document purpose
|
|
118
|
-
- [ ] Migration follows existing patterns in `backend/migrations/`
|
|
119
|
-
|
|
120
|
-
**Review similar migrations:**
|
|
121
|
-
```bash
|
|
122
|
-
# Find similar migrations for reference
|
|
123
|
-
ls backend/migrations/ | grep -i {keyword}
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
### Step 5: Test Migration
|
|
129
|
-
|
|
130
|
-
**Local testing:**
|
|
131
|
-
|
|
132
|
-
1. Apply migration to local database
|
|
133
|
-
2. Verify schema changes
|
|
134
|
-
3. Test queries affected by the change
|
|
135
|
-
4. Verify RLS policies work correctly
|
|
136
|
-
|
|
137
|
-
**Common issues:**
|
|
138
|
-
- Duplicate type definitions → Use DO $$ error handling
|
|
139
|
-
- Missing CASCADE on foreign keys → Data orphaning
|
|
140
|
-
- Missing indexes → Slow queries
|
|
141
|
-
- RLS not enabled → Data exposure
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
### Step 6: Document Breaking Changes
|
|
146
|
-
|
|
147
|
-
If migration affects existing code:
|
|
148
|
-
|
|
149
|
-
```markdown
|
|
150
|
-
## Breaking Changes
|
|
151
|
-
|
|
152
|
-
**Affected:**
|
|
153
|
-
- API endpoint: `{endpoint}`
|
|
154
|
-
- Component: `{component}`
|
|
155
|
-
|
|
156
|
-
**Migration path:**
|
|
157
|
-
- Update queries to use new column names
|
|
158
|
-
- Add null checks for new non-null columns
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
## Common Patterns
|
|
164
|
-
|
|
165
|
-
### Pattern: Add Column with Default
|
|
166
|
-
|
|
167
|
-
```sql
|
|
168
|
-
-- Add column with safe default
|
|
169
|
-
ALTER TABLE schema.table
|
|
170
|
-
ADD COLUMN IF NOT EXISTS new_column TEXT DEFAULT 'default_value';
|
|
171
|
-
|
|
172
|
-
-- Remove default after backfill if needed
|
|
173
|
-
ALTER TABLE schema.table
|
|
174
|
-
ALTER COLUMN new_column DROP DEFAULT;
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### Pattern: Create Trigger for updated_at
|
|
178
|
-
|
|
179
|
-
```sql
|
|
180
|
-
-- Reuse existing function
|
|
181
|
-
CREATE TRIGGER update_table_updated_at
|
|
182
|
-
BEFORE UPDATE ON schema.table
|
|
183
|
-
FOR EACH ROW
|
|
184
|
-
EXECUTE FUNCTION public.update_updated_at_column();
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
### Pattern: Multi-Tenancy RLS
|
|
188
|
-
|
|
189
|
-
```sql
|
|
190
|
-
-- Policy: Users see only their fund's data
|
|
191
|
-
CREATE POLICY "Users see own fund data"
|
|
192
|
-
ON schema.table
|
|
193
|
-
FOR SELECT
|
|
194
|
-
TO authenticated
|
|
195
|
-
USING (
|
|
196
|
-
fund_id IN (
|
|
197
|
-
SELECT fund_id FROM user_fund_access
|
|
198
|
-
WHERE user_id = auth.uid()
|
|
199
|
-
)
|
|
200
|
-
);
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
---
|
|
204
|
-
|
|
205
|
-
## Expected Output
|
|
206
|
-
|
|
207
|
-
✅ Migration file created in `backend/migrations/`
|
|
208
|
-
✅ Migration follows [PROJECT_NAME] conventions
|
|
209
|
-
✅ Schema changes documented
|
|
210
|
-
✅ Breaking changes noted (if any)
|
|
211
|
-
✅ Ready for deployment
|
|
1
|
+
# Database Migration Workflow
|
|
2
|
+
|
|
3
|
+
Safe, systematic approach to creating and applying database migrations in [PROJECT_NAME].
|
|
4
|
+
|
|
5
|
+
## When To Use
|
|
6
|
+
|
|
7
|
+
- Adding new tables or columns
|
|
8
|
+
- Modifying existing schema
|
|
9
|
+
- Creating indexes or constraints
|
|
10
|
+
- Setting up RLS policies
|
|
11
|
+
- Creating database functions or triggers
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
- [ ] Understand the schema change required
|
|
18
|
+
- [ ] Know which tables/columns are affected
|
|
19
|
+
- [ ] Have a rollback plan
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Workflow
|
|
24
|
+
|
|
25
|
+
### Step 1: Plan the Migration
|
|
26
|
+
|
|
27
|
+
**What needs to change?**
|
|
28
|
+
- New tables?
|
|
29
|
+
- New columns?
|
|
30
|
+
- Indexes?
|
|
31
|
+
- RLS policies?
|
|
32
|
+
- Functions or triggers?
|
|
33
|
+
|
|
34
|
+
**Document:**
|
|
35
|
+
```markdown
|
|
36
|
+
## Migration Purpose
|
|
37
|
+
{What this migration accomplishes}
|
|
38
|
+
|
|
39
|
+
## Affected Tables
|
|
40
|
+
- {table1}
|
|
41
|
+
- {table2}
|
|
42
|
+
|
|
43
|
+
## Dependencies
|
|
44
|
+
- {existing migration}
|
|
45
|
+
- {required tables}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
### Step 2: Create Migration File
|
|
51
|
+
|
|
52
|
+
**Naming convention:** `YYYYMMDD_description.sql`
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Example
|
|
56
|
+
touch backend/migrations/$(date +%Y%m%d)_add_user_preferences.sql
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**File structure:** Use the migration template from `templates/migration-template.sql`
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### Step 3: Write Migration SQL
|
|
64
|
+
|
|
65
|
+
**Follow [PROJECT_NAME] patterns:**
|
|
66
|
+
|
|
67
|
+
1. **Add header comment:**
|
|
68
|
+
```sql
|
|
69
|
+
-- Migration: {Description}
|
|
70
|
+
-- Date: {YYYY-MM-DD}
|
|
71
|
+
-- Purpose: {What this accomplishes}
|
|
72
|
+
-- Requirements: {Requirement IDs if applicable}
|
|
73
|
+
-- Feature: {feature-name}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
2. **Use idempotent operations:**
|
|
77
|
+
```sql
|
|
78
|
+
-- Good: Safe to run multiple times
|
|
79
|
+
CREATE TABLE IF NOT EXISTS ...
|
|
80
|
+
CREATE INDEX IF NOT EXISTS ...
|
|
81
|
+
|
|
82
|
+
-- For types, wrap in error handling
|
|
83
|
+
DO $$ BEGIN
|
|
84
|
+
CREATE TYPE status_type AS ENUM ('active', 'inactive');
|
|
85
|
+
EXCEPTION
|
|
86
|
+
WHEN duplicate_object THEN null;
|
|
87
|
+
END $$;
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
3. **Add indexes for foreign keys and common queries:**
|
|
91
|
+
```sql
|
|
92
|
+
CREATE INDEX IF NOT EXISTS idx_table_column
|
|
93
|
+
ON schema.table (column);
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
4. **Enable RLS on new tables:**
|
|
97
|
+
```sql
|
|
98
|
+
ALTER TABLE schema.table ENABLE ROW LEVEL SECURITY;
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
5. **Add documentation comments:**
|
|
102
|
+
```sql
|
|
103
|
+
COMMENT ON TABLE schema.table IS 'Description of table purpose';
|
|
104
|
+
COMMENT ON COLUMN schema.table.column IS 'Description of column';
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### Step 4: Review Migration
|
|
110
|
+
|
|
111
|
+
**Checklist:**
|
|
112
|
+
- [ ] Header comment includes date, purpose, requirements
|
|
113
|
+
- [ ] All operations are idempotent (safe to re-run)
|
|
114
|
+
- [ ] Foreign keys have ON DELETE CASCADE or appropriate action
|
|
115
|
+
- [ ] Indexes created for foreign keys
|
|
116
|
+
- [ ] RLS enabled on tables with sensitive data
|
|
117
|
+
- [ ] COMMENT statements document purpose
|
|
118
|
+
- [ ] Migration follows existing patterns in `backend/migrations/`
|
|
119
|
+
|
|
120
|
+
**Review similar migrations:**
|
|
121
|
+
```bash
|
|
122
|
+
# Find similar migrations for reference
|
|
123
|
+
ls backend/migrations/ | grep -i {keyword}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
### Step 5: Test Migration
|
|
129
|
+
|
|
130
|
+
**Local testing:**
|
|
131
|
+
|
|
132
|
+
1. Apply migration to local database
|
|
133
|
+
2. Verify schema changes
|
|
134
|
+
3. Test queries affected by the change
|
|
135
|
+
4. Verify RLS policies work correctly
|
|
136
|
+
|
|
137
|
+
**Common issues:**
|
|
138
|
+
- Duplicate type definitions → Use DO $$ error handling
|
|
139
|
+
- Missing CASCADE on foreign keys → Data orphaning
|
|
140
|
+
- Missing indexes → Slow queries
|
|
141
|
+
- RLS not enabled → Data exposure
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
### Step 6: Document Breaking Changes
|
|
146
|
+
|
|
147
|
+
If migration affects existing code:
|
|
148
|
+
|
|
149
|
+
```markdown
|
|
150
|
+
## Breaking Changes
|
|
151
|
+
|
|
152
|
+
**Affected:**
|
|
153
|
+
- API endpoint: `{endpoint}`
|
|
154
|
+
- Component: `{component}`
|
|
155
|
+
|
|
156
|
+
**Migration path:**
|
|
157
|
+
- Update queries to use new column names
|
|
158
|
+
- Add null checks for new non-null columns
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Common Patterns
|
|
164
|
+
|
|
165
|
+
### Pattern: Add Column with Default
|
|
166
|
+
|
|
167
|
+
```sql
|
|
168
|
+
-- Add column with safe default
|
|
169
|
+
ALTER TABLE schema.table
|
|
170
|
+
ADD COLUMN IF NOT EXISTS new_column TEXT DEFAULT 'default_value';
|
|
171
|
+
|
|
172
|
+
-- Remove default after backfill if needed
|
|
173
|
+
ALTER TABLE schema.table
|
|
174
|
+
ALTER COLUMN new_column DROP DEFAULT;
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Pattern: Create Trigger for updated_at
|
|
178
|
+
|
|
179
|
+
```sql
|
|
180
|
+
-- Reuse existing function
|
|
181
|
+
CREATE TRIGGER update_table_updated_at
|
|
182
|
+
BEFORE UPDATE ON schema.table
|
|
183
|
+
FOR EACH ROW
|
|
184
|
+
EXECUTE FUNCTION public.update_updated_at_column();
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Pattern: Multi-Tenancy RLS
|
|
188
|
+
|
|
189
|
+
```sql
|
|
190
|
+
-- Policy: Users see only their fund's data
|
|
191
|
+
CREATE POLICY "Users see own fund data"
|
|
192
|
+
ON schema.table
|
|
193
|
+
FOR SELECT
|
|
194
|
+
TO authenticated
|
|
195
|
+
USING (
|
|
196
|
+
fund_id IN (
|
|
197
|
+
SELECT fund_id FROM user_fund_access
|
|
198
|
+
WHERE user_id = auth.uid()
|
|
199
|
+
)
|
|
200
|
+
);
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Expected Output
|
|
206
|
+
|
|
207
|
+
✅ Migration file created in `backend/migrations/`
|
|
208
|
+
✅ Migration follows [PROJECT_NAME] conventions
|
|
209
|
+
✅ Schema changes documented
|
|
210
|
+
✅ Breaking changes noted (if any)
|
|
211
|
+
✅ Ready for deployment
|