@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,561 +0,0 @@
1
- ---
2
- name: dbt-transformation-patterns
3
- description: Master dbt (data build tool) for analytics engineering with model organization, testing, documentation, and incremental strategies. Use when building data transformations, creating data models, or implementing analytics engineering best practices.
4
- ---
5
-
6
- # dbt Transformation Patterns
7
-
8
- Production-ready patterns for dbt (data build tool) including model organization, testing strategies, documentation, and incremental processing.
9
-
10
- ## When to Use This Skill
11
-
12
- - Building data transformation pipelines with dbt
13
- - Organizing models into staging, intermediate, and marts layers
14
- - Implementing data quality tests
15
- - Creating incremental models for large datasets
16
- - Documenting data models and lineage
17
- - Setting up dbt project structure
18
-
19
- ## Core Concepts
20
-
21
- ### 1. Model Layers (Medallion Architecture)
22
-
23
- ```
24
- sources/ Raw data definitions
25
-
26
- staging/ 1:1 with source, light cleaning
27
-
28
- intermediate/ Business logic, joins, aggregations
29
-
30
- marts/ Final analytics tables
31
- ```
32
-
33
- ### 2. Naming Conventions
34
-
35
- | Layer | Prefix | Example |
36
- |-------|--------|---------|
37
- | Staging | `stg_` | `stg_stripe__payments` |
38
- | Intermediate | `int_` | `int_payments_pivoted` |
39
- | Marts | `dim_`, `fct_` | `dim_customers`, `fct_orders` |
40
-
41
- ## Quick Start
42
-
43
- ```yaml
44
- # dbt_project.yml
45
- name: 'analytics'
46
- version: '1.0.0'
47
- profile: 'analytics'
48
-
49
- model-paths: ["models"]
50
- analysis-paths: ["analyses"]
51
- test-paths: ["tests"]
52
- seed-paths: ["seeds"]
53
- macro-paths: ["macros"]
54
-
55
- vars:
56
- start_date: '2020-01-01'
57
-
58
- models:
59
- analytics:
60
- staging:
61
- +materialized: view
62
- +schema: staging
63
- intermediate:
64
- +materialized: ephemeral
65
- marts:
66
- +materialized: table
67
- +schema: analytics
68
- ```
69
-
70
- ```
71
- # Project structure
72
- models/
73
- ├── staging/
74
- │ ├── stripe/
75
- │ │ ├── _stripe__sources.yml
76
- │ │ ├── _stripe__models.yml
77
- │ │ ├── stg_stripe__customers.sql
78
- │ │ └── stg_stripe__payments.sql
79
- │ └── shopify/
80
- │ ├── _shopify__sources.yml
81
- │ └── stg_shopify__orders.sql
82
- ├── intermediate/
83
- │ └── finance/
84
- │ └── int_payments_pivoted.sql
85
- └── marts/
86
- ├── core/
87
- │ ├── _core__models.yml
88
- │ ├── dim_customers.sql
89
- │ └── fct_orders.sql
90
- └── finance/
91
- └── fct_revenue.sql
92
- ```
93
-
94
- ## Patterns
95
-
96
- ### Pattern 1: Source Definitions
97
-
98
- ```yaml
99
- # models/staging/stripe/_stripe__sources.yml
100
- version: 2
101
-
102
- sources:
103
- - name: stripe
104
- description: Raw Stripe data loaded via Fivetran
105
- database: raw
106
- schema: stripe
107
- loader: fivetran
108
- loaded_at_field: _fivetran_synced
109
- freshness:
110
- warn_after: {count: 12, period: hour}
111
- error_after: {count: 24, period: hour}
112
- tables:
113
- - name: customers
114
- description: Stripe customer records
115
- columns:
116
- - name: id
117
- description: Primary key
118
- tests:
119
- - unique
120
- - not_null
121
- - name: email
122
- description: Customer email
123
- - name: created
124
- description: Account creation timestamp
125
-
126
- - name: payments
127
- description: Stripe payment transactions
128
- columns:
129
- - name: id
130
- tests:
131
- - unique
132
- - not_null
133
- - name: customer_id
134
- tests:
135
- - not_null
136
- - relationships:
137
- to: source('stripe', 'customers')
138
- field: id
139
- ```
140
-
141
- ### Pattern 2: Staging Models
142
-
143
- ```sql
144
- -- models/staging/stripe/stg_stripe__customers.sql
145
- with source as (
146
- select * from {{ source('stripe', 'customers') }}
147
- ),
148
-
149
- renamed as (
150
- select
151
- -- ids
152
- id as customer_id,
153
-
154
- -- strings
155
- lower(email) as email,
156
- name as customer_name,
157
-
158
- -- timestamps
159
- created as created_at,
160
-
161
- -- metadata
162
- _fivetran_synced as _loaded_at
163
-
164
- from source
165
- )
166
-
167
- select * from renamed
168
- ```
169
-
170
- ```sql
171
- -- models/staging/stripe/stg_stripe__payments.sql
172
- {{
173
- config(
174
- materialized='incremental',
175
- unique_key='payment_id',
176
- on_schema_change='append_new_columns'
177
- )
178
- }}
179
-
180
- with source as (
181
- select * from {{ source('stripe', 'payments') }}
182
-
183
- {% if is_incremental() %}
184
- where _fivetran_synced > (select max(_loaded_at) from {{ this }})
185
- {% endif %}
186
- ),
187
-
188
- renamed as (
189
- select
190
- -- ids
191
- id as payment_id,
192
- customer_id,
193
- invoice_id,
194
-
195
- -- amounts (convert cents to dollars)
196
- amount / 100.0 as amount,
197
- amount_refunded / 100.0 as amount_refunded,
198
-
199
- -- status
200
- status as payment_status,
201
-
202
- -- timestamps
203
- created as created_at,
204
-
205
- -- metadata
206
- _fivetran_synced as _loaded_at
207
-
208
- from source
209
- )
210
-
211
- select * from renamed
212
- ```
213
-
214
- ### Pattern 3: Intermediate Models
215
-
216
- ```sql
217
- -- models/intermediate/finance/int_payments_pivoted_to_customer.sql
218
- with payments as (
219
- select * from {{ ref('stg_stripe__payments') }}
220
- ),
221
-
222
- customers as (
223
- select * from {{ ref('stg_stripe__customers') }}
224
- ),
225
-
226
- payment_summary as (
227
- select
228
- customer_id,
229
- count(*) as total_payments,
230
- count(case when payment_status = 'succeeded' then 1 end) as successful_payments,
231
- sum(case when payment_status = 'succeeded' then amount else 0 end) as total_amount_paid,
232
- min(created_at) as first_payment_at,
233
- max(created_at) as last_payment_at
234
- from payments
235
- group by customer_id
236
- )
237
-
238
- select
239
- customers.customer_id,
240
- customers.email,
241
- customers.created_at as customer_created_at,
242
- coalesce(payment_summary.total_payments, 0) as total_payments,
243
- coalesce(payment_summary.successful_payments, 0) as successful_payments,
244
- coalesce(payment_summary.total_amount_paid, 0) as lifetime_value,
245
- payment_summary.first_payment_at,
246
- payment_summary.last_payment_at
247
-
248
- from customers
249
- left join payment_summary using (customer_id)
250
- ```
251
-
252
- ### Pattern 4: Mart Models (Dimensions and Facts)
253
-
254
- ```sql
255
- -- models/marts/core/dim_customers.sql
256
- {{
257
- config(
258
- materialized='table',
259
- unique_key='customer_id'
260
- )
261
- }}
262
-
263
- with customers as (
264
- select * from {{ ref('int_payments_pivoted_to_customer') }}
265
- ),
266
-
267
- orders as (
268
- select * from {{ ref('stg_shopify__orders') }}
269
- ),
270
-
271
- order_summary as (
272
- select
273
- customer_id,
274
- count(*) as total_orders,
275
- sum(total_price) as total_order_value,
276
- min(created_at) as first_order_at,
277
- max(created_at) as last_order_at
278
- from orders
279
- group by customer_id
280
- ),
281
-
282
- final as (
283
- select
284
- -- surrogate key
285
- {{ dbt_utils.generate_surrogate_key(['customers.customer_id']) }} as customer_key,
286
-
287
- -- natural key
288
- customers.customer_id,
289
-
290
- -- attributes
291
- customers.email,
292
- customers.customer_created_at,
293
-
294
- -- payment metrics
295
- customers.total_payments,
296
- customers.successful_payments,
297
- customers.lifetime_value,
298
- customers.first_payment_at,
299
- customers.last_payment_at,
300
-
301
- -- order metrics
302
- coalesce(order_summary.total_orders, 0) as total_orders,
303
- coalesce(order_summary.total_order_value, 0) as total_order_value,
304
- order_summary.first_order_at,
305
- order_summary.last_order_at,
306
-
307
- -- calculated fields
308
- case
309
- when customers.lifetime_value >= 1000 then 'high'
310
- when customers.lifetime_value >= 100 then 'medium'
311
- else 'low'
312
- end as customer_tier,
313
-
314
- -- timestamps
315
- current_timestamp as _loaded_at
316
-
317
- from customers
318
- left join order_summary using (customer_id)
319
- )
320
-
321
- select * from final
322
- ```
323
-
324
- ```sql
325
- -- models/marts/core/fct_orders.sql
326
- {{
327
- config(
328
- materialized='incremental',
329
- unique_key='order_id',
330
- incremental_strategy='merge'
331
- )
332
- }}
333
-
334
- with orders as (
335
- select * from {{ ref('stg_shopify__orders') }}
336
-
337
- {% if is_incremental() %}
338
- where updated_at > (select max(updated_at) from {{ this }})
339
- {% endif %}
340
- ),
341
-
342
- customers as (
343
- select * from {{ ref('dim_customers') }}
344
- ),
345
-
346
- final as (
347
- select
348
- -- keys
349
- orders.order_id,
350
- customers.customer_key,
351
- orders.customer_id,
352
-
353
- -- dimensions
354
- orders.order_status,
355
- orders.fulfillment_status,
356
- orders.payment_status,
357
-
358
- -- measures
359
- orders.subtotal,
360
- orders.tax,
361
- orders.shipping,
362
- orders.total_price,
363
- orders.total_discount,
364
- orders.item_count,
365
-
366
- -- timestamps
367
- orders.created_at,
368
- orders.updated_at,
369
- orders.fulfilled_at,
370
-
371
- -- metadata
372
- current_timestamp as _loaded_at
373
-
374
- from orders
375
- left join customers on orders.customer_id = customers.customer_id
376
- )
377
-
378
- select * from final
379
- ```
380
-
381
- ### Pattern 5: Testing and Documentation
382
-
383
- ```yaml
384
- # models/marts/core/_core__models.yml
385
- version: 2
386
-
387
- models:
388
- - name: dim_customers
389
- description: Customer dimension with payment and order metrics
390
- columns:
391
- - name: customer_key
392
- description: Surrogate key for the customer dimension
393
- tests:
394
- - unique
395
- - not_null
396
-
397
- - name: customer_id
398
- description: Natural key from source system
399
- tests:
400
- - unique
401
- - not_null
402
-
403
- - name: email
404
- description: Customer email address
405
- tests:
406
- - not_null
407
-
408
- - name: customer_tier
409
- description: Customer value tier based on lifetime value
410
- tests:
411
- - accepted_values:
412
- values: ['high', 'medium', 'low']
413
-
414
- - name: lifetime_value
415
- description: Total amount paid by customer
416
- tests:
417
- - dbt_utils.expression_is_true:
418
- expression: ">= 0"
419
-
420
- - name: fct_orders
421
- description: Order fact table with all order transactions
422
- tests:
423
- - dbt_utils.recency:
424
- datepart: day
425
- field: created_at
426
- interval: 1
427
- columns:
428
- - name: order_id
429
- tests:
430
- - unique
431
- - not_null
432
- - name: customer_key
433
- tests:
434
- - not_null
435
- - relationships:
436
- to: ref('dim_customers')
437
- field: customer_key
438
- ```
439
-
440
- ### Pattern 6: Macros and DRY Code
441
-
442
- ```sql
443
- -- macros/cents_to_dollars.sql
444
- {% macro cents_to_dollars(column_name, precision=2) %}
445
- round({{ column_name }} / 100.0, {{ precision }})
446
- {% endmacro %}
447
-
448
- -- macros/generate_schema_name.sql
449
- {% macro generate_schema_name(custom_schema_name, node) %}
450
- {%- set default_schema = target.schema -%}
451
- {%- if custom_schema_name is none -%}
452
- {{ default_schema }}
453
- {%- else -%}
454
- {{ default_schema }}_{{ custom_schema_name }}
455
- {%- endif -%}
456
- {% endmacro %}
457
-
458
- -- macros/limit_data_in_dev.sql
459
- {% macro limit_data_in_dev(column_name, days=3) %}
460
- {% if target.name == 'dev' %}
461
- where {{ column_name }} >= dateadd(day, -{{ days }}, current_date)
462
- {% endif %}
463
- {% endmacro %}
464
-
465
- -- Usage in model
466
- select * from {{ ref('stg_orders') }}
467
- {{ limit_data_in_dev('created_at') }}
468
- ```
469
-
470
- ### Pattern 7: Incremental Strategies
471
-
472
- ```sql
473
- -- Delete+Insert (default for most warehouses)
474
- {{
475
- config(
476
- materialized='incremental',
477
- unique_key='id',
478
- incremental_strategy='delete+insert'
479
- )
480
- }}
481
-
482
- -- Merge (best for late-arriving data)
483
- {{
484
- config(
485
- materialized='incremental',
486
- unique_key='id',
487
- incremental_strategy='merge',
488
- merge_update_columns=['status', 'amount', 'updated_at']
489
- )
490
- }}
491
-
492
- -- Insert Overwrite (partition-based)
493
- {{
494
- config(
495
- materialized='incremental',
496
- incremental_strategy='insert_overwrite',
497
- partition_by={
498
- "field": "created_date",
499
- "data_type": "date",
500
- "granularity": "day"
501
- }
502
- )
503
- }}
504
-
505
- select
506
- *,
507
- date(created_at) as created_date
508
- from {{ ref('stg_events') }}
509
-
510
- {% if is_incremental() %}
511
- where created_date >= dateadd(day, -3, current_date)
512
- {% endif %}
513
- ```
514
-
515
- ## dbt Commands
516
-
517
- ```bash
518
- # Development
519
- dbt run # Run all models
520
- dbt run --select staging # Run staging models only
521
- dbt run --select +fct_orders # Run fct_orders and its upstream
522
- dbt run --select fct_orders+ # Run fct_orders and its downstream
523
- dbt run --full-refresh # Rebuild incremental models
524
-
525
- # Testing
526
- dbt test # Run all tests
527
- dbt test --select stg_stripe # Test specific models
528
- dbt build # Run + test in DAG order
529
-
530
- # Documentation
531
- dbt docs generate # Generate docs
532
- dbt docs serve # Serve docs locally
533
-
534
- # Debugging
535
- dbt compile # Compile SQL without running
536
- dbt debug # Test connection
537
- dbt ls --select tag:critical # List models by tag
538
- ```
539
-
540
- ## Best Practices
541
-
542
- ### Do's
543
- - **Use staging layer** - Clean data once, use everywhere
544
- - **Test aggressively** - Not null, unique, relationships
545
- - **Document everything** - Column descriptions, model descriptions
546
- - **Use incremental** - For tables > 1M rows
547
- - **Version control** - dbt project in Git
548
-
549
- ### Don'ts
550
- - **Don't skip staging** - Raw → mart is tech debt
551
- - **Don't hardcode dates** - Use `{{ var('start_date') }}`
552
- - **Don't repeat logic** - Extract to macros
553
- - **Don't test in prod** - Use dev target
554
- - **Don't ignore freshness** - Monitor source data
555
-
556
- ## Resources
557
-
558
- - [dbt Documentation](https://docs.getdbt.com/)
559
- - [dbt Best Practices](https://docs.getdbt.com/guides/best-practices)
560
- - [dbt-utils Package](https://hub.getdbt.com/dbt-labs/dbt_utils/latest/)
561
- - [dbt Discourse](https://discourse.getdbt.com/)