@tinkcarlos/skillora 0.2.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 (234) hide show
  1. package/.claude/skills/.temp-skill-index.md +245 -0
  2. package/.claude/skills/SKILL.md +264 -0
  3. package/.claude/skills/api-scaffolding/SKILL.md +431 -0
  4. package/.claude/skills/api-scaffolding/agents/backend-architect.md +282 -0
  5. package/.claude/skills/api-scaffolding/agents/django-pro.md +144 -0
  6. package/.claude/skills/api-scaffolding/agents/fastapi-pro.md +156 -0
  7. package/.claude/skills/api-scaffolding/agents/graphql-architect.md +146 -0
  8. package/.claude/skills/api-scaffolding/skills/fastapi-templates/SKILL.md +171 -0
  9. package/.claude/skills/api-testing-observability/SKILL.md +583 -0
  10. package/.claude/skills/api-testing-observability/agents/api-documenter.md +146 -0
  11. package/.claude/skills/api-testing-observability/commands/api-mock.md +1320 -0
  12. package/.claude/skills/brainstorming/SKILL.md +283 -0
  13. package/.claude/skills/bug-fixing/SKILL.md +382 -0
  14. package/.claude/skills/bug-fixing/references/backend-guide.md +132 -0
  15. package/.claude/skills/bug-fixing/references/bug-guide.md +354 -0
  16. package/.claude/skills/bug-fixing/references/bug-record-template.md +134 -0
  17. package/.claude/skills/bug-fixing/references/bug-records.md +88 -0
  18. package/.claude/skills/bug-fixing/references/code-review-gate.md +81 -0
  19. package/.claude/skills/bug-fixing/references/common-bugs.md +140 -0
  20. package/.claude/skills/bug-fixing/references/complete-workflow.md +361 -0
  21. package/.claude/skills/bug-fixing/references/config-driven-fixes.md +136 -0
  22. package/.claude/skills/bug-fixing/references/context-isolation-protocol.md +268 -0
  23. package/.claude/skills/bug-fixing/references/cross-surface-regression.md +120 -0
  24. package/.claude/skills/bug-fixing/references/database-investigation.md +129 -0
  25. package/.claude/skills/bug-fixing/references/dependency-and-integrity-protocol.md +369 -0
  26. package/.claude/skills/bug-fixing/references/fix-completeness-checklist.md +239 -0
  27. package/.claude/skills/bug-fixing/references/frontend-guide.md +219 -0
  28. package/.claude/skills/bug-fixing/references/fullstack-joint-guide.md +123 -0
  29. package/.claude/skills/bug-fixing/references/functional-breakage.md +117 -0
  30. package/.claude/skills/bug-fixing/references/ide-lint-errors-guide.md +176 -0
  31. package/.claude/skills/bug-fixing/references/impact-analysis.md +511 -0
  32. package/.claude/skills/bug-fixing/references/investigation-checklist.md +263 -0
  33. package/.claude/skills/bug-fixing/references/knowledge-extraction-guide.md +531 -0
  34. package/.claude/skills/bug-fixing/references/knowledge-workflow.md +212 -0
  35. package/.claude/skills/bug-fixing/references/post-edit-quality-gate.md +30 -0
  36. package/.claude/skills/bug-fixing/references/python-env-and-testing.md +126 -0
  37. package/.claude/skills/bug-fixing/references/rca-guide.md +428 -0
  38. package/.claude/skills/bug-fixing/references/similar-bug-patterns.md +113 -0
  39. package/.claude/skills/bug-fixing/references/skill-delegation-guide.md +350 -0
  40. package/.claude/skills/bug-fixing/references/skill-orchestration.md +155 -0
  41. package/.claude/skills/bug-fixing/references/testing-strategy.md +350 -0
  42. package/.claude/skills/bug-fixing/references/tooling-build-scripts.md +162 -0
  43. package/.claude/skills/bug-fixing/references/user-input-validation.md +77 -0
  44. package/.claude/skills/bug-fixing/references/ux-patterns.md +158 -0
  45. package/.claude/skills/bug-fixing/references/windows-terminal-hygiene.md +106 -0
  46. package/.claude/skills/bug-fixing/references/zero-regression-matrix.md +239 -0
  47. package/.claude/skills/bug-fixing/references/zero-risk-protocol.md +102 -0
  48. package/.claude/skills/bug-fixing/scripts/format_code.py +611 -0
  49. package/.claude/skills/bug-fixing/scripts/generate_report_template.py +74 -0
  50. package/.claude/skills/bug-fixing/scripts/lint_check.py +816 -0
  51. package/.claude/skills/bug-fixing/scripts/requirements.txt +36 -0
  52. package/.claude/skills/cicd-pipeline/SKILL.md +300 -0
  53. package/.claude/skills/code-review/SKILL.md +535 -0
  54. package/.claude/skills/code-review/references/anti-pattern-scan.md +102 -0
  55. package/.claude/skills/code-review/references/automated-analysis.md +456 -0
  56. package/.claude/skills/code-review/references/backend-common-issues.md +589 -0
  57. package/.claude/skills/code-review/references/backend-expert-guide.md +415 -0
  58. package/.claude/skills/code-review/references/backend-review.md +868 -0
  59. package/.claude/skills/code-review/references/batch-processing-strategy.md +198 -0
  60. package/.claude/skills/code-review/references/call-chain-analysis-protocol.md +166 -0
  61. package/.claude/skills/code-review/references/common-patterns.md +321 -0
  62. package/.claude/skills/code-review/references/configuration-review.md +425 -0
  63. package/.claude/skills/code-review/references/control-flow-completeness.md +114 -0
  64. package/.claude/skills/code-review/references/database-review.md +298 -0
  65. package/.claude/skills/code-review/references/dependency-and-integrity-protocol.md +313 -0
  66. package/.claude/skills/code-review/references/external-standards.md +51 -0
  67. package/.claude/skills/code-review/references/feature-review.md +329 -0
  68. package/.claude/skills/code-review/references/file-review-template.md +326 -0
  69. package/.claude/skills/code-review/references/frontend-advanced.md +654 -0
  70. package/.claude/skills/code-review/references/frontend-common-issues.md +482 -0
  71. package/.claude/skills/code-review/references/frontend-expert-guide.md +342 -0
  72. package/.claude/skills/code-review/references/frontend-review.md +783 -0
  73. package/.claude/skills/code-review/references/fullstack-consistency.md +418 -0
  74. package/.claude/skills/code-review/references/fullstack-review.md +477 -0
  75. package/.claude/skills/code-review/references/functional-completeness.md +386 -0
  76. package/.claude/skills/code-review/references/hidden-bugs-detection.md +473 -0
  77. package/.claude/skills/code-review/references/ide-lint-errors-guide.md +173 -0
  78. package/.claude/skills/code-review/references/infrastructure-review.md +453 -0
  79. package/.claude/skills/code-review/references/iteration-review.md +264 -0
  80. package/.claude/skills/code-review/references/job-review.md +335 -0
  81. package/.claude/skills/code-review/references/layered-checklist-protocol.md +157 -0
  82. package/.claude/skills/code-review/references/logic-completeness.md +535 -0
  83. package/.claude/skills/code-review/references/mandatory-checklist.md +288 -0
  84. package/.claude/skills/code-review/references/multi-language-guide.md +800 -0
  85. package/.claude/skills/code-review/references/new-project-review.md +226 -0
  86. package/.claude/skills/code-review/references/non-code-files-review.md +451 -0
  87. package/.claude/skills/code-review/references/overlooked-issues.md +657 -0
  88. package/.claude/skills/code-review/references/platform-specific-review.md +195 -0
  89. package/.claude/skills/code-review/references/precision-analysis-protocol.md +260 -0
  90. package/.claude/skills/code-review/references/python-patterns.md +494 -0
  91. package/.claude/skills/code-review/references/rca-techniques.md +362 -0
  92. package/.claude/skills/code-review/references/report-template.md +430 -0
  93. package/.claude/skills/code-review/references/resource-limits-and-degradation.md +137 -0
  94. package/.claude/skills/code-review/references/review-dimensions.md +311 -0
  95. package/.claude/skills/code-review/references/review-guide.md +202 -0
  96. package/.claude/skills/code-review/references/review-knowledge-workflow.md +257 -0
  97. package/.claude/skills/code-review/references/review-progress-tracker-protocol.md +172 -0
  98. package/.claude/skills/code-review/references/review-record-template.md +195 -0
  99. package/.claude/skills/code-review/references/skill-orchestration.md +143 -0
  100. package/.claude/skills/code-review/references/ui-ux-review.md +470 -0
  101. package/.claude/skills/containerization/SKILL.md +313 -0
  102. package/.claude/skills/database-migrations/agents/database-admin.md +142 -0
  103. package/.claude/skills/database-migrations/agents/database-optimizer.md +144 -0
  104. package/.claude/skills/database-migrations/commands/migration-observability.md +408 -0
  105. package/.claude/skills/database-migrations/commands/sql-migrations.md +492 -0
  106. package/.claude/skills/finishing-a-development-branch/SKILL.md +319 -0
  107. package/.claude/skills/frontend-design/LICENSE.txt +177 -0
  108. package/.claude/skills/frontend-design/SKILL.md +587 -0
  109. package/.claude/skills/frontend-design/references/color-consistency.md +487 -0
  110. package/.claude/skills/frontend-design/references/color-palettes-full.md +657 -0
  111. package/.claude/skills/frontend-design/references/design-system-generator.md +285 -0
  112. package/.claude/skills/frontend-design/references/font-pairings-full.md +705 -0
  113. package/.claude/skills/frontend-design/references/industry-anti-patterns.md +281 -0
  114. package/.claude/skills/frontend-design/references/layout-anti-patterns.md +582 -0
  115. package/.claude/skills/frontend-design/references/motion-patterns.md +659 -0
  116. package/.claude/skills/frontend-design/references/pre-delivery-checklist.md +153 -0
  117. package/.claude/skills/frontend-design/references/responsive-design.md +555 -0
  118. package/.claude/skills/frontend-design/references/style-modification-rules.md +335 -0
  119. package/.claude/skills/frontend-design/references/ui-styles-full.md +383 -0
  120. package/.claude/skills/frontend-design/references/ui-styles-rating.md +191 -0
  121. package/.claude/skills/frontend-design/references/ux-guidelines.md +640 -0
  122. package/.claude/skills/fullstack-developer/SKILL.md +512 -0
  123. package/.claude/skills/fullstack-developer/references/api-contract-guide.md +312 -0
  124. package/.claude/skills/fullstack-developer/references/api-response-patterns.md +223 -0
  125. package/.claude/skills/fullstack-developer/references/async-patterns.md +220 -0
  126. package/.claude/skills/fullstack-developer/references/bug-prevention.md +914 -0
  127. package/.claude/skills/fullstack-developer/references/code-quality-checklist.md +271 -0
  128. package/.claude/skills/fullstack-developer/references/complete-development-workflow.md +278 -0
  129. package/.claude/skills/fullstack-developer/references/context-isolation-protocol.md +256 -0
  130. package/.claude/skills/fullstack-developer/references/database-migration.md +331 -0
  131. package/.claude/skills/fullstack-developer/references/dependency-and-integrity-protocol.md +390 -0
  132. package/.claude/skills/fullstack-developer/references/development-phases.md +333 -0
  133. package/.claude/skills/fullstack-developer/references/expert-guide.md +214 -0
  134. package/.claude/skills/fullstack-developer/references/file-import-patterns.md +114 -0
  135. package/.claude/skills/fullstack-developer/references/graceful-degradation-patterns.md +78 -0
  136. package/.claude/skills/fullstack-developer/references/ide-lint-errors-guide.md +183 -0
  137. package/.claude/skills/fullstack-developer/references/integration-testing.md +301 -0
  138. package/.claude/skills/fullstack-developer/references/mock-api-patterns.md +307 -0
  139. package/.claude/skills/fullstack-developer/references/phase-gate-template.md +249 -0
  140. package/.claude/skills/fullstack-developer/references/post-edit-quality-gate.md +30 -0
  141. package/.claude/skills/fullstack-developer/references/python-engineering.md +79 -0
  142. package/.claude/skills/fullstack-developer/references/skill-orchestration.md +214 -0
  143. package/.claude/skills/fullstack-developer/references/skill-router-table.md +304 -0
  144. package/.claude/skills/fullstack-developer/references/state-sync.md +217 -0
  145. package/.claude/skills/fullstack-developer/references/ui-testing-checklist.md +292 -0
  146. package/.claude/skills/fullstack-developer/scripts/format_code.py +611 -0
  147. package/.claude/skills/fullstack-developer/scripts/lint_check.py +816 -0
  148. package/.claude/skills/fullstack-developer/scripts/requirements.txt +36 -0
  149. package/.claude/skills/performance-optimization/SKILL.md +250 -0
  150. package/.claude/skills/product-requirements/SKILL.md +357 -0
  151. package/.claude/skills/product-requirements/references/acceptance-criteria.md +335 -0
  152. package/.claude/skills/product-requirements/references/answer-first-questioning-protocol.md +299 -0
  153. package/.claude/skills/product-requirements/references/competitive-analysis-guide.md +183 -0
  154. package/.claude/skills/product-requirements/references/document-accuracy-protocol.md +253 -0
  155. package/.claude/skills/product-requirements/references/document-management-protocol.md +278 -0
  156. package/.claude/skills/product-requirements/references/external-standards.md +62 -0
  157. package/.claude/skills/product-requirements/references/feature-spec-template.md +359 -0
  158. package/.claude/skills/product-requirements/references/knowledge-acquisition-protocol.md +251 -0
  159. package/.claude/skills/product-requirements/references/plan-execution-protocol.md +334 -0
  160. package/.claude/skills/product-requirements/references/plan-generation-protocol.md +264 -0
  161. package/.claude/skills/product-requirements/references/prioritization-frameworks.md +80 -0
  162. package/.claude/skills/product-requirements/references/requirement-decomposition-protocol.md +291 -0
  163. package/.claude/skills/product-requirements/references/user-story-examples.md +297 -0
  164. package/.claude/skills/product-requirements/references/workflow-templates.md +266 -0
  165. package/.claude/skills/react-best-practices/SKILL.md +198 -0
  166. package/.claude/skills/react-best-practices/references/advanced-patterns.md +94 -0
  167. package/.claude/skills/react-best-practices/references/bundle-optimization.md +182 -0
  168. package/.claude/skills/react-best-practices/references/client-data-fetching.md +112 -0
  169. package/.claude/skills/react-best-practices/references/complete-guide.md +2249 -0
  170. package/.claude/skills/react-best-practices/references/eliminating-waterfalls.md +169 -0
  171. package/.claude/skills/react-best-practices/references/javascript-performance.md +256 -0
  172. package/.claude/skills/react-best-practices/references/rendering-performance.md +230 -0
  173. package/.claude/skills/react-best-practices/references/rerender-optimization.md +214 -0
  174. package/.claude/skills/react-best-practices/references/server-performance.md +182 -0
  175. package/.claude/skills/security-audit/SKILL.md +226 -0
  176. package/.claude/skills/shared-references/advanced-debugging-techniques.md +186 -0
  177. package/.claude/skills/shared-references/code-quality-checklist.md +218 -0
  178. package/.claude/skills/shared-references/code-review-efficiency-guide.md +125 -0
  179. package/.claude/skills/shared-references/mcp-dependency-compatibility-protocol.md +276 -0
  180. package/.claude/skills/shared-references/skill-call-graph.md +230 -0
  181. package/.claude/skills/shared-references/skill-orchestration-protocol.md +281 -0
  182. package/.claude/skills/shared-references/subagent-dispatch-templates.md +199 -0
  183. package/.claude/skills/skill-expert-skills/LICENSE.txt +204 -0
  184. package/.claude/skills/skill-expert-skills/QUICK_NAVIGATION.md +374 -0
  185. package/.claude/skills/skill-expert-skills/SKILL.md +247 -0
  186. package/.claude/skills/skill-expert-skills/docs/_index.md +91 -0
  187. package/.claude/skills/skill-expert-skills/references/deep-research-methodology.md +389 -0
  188. package/.claude/skills/skill-expert-skills/references/docs-generation-workflow.md +398 -0
  189. package/.claude/skills/skill-expert-skills/references/domain-expertise-protocol.md +343 -0
  190. package/.claude/skills/skill-expert-skills/references/domain-knowledge/_index.md +54 -0
  191. package/.claude/skills/skill-expert-skills/references/domain-knowledge/backend-expertise.md +517 -0
  192. package/.claude/skills/skill-expert-skills/references/domain-knowledge/bug-fixing-expertise.md +363 -0
  193. package/.claude/skills/skill-expert-skills/references/domain-knowledge/code-review-expertise.md +392 -0
  194. package/.claude/skills/skill-expert-skills/references/domain-knowledge/frontend-expertise.md +410 -0
  195. package/.claude/skills/skill-expert-skills/references/domain-knowledge-template.md +503 -0
  196. package/.claude/skills/skill-expert-skills/references/examples.md +782 -0
  197. package/.claude/skills/skill-expert-skills/references/integration-examples.md +655 -0
  198. package/.claude/skills/skill-expert-skills/references/knowledge-validation-checklist.md +246 -0
  199. package/.claude/skills/skill-expert-skills/references/latest-knowledge-acquisition.md +461 -0
  200. package/.claude/skills/skill-expert-skills/references/mcp-tools-guide.md +439 -0
  201. package/.claude/skills/skill-expert-skills/references/official-best-practices.md +616 -0
  202. package/.claude/skills/skill-expert-skills/references/patterns.md +218 -0
  203. package/.claude/skills/skill-expert-skills/references/plugin-skills-guide.md +432 -0
  204. package/.claude/skills/skill-expert-skills/references/requirement-elicitation-protocol.md +290 -0
  205. package/.claude/skills/skill-expert-skills/references/skill-creator-SKILL.md +353 -0
  206. package/.claude/skills/skill-expert-skills/references/skill-templates.md +583 -0
  207. package/.claude/skills/skill-expert-skills/references/skills-knowledge-base.md +561 -0
  208. package/.claude/skills/skill-expert-skills/references/tools-guide.md +379 -0
  209. package/.claude/skills/skill-expert-skills/references/troubleshooting.md +378 -0
  210. package/.claude/skills/skill-expert-skills/references/universality-guide.md +205 -0
  211. package/.claude/skills/skill-expert-skills/references/writing-style-guide.md +466 -0
  212. package/.claude/skills/skill-expert-skills/scripts/__pycache__/quick_validate.cpython-313.pyc +0 -0
  213. package/.claude/skills/skill-expert-skills/scripts/__pycache__/universal_validate.cpython-313.pyc +0 -0
  214. package/.claude/skills/skill-expert-skills/scripts/analyze_trigger.py +425 -0
  215. package/.claude/skills/skill-expert-skills/scripts/diff_with_official.py +188 -0
  216. package/.claude/skills/skill-expert-skills/scripts/init_skill.py +349 -0
  217. package/.claude/skills/skill-expert-skills/scripts/package_skill.py +156 -0
  218. package/.claude/skills/skill-expert-skills/scripts/quick_validate.py +493 -0
  219. package/.claude/skills/skill-expert-skills/scripts/requirements.txt +2 -0
  220. package/.claude/skills/skill-expert-skills/scripts/universal_validate.py +182 -0
  221. package/.claude/skills/skill-expert-skills/scripts/upgrade_skill.py +431 -0
  222. package/.claude/skills/subagent-driven-development/SKILL.md +268 -0
  223. package/.claude/skills/test-driven-development/SKILL.md +246 -0
  224. package/.claude/skills/test-driven-development/references/testing-anti-patterns.md +192 -0
  225. package/.claude/skills/using-git-worktrees/SKILL.md +266 -0
  226. package/.claude/skills/using-skillstack/SKILL.md +127 -0
  227. package/.claude/skills/vercel-deploy/SKILL.md +166 -0
  228. package/.claude/skills/vercel-deploy/scripts/deploy.sh +249 -0
  229. package/.claude/skills/verification-before-completion/SKILL.md +305 -0
  230. package/.claude/skills/writing-plans/SKILL.md +259 -0
  231. package/README.md +69 -0
  232. package/bin/cli.js +468 -0
  233. package/lib/init.js +333 -0
  234. package/package.json +29 -0
