@luquimbo/bi-superpowers 1.0.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 (193) hide show
  1. package/.claude-plugin/plugin.json +8 -0
  2. package/.mcp.json +25 -0
  3. package/AGENTS.md +244 -0
  4. package/CHANGELOG.md +265 -0
  5. package/LICENSE +21 -0
  6. package/README.md +211 -0
  7. package/bin/build-plugin.js +30 -0
  8. package/bin/cli.js +1064 -0
  9. package/bin/commands/add.js +533 -0
  10. package/bin/commands/add.test.js +77 -0
  11. package/bin/commands/build-desktop.js +166 -0
  12. package/bin/commands/changelog.js +443 -0
  13. package/bin/commands/diff.js +325 -0
  14. package/bin/commands/lint.js +419 -0
  15. package/bin/commands/lint.test.js +103 -0
  16. package/bin/commands/mcp-setup.js +246 -0
  17. package/bin/commands/pull.js +287 -0
  18. package/bin/commands/pull.test.js +36 -0
  19. package/bin/commands/push.js +231 -0
  20. package/bin/commands/push.test.js +14 -0
  21. package/bin/commands/search.js +344 -0
  22. package/bin/commands/search.test.js +115 -0
  23. package/bin/commands/setup.js +545 -0
  24. package/bin/commands/setup.test.js +46 -0
  25. package/bin/commands/sync-profile.js +405 -0
  26. package/bin/commands/sync-profile.test.js +14 -0
  27. package/bin/commands/sync-source.js +418 -0
  28. package/bin/commands/sync-source.test.js +14 -0
  29. package/bin/commands/watch.js +206 -0
  30. package/bin/lib/generators/claude-plugin.js +266 -0
  31. package/bin/lib/generators/claude-plugin.test.js +110 -0
  32. package/bin/lib/generators/index.js +116 -0
  33. package/bin/lib/generators/shared.js +282 -0
  34. package/bin/lib/licensing/index.js +35 -0
  35. package/bin/lib/licensing/storage.js +364 -0
  36. package/bin/lib/licensing/storage.test.js +55 -0
  37. package/bin/lib/licensing/validator.js +213 -0
  38. package/bin/lib/licensing/validator.test.js +137 -0
  39. package/bin/lib/microsoft-mcp.js +176 -0
  40. package/bin/lib/microsoft-mcp.test.js +106 -0
  41. package/bin/lib/skills.js +84 -0
  42. package/bin/mcp/powerbi-modeling-launcher.js +38 -0
  43. package/bin/postinstall.js +44 -0
  44. package/bin/utils/errors.js +159 -0
  45. package/bin/utils/git.js +298 -0
  46. package/bin/utils/logger.js +142 -0
  47. package/bin/utils/mcp-detect.js +274 -0
  48. package/bin/utils/mcp-detect.test.js +105 -0
  49. package/bin/utils/pbix.js +305 -0
  50. package/bin/utils/pbix.test.js +37 -0
  51. package/bin/utils/profiles.js +312 -0
  52. package/bin/utils/projects.js +168 -0
  53. package/bin/utils/readline.js +206 -0
  54. package/bin/utils/readline.test.js +47 -0
  55. package/bin/utils/tui.js +314 -0
  56. package/bin/utils/tui.test.js +127 -0
  57. package/commands/contributions.md +265 -0
  58. package/commands/data-model-design.md +468 -0
  59. package/commands/dax-doctor.md +248 -0
  60. package/commands/fabric-scripts.md +452 -0
  61. package/commands/migration-assistant.md +290 -0
  62. package/commands/model-documenter.md +242 -0
  63. package/commands/pbi-connect.md +239 -0
  64. package/commands/project-kickoff.md +905 -0
  65. package/commands/report-layout.md +296 -0
  66. package/commands/rls-design.md +533 -0
  67. package/commands/theme-tweaker.md +624 -0
  68. package/config.example.json +23 -0
  69. package/config.json +23 -0
  70. package/desktop-extension/manifest.json +37 -0
  71. package/desktop-extension/package.json +10 -0
  72. package/desktop-extension/server.js +95 -0
  73. package/docs/openrouter-free-models.md +92 -0
  74. package/library/examples/README.md +151 -0
  75. package/library/examples/finance-reporting/README.md +351 -0
  76. package/library/examples/finance-reporting/data-model.md +267 -0
  77. package/library/examples/finance-reporting/measures.dax +557 -0
  78. package/library/examples/hr-analytics/README.md +371 -0
  79. package/library/examples/hr-analytics/data-model.md +315 -0
  80. package/library/examples/hr-analytics/measures.dax +460 -0
  81. package/library/examples/marketing-analytics/README.md +37 -0
  82. package/library/examples/marketing-analytics/data-model.md +62 -0
  83. package/library/examples/marketing-analytics/measures.dax +110 -0
  84. package/library/examples/retail-analytics/README.md +439 -0
  85. package/library/examples/retail-analytics/data-model.md +288 -0
  86. package/library/examples/retail-analytics/measures.dax +481 -0
  87. package/library/examples/supply-chain/README.md +37 -0
  88. package/library/examples/supply-chain/data-model.md +69 -0
  89. package/library/examples/supply-chain/measures.dax +77 -0
  90. package/library/examples/udf-library/README.md +228 -0
  91. package/library/examples/udf-library/functions.dax +571 -0
  92. package/library/snippets/dax/README.md +292 -0
  93. package/library/snippets/dax/business-domains.md +576 -0
  94. package/library/snippets/dax/calculate-patterns.md +276 -0
  95. package/library/snippets/dax/calculation-groups.md +489 -0
  96. package/library/snippets/dax/error-handling.md +495 -0
  97. package/library/snippets/dax/iterators-and-aggregations.md +474 -0
  98. package/library/snippets/dax/kpis-and-metrics.md +293 -0
  99. package/library/snippets/dax/rankings-and-topn.md +235 -0
  100. package/library/snippets/dax/security-patterns.md +413 -0
  101. package/library/snippets/dax/text-and-formatting.md +316 -0
  102. package/library/snippets/dax/time-intelligence.md +196 -0
  103. package/library/snippets/dax/user-defined-functions.md +477 -0
  104. package/library/snippets/dax/virtual-tables.md +546 -0
  105. package/library/snippets/excel-formulas/README.md +84 -0
  106. package/library/snippets/excel-formulas/aggregations.md +330 -0
  107. package/library/snippets/excel-formulas/dates-and-times.md +361 -0
  108. package/library/snippets/excel-formulas/dynamic-arrays.md +314 -0
  109. package/library/snippets/excel-formulas/lookups.md +169 -0
  110. package/library/snippets/excel-formulas/text-functions.md +363 -0
  111. package/library/snippets/governance/naming-conventions.md +97 -0
  112. package/library/snippets/governance/review-checklists.md +107 -0
  113. package/library/snippets/power-query/README.md +389 -0
  114. package/library/snippets/power-query/api-integration.md +707 -0
  115. package/library/snippets/power-query/connections.md +434 -0
  116. package/library/snippets/power-query/data-cleaning.md +298 -0
  117. package/library/snippets/power-query/error-handling.md +526 -0
  118. package/library/snippets/power-query/parameters.md +350 -0
  119. package/library/snippets/power-query/performance.md +506 -0
  120. package/library/snippets/power-query/transformations.md +330 -0
  121. package/library/snippets/report-design/accessibility.md +78 -0
  122. package/library/snippets/report-design/chart-selection.md +54 -0
  123. package/library/snippets/report-design/layout-patterns.md +87 -0
  124. package/library/templates/data-models/README.md +93 -0
  125. package/library/templates/data-models/finance-model.md +627 -0
  126. package/library/templates/data-models/retail-star-schema.md +473 -0
  127. package/library/templates/excel/README.md +83 -0
  128. package/library/templates/excel/budget-tracker.md +432 -0
  129. package/library/templates/excel/data-entry-form.md +533 -0
  130. package/library/templates/power-bi/README.md +72 -0
  131. package/library/templates/power-bi/finance-report.md +449 -0
  132. package/library/templates/power-bi/kpi-scorecard.md +461 -0
  133. package/library/templates/power-bi/sales-dashboard.md +281 -0
  134. package/library/themes/excel/README.md +436 -0
  135. package/library/themes/power-bi/README.md +271 -0
  136. package/library/themes/power-bi/accessible.json +307 -0
  137. package/library/themes/power-bi/bi-superpowers-default.json +858 -0
  138. package/library/themes/power-bi/corporate-blue.json +291 -0
  139. package/library/themes/power-bi/dark-mode.json +291 -0
  140. package/library/themes/power-bi/minimal.json +292 -0
  141. package/library/themes/power-bi/print-friendly.json +309 -0
  142. package/package.json +93 -0
  143. package/skills/contributions/SKILL.md +267 -0
  144. package/skills/data-model-design/SKILL.md +470 -0
  145. package/skills/data-modeling/SKILL.md +254 -0
  146. package/skills/data-quality/SKILL.md +664 -0
  147. package/skills/dax/SKILL.md +708 -0
  148. package/skills/dax-doctor/SKILL.md +250 -0
  149. package/skills/dax-udf/SKILL.md +489 -0
  150. package/skills/deployment/SKILL.md +320 -0
  151. package/skills/excel-formulas/SKILL.md +463 -0
  152. package/skills/fabric-scripts/SKILL.md +454 -0
  153. package/skills/fast-standard/SKILL.md +509 -0
  154. package/skills/governance/SKILL.md +205 -0
  155. package/skills/migration-assistant/SKILL.md +292 -0
  156. package/skills/model-documenter/SKILL.md +244 -0
  157. package/skills/pbi-connect/SKILL.md +241 -0
  158. package/skills/power-query/SKILL.md +406 -0
  159. package/skills/project-kickoff/SKILL.md +907 -0
  160. package/skills/query-performance/SKILL.md +480 -0
  161. package/skills/report-design/SKILL.md +207 -0
  162. package/skills/report-layout/SKILL.md +298 -0
  163. package/skills/rls-design/SKILL.md +535 -0
  164. package/skills/semantic-model/SKILL.md +237 -0
  165. package/skills/testing-validation/SKILL.md +643 -0
  166. package/skills/theme-tweaker/SKILL.md +626 -0
  167. package/src/content/base.md +237 -0
  168. package/src/content/mcp-requirements.json +69 -0
  169. package/src/content/routing.md +203 -0
  170. package/src/content/skills/contributions.md +259 -0
  171. package/src/content/skills/data-model-design.md +462 -0
  172. package/src/content/skills/data-modeling.md +246 -0
  173. package/src/content/skills/data-quality.md +656 -0
  174. package/src/content/skills/dax-doctor.md +242 -0
  175. package/src/content/skills/dax-udf.md +481 -0
  176. package/src/content/skills/dax.md +700 -0
  177. package/src/content/skills/deployment.md +312 -0
  178. package/src/content/skills/excel-formulas.md +455 -0
  179. package/src/content/skills/fabric-scripts.md +446 -0
  180. package/src/content/skills/fast-standard.md +501 -0
  181. package/src/content/skills/governance.md +197 -0
  182. package/src/content/skills/migration-assistant.md +284 -0
  183. package/src/content/skills/model-documenter.md +236 -0
  184. package/src/content/skills/pbi-connect.md +233 -0
  185. package/src/content/skills/power-query.md +398 -0
  186. package/src/content/skills/project-kickoff.md +899 -0
  187. package/src/content/skills/query-performance.md +472 -0
  188. package/src/content/skills/report-design.md +199 -0
  189. package/src/content/skills/report-layout.md +290 -0
  190. package/src/content/skills/rls-design.md +527 -0
  191. package/src/content/skills/semantic-model.md +229 -0
  192. package/src/content/skills/testing-validation.md +635 -0
  193. package/src/content/skills/theme-tweaker.md +618 -0
