@zimezone/z-command 1.1.1 → 1.1.4

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 (288) hide show
  1. package/README.md +13 -1
  2. package/dist/cli.js +1 -1
  3. package/dist/commands/init.d.ts.map +1 -1
  4. package/dist/commands/init.js +42 -10
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/platforms.d.ts.map +1 -1
  7. package/dist/platforms.js +11 -1
  8. package/dist/platforms.js.map +1 -1
  9. package/dist/types.d.ts +2 -0
  10. package/dist/types.d.ts.map +1 -1
  11. package/package.json +8 -3
  12. package/templates.zip +0 -0
  13. package/templates/agents/accessibility-expert.agent.md +0 -56
  14. package/templates/agents/ai-engineer.agent.md +0 -61
  15. package/templates/agents/angular-architect.agent.md +0 -49
  16. package/templates/agents/api-designer.agent.md +0 -40
  17. package/templates/agents/api-documenter.agent.md +0 -161
  18. package/templates/agents/architect-review.agent.md +0 -146
  19. package/templates/agents/arm-cortex-expert.agent.md +0 -288
  20. package/templates/agents/azure-infra-engineer.agent.md +0 -57
  21. package/templates/agents/backend-architect.agent.md +0 -309
  22. package/templates/agents/backend-developer.agent.md +0 -61
  23. package/templates/agents/backend-security-coder.agent.md +0 -152
  24. package/templates/agents/bash-pro.agent.md +0 -285
  25. package/templates/agents/blockchain-developer.agent.md +0 -57
  26. package/templates/agents/build-engineer.agent.md +0 -56
  27. package/templates/agents/business-analyst.agent.md +0 -47
  28. package/templates/agents/c-pro.agent.md +0 -35
  29. package/templates/agents/c4-code.agent.md +0 -320
  30. package/templates/agents/c4-component.agent.md +0 -227
  31. package/templates/agents/c4-container.agent.md +0 -248
  32. package/templates/agents/c4-context.agent.md +0 -235
  33. package/templates/agents/cli-developer.agent.md +0 -57
  34. package/templates/agents/cloud-architect.agent.md +0 -56
  35. package/templates/agents/code-architect.agent.md +0 -63
  36. package/templates/agents/code-reviewer.agent.md +0 -49
  37. package/templates/agents/competitive-analyst.agent.md +0 -48
  38. package/templates/agents/conductor-validator.agent.md +0 -245
  39. package/templates/agents/context-manager.agent.md +0 -55
  40. package/templates/agents/cpp-pro.agent.md +0 -59
  41. package/templates/agents/csharp-developer.agent.md +0 -57
  42. package/templates/agents/csharp-pro.agent.md +0 -38
  43. package/templates/agents/customer-support.agent.md +0 -148
  44. package/templates/agents/data-engineer.agent.md +0 -55
  45. package/templates/agents/data-researcher.agent.md +0 -55
  46. package/templates/agents/data-scientist.agent.md +0 -56
  47. package/templates/agents/database-admin.agent.md +0 -142
  48. package/templates/agents/database-administrator.agent.md +0 -50
  49. package/templates/agents/database-architect.agent.md +0 -238
  50. package/templates/agents/database-optimizer.agent.md +0 -144
  51. package/templates/agents/debugger.agent.md +0 -30
  52. package/templates/agents/deployment-engineer.agent.md +0 -0
  53. package/templates/agents/devops-engineer.agent.md +0 -59
  54. package/templates/agents/devops-troubleshooter.agent.md +0 -138
  55. package/templates/agents/django-developer.agent.md +0 -50
  56. package/templates/agents/django-pro.agent.md +0 -159
  57. package/templates/agents/docs-architect.agent.md +0 -77
  58. package/templates/agents/documentation-engineer.agent.md +0 -57
  59. package/templates/agents/dotnet-architect.agent.md +0 -175
  60. package/templates/agents/dx-optimizer.agent.md +0 -63
  61. package/templates/agents/electron-pro.agent.md +0 -56
  62. package/templates/agents/elixir-pro.agent.md +0 -38
  63. package/templates/agents/embedded-systems.agent.md +0 -55
  64. package/templates/agents/error-detective.agent.md +0 -32
  65. package/templates/agents/event-sourcing-architect.agent.md +0 -42
  66. package/templates/agents/fastapi-pro.agent.md +0 -171
  67. package/templates/agents/fintech-engineer.agent.md +0 -57
  68. package/templates/agents/firmware-analyst.agent.md +0 -330
  69. package/templates/agents/flutter-expert.agent.md +0 -50
  70. package/templates/agents/frontend-developer.agent.md +0 -59
  71. package/templates/agents/frontend-security-coder.agent.md +0 -149
  72. package/templates/agents/fullstack-developer.agent.md +0 -46
  73. package/templates/agents/git-workflow-manager.agent.md +0 -57
  74. package/templates/agents/golang-pro.agent.md +0 -50
  75. package/templates/agents/graphql-architect.agent.md +0 -48
  76. package/templates/agents/haskell-pro.agent.md +0 -37
  77. package/templates/agents/hr-pro.agent.md +0 -105
  78. package/templates/agents/incident-responder.agent.md +0 -190
  79. package/templates/agents/ios-developer.agent.md +0 -198
  80. package/templates/agents/iot-engineer.agent.md +0 -56
  81. package/templates/agents/java-architect.agent.md +0 -48
  82. package/templates/agents/java-pro.agent.md +0 -156
  83. package/templates/agents/javascript-pro.agent.md +0 -35
  84. package/templates/agents/julia-pro.agent.md +0 -187
  85. package/templates/agents/kotlin-specialist.agent.md +0 -50
  86. package/templates/agents/laravel-specialist.agent.md +0 -50
  87. package/templates/agents/legacy-modernizer.agent.md +0 -56
  88. package/templates/agents/legal-advisor.agent.md +0 -49
  89. package/templates/agents/llm-architect.agent.md +0 -58
  90. package/templates/agents/malware-analyst.agent.md +0 -272
  91. package/templates/agents/mcp-developer.agent.md +0 -54
  92. package/templates/agents/mermaid-expert.agent.md +0 -39
  93. package/templates/agents/microservices-architect.agent.md +0 -47
  94. package/templates/agents/minecraft-bukkit-pro.agent.md +0 -104
  95. package/templates/agents/ml-engineer.agent.md +0 -56
  96. package/templates/agents/mlops-engineer.agent.md +0 -56
  97. package/templates/agents/mobile-developer.agent.md +0 -45
  98. package/templates/agents/mobile-security-coder.agent.md +0 -163
  99. package/templates/agents/monorepo-architect.agent.md +0 -44
  100. package/templates/agents/multi-agent-coordinator.agent.md +0 -55
  101. package/templates/agents/network-engineer.agent.md +0 -57
  102. package/templates/agents/nextjs-developer.agent.md +0 -48
  103. package/templates/agents/nlp-engineer.agent.md +0 -58
  104. package/templates/agents/observability-engineer.agent.md +0 -228
  105. package/templates/agents/payment-integration.agent.md +0 -56
  106. package/templates/agents/performance-engineer.agent.md +0 -167
  107. package/templates/agents/performance-optimizer.agent.md +0 -57
  108. package/templates/agents/php-pro.agent.md +0 -43
  109. package/templates/agents/platform-engineer.agent.md +0 -57
  110. package/templates/agents/posix-shell-pro.agent.md +0 -284
  111. package/templates/agents/postgres-pro.agent.md +0 -58
  112. package/templates/agents/product-manager.agent.md +0 -55
  113. package/templates/agents/project-manager.agent.md +0 -57
  114. package/templates/agents/prompt-engineer.agent.md +0 -58
  115. package/templates/agents/python-pro.agent.md +0 -48
  116. package/templates/agents/quant-analyst.agent.md +0 -32
  117. package/templates/agents/rails-expert.agent.md +0 -50
  118. package/templates/agents/react-specialist.agent.md +0 -49
  119. package/templates/agents/refactoring-specialist.agent.md +0 -56
  120. package/templates/agents/reference-builder.agent.md +0 -167
  121. package/templates/agents/research-analyst.agent.md +0 -63
  122. package/templates/agents/reverse-engineer.agent.md +0 -202
  123. package/templates/agents/risk-manager.agent.md +0 -41
  124. package/templates/agents/ruby-pro.agent.md +0 -35
  125. package/templates/agents/rust-pro.agent.md +0 -156
  126. package/templates/agents/sales-automator.agent.md +0 -35
  127. package/templates/agents/scala-pro.agent.md +0 -60
  128. package/templates/agents/scrum-master.agent.md +0 -54
  129. package/templates/agents/search-specialist.agent.md +0 -59
  130. package/templates/agents/security-analyst.agent.md +0 -57
  131. package/templates/agents/security-auditor.agent.md +0 -138
  132. package/templates/agents/security-engineer.agent.md +0 -57
  133. package/templates/agents/seo-authority-builder.agent.md +0 -116
  134. package/templates/agents/seo-cannibalization-detector.agent.md +0 -103
  135. package/templates/agents/seo-content-auditor.agent.md +0 -63
  136. package/templates/agents/seo-content-planner.agent.md +0 -88
  137. package/templates/agents/seo-content-refresher.agent.md +0 -98
  138. package/templates/agents/seo-content-writer.agent.md +0 -76
  139. package/templates/agents/seo-keyword-strategist.agent.md +0 -75
  140. package/templates/agents/seo-meta-optimizer.agent.md +0 -72
  141. package/templates/agents/seo-snippet-hunter.agent.md +0 -94
  142. package/templates/agents/seo-specialist.agent.md +0 -57
  143. package/templates/agents/seo-structure-architect.agent.md +0 -88
  144. package/templates/agents/service-mesh-expert.agent.md +0 -41
  145. package/templates/agents/sql-pro.agent.md +0 -146
  146. package/templates/agents/sre-engineer.agent.md +0 -58
  147. package/templates/agents/swift-expert.agent.md +0 -49
  148. package/templates/agents/task-distributor.agent.md +0 -47
  149. package/templates/agents/tdd-orchestrator.agent.md +0 -183
  150. package/templates/agents/technical-writer.agent.md +0 -48
  151. package/templates/agents/temporal-python-pro.agent.md +0 -349
  152. package/templates/agents/terraform-engineer.agent.md +0 -57
  153. package/templates/agents/terraform-specialist.agent.md +0 -137
  154. package/templates/agents/test-automator.agent.md +0 -203
  155. package/templates/agents/test-engineer.agent.md +0 -55
  156. package/templates/agents/threat-modeling-expert.agent.md +0 -44
  157. package/templates/agents/trend-analyst.agent.md +0 -47
  158. package/templates/agents/tutorial-engineer.agent.md +0 -118
  159. package/templates/agents/typescript-pro.agent.md +0 -48
  160. package/templates/agents/ui-designer.agent.md +0 -48
  161. package/templates/agents/ui-ux-designer.agent.md +0 -188
  162. package/templates/agents/ui-visual-validator.agent.md +0 -192
  163. package/templates/agents/ux-researcher.agent.md +0 -48
  164. package/templates/agents/vector-database-engineer.agent.md +0 -43
  165. package/templates/agents/vue-expert.agent.md +0 -48
  166. package/templates/agents/websocket-engineer.agent.md +0 -49
  167. package/templates/agents/workflow-orchestrator.agent.md +0 -48
  168. package/templates/skills/angular-migration/SKILL.md +0 -410
  169. package/templates/skills/api-design-principles/SKILL.md +0 -528
  170. package/templates/skills/api-design-principles/assets/api-design-checklist.md +0 -155
  171. package/templates/skills/api-design-principles/assets/rest-api-template.py +0 -182
  172. package/templates/skills/api-design-principles/references/graphql-schema-design.md +0 -583
  173. package/templates/skills/api-design-principles/references/rest-best-practices.md +0 -408
  174. package/templates/skills/architecture-decision-records/SKILL.md +0 -428
  175. package/templates/skills/architecture-patterns/SKILL.md +0 -494
  176. package/templates/skills/async-python-patterns/SKILL.md +0 -694
  177. package/templates/skills/auth-implementation-patterns/SKILL.md +0 -634
  178. package/templates/skills/changelog-automation/SKILL.md +0 -552
  179. package/templates/skills/code-review/SKILL.md +0 -62
  180. package/templates/skills/code-review-excellence/SKILL.md +0 -520
  181. package/templates/skills/competitive-landscape/SKILL.md +0 -479
  182. package/templates/skills/context-driven-development/SKILL.md +0 -385
  183. package/templates/skills/cost-optimization/SKILL.md +0 -274
  184. package/templates/skills/cqrs-implementation/SKILL.md +0 -554
  185. package/templates/skills/data-quality-frameworks/SKILL.md +0 -587
  186. package/templates/skills/data-storytelling/SKILL.md +0 -453
  187. package/templates/skills/database-migration/SKILL.md +0 -424
  188. package/templates/skills/dbt-transformation-patterns/SKILL.md +0 -561
  189. package/templates/skills/debugging-strategies/SKILL.md +0 -527
  190. package/templates/skills/defi-protocol-templates/SKILL.md +0 -454
  191. package/templates/skills/dependency-upgrade/SKILL.md +0 -409
  192. package/templates/skills/deployment-pipeline-design/SKILL.md +0 -359
  193. package/templates/skills/distributed-tracing/SKILL.md +0 -438
  194. package/templates/skills/dotnet-backend-patterns/SKILL.md +0 -815
  195. package/templates/skills/dotnet-backend-patterns/assets/repository-template.cs +0 -523
  196. package/templates/skills/dotnet-backend-patterns/assets/service-template.cs +0 -336
  197. package/templates/skills/dotnet-backend-patterns/references/dapper-patterns.md +0 -544
  198. package/templates/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +0 -355
  199. package/templates/skills/e2e-testing-patterns/SKILL.md +0 -547
  200. package/templates/skills/employment-contract-templates/SKILL.md +0 -507
  201. package/templates/skills/error-handling-patterns/SKILL.md +0 -636
  202. package/templates/skills/event-store-design/SKILL.md +0 -437
  203. package/templates/skills/fastapi-templates/SKILL.md +0 -567
  204. package/templates/skills/git-advanced-workflows/SKILL.md +0 -400
  205. package/templates/skills/github-actions-templates/SKILL.md +0 -333
  206. package/templates/skills/go-concurrency-patterns/SKILL.md +0 -655
  207. package/templates/skills/grafana-dashboards/SKILL.md +0 -369
  208. package/templates/skills/helm-chart-scaffolding/SKILL.md +0 -544
  209. package/templates/skills/helm-chart-scaffolding/assets/Chart.yaml.template +0 -42
  210. package/templates/skills/helm-chart-scaffolding/assets/values.yaml.template +0 -185
  211. package/templates/skills/helm-chart-scaffolding/references/chart-structure.md +0 -500
  212. package/templates/skills/helm-chart-scaffolding/scripts/validate-chart.sh +0 -244
  213. package/templates/skills/javascript-testing-patterns/SKILL.md +0 -1025
  214. package/templates/skills/langchain-architecture/SKILL.md +0 -338
  215. package/templates/skills/llm-evaluation/SKILL.md +0 -471
  216. package/templates/skills/microservices-patterns/SKILL.md +0 -595
  217. package/templates/skills/modern-javascript-patterns/SKILL.md +0 -911
  218. package/templates/skills/monorepo-management/SKILL.md +0 -622
  219. package/templates/skills/nextjs-app-router-patterns/SKILL.md +0 -544
  220. package/templates/skills/nodejs-backend-patterns/SKILL.md +0 -1020
  221. package/templates/skills/nx-workspace-patterns/SKILL.md +0 -452
  222. package/templates/skills/openapi-spec-generation/SKILL.md +0 -1028
  223. package/templates/skills/paypal-integration/SKILL.md +0 -467
  224. package/templates/skills/pci-compliance/SKILL.md +0 -466
  225. package/templates/skills/postgresql/SKILL.md +0 -204
  226. package/templates/skills/projection-patterns/SKILL.md +0 -490
  227. package/templates/skills/prometheus-configuration/SKILL.md +0 -392
  228. package/templates/skills/prompt-engineering-patterns/SKILL.md +0 -201
  229. package/templates/skills/prompt-engineering-patterns/assets/few-shot-examples.json +0 -106
  230. package/templates/skills/prompt-engineering-patterns/assets/prompt-template-library.md +0 -246
  231. package/templates/skills/prompt-engineering-patterns/references/chain-of-thought.md +0 -399
  232. package/templates/skills/prompt-engineering-patterns/references/few-shot-learning.md +0 -369
  233. package/templates/skills/prompt-engineering-patterns/references/prompt-optimization.md +0 -414
  234. package/templates/skills/prompt-engineering-patterns/references/prompt-templates.md +0 -470
  235. package/templates/skills/prompt-engineering-patterns/references/system-prompts.md +0 -189
  236. package/templates/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +0 -279
  237. package/templates/skills/python-packaging/SKILL.md +0 -870
  238. package/templates/skills/python-performance-optimization/SKILL.md +0 -869
  239. package/templates/skills/python-testing-patterns/SKILL.md +0 -907
  240. package/templates/skills/rag-implementation/SKILL.md +0 -403
  241. package/templates/skills/react-modernization/SKILL.md +0 -513
  242. package/templates/skills/react-native-architecture/SKILL.md +0 -671
  243. package/templates/skills/react-state-management/SKILL.md +0 -429
  244. package/templates/skills/risk-metrics-calculation/SKILL.md +0 -555
  245. package/templates/skills/rust-async-patterns/SKILL.md +0 -517
  246. package/templates/skills/secrets-management/SKILL.md +0 -346
  247. package/templates/skills/security-requirement-extraction/SKILL.md +0 -677
  248. package/templates/skills/security-review/SKILL.md +0 -78
  249. package/templates/skills/shellcheck-configuration/SKILL.md +0 -454
  250. package/templates/skills/similarity-search-patterns/SKILL.md +0 -558
  251. package/templates/skills/slo-implementation/SKILL.md +0 -329
  252. package/templates/skills/sql-optimization-patterns/SKILL.md +0 -493
  253. package/templates/skills/stripe-integration/SKILL.md +0 -442
  254. package/templates/skills/systematic-debugging/SKILL.md +0 -57
  255. package/templates/skills/tailwind-design-system/SKILL.md +0 -666
  256. package/templates/skills/temporal-python-testing/SKILL.md +0 -158
  257. package/templates/skills/temporal-python-testing/resources/integration-testing.md +0 -455
  258. package/templates/skills/temporal-python-testing/resources/local-setup.md +0 -553
  259. package/templates/skills/temporal-python-testing/resources/replay-testing.md +0 -462
  260. package/templates/skills/temporal-python-testing/resources/unit-testing.md +0 -328
  261. package/templates/skills/terraform-module-library/SKILL.md +0 -249
  262. package/templates/skills/terraform-module-library/references/aws-modules.md +0 -63
  263. package/templates/skills/test-driven-development/SKILL.md +0 -46
  264. package/templates/skills/threat-mitigation-mapping/SKILL.md +0 -745
  265. package/templates/skills/track-management/SKILL.md +0 -593
  266. package/templates/skills/typescript-advanced-types/SKILL.md +0 -717
  267. package/templates/skills/ui-ux-pro-max/SKILL.md +0 -352
  268. package/templates/skills/ui-ux-pro-max/data/charts.csv +0 -26
  269. package/templates/skills/ui-ux-pro-max/data/colors.csv +0 -97
  270. package/templates/skills/ui-ux-pro-max/data/icons.csv +0 -101
  271. package/templates/skills/ui-ux-pro-max/data/landing.csv +0 -31
  272. package/templates/skills/ui-ux-pro-max/data/products.csv +0 -97
  273. package/templates/skills/ui-ux-pro-max/data/prompts.csv +0 -24
  274. package/templates/skills/ui-ux-pro-max/data/react-performance.csv +0 -45
  275. package/templates/skills/ui-ux-pro-max/data/styles.csv +0 -59
  276. package/templates/skills/ui-ux-pro-max/data/typography.csv +0 -58
  277. package/templates/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -101
  278. package/templates/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  279. package/templates/skills/ui-ux-pro-max/data/web-interface.csv +0 -31
  280. package/templates/skills/ui-ux-pro-max/scripts/core.py +0 -258
  281. package/templates/skills/ui-ux-pro-max/scripts/design_system.py +0 -547
  282. package/templates/skills/ui-ux-pro-max/scripts/search.py +0 -76
  283. package/templates/skills/uv-package-manager/SKILL.md +0 -831
  284. package/templates/skills/vector-index-tuning/SKILL.md +0 -521
  285. package/templates/skills/wcag-audit-patterns/SKILL.md +0 -555
  286. package/templates/skills/workflow-orchestration-patterns/SKILL.md +0 -316
  287. package/templates/skills/workflow-patterns/SKILL.md +0 -623
  288. package/templates/skills/writing-plans/SKILL.md +0 -64