@@ -0,0 +1,492 @@
1
+ ---
2
+ description: SQL database migrations with zero-downtime strategies for PostgreSQL, MySQL, SQL Server
3
+ version: "1.0.0"
4
+ tags: [database, sql, migrations, postgresql, mysql, flyway, liquibase, alembic, zero-downtime]
5
+ tool_access: [Read, Write, Edit, Bash, Grep, Glob]
6
+ ---
7
+
8
+ # SQL Database Migration Strategy and Implementation
9
+
10
+ You are a SQL database migration expert specializing in zero-downtime deployments, data integrity, and production-ready migration strategies for PostgreSQL, MySQL, and SQL Server. Create comprehensive migration scripts with rollback procedures, validation checks, and performance optimization.
11
+
12
+ ## Context
13
+ The user needs SQL database migrations that ensure data integrity, minimize downtime, and provide safe rollback options. Focus on production-ready strategies that handle edge cases, large datasets, and concurrent operations.
14
+
15
+ ## Requirements
16
+ $ARGUMENTS
17
+
18
+ ## Instructions
19
+
20
+ ### 1. Zero-Downtime Migration Strategies
21
+
22
+ **Expand-Contract Pattern**
23
+
24
+ ```sql
25
+ -- Phase 1: EXPAND (backward compatible)
26
+ ALTER TABLE users ADD COLUMN email_verified BOOLEAN DEFAULT FALSE;
27
+ CREATE INDEX CONCURRENTLY idx_users_email_verified ON users(email_verified);
28
+
29
+ -- Phase 2: MIGRATE DATA (in batches)
30
+ DO $$
31
+ DECLARE
32
+ batch_size INT := 10000;
33
+ rows_updated INT;
34
+ BEGIN
35
+ LOOP
36
+ UPDATE users
37
+ SET email_verified = (email_confirmation_token IS NOT NULL)
38
+ WHERE id IN (
39
+ SELECT id FROM users
40
+ WHERE email_verified IS NULL
41
+ LIMIT batch_size
42
+ );
43
+
44
+ GET DIAGNOSTICS rows_updated = ROW_COUNT;
45
+ EXIT WHEN rows_updated = 0;
46
+ COMMIT;
47
+ PERFORM pg_sleep(0.1);
48
+ END LOOP;
49
+ END $$;
50
+
51
+ -- Phase 3: CONTRACT (after code deployment)
52
+ ALTER TABLE users DROP COLUMN email_confirmation_token;
53
+ ```
54
+
55
+ **Blue-Green Schema Migration**
56
+
57
+ ```sql
58
+ -- Step 1: Create new schema version
59
+ CREATE TABLE v2_orders (
60
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
61
+ customer_id UUID NOT NULL,
62
+ total_amount DECIMAL(12,2) NOT NULL,
63
+ status VARCHAR(50) NOT NULL,
64
+ metadata JSONB DEFAULT '{}',
65
+ created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
66
+
67
+ CONSTRAINT fk_v2_orders_customer
68
+ FOREIGN KEY (customer_id) REFERENCES customers(id),
69
+ CONSTRAINT chk_v2_orders_amount
70
+ CHECK (total_amount >= 0)
71
+ );
72
+
73
+ CREATE INDEX idx_v2_orders_customer ON v2_orders(customer_id);
74
+ CREATE INDEX idx_v2_orders_status ON v2_orders(status);
75
+
76
+ -- Step 2: Dual-write synchronization
77
+ CREATE OR REPLACE FUNCTION sync_orders_to_v2()
78
+ RETURNS TRIGGER AS $$
79
+ BEGIN
80
+ INSERT INTO v2_orders (id, customer_id, total_amount, status)
81
+ VALUES (NEW.id, NEW.customer_id, NEW.amount, NEW.state)
82
+ ON CONFLICT (id) DO UPDATE SET
83
+ total_amount = EXCLUDED.total_amount,
84
+ status = EXCLUDED.status;
85
+ RETURN NEW;
86
+ END;
87
+ $$ LANGUAGE plpgsql;
88
+
89
+ CREATE TRIGGER sync_orders_trigger
90
+ AFTER INSERT OR UPDATE ON orders
91
+ FOR EACH ROW EXECUTE FUNCTION sync_orders_to_v2();
92
+
93
+ -- Step 3: Backfill historical data
94
+ DO $$
95
+ DECLARE
96
+ batch_size INT := 10000;
97
+ last_id UUID := NULL;
98
+ BEGIN
99
+ LOOP
100
+ INSERT INTO v2_orders (id, customer_id, total_amount, status)
101
+ SELECT id, customer_id, amount, state
102
+ FROM orders
103
+ WHERE (last_id IS NULL OR id > last_id)
104
+ ORDER BY id
105
+ LIMIT batch_size
106
+ ON CONFLICT (id) DO NOTHING;
107
+
108
+ SELECT id INTO last_id FROM orders
109
+ WHERE (last_id IS NULL OR id > last_id)
110
+ ORDER BY id LIMIT 1 OFFSET (batch_size - 1);
111
+
112
+ EXIT WHEN last_id IS NULL;
113
+ COMMIT;
114
+ END LOOP;
115
+ END $$;
116
+ ```
117
+
118
+ **Online Schema Change**
119
+
120
+ ```sql
121
+ -- PostgreSQL: Add NOT NULL safely
122
+ -- Step 1: Add column as nullable
123
+ ALTER TABLE large_table ADD COLUMN new_field VARCHAR(100);
124
+
125
+ -- Step 2: Backfill data
126
+ UPDATE large_table
127
+ SET new_field = 'default_value'
128
+ WHERE new_field IS NULL;
129
+
130
+ -- Step 3: Add constraint (PostgreSQL 12+)
131
+ ALTER TABLE large_table
132
+ ADD CONSTRAINT chk_new_field_not_null
133
+ CHECK (new_field IS NOT NULL) NOT VALID;
134
+
135
+ ALTER TABLE large_table
136
+ VALIDATE CONSTRAINT chk_new_field_not_null;
137
+ ```
138
+
139
+ ### 2. Migration Scripts
140
+
141
+ **Flyway Migration**
142
+
143
+ ```sql
144
+ -- V001__add_user_preferences.sql
145
+ BEGIN;
146
+
147
+ CREATE TABLE IF NOT EXISTS user_preferences (
148
+ user_id UUID PRIMARY KEY,
149
+ theme VARCHAR(20) DEFAULT 'light' NOT NULL,
150
+ language VARCHAR(10) DEFAULT 'en' NOT NULL,
151
+ timezone VARCHAR(50) DEFAULT 'UTC' NOT NULL,
152
+ notifications JSONB DEFAULT '{}' NOT NULL,
153
+ created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
154
+
155
+ CONSTRAINT fk_user_preferences_user
156
+ FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
157
+ );
158
+
159
+ CREATE INDEX idx_user_preferences_language ON user_preferences(language);
160
+
161
+ -- Seed defaults for existing users
162
+ INSERT INTO user_preferences (user_id)
163
+ SELECT id FROM users
164
+ ON CONFLICT (user_id) DO NOTHING;
165
+
166
+ COMMIT;
167
+ ```
168
+
169
+ **Alembic Migration (Python)**
170
+
171
+ ```python
172
+ """add_user_preferences
173
+
174
+ Revision ID: 001_user_prefs
175
+ """
176
+ from alembic import op
177
+ import sqlalchemy as sa
178
+ from sqlalchemy.dialects import postgresql
179
+
180
+ def upgrade():
181
+ op.create_table(
182
+ 'user_preferences',
183
+ sa.Column('user_id', postgresql.UUID(as_uuid=True), primary_key=True),
184
+ sa.Column('theme', sa.VARCHAR(20), nullable=False, server_default='light'),
185
+ sa.Column('language', sa.VARCHAR(10), nullable=False, server_default='en'),
186
+ sa.Column('timezone', sa.VARCHAR(50), nullable=False, server_default='UTC'),
187
+ sa.Column('notifications', postgresql.JSONB, nullable=False,
188
+ server_default=sa.text("'{}'::jsonb")),
189
+ sa.ForeignKeyConstraint(['user_id'], ['users.id'], ondelete='CASCADE')
190
+ )
191
+
192
+ op.create_index('idx_user_preferences_language', 'user_preferences', ['language'])
193
+
194
+ op.execute("""
195
+ INSERT INTO user_preferences (user_id)
196
+ SELECT id FROM users
197
+ ON CONFLICT (user_id) DO NOTHING
198
+ """)
199
+
200
+ def downgrade():
201
+ op.drop_table('user_preferences')
202
+ ```
203
+
204
+ ### 3. Data Integrity Validation
205
+
206
+ ```python
207
+ def validate_pre_migration(db_connection):
208
+ checks = []
209
+
210
+ # Check 1: NULL values in critical columns
211
+ null_check = db_connection.execute("""
212
+ SELECT table_name, COUNT(*) as null_count
213
+ FROM users WHERE email IS NULL
214
+ """).fetchall()
215
+
216
+ if null_check[0]['null_count'] > 0:
217
+ checks.append({
218
+ 'check': 'null_values',
219
+ 'status': 'FAILED',
220
+ 'severity': 'CRITICAL',
221
+ 'message': 'NULL values found in required columns'
222
+ })
223
+
224
+ # Check 2: Duplicate values
225
+ duplicate_check = db_connection.execute("""
226
+ SELECT email, COUNT(*) as count
227
+ FROM users
228
+ GROUP BY email
229
+ HAVING COUNT(*) > 1
230
+ """).fetchall()
231
+
232
+ if duplicate_check:
233
+ checks.append({
234
+ 'check': 'duplicates',
235
+ 'status': 'FAILED',
236
+ 'severity': 'CRITICAL',
237
+ 'message': f'{len(duplicate_check)} duplicate emails'
238
+ })
239
+
240
+ return checks
241
+
242
+ def validate_post_migration(db_connection, migration_spec):
243
+ validations = []
244
+
245
+ # Row count verification
246
+ for table in migration_spec['affected_tables']:
247
+ actual_count = db_connection.execute(
248
+ f"SELECT COUNT(*) FROM {table['name']}"
249
+ ).fetchone()[0]
250
+
251
+ validations.append({
252
+ 'check': 'row_count',
253
+ 'table': table['name'],
254
+ 'expected': table['expected_count'],
255
+ 'actual': actual_count,
256
+ 'status': 'PASS' if actual_count == table['expected_count'] else 'FAIL'
257
+ })
258
+
259
+ return validations
260
+ ```
261
+
262
+ ### 4. Rollback Procedures
263
+
264
+ ```python
265
+ import psycopg2
266
+ from contextlib import contextmanager
267
+
268
+ class MigrationRunner:
269
+ def __init__(self, db_config):
270
+ self.db_config = db_config
271
+ self.conn = None
272
+
273
+ @contextmanager
274
+ def migration_transaction(self):
275
+ try:
276
+ self.conn = psycopg2.connect(**self.db_config)
277
+ self.conn.autocommit = False
278
+
279
+ cursor = self.conn.cursor()
280
+ cursor.execute("SAVEPOINT migration_start")
281
+
282
+ yield cursor
283
+
284
+ self.conn.commit()
285
+
286
+ except Exception as e:
287
+ if self.conn:
288
+ self.conn.rollback()
289
+ raise
290
+ finally:
291
+ if self.conn:
292
+ self.conn.close()
293
+
294
+ def run_with_validation(self, migration):
295
+ try:
296
+ # Pre-migration validation
297
+ pre_checks = self.validate_pre_migration(migration)
298
+ if any(c['status'] == 'FAILED' for c in pre_checks):
299
+ raise MigrationError("Pre-migration validation failed")
300
+
301
+ # Create backup
302
+ self.create_snapshot()
303
+
304
+ # Execute migration
305
+ with self.migration_transaction() as cursor:
306
+ for statement in migration.forward_sql:
307
+ cursor.execute(statement)
308
+
309
+ post_checks = self.validate_post_migration(migration, cursor)
310
+ if any(c['status'] == 'FAIL' for c in post_checks):
311
+ raise MigrationError("Post-migration validation failed")
312
+
313
+ self.cleanup_snapshot()
314
+
315
+ except Exception as e:
316
+ self.rollback_from_snapshot()
317
+ raise
318
+ ```
319
+
320
+ **Rollback Script**
321
+
322
+ ```bash
323
+ #!/bin/bash
324
+ # rollback_migration.sh
325
+
326
+ set -e
327
+
328
+ MIGRATION_VERSION=$1
329
+ DATABASE=$2
330
+
331
+ # Verify current version
332
+ CURRENT_VERSION=$(psql -d $DATABASE -t -c \
333
+ "SELECT version FROM schema_migrations ORDER BY applied_at DESC LIMIT 1" | xargs)
334
+
335
+ if [ "$CURRENT_VERSION" != "$MIGRATION_VERSION" ]; then
336
+ echo "❌ Version mismatch"
337
+ exit 1
338
+ fi
339
+
340
+ # Create backup
341
+ BACKUP_FILE="pre_rollback_${MIGRATION_VERSION}_$(date +%Y%m%d_%H%M%S).sql"
342
+ pg_dump -d $DATABASE -f "$BACKUP_FILE"
343
+
344
+ # Execute rollback
345
+ if [ -f "migrations/${MIGRATION_VERSION}.down.sql" ]; then
346
+ psql -d $DATABASE -f "migrations/${MIGRATION_VERSION}.down.sql"
347
+ psql -d $DATABASE -c "DELETE FROM schema_migrations WHERE version = '$MIGRATION_VERSION';"
348
+ echo "✅ Rollback complete"
349
+ else
350
+ echo "❌ Rollback file not found"
351
+ exit 1
352
+ fi
353
+ ```
354
+
355
+ ### 5. Performance Optimization
356
+
357
+ **Batch Processing**
358
+
359
+ ```python
360
+ class BatchMigrator:
361
+ def __init__(self, db_connection, batch_size=10000):
362
+ self.db = db_connection
363
+ self.batch_size = batch_size
364
+
365
+ def migrate_large_table(self, source_query, target_query, cursor_column='id'):
366
+ last_cursor = None
367
+ batch_number = 0
368
+
369
+ while True:
370
+ batch_number += 1
371
+
372
+ if last_cursor is None:
373
+ batch_query = f"{source_query} ORDER BY {cursor_column} LIMIT {self.batch_size}"
374
+ params = []
375
+ else:
376
+ batch_query = f"{source_query} AND {cursor_column} > %s ORDER BY {cursor_column} LIMIT {self.batch_size}"
377
+ params = [last_cursor]
378
+
379
+ rows = self.db.execute(batch_query, params).fetchall()
380
+ if not rows:
381
+ break
382
+
383
+ for row in rows:
384
+ self.db.execute(target_query, row)
385
+
386
+ last_cursor = rows[-1][cursor_column]
387
+ self.db.commit()
388
+
389
+ print(f"Batch {batch_number}: {len(rows)} rows")
390
+ time.sleep(0.1)
391
+ ```
392
+
393
+ **Parallel Migration**
394
+
395
+ ```python
396
+ from concurrent.futures import ThreadPoolExecutor
397
+
398
+ class ParallelMigrator:
399
+ def __init__(self, db_config, num_workers=4):
400
+ self.db_config = db_config
401
+ self.num_workers = num_workers
402
+
403
+ def migrate_partition(self, partition_spec):
404
+ table_name, start_id, end_id = partition_spec
405
+
406
+ conn = psycopg2.connect(**self.db_config)
407
+ cursor = conn.cursor()
408
+
409
+ cursor.execute(f"""
410
+ INSERT INTO v2_{table_name} (columns...)
411
+ SELECT columns...
412
+ FROM {table_name}
413
+ WHERE id >= %s AND id < %s
414
+ """, [start_id, end_id])
415
+
416
+ conn.commit()
417
+ cursor.close()
418
+ conn.close()
419
+
420
+ def migrate_table_parallel(self, table_name, partition_size=100000):
421
+ # Get table bounds
422
+ conn = psycopg2.connect(**self.db_config)
423
+ cursor = conn.cursor()
424
+
425
+ cursor.execute(f"SELECT MIN(id), MAX(id) FROM {table_name}")
426
+ min_id, max_id = cursor.fetchone()
427
+
428
+ # Create partitions
429
+ partitions = []
430
+ current_id = min_id
431
+ while current_id <= max_id:
432
+ partitions.append((table_name, current_id, current_id + partition_size))
433
+ current_id += partition_size
434
+
435
+ # Execute in parallel
436
+ with ThreadPoolExecutor(max_workers=self.num_workers) as executor:
437
+ results = list(executor.map(self.migrate_partition, partitions))
438
+
439
+ conn.close()
440
+ ```
441
+
442
+ ### 6. Index Management
443
+
444
+ ```sql
445
+ -- Drop indexes before bulk insert, recreate after
446
+ CREATE TEMP TABLE migration_indexes AS
447
+ SELECT indexname, indexdef
448
+ FROM pg_indexes
449
+ WHERE tablename = 'large_table'
450
+ AND indexname NOT LIKE '%pkey%';
451
+
452
+ -- Drop indexes
453
+ DO $$
454
+ DECLARE idx_record RECORD;
455
+ BEGIN
456
+ FOR idx_record IN SELECT indexname FROM migration_indexes
457
+ LOOP
458
+ EXECUTE format('DROP INDEX IF EXISTS %I', idx_record.indexname);
459
+ END LOOP;
460
+ END $$;
461
+
462
+ -- Perform bulk operation
463
+ INSERT INTO large_table SELECT * FROM source_table;
464
+
465
+ -- Recreate indexes CONCURRENTLY
466
+ DO $$
467
+ DECLARE idx_record RECORD;
468
+ BEGIN
469
+ FOR idx_record IN SELECT indexdef FROM migration_indexes
470
+ LOOP
471
+ EXECUTE regexp_replace(idx_record.indexdef, 'CREATE INDEX', 'CREATE INDEX CONCURRENTLY');
472
+ END LOOP;
473
+ END $$;
474
+ ```
475
+
476
+ ## Output Format
477
+
478
+ 1. **Migration Analysis Report**: Detailed breakdown of changes
479
+ 2. **Zero-Downtime Implementation Plan**: Expand-contract or blue-green strategy
480
+ 3. **Migration Scripts**: Version-controlled SQL with framework integration
481
+ 4. **Validation Suite**: Pre and post-migration checks
482
+ 5. **Rollback Procedures**: Automated and manual rollback scripts
483
+ 6. **Performance Optimization**: Batch processing, parallel execution
484
+ 7. **Monitoring Integration**: Progress tracking and alerting
485
+
486
+ Focus on production-ready SQL migrations with zero-downtime deployment strategies, comprehensive validation, and enterprise-grade safety mechanisms.
487
+
488
+ ## Related Plugins
489
+
490
+ - **nosql-migrations**: Migration strategies for MongoDB, DynamoDB, Cassandra
491
+ - **migration-observability**: Real-time monitoring and alerting
492
+ - **migration-integration**: CI/CD integration and automated testing