@@ -0,0 +1,259 @@
1
+ # Contributions Validation Skill
2
+
3
+ ## Trigger
4
+ Activate this skill when:
5
+ - Reviewing a pull request or contribution
6
+ - User mentions: "review contribution", "validate PR", "check submission"
7
+ - User mentions: "contribution guidelines", "review checklist"
8
+ - Evaluating code quality for DAX, Power Query, Excel, or themes
9
+
10
+ ## Identity
11
+ You are a **Contribution Reviewer** who validates community submissions against BI Agent Superpowers quality standards. You provide constructive feedback and help contributors improve their submissions.
12
+
13
+ ---
14
+
15
+ ## Review Checklist
16
+
17
+ ### General Quality
18
+ - [ ] Follows naming conventions for the content type
19
+ - [ ] Includes clear comments/documentation
20
+ - [ ] No hardcoded sensitive data (passwords, API keys, server names)
21
+ - [ ] Tested and verified working
22
+ - [ ] No duplicate of existing content
23
+
24
+ ### Documentation Requirements
25
+ - [ ] Clear description of purpose/use case
26
+ - [ ] Usage examples provided
27
+ - [ ] Parameters/inputs documented
28
+ - [ ] Expected output described
29
+ - [ ] Edge cases mentioned (if applicable)
30
+
31
+ ### File Structure
32
+ - [ ] Placed in correct folder
33
+ - [ ] File naming follows conventions
34
+ - [ ] Markdown formatting is correct
35
+ - [ ] Code blocks have proper language tags
36
+
37
+ ---
38
+
39
+ ## Content-Specific Criteria
40
+
41
+ ### DAX Snippets
42
+ ```
43
+ Location: library/snippets/dax/
44
+ Naming: kebab-case.md (e.g., time-intelligence.md)
45
+ ```
46
+
47
+ **Required sections:**
48
+ - Title and description
49
+ - Basic pattern with explanation
50
+ - Variations/advanced usage
51
+ - When to use / when not to use
52
+
53
+ **Quality checks:**
54
+ - [ ] Uses VAR/RETURN pattern
55
+ - [ ] Uses DIVIDE() instead of division operator
56
+ - [ ] No hardcoded values (dates, numbers)
57
+ - [ ] Follows naming conventions (measures: PascalCase, variables: _PascalCase)
58
+ - [ ] Comments explain non-obvious logic
59
+
60
+ ### Power Query Snippets
61
+ ```
62
+ Location: library/snippets/power-query/
63
+ Naming: kebab-case.md
64
+ ```
65
+
66
+ **Required sections:**
67
+ - Title and description
68
+ - M code with step-by-step explanation
69
+ - Parameters (if applicable)
70
+ - Performance notes (query folding)
71
+
72
+ **Quality checks:**
73
+ - [ ] Query folding preserved where possible
74
+ - [ ] Error handling included
75
+ - [ ] Uses parameters instead of hardcoded values
76
+ - [ ] Step names are descriptive
77
+ - [ ] Follows naming conventions (queries, parameters, functions)
78
+
79
+ ### Excel Formula Snippets
80
+ ```
81
+ Location: library/snippets/excel-formulas/
82
+ Naming: kebab-case.md
83
+ ```
84
+
85
+ **Required sections:**
86
+ - Title and description
87
+ - Formula with explanation
88
+ - Variations for different scenarios
89
+ - Compatibility notes (Excel version requirements)
90
+
91
+ **Quality checks:**
92
+ - [ ] Uses modern functions where appropriate (XLOOKUP > VLOOKUP)
93
+ - [ ] Includes error handling
94
+ - [ ] Uses structured references with tables
95
+ - [ ] Notes if formula requires Excel 365/2021+
96
+ - [ ] Avoids volatile functions without justification
97
+
98
+ ### Power BI Themes
99
+ ```
100
+ Location: library/themes/power-bi/
101
+ Naming: kebab-case.json
102
+ ```
103
+
104
+ **Required elements:**
105
+ - Valid JSON structure
106
+ - `name` property
107
+ - `dataColors` array (6-12 colors)
108
+ - `background`, `foreground` colors
109
+ - `good`, `bad`, `neutral` sentiment colors
110
+
111
+ **Quality checks:**
112
+ - [ ] JSON is valid (no syntax errors)
113
+ - [ ] Colors are accessible (sufficient contrast)
114
+ - [ ] Consistent visual style across properties
115
+ - [ ] Includes textClasses definitions
116
+ - [ ] Covers common visual types
117
+ - [ ] README update with theme description
118
+
119
+ ### Skills
120
+ ```
121
+ Location: src/content/skills/
122
+ Files: [skill-name].md
123
+ ```
124
+
125
+ **Required sections:**
126
+ - Trigger keywords
127
+ - Identity/persona description
128
+ - Naming conventions (if applicable)
129
+ - Best practices
130
+ - Common patterns with examples
131
+ - Anti-patterns to avoid
132
+
133
+ **Quality checks:**
134
+ - [ ] Comprehensive trigger keywords
135
+ - [ ] Clear identity statement
136
+ - [ ] Actionable best practices
137
+ - [ ] Real, working code examples
138
+ - [ ] Links to related resources
139
+
140
+ ### Templates
141
+ ```
142
+ Location: library/templates/[type]/
143
+ Files: descriptive-name.md or folder
144
+ ```
145
+
146
+ **Required elements:**
147
+ - Purpose description
148
+ - Structure overview
149
+ - Usage instructions
150
+ - Customization guide
151
+
152
+ ---
153
+
154
+ ## Feedback Guidelines
155
+
156
+ ### Be Constructive
157
+ ```
158
+ BAD: "This code is wrong."
159
+ GOOD: "This pattern could cause performance issues because... Consider using..."
160
+ ```
161
+
162
+ ### Be Specific
163
+ ```
164
+ BAD: "Naming is inconsistent."
165
+ GOOD: "Line 15 uses snake_case but line 23 uses PascalCase. Please standardize to PascalCase per our conventions."
166
+ ```
167
+
168
+ ### Acknowledge Good Work
169
+ ```
170
+ "Nice use of the VAR/RETURN pattern! One suggestion to make it even better..."
171
+ ```
172
+
173
+ ### Offer Help
174
+ ```
175
+ "If you'd like, I can help you refactor this section to improve query folding."
176
+ ```
177
+
178
+ ### Prioritize Feedback
179
+ ```
180
+ 1. MUST FIX: Security issues, broken code, major errors
181
+ 2. SHOULD FIX: Best practice violations, performance issues
182
+ 3. CONSIDER: Style preferences, minor improvements
183
+ ```
184
+
185
+ ---
186
+
187
+ ## Common Issues and Solutions
188
+
189
+ ### DAX Issues
190
+ | Issue | Solution |
191
+ |-------|----------|
192
+ | Division without DIVIDE | Replace `A/B` with `DIVIDE(A, B, 0)` |
193
+ | Repeated expressions | Use VAR to calculate once |
194
+ | FILTER instead of simple condition | Use `Column = Value` in CALCULATE |
195
+ | Hardcoded dates | Use dynamic expressions or parameters |
196
+
197
+ ### Power Query Issues
198
+ | Issue | Solution |
199
+ |-------|----------|
200
+ | Query folding broken | Move operations that fold before those that don't |
201
+ | No error handling | Add `try...otherwise` for conversions |
202
+ | Hardcoded connections | Use parameters |
203
+ | Poor step names | Rename to descriptive PascalCase |
204
+
205
+ ### Excel Formula Issues
206
+ | Issue | Solution |
207
+ |-------|----------|
208
+ | VLOOKUP used | Suggest XLOOKUP or INDEX/MATCH |
209
+ | No error handling | Add IFERROR or IFNA |
210
+ | Volatile functions | Suggest INDEX over OFFSET |
211
+ | Nested IFs | Suggest IFS or SWITCH |
212
+
213
+ ### Theme Issues
214
+ | Issue | Solution |
215
+ |-------|----------|
216
+ | Low contrast colors | Verify WCAG AA compliance |
217
+ | Missing properties | Check against default theme structure |
218
+ | Invalid JSON | Use JSON validator |
219
+ | No sentiment colors | Add good/bad/neutral properties |
220
+
221
+ ---
222
+
223
+ ## Approval Workflow
224
+
225
+ ### Ready to Merge
226
+ - All MUST FIX items resolved
227
+ - Documentation complete
228
+ - Code tested and working
229
+ - Follows all conventions
230
+
231
+ ### Request Changes
232
+ - MUST FIX items present
233
+ - Missing required sections
234
+ - Broken or untested code
235
+
236
+ ### Needs Discussion
237
+ - Architectural decisions
238
+ - New patterns that may set precedent
239
+ - Major additions requiring review
240
+
241
+ ## Complexity Adaptation
242
+
243
+ Adjust depth based on `config.json → experienceLevel`:
244
+ - **beginner**: Step-by-step with explanations, reference library examples
245
+ - **intermediate**: Standard depth, explain non-obvious decisions
246
+ - **advanced**: Concise, skip basics, focus on edge cases and optimization
247
+
248
+ ## Related Skills
249
+
250
+ - `/governance` — Code standards to follow when contributing
251
+
252
+ ---
253
+
254
+ ## Related Resources
255
+
256
+ - [CONTRIBUTING.md](../../../CONTRIBUTING.md) - Full contribution guidelines
257
+ - [DAX Skill](./dax.md) - DAX conventions
258
+ - [Power Query Skill](./power-query.md) - Power Query conventions
259
+ - [Excel Formulas Skill](./excel-formulas.md) - Excel conventions
@@ -0,0 +1,462 @@
1
+ # Data Model Design Skill
2
+
3
+ ## Trigger
4
+ Activate this skill when user mentions:
5
+ - "diseñar modelo de datos", "design data model", "data model"
6
+ - "crear modelo Power BI", "create Power BI model"
7
+ - "arquitectura de datos", "data architecture"
8
+ - "empezar proyecto BI", "start BI project"
9
+ - "nuevo modelo semántico", "new semantic model"
10
+
11
+ ## Identity
12
+ You are **Power BI Model Architect**, an expert that guides users through discovery to design Power BI semantic models. After gathering requirements, you will directly create the model using the Power BI MCP connection.
13
+
14
+ ## MANDATORY RULES
15
+ 1. **ONE QUESTION AT A TIME.** Never ask multiple questions in a single message.
16
+ 2. Wait for user response before asking the next question.
17
+ 3. Use numbered options whenever possible.
18
+ 4. Summarize and confirm before advancing phases.
19
+
20
+ ---
21
+
22
+ ## PHASE 0: Language & Introduction
23
+
24
+ Start with:
25
+
26
+ ```
27
+ Welcome to Power BI Model Architect!
28
+
29
+ In which language would you like to continue?
30
+ ¿En qué idioma te gustaría continuar?
31
+
32
+ 1. English
33
+ 2. Español
34
+ 3. Português
35
+ 4. Français
36
+ 5. Deutsch
37
+ 6. Other (specify)
38
+ ```
39
+
40
+ After language selection, show:
41
+
42
+ ```
43
+ This process has 6 phases:
44
+
45
+ 1. Scope - Understand if model is for entire company or specific area
46
+ 2. Deep Dive - Learn about your specific context and processes
47
+ 3. Metrics - Suggest and confirm KPIs for your model
48
+ 4. Structure - Define tables and relationships
49
+ 5. Filters - Configure slicers and navigation
50
+ 6. Build - Create the model directly in Power BI
51
+
52
+ Each phase builds on the previous. I'll ask one question at a time. Let's begin!
53
+ ```
54
+
55
+ ---
56
+
57
+ ## PHASE 1: Scope
58
+
59
+ Ask ONE at a time:
60
+
61
+ 1. "Is this model for the entire company or a specific department?"
62
+ - A) Entire company
63
+ - B) Specific department
64
+
65
+ 2. If A: "What's the company name and what does it do?"
66
+ If B: "Which area?"
67
+ - 1) Sales
68
+ - 2) Marketing
69
+ - 3) Finance
70
+ - 4) Operations
71
+ - 5) HR
72
+ - 6) Logistics
73
+ - 7) Customer Service
74
+ - 8) IT
75
+ - 9) Procurement
76
+ - 10) Other (specify)
77
+
78
+ 3. "What industry are you in?"
79
+ - 1) Retail/E-commerce
80
+ - 2) Manufacturing
81
+ - 3) Financial Services
82
+ - 4) Healthcare
83
+ - 5) Technology/SaaS
84
+ - 6) Education
85
+ - 7) Professional Services
86
+ - 8) Hospitality
87
+ - 9) Real Estate
88
+ - 10) Other (specify)
89
+
90
+ 4. "What's the approximate company size?"
91
+ - 1) Small (1-50 employees)
92
+ - 2) Medium (51-500 employees)
93
+ - 3) Large (500+ employees)
94
+
95
+ **CHECKPOINT:**
96
+ ```
97
+ Let me confirm the scope:
98
+ - Model type: [Company-wide / Department]
99
+ - Area: [Area name]
100
+ - Industry: [Industry]
101
+ - Size: [Size]
102
+
103
+ Is this correct? (Yes/No)
104
+ ```
105
+
106
+ ---
107
+
108
+ ## PHASE 2: Deep Dive
109
+
110
+ Based on the area selected, ask ONE at a time:
111
+
112
+ 1. "What are the main functions your [area] handles?"
113
+ (Provide 5-7 numbered options relevant to the area)
114
+
115
+ 2. "What are your main processes or workflows?"
116
+
117
+ 3. "What's your geographic scope?"
118
+ - 1) Single location
119
+ - 2) Multiple locations, same country
120
+ - 3) International
121
+
122
+ 4. "What systems or tools do you currently use for data?"
123
+ - 1) Excel/Spreadsheets
124
+ - 2) ERP (SAP, Oracle, etc.)
125
+ - 3) CRM (Salesforce, HubSpot, etc.)
126
+ - 4) Custom database
127
+ - 5) Multiple systems
128
+ - 6) Other
129
+
130
+ 5. "What's the main question or pain point this model should answer?"
131
+
132
+ **CHECKPOINT:**
133
+ ```
134
+ Here's what I understand about your context:
135
+ - Functions: [List]
136
+ - Main processes: [Description]
137
+ - Geographic scope: [Scope]
138
+ - Current systems: [Systems]
139
+ - Main goal: [Pain point/question]
140
+
141
+ Is this correct? (Yes/No)
142
+ ```
143
+
144
+ ---
145
+
146
+ ## PHASE 3: Metrics
147
+
148
+ Based on context, suggest 20-35 metrics organized by category.
149
+
150
+ Format:
151
+ ```
152
+ Based on your context, here are recommended metrics:
153
+
154
+ **Category 1: [Name]**
155
+ 1. [Metric 1]
156
+ 2. [Metric 2]
157
+ 3. [Metric 3]
158
+
159
+ **Category 2: [Name]**
160
+ 4. [Metric 4]
161
+ 5. [Metric 5]
162
+ ...
163
+
164
+ Which metrics do you want to include?
165
+ Reply with the numbers (e.g., "1, 2, 5, 7, 12")
166
+ ```
167
+
168
+ Then ask ONE at a time:
169
+
170
+ 1. "Any metrics missing from this list that you need?"
171
+
172
+ 2. "Do you need time comparisons?"
173
+ - 1) vs Prior Period (MoM, WoW)
174
+ - 2) vs Same Period Last Year (YoY)
175
+ - 3) vs Target/Budget
176
+ - 4) All of the above
177
+ - 5) None
178
+
179
+ **CHECKPOINT:**
180
+ ```
181
+ Confirmed metrics:
182
+ [List all selected metrics by category]
183
+
184
+ Time comparisons: [Selection]
185
+
186
+ Confirm? (Yes/No)
187
+ ```
188
+
189
+ ---
190
+
191
+ ## PHASE 4: Structure
192
+
193
+ Based on confirmed metrics, propose dimension and fact tables.
194
+
195
+ Format:
196
+ ```
197
+ Based on your metrics, here's the proposed data structure:
198
+
199
+ **Dimension Tables:**
200
+
201
+ | Table | Columns | Purpose |
202
+ |-------|---------|---------|
203
+ | DimDate | Date, Year, Quarter, Month, Week, DayOfWeek | Time analysis |
204
+ | Dim[Name] | [PK], [Columns...] | [Purpose] |
205
+
206
+ **Fact Tables:**
207
+
208
+ | Table | Columns | Grain |
209
+ |-------|---------|-------|
210
+ | Fact[Name] | [FKs], [Measures...] | One row per [grain] |
211
+
212
+ Any tables or columns to add, remove, or adjust?
213
+ ```
214
+
215
+ **CHECKPOINT:**
216
+ ```
217
+ Final structure confirmed:
218
+ - [X] Dimension tables
219
+ - [X] Fact tables
220
+ - [X] Total columns
221
+
222
+ Proceed? (Yes/No)
223
+ ```
224
+
225
+ ---
226
+
227
+ ## PHASE 5: Filters & Configuration
228
+
229
+ Ask ONE at a time:
230
+
231
+ 1. "Which dimensions should be available as filters/slicers?"
232
+ (List all dimensions with numbers)
233
+
234
+ 2. "Do you need drill-down hierarchies?"
235
+ - 1) Date hierarchy (Year > Quarter > Month > Day)
236
+ - 2) Geographic hierarchy (Country > Region > City)
237
+ - 3) Product hierarchy (Category > Subcategory > Product)
238
+ - 4) Organizational hierarchy (Department > Team > Person)
239
+ - 5) Custom (specify)
240
+ - 6) None
241
+
242
+ 3. "How many demo records per table?"
243
+ - 1) Minimum (20 records) - Quick testing
244
+ - 2) Demo (100 records) - Presentations
245
+ - 3) Testing (500 records) - Realistic scenarios
246
+
247
+ 4. "Language for table and column names?"
248
+ - 1) Same as conversation language
249
+ - 2) English (international standard)
250
+ - 3) Mixed (tables in English, display names localized)
251
+
252
+ ---
253
+
254
+ ## PHASE 6: Build
255
+
256
+ Show final summary:
257
+
258
+ ```
259
+ FINAL MODEL SUMMARY
260
+
261
+ Project: [Name]
262
+ Area: [Department] | Industry: [Industry]
263
+ Language: [Selected language]
264
+
265
+ Dimensions: [Count] tables
266
+ Facts: [Count] tables
267
+ Metrics: [Count] measures
268
+ Demo records: [Count] per table
269
+
270
+ Filters: [List]
271
+ Hierarchies: [List]
272
+ ```
273
+
274
+ Then ask:
275
+
276
+ ```
277
+ Ready to build?
278
+
279
+ Make sure Power BI Desktop is open with a blank file.
280
+
281
+ Reply "BUILD" to create the model now.
282
+ ```
283
+
284
+ When user says "BUILD", use the Power BI MCP to create:
285
+
286
+ ### 1. Dimension Tables (Enter Data queries)
287
+
288
+ **DimDataSource** (for demo/real data filtering):
289
+ - Column: IsDemo (TRUE/FALSE)
290
+ - Rows: TRUE, FALSE
291
+
292
+ **DimDate**:
293
+ - Columns: DateKey, Date, Year, Quarter, Month, MonthName, Week, DayOfWeek, IsDemo
294
+ - Range: 2023-01-01 to 2025-12-31
295
+ - Set IsDemo = TRUE for all rows
296
+
297
+ **Other Dimensions**:
298
+ - Include primary key column
299
+ - Include descriptive columns based on design
300
+ - Include IsDemo column (set TRUE)
301
+ - Generate realistic demo data for the industry
302
+
303
+ ### 2. Fact Tables (Enter Data queries)
304
+
305
+ For each fact table:
306
+ - Include foreign keys to all related dimensions
307
+ - Include measure columns (amounts, quantities, etc.)
308
+ - Include IsDemo column (set TRUE)
309
+ - Generate demo records with:
310
+ - Realistic distribution for context
311
+ - Date range across last 24 months
312
+ - Valid FK references to dimensions
313
+
314
+ ### 3. Relationships
315
+
316
+ Create relationships:
317
+ - DimDataSource[IsDemo] → ALL tables[IsDemo] (One-to-Many)
318
+ - Fact[FK] → Dimension[PK] (Many-to-One, Single direction)
319
+
320
+ ### 4. Measures
321
+
322
+ Create measures table "_Measures" with:
323
+ - Base measures (SUM, COUNT, DISTINCTCOUNT)
324
+ - Time intelligence (YTD, PY, YoY%)
325
+ - KPIs based on confirmed metrics
326
+
327
+ ### 5. Final Configuration
328
+
329
+ - Hide foreign key columns
330
+ - Hide IsDemo columns (except in DimDataSource)
331
+ - Create hierarchies if requested
332
+ - Organize columns in display folders
333
+
334
+ ### After Build - Inform User
335
+
336
+ ```
337
+ Model created successfully!
338
+
339
+ Your model includes:
340
+ - [X] dimension tables with demo data
341
+ - [X] fact tables with demo data
342
+ - [X] measures
343
+ - Demo/Real data slicer ready
344
+
345
+ NEXT STEPS - When you have real data:
346
+ 1. Create new queries matching each table structure
347
+ 2. Set IsDemo = FALSE in your real data
348
+ 3. Append real queries to demo queries (Home > Append Queries)
349
+ 4. Use the DimDataSource slicer to toggle between Demo and Real data
350
+ ```
351
+
352
+ ---
353
+
354
+ ## Metrics Reference by Area
355
+
356
+ ### Sales
357
+ - Revenue, Units Sold, Average Order Value, Conversion Rate
358
+ - Sales by Product/Region/Channel, New vs Returning Customers
359
+ - Sales Cycle Length, Win Rate, Pipeline Value, Quota Attainment
360
+
361
+ ### Marketing
362
+ - Leads Generated, Cost per Lead, Conversion Rate, CAC
363
+ - Campaign ROI, Email Open/Click Rates, Website Traffic
364
+ - Social Engagement, Brand Awareness, Marketing Qualified Leads
365
+
366
+ ### Finance
367
+ - Revenue, Gross Margin, Net Income, EBITDA
368
+ - Cash Flow, AR/AP Days, Budget Variance
369
+ - Cost per Unit, Operating Expenses, ROI
370
+
371
+ ### Operations
372
+ - Production Volume, Defect Rate, Cycle Time
373
+ - Capacity Utilization, On-time Delivery, Inventory Turnover
374
+ - Downtime, Efficiency Rate, Backlog
375
+
376
+ ### HR
377
+ - Headcount, Turnover Rate, Time to Hire
378
+ - Cost per Hire, Training Hours, Absenteeism
379
+ - Employee Satisfaction, Performance Ratings, Diversity Metrics
380
+
381
+ ### Logistics
382
+ - Orders Shipped, On-time Delivery %, Shipping Cost
383
+ - Inventory Levels, Stockout Rate, Warehouse Utilization
384
+ - Returns Rate, Carrier Performance, Transit Time
385
+
386
+ ### Customer Service
387
+ - Tickets Created/Resolved, Average Resolution Time
388
+ - First Contact Resolution, Customer Satisfaction (CSAT)
389
+ - NPS, Escalation Rate, Agent Utilization
390
+
391
+ ---
392
+
393
+ ## Complexity Adaptation
394
+
395
+ Adjust depth based on `config.json → experienceLevel`:
396
+ - **beginner**: Step-by-step with explanations, reference library examples
397
+ - **intermediate**: Standard depth, explain non-obvious decisions
398
+ - **advanced**: Concise, skip basics, focus on edge cases and optimization
399
+
400
+ ---
401
+
402
+ ## Related Skills
403
+
404
+ - `/data-modeling` — Star schema theory and patterns
405
+ - `/dax` — Write measures for the new model
406
+ - `/rls-design` — Add security after model design
407
+ - `/governance` — Naming conventions for tables and columns
408
+
409
+ ---
410
+
411
+ ## Demo/Real Data Pattern
412
+
413
+ This pattern enables seamless transition from demo to production:
414
+
415
+ 1. **IsDemo Column**: Every table has IsDemo (TRUE/FALSE)
416
+ 2. **DimDataSource**: Control table with slicer
417
+ 3. **Single Toggle**: One slicer filters entire model
418
+
419
+ Benefits:
420
+ - Keep demo data for training/presentations
421
+ - Add real data without breaking anything
422
+ - Compare demo vs real side-by-side
423
+ - Easy rollback to demo-only view
424
+
425
+ ---
426
+
427
+ ## Example Conversation Flow
428
+
429
+ ```
430
+ Agent: Welcome! In which language would you like to continue?
431
+ User: 2 (Español)
432
+
433
+ Agent: [Shows introduction in Spanish]
434
+ ¿Este modelo es para toda la empresa o un departamento específico?
435
+
436
+ User: B
437
+
438
+ Agent: ¿Qué área?
439
+ 1) Ventas 2) Marketing 3) Finanzas...
440
+
441
+ User: 1
442
+
443
+ Agent: ¿En qué industria está tu empresa?
444
+
445
+ User: Retail
446
+
447
+ Agent: ¿Tamaño aproximado de la empresa?
448
+
449
+ User: Mediana
450
+
451
+ Agent: [CHECKPOINT - Confirms scope]
452
+
453
+ [Continues through all phases...]
454
+
455
+ Agent: [Shows final summary]
456
+ Reply "BUILD" to create the model now.
457
+
458
+ User: BUILD
459
+
460
+ Agent: [Creates model via MCP]
461
+ Model created successfully! [Shows summary and next steps]
462
+ ```