@@ -1,587 +0,0 @@
1
- ---
2
- name: data-quality-frameworks
3
- description: Implement data quality validation with Great Expectations, dbt tests, and data contracts. Use when building data quality pipelines, implementing validation rules, or establishing data contracts.
4
- ---
5
-
6
- # Data Quality Frameworks
7
-
8
- Production patterns for implementing data quality with Great Expectations, dbt tests, and data contracts to ensure reliable data pipelines.
9
-
10
- ## When to Use This Skill
11
-
12
- - Implementing data quality checks in pipelines
13
- - Setting up Great Expectations validation
14
- - Building comprehensive dbt test suites
15
- - Establishing data contracts between teams
16
- - Monitoring data quality metrics
17
- - Automating data validation in CI/CD
18
-
19
- ## Core Concepts
20
-
21
- ### 1. Data Quality Dimensions
22
-
23
- | Dimension | Description | Example Check |
24
- |-----------|-------------|---------------|
25
- | **Completeness** | No missing values | `expect_column_values_to_not_be_null` |
26
- | **Uniqueness** | No duplicates | `expect_column_values_to_be_unique` |
27
- | **Validity** | Values in expected range | `expect_column_values_to_be_in_set` |
28
- | **Accuracy** | Data matches reality | Cross-reference validation |
29
- | **Consistency** | No contradictions | `expect_column_pair_values_A_to_be_greater_than_B` |
30
- | **Timeliness** | Data is recent | `expect_column_max_to_be_between` |
31
-
32
- ### 2. Testing Pyramid for Data
33
-
34
- ```
35
- /\
36
- / \ Integration Tests (cross-table)
37
- /────\
38
- / \ Unit Tests (single column)
39
- /────────\
40
- / \ Schema Tests (structure)
41
- /────────────\
42
- ```
43
-
44
- ## Quick Start
45
-
46
- ### Great Expectations Setup
47
-
48
- ```bash
49
- # Install
50
- pip install great_expectations
51
-
52
- # Initialize project
53
- great_expectations init
54
-
55
- # Create datasource
56
- great_expectations datasource new
57
- ```
58
-
59
- ```python
60
- # great_expectations/checkpoints/daily_validation.yml
61
- import great_expectations as gx
62
-
63
- # Create context
64
- context = gx.get_context()
65
-
66
- # Create expectation suite
67
- suite = context.add_expectation_suite("orders_suite")
68
-
69
- # Add expectations
70
- suite.add_expectation(
71
- gx.expectations.ExpectColumnValuesToNotBeNull(column="order_id")
72
- )
73
- suite.add_expectation(
74
- gx.expectations.ExpectColumnValuesToBeUnique(column="order_id")
75
- )
76
-
77
- # Validate
78
- results = context.run_checkpoint(checkpoint_name="daily_orders")
79
- ```
80
-
81
- ## Patterns
82
-
83
- ### Pattern 1: Great Expectations Suite
84
-
85
- ```python
86
- # expectations/orders_suite.py
87
- import great_expectations as gx
88
- from great_expectations.core import ExpectationSuite
89
- from great_expectations.core.expectation_configuration import ExpectationConfiguration
90
-
91
- def build_orders_suite() -> ExpectationSuite:
92
- """Build comprehensive orders expectation suite"""
93
-
94
- suite = ExpectationSuite(expectation_suite_name="orders_suite")
95
-
96
- # Schema expectations
97
- suite.add_expectation(ExpectationConfiguration(
98
- expectation_type="expect_table_columns_to_match_set",
99
- kwargs={
100
- "column_set": ["order_id", "customer_id", "amount", "status", "created_at"],
101
- "exact_match": False # Allow additional columns
102
- }
103
- ))
104
-
105
- # Primary key
106
- suite.add_expectation(ExpectationConfiguration(
107
- expectation_type="expect_column_values_to_not_be_null",
108
- kwargs={"column": "order_id"}
109
- ))
110
- suite.add_expectation(ExpectationConfiguration(
111
- expectation_type="expect_column_values_to_be_unique",
112
- kwargs={"column": "order_id"}
113
- ))
114
-
115
- # Foreign key
116
- suite.add_expectation(ExpectationConfiguration(
117
- expectation_type="expect_column_values_to_not_be_null",
118
- kwargs={"column": "customer_id"}
119
- ))
120
-
121
- # Categorical values
122
- suite.add_expectation(ExpectationConfiguration(
123
- expectation_type="expect_column_values_to_be_in_set",
124
- kwargs={
125
- "column": "status",
126
- "value_set": ["pending", "processing", "shipped", "delivered", "cancelled"]
127
- }
128
- ))
129
-
130
- # Numeric ranges
131
- suite.add_expectation(ExpectationConfiguration(
132
- expectation_type="expect_column_values_to_be_between",
133
- kwargs={
134
- "column": "amount",
135
- "min_value": 0,
136
- "max_value": 100000,
137
- "strict_min": True # amount > 0
138
- }
139
- ))
140
-
141
- # Date validity
142
- suite.add_expectation(ExpectationConfiguration(
143
- expectation_type="expect_column_values_to_be_dateutil_parseable",
144
- kwargs={"column": "created_at"}
145
- ))
146
-
147
- # Freshness - data should be recent
148
- suite.add_expectation(ExpectationConfiguration(
149
- expectation_type="expect_column_max_to_be_between",
150
- kwargs={
151
- "column": "created_at",
152
- "min_value": {"$PARAMETER": "now - timedelta(days=1)"},
153
- "max_value": {"$PARAMETER": "now"}
154
- }
155
- ))
156
-
157
- # Row count sanity
158
- suite.add_expectation(ExpectationConfiguration(
159
- expectation_type="expect_table_row_count_to_be_between",
160
- kwargs={
161
- "min_value": 1000, # Expect at least 1000 rows
162
- "max_value": 10000000
163
- }
164
- ))
165
-
166
- # Statistical expectations
167
- suite.add_expectation(ExpectationConfiguration(
168
- expectation_type="expect_column_mean_to_be_between",
169
- kwargs={
170
- "column": "amount",
171
- "min_value": 50,
172
- "max_value": 500
173
- }
174
- ))
175
-
176
- return suite
177
- ```
178
-
179
- ### Pattern 2: Great Expectations Checkpoint
180
-
181
- ```yaml
182
- # great_expectations/checkpoints/orders_checkpoint.yml
183
- name: orders_checkpoint
184
- config_version: 1.0
185
- class_name: Checkpoint
186
- run_name_template: "%Y%m%d-%H%M%S-orders-validation"
187
-
188
- validations:
189
- - batch_request:
190
- datasource_name: warehouse
191
- data_connector_name: default_inferred_data_connector_name
192
- data_asset_name: orders
193
- data_connector_query:
194
- index: -1 # Latest batch
195
- expectation_suite_name: orders_suite
196
-
197
- action_list:
198
- - name: store_validation_result
199
- action:
200
- class_name: StoreValidationResultAction
201
-
202
- - name: store_evaluation_parameters
203
- action:
204
- class_name: StoreEvaluationParametersAction
205
-
206
- - name: update_data_docs
207
- action:
208
- class_name: UpdateDataDocsAction
209
-
210
- # Slack notification on failure
211
- - name: send_slack_notification
212
- action:
213
- class_name: SlackNotificationAction
214
- slack_webhook: ${SLACK_WEBHOOK}
215
- notify_on: failure
216
- renderer:
217
- module_name: great_expectations.render.renderer.slack_renderer
218
- class_name: SlackRenderer
219
- ```
220
-
221
- ```python
222
- # Run checkpoint
223
- import great_expectations as gx
224
-
225
- context = gx.get_context()
226
- result = context.run_checkpoint(checkpoint_name="orders_checkpoint")
227
-
228
- if not result.success:
229
- failed_expectations = [
230
- r for r in result.run_results.values()
231
- if not r.success
232
- ]
233
- raise ValueError(f"Data quality check failed: {failed_expectations}")
234
- ```
235
-
236
- ### Pattern 3: dbt Data Tests
237
-
238
- ```yaml
239
- # models/marts/core/_core__models.yml
240
- version: 2
241
-
242
- models:
243
- - name: fct_orders
244
- description: Order fact table
245
- tests:
246
- # Table-level tests
247
- - dbt_utils.recency:
248
- datepart: day
249
- field: created_at
250
- interval: 1
251
- - dbt_utils.at_least_one
252
- - dbt_utils.expression_is_true:
253
- expression: "total_amount >= 0"
254
-
255
- columns:
256
- - name: order_id
257
- description: Primary key
258
- tests:
259
- - unique
260
- - not_null
261
-
262
- - name: customer_id
263
- description: Foreign key to dim_customers
264
- tests:
265
- - not_null
266
- - relationships:
267
- to: ref('dim_customers')
268
- field: customer_id
269
-
270
- - name: order_status
271
- tests:
272
- - accepted_values:
273
- values: ['pending', 'processing', 'shipped', 'delivered', 'cancelled']
274
-
275
- - name: total_amount
276
- tests:
277
- - not_null
278
- - dbt_utils.expression_is_true:
279
- expression: ">= 0"
280
-
281
- - name: created_at
282
- tests:
283
- - not_null
284
- - dbt_utils.expression_is_true:
285
- expression: "<= current_timestamp"
286
-
287
- - name: dim_customers
288
- columns:
289
- - name: customer_id
290
- tests:
291
- - unique
292
- - not_null
293
-
294
- - name: email
295
- tests:
296
- - unique
297
- - not_null
298
- # Custom regex test
299
- - dbt_utils.expression_is_true:
300
- expression: "email ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$'"
301
- ```
302
-
303
- ### Pattern 4: Custom dbt Tests
304
-
305
- ```sql
306
- -- tests/generic/test_row_count_in_range.sql
307
- {% test row_count_in_range(model, min_count, max_count) %}
308
-
309
- with row_count as (
310
- select count(*) as cnt from {{ model }}
311
- )
312
-
313
- select cnt
314
- from row_count
315
- where cnt < {{ min_count }} or cnt > {{ max_count }}
316
-
317
- {% endtest %}
318
-
319
- -- Usage in schema.yml:
320
- -- tests:
321
- -- - row_count_in_range:
322
- -- min_count: 1000
323
- -- max_count: 10000000
324
- ```
325
-
326
- ```sql
327
- -- tests/generic/test_sequential_values.sql
328
- {% test sequential_values(model, column_name, interval=1) %}
329
-
330
- with lagged as (
331
- select
332
- {{ column_name }},
333
- lag({{ column_name }}) over (order by {{ column_name }}) as prev_value
334
- from {{ model }}
335
- )
336
-
337
- select *
338
- from lagged
339
- where {{ column_name }} - prev_value != {{ interval }}
340
- and prev_value is not null
341
-
342
- {% endtest %}
343
- ```
344
-
345
- ```sql
346
- -- tests/singular/assert_orders_customers_match.sql
347
- -- Singular test: specific business rule
348
-
349
- with orders_customers as (
350
- select distinct customer_id from {{ ref('fct_orders') }}
351
- ),
352
-
353
- dim_customers as (
354
- select customer_id from {{ ref('dim_customers') }}
355
- ),
356
-
357
- orphaned_orders as (
358
- select o.customer_id
359
- from orders_customers o
360
- left join dim_customers c using (customer_id)
361
- where c.customer_id is null
362
- )
363
-
364
- select * from orphaned_orders
365
- -- Test passes if this returns 0 rows
366
- ```
367
-
368
- ### Pattern 5: Data Contracts
369
-
370
- ```yaml
371
- # contracts/orders_contract.yaml
372
- apiVersion: datacontract.com/v1.0.0
373
- kind: DataContract
374
- metadata:
375
- name: orders
376
- version: 1.0.0
377
- owner: data-platform-team
378
- contact: data-team@company.com
379
-
380
- info:
381
- title: Orders Data Contract
382
- description: Contract for order event data from the ecommerce platform
383
- purpose: Analytics, reporting, and ML features
384
-
385
- servers:
386
- production:
387
- type: snowflake
388
- account: company.us-east-1
389
- database: ANALYTICS
390
- schema: CORE
391
-
392
- terms:
393
- usage: Internal analytics only
394
- limitations: PII must not be exposed in downstream marts
395
- billing: Charged per query TB scanned
396
-
397
- schema:
398
- type: object
399
- properties:
400
- order_id:
401
- type: string
402
- format: uuid
403
- description: Unique order identifier
404
- required: true
405
- unique: true
406
- pii: false
407
-
408
- customer_id:
409
- type: string
410
- format: uuid
411
- description: Customer identifier
412
- required: true
413
- pii: true
414
- piiClassification: indirect
415
-
416
- total_amount:
417
- type: number
418
- minimum: 0
419
- maximum: 100000
420
- description: Order total in USD
421
-
422
- created_at:
423
- type: string
424
- format: date-time
425
- description: Order creation timestamp
426
- required: true
427
-
428
- status:
429
- type: string
430
- enum: [pending, processing, shipped, delivered, cancelled]
431
- description: Current order status
432
-
433
- quality:
434
- type: SodaCL
435
- specification:
436
- checks for orders:
437
- - row_count > 0
438
- - missing_count(order_id) = 0
439
- - duplicate_count(order_id) = 0
440
- - invalid_count(status) = 0:
441
- valid values: [pending, processing, shipped, delivered, cancelled]
442
- - freshness(created_at) < 24h
443
-
444
- sla:
445
- availability: 99.9%
446
- freshness: 1 hour
447
- latency: 5 minutes
448
- ```
449
-
450
- ### Pattern 6: Automated Quality Pipeline
451
-
452
- ```python
453
- # quality_pipeline.py
454
- from dataclasses import dataclass
455
- from typing import List, Dict, Any
456
- import great_expectations as gx
457
- from datetime import datetime
458
-
459
- @dataclass
460
- class QualityResult:
461
- table: str
462
- passed: bool
463
- total_expectations: int
464
- failed_expectations: int
465
- details: List[Dict[str, Any]]
466
- timestamp: datetime
467
-
468
- class DataQualityPipeline:
469
- """Orchestrate data quality checks across tables"""
470
-
471
- def __init__(self, context: gx.DataContext):
472
- self.context = context
473
- self.results: List[QualityResult] = []
474
-
475
- def validate_table(self, table: str, suite: str) -> QualityResult:
476
- """Validate a single table against expectation suite"""
477
-
478
- checkpoint_config = {
479
- "name": f"{table}_validation",
480
- "config_version": 1.0,
481
- "class_name": "Checkpoint",
482
- "validations": [{
483
- "batch_request": {
484
- "datasource_name": "warehouse",
485
- "data_asset_name": table,
486
- },
487
- "expectation_suite_name": suite,
488
- }],
489
- }
490
-
491
- result = self.context.run_checkpoint(**checkpoint_config)
492
-
493
- # Parse results
494
- validation_result = list(result.run_results.values())[0]
495
- results = validation_result.results
496
-
497
- failed = [r for r in results if not r.success]
498
-
499
- return QualityResult(
500
- table=table,
501
- passed=result.success,
502
- total_expectations=len(results),
503
- failed_expectations=len(failed),
504
- details=[{
505
- "expectation": r.expectation_config.expectation_type,
506
- "success": r.success,
507
- "observed_value": r.result.get("observed_value"),
508
- } for r in results],
509
- timestamp=datetime.now()
510
- )
511
-
512
- def run_all(self, tables: Dict[str, str]) -> Dict[str, QualityResult]:
513
- """Run validation for all tables"""
514
- results = {}
515
-
516
- for table, suite in tables.items():
517
- print(f"Validating {table}...")
518
- results[table] = self.validate_table(table, suite)
519
-
520
- return results
521
-
522
- def generate_report(self, results: Dict[str, QualityResult]) -> str:
523
- """Generate quality report"""
524
- report = ["# Data Quality Report", f"Generated: {datetime.now()}", ""]
525
-
526
- total_passed = sum(1 for r in results.values() if r.passed)
527
- total_tables = len(results)
528
-
529
- report.append(f"## Summary: {total_passed}/{total_tables} tables passed")
530
- report.append("")
531
-
532
- for table, result in results.items():
533
- status = "✅" if result.passed else "❌"
534
- report.append(f"### {status} {table}")
535
- report.append(f"- Expectations: {result.total_expectations}")
536
- report.append(f"- Failed: {result.failed_expectations}")
537
-
538
- if not result.passed:
539
- report.append("- Failed checks:")
540
- for detail in result.details:
541
- if not detail["success"]:
542
- report.append(f" - {detail['expectation']}: {detail['observed_value']}")
543
- report.append("")
544
-
545
- return "\n".join(report)
546
-
547
- # Usage
548
- context = gx.get_context()
549
- pipeline = DataQualityPipeline(context)
550
-
551
- tables_to_validate = {
552
- "orders": "orders_suite",
553
- "customers": "customers_suite",
554
- "products": "products_suite",
555
- }
556
-
557
- results = pipeline.run_all(tables_to_validate)
558
- report = pipeline.generate_report(results)
559
-
560
- # Fail pipeline if any table failed
561
- if not all(r.passed for r in results.values()):
562
- print(report)
563
- raise ValueError("Data quality checks failed!")
564
- ```
565
-
566
- ## Best Practices
567
-
568
- ### Do's
569
- - **Test early** - Validate source data before transformations
570
- - **Test incrementally** - Add tests as you find issues
571
- - **Document expectations** - Clear descriptions for each test
572
- - **Alert on failures** - Integrate with monitoring
573
- - **Version contracts** - Track schema changes
574
-
575
- ### Don'ts
576
- - **Don't test everything** - Focus on critical columns
577
- - **Don't ignore warnings** - They often precede failures
578
- - **Don't skip freshness** - Stale data is bad data
579
- - **Don't hardcode thresholds** - Use dynamic baselines
580
- - **Don't test in isolation** - Test relationships too
581
-
582
- ## Resources
583
-
584
- - [Great Expectations Documentation](https://docs.greatexpectations.io/)
585
- - [dbt Testing Documentation](https://docs.getdbt.com/docs/build/tests)
586
- - [Data Contract Specification](https://datacontract.com/)
587
- - [Soda Core](https://docs.soda.io/soda-core/overview.html)