@polymorphism-tech/morph-spec 4.3.4 → 4.3.6

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 (164) hide show
  1. package/.morph/.morphversion +5 -0
  2. package/.morph/config/agents.json +948 -0
  3. package/.morph/config/config.json +9 -9
  4. package/.morph/project/context/README.md +17 -0
  5. package/.morph/project/context/detection-log.md +16 -0
  6. package/.morph/project/standards/inferred.md +59 -0
  7. package/.morph/standards/ai-agents/blazor-ui.md +364 -0
  8. package/.morph/standards/ai-agents/production.md +415 -0
  9. package/.morph/standards/ai-agents/setup.md +418 -0
  10. package/.morph/standards/ai-agents/team-orchestration.md +479 -0
  11. package/.morph/standards/ai-agents/workflows.md +354 -0
  12. package/.morph/standards/architecture/ddd/aggregates.md +120 -0
  13. package/.morph/standards/architecture/ddd/entities.md +99 -0
  14. package/.morph/standards/architecture/ddd/value-objects.md +124 -0
  15. package/.morph/standards/backend/api/minimal-api.md +494 -0
  16. package/.morph/standards/backend/api/rest.md +492 -0
  17. package/.morph/standards/backend/api/validation.md +88 -0
  18. package/.morph/standards/backend/authentication/passkeys.md +428 -0
  19. package/.morph/standards/backend/database/ef-core.md +199 -0
  20. package/.morph/standards/backend/database/migrations.md +393 -0
  21. package/.morph/standards/backend/database/postgresql/database.md +352 -0
  22. package/.morph/standards/backend/database/repository-patterns.md +528 -0
  23. package/.morph/standards/backend/database/vector-search-rag.md +541 -0
  24. package/.morph/standards/backend/dotnet/async.md +366 -0
  25. package/.morph/standards/backend/dotnet/core.md +117 -0
  26. package/.morph/standards/backend/dotnet/di.md +439 -0
  27. package/.morph/standards/backend/dotnet/program-cs-checklist.md +92 -0
  28. package/.morph/standards/backend/integrations/asaas/asaas-api.md +216 -0
  29. package/.morph/standards/backend/integrations/clerk/clerk-auth.md +290 -0
  30. package/.morph/standards/backend/integrations/hangfire/hangfire-jobs.md +350 -0
  31. package/.morph/standards/backend/integrations/resend/resend-email.md +385 -0
  32. package/.morph/standards/context/analytics.md +96 -0
  33. package/.morph/standards/context/bundles.md +110 -0
  34. package/.morph/standards/context/priming.md +78 -0
  35. package/.morph/standards/core/architecture.md +185 -0
  36. package/.morph/standards/core/coding.md +214 -0
  37. package/.morph/standards/core/git-branching-strategy.md +403 -0
  38. package/.morph/standards/core/git.md +185 -0
  39. package/.morph/standards/core/testing.md +295 -0
  40. package/.morph/standards/data/nosql/blob-storage.md +102 -0
  41. package/.morph/standards/data/nosql/cache/redis.md +97 -0
  42. package/.morph/standards/data/nosql/cosmos-db.md +118 -0
  43. package/.morph/standards/data/vector-search/azure-ai-search.md +121 -0
  44. package/.morph/standards/data/vector-search/rag-chunking.md +104 -0
  45. package/.morph/standards/frontend/blazor/design-checklist.md +222 -0
  46. package/.morph/standards/frontend/blazor/fluent-ui-setup.md +595 -0
  47. package/.morph/standards/frontend/blazor/fluent-ui.md +137 -0
  48. package/.morph/standards/frontend/blazor/html-conversion.md +184 -0
  49. package/.morph/standards/frontend/blazor/lifecycle.md +195 -0
  50. package/.morph/standards/frontend/blazor/pitfalls.md +198 -0
  51. package/.morph/standards/frontend/blazor/state.md +191 -0
  52. package/.morph/standards/frontend/design-system/animations.md +151 -0
  53. package/.morph/standards/frontend/design-system/naming.md +64 -0
  54. package/.morph/standards/frontend/nextjs/nextjs-patterns.md +198 -0
  55. package/.morph/standards/infrastructure/azure/azure.md +624 -0
  56. package/.morph/standards/infrastructure/azure/bicep/bicep-patterns.md +422 -0
  57. package/.morph/standards/infrastructure/azure/devops/azure-devops-setup.md +516 -0
  58. package/.morph/standards/infrastructure/azure/devops/local-development.md +520 -0
  59. package/.morph/standards/infrastructure/azure/services/functions.md +486 -0
  60. package/.morph/standards/infrastructure/azure/services/service-bus.md +459 -0
  61. package/.morph/standards/infrastructure/azure/services/storage.md +407 -0
  62. package/.morph/standards/infrastructure/docker/easypanel-deploy.md +196 -0
  63. package/.morph/standards/infrastructure/supabase/mcp-setup.md +252 -0
  64. package/.morph/standards/infrastructure/supabase/supabase-auth.md +176 -0
  65. package/.morph/standards/infrastructure/supabase/supabase-pgvector.md +169 -0
  66. package/.morph/standards/infrastructure/supabase/supabase-rls.md +184 -0
  67. package/.morph/standards/infrastructure/supabase/supabase-storage.md +153 -0
  68. package/.morph/standards/integration/api/graphql.md +91 -0
  69. package/.morph/standards/integration/api/grpc.md +114 -0
  70. package/.morph/standards/integration/api/rest-design.md +95 -0
  71. package/.morph/standards/integration/event-driven/cqrs.md +101 -0
  72. package/.morph/standards/integration/event-driven/event-sourcing.md +124 -0
  73. package/.morph/standards/integration/event-driven/service-bus.md +95 -0
  74. package/.morph/standards/observability/logging.md +131 -0
  75. package/.morph/standards/observability/metrics.md +121 -0
  76. package/.morph/standards/observability/monitoring.md +114 -0
  77. package/.morph/standards/observability/tracing.md +132 -0
  78. package/.morph/standards/workflows/parallel-execution.md +112 -0
  79. package/.morph/standards/workflows/thread-management.md +113 -0
  80. package/.morph/templates/.idea/morph-templates.xml +92 -0
  81. package/.morph/templates/.vscode/morph-templates.code-snippets +186 -0
  82. package/.morph/templates/IDE-SNIPPETS.md +266 -0
  83. package/.morph/templates/README.md +814 -0
  84. package/.morph/templates/REGISTRY.json +1677 -0
  85. package/.morph/templates/code/dotnet/backend/repository.cs +141 -0
  86. package/.morph/templates/code/dotnet/backend/service.cs +139 -0
  87. package/.morph/templates/code/dotnet/contracts/Commands.cs +74 -0
  88. package/.morph/templates/code/dotnet/contracts/Entities.cs +25 -0
  89. package/.morph/templates/code/dotnet/contracts/Queries.cs +74 -0
  90. package/.morph/templates/code/dotnet/contracts/README.md +74 -0
  91. package/.morph/templates/code/dotnet/contracts/api-contracts.cs +173 -0
  92. package/.morph/templates/code/dotnet/contracts/contracts.cs +217 -0
  93. package/.morph/templates/code/dotnet/database/migration.cs +83 -0
  94. package/.morph/templates/code/dotnet/frontend/component.razor +239 -0
  95. package/.morph/templates/code/dotnet/jobs/agent.cs +163 -0
  96. package/.morph/templates/code/dotnet/jobs/job.cs +171 -0
  97. package/.morph/templates/code/dotnet/test.cs +239 -0
  98. package/.morph/templates/code/sql/rls-policy.sql +57 -0
  99. package/.morph/templates/code/sql/supabase-migration.sql +100 -0
  100. package/.morph/templates/code/sql/supabase-migration.template.sql +113 -0
  101. package/.morph/templates/code/typescript/contracts.ts +168 -0
  102. package/.morph/templates/context/CONTEXT-FEATURE.md +276 -0
  103. package/.morph/templates/context/CONTEXT.md +181 -0
  104. package/.morph/templates/docs/proposal.md +182 -0
  105. package/.morph/templates/docs/spec.md +149 -0
  106. package/.morph/templates/examples/design-system-examples.md +357 -0
  107. package/.morph/templates/examples/spec-examples.md +90 -0
  108. package/.morph/templates/feature/decisions.md +187 -0
  109. package/.morph/templates/feature/recap.md +146 -0
  110. package/.morph/templates/feature/tasks.md +199 -0
  111. package/.morph/templates/infrastructure/azure/Dockerfile.example +82 -0
  112. package/.morph/templates/infrastructure/azure/README.md +286 -0
  113. package/.morph/templates/infrastructure/azure/app-insights.bicep +63 -0
  114. package/.morph/templates/infrastructure/azure/app-service.bicep +164 -0
  115. package/.morph/templates/infrastructure/azure/container-app-env.bicep +49 -0
  116. package/.morph/templates/infrastructure/azure/container-app.bicep +156 -0
  117. package/.morph/templates/infrastructure/azure/deploy-checklist.md +426 -0
  118. package/.morph/templates/infrastructure/azure/deploy.ps1 +229 -0
  119. package/.morph/templates/infrastructure/azure/deploy.sh +208 -0
  120. package/.morph/templates/infrastructure/azure/key-vault.bicep +91 -0
  121. package/.morph/templates/infrastructure/azure/main.bicep +189 -0
  122. package/.morph/templates/infrastructure/azure/parameters.dev.json +29 -0
  123. package/.morph/templates/infrastructure/azure/parameters.prod.json +29 -0
  124. package/.morph/templates/infrastructure/azure/parameters.staging.json +29 -0
  125. package/.morph/templates/infrastructure/azure/sql-database.bicep +103 -0
  126. package/.morph/templates/infrastructure/azure/storage.bicep +106 -0
  127. package/.morph/templates/infrastructure/docker/Dockerfile.template +58 -0
  128. package/.morph/templates/infrastructure/docker/docker-compose.template.yml +67 -0
  129. package/.morph/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -0
  130. package/.morph/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -0
  131. package/.morph/templates/infrastructure/docker/easypanel.template.json +54 -0
  132. package/.morph/templates/infrastructure/github/README.md +593 -0
  133. package/.morph/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +22 -0
  134. package/.morph/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +45 -0
  135. package/.morph/templates/infrastructure/github/actions/health-check/action.yml.hbs +27 -0
  136. package/.morph/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +61 -0
  137. package/.morph/templates/infrastructure/github/workflows/deploy-easypanel.yml.hbs +31 -0
  138. package/.morph/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +59 -0
  139. package/.morph/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +39 -0
  140. package/.morph/templates/integrations/asaas-client.cs +387 -0
  141. package/.morph/templates/integrations/asaas-webhook.cs +351 -0
  142. package/.morph/templates/integrations/azure-identity-config.cs +288 -0
  143. package/.morph/templates/integrations/clerk-config.cs +258 -0
  144. package/.morph/templates/meta-prompts/fusion/fusion-agent.md +76 -0
  145. package/.morph/templates/meta-prompts/fusion/fusion-aggregator.md +100 -0
  146. package/.morph/templates/meta-prompts/hops/hop-retry.md +78 -0
  147. package/.morph/templates/meta-prompts/hops/hop-validation.md +97 -0
  148. package/.morph/templates/meta-prompts/hops/hop-wrapper.md +36 -0
  149. package/.morph/templates/meta-prompts/parallel-workers/parallel-coordinator.md +113 -0
  150. package/.morph/templates/meta-prompts/parallel-workers/parallel-worker.md +80 -0
  151. package/.morph/templates/meta-prompts/squad-leaders/backend-squad.md +90 -0
  152. package/.morph/templates/meta-prompts/squad-leaders/frontend-squad.md +126 -0
  153. package/.morph/templates/meta-prompts/squad-leaders/squad-leader.md +43 -0
  154. package/.morph/templates/meta-prompts/validators/checkpoint-validator.md +107 -0
  155. package/.morph/templates/meta-prompts/validators/pre-commit-validator.md +95 -0
  156. package/.morph/templates/saas/subscription.cs +347 -0
  157. package/.morph/templates/saas/tenant.cs +338 -0
  158. package/.morph/templates/state.template.json +17 -0
  159. package/.morph/templates/ui/FluentDesignTheme.cs +149 -0
  160. package/.morph/templates/ui/MudTheme.cs +281 -0
  161. package/.morph/templates/ui/design-system.css +226 -0
  162. package/bin/morph-spec.js +1 -1
  163. package/package.json +1 -1
  164. package/src/commands/project/update.js +185 -46
@@ -0,0 +1,266 @@
1
+ # IDE Snippets for MORPH Templates
2
+
3
+ > Boost your productivity with IDE snippets for Handlebars template syntax
4
+
5
+ ---
6
+
7
+ ## 📦 Installation
8
+
9
+ ### VS Code
10
+
11
+ **Option 1: Project Snippets (Recommended)**
12
+
13
+ Snippets are already configured in `framework/templates/.vscode/morph-templates.code-snippets`.
14
+
15
+ To use them:
16
+ 1. Open your project in VS Code
17
+ 2. Snippets auto-activate when editing template files
18
+ 3. Type a prefix (e.g., `morph-pascal`) and press `Tab`
19
+
20
+ **Option 2: Global Snippets**
21
+
22
+ To use snippets across all projects:
23
+ 1. Open VS Code
24
+ 2. Go to `File > Preferences > Configure User Snippets`
25
+ 3. Select `New Global Snippets file...`
26
+ 4. Name it `morph-templates.code-snippets`
27
+ 5. Copy content from `framework/templates/.vscode/morph-templates.code-snippets`
28
+
29
+ ---
30
+
31
+ ### JetBrains IDEs (Rider, WebStorm, IntelliJ IDEA)
32
+
33
+ **Installation:**
34
+
35
+ 1. Open your IDE
36
+ 2. Go to `File > Settings > Editor > Live Templates`
37
+ 3. Click the `⚙️` gear icon → `Import Settings...`
38
+ 4. Select `framework/templates/.idea/morph-templates.xml`
39
+ 5. Click `OK` to import
40
+
41
+ **Activation:**
42
+
43
+ Snippets will be available in the "MORPH Templates" group. Type the prefix and press `Tab`.
44
+
45
+ ---
46
+
47
+ ## 🎯 Available Snippets
48
+
49
+ ### Handlebars Helpers (Case Transformations)
50
+
51
+ | Prefix | Output | Example Result |
52
+ |--------|--------|----------------|
53
+ | `morph-pascal` | `{{pascalCase FEATURE_NAME}}` | `UserAuthentication` |
54
+ | `morph-camel` | `{{camelCase FEATURE_NAME}}` | `userAuthentication` |
55
+ | `morph-snake` | `{{snakeCase FEATURE_NAME}}` | `user_authentication` |
56
+ | `morph-title` | `{{titleCase FEATURE_NAME}}` | `User Authentication` |
57
+ | `morph-kebab` | `{{kebabCase FEATURE_NAME}}` | `user-authentication` |
58
+ | `morph-upper-snake` | `{{upperSnakeCase FEATURE_NAME}}` | `USER_AUTHENTICATION` |
59
+
60
+ ### Handlebars Control Flow
61
+
62
+ | Prefix | Description | Example |
63
+ |--------|-------------|---------|
64
+ | `morph-if` | If block | `{{#if condition}}...{{/if}}` |
65
+ | `morph-if-else` | If-else block | `{{#if condition}}...{{else}}...{{/if}}` |
66
+ | `morph-each` | Loop over array | `{{#each items}}{{this.name}}{{/each}}` |
67
+ | `morph-unless` | Unless block | `{{#unless condition}}...{{/unless}}` |
68
+
69
+ ### .NET Templates
70
+
71
+ | Prefix | Template | File Extension |
72
+ |--------|----------|----------------|
73
+ | `morph-service` | Service class (business logic) | `.cs` |
74
+ | `morph-repository` | Repository class (data access) | `.cs` |
75
+ | `morph-component` | Blazor component | `.razor` |
76
+ | `morph-migration` | EF Core migration | `.cs` |
77
+ | `morph-job` | Hangfire background job | `.cs` |
78
+
79
+ ### TypeScript Templates
80
+
81
+ | Prefix | Template | File Extension |
82
+ |--------|----------|----------------|
83
+ | `morph-ts-contract` | TypeScript interfaces (DTOs) | `.ts` |
84
+
85
+ ---
86
+
87
+ ## 🚀 Usage Examples
88
+
89
+ ### Example 1: Creating a Service Template
90
+
91
+ **Steps:**
92
+ 1. Create new file: `UserService.cs`
93
+ 2. Type `morph-service` → Press `Tab`
94
+ 3. Result:
95
+ ```csharp
96
+ namespace {{NAMESPACE}}.Application.Features.{{pascalCase FEATURE_NAME}}.Services;
97
+
98
+ public class {{pascalCase FEATURE_NAME}}Service(
99
+ I{{pascalCase FEATURE_NAME}}Repository repository,
100
+ ILogger<{{pascalCase FEATURE_NAME}}Service> logger) : I{{pascalCase FEATURE_NAME}}Service
101
+ {
102
+ public async Task<{{pascalCase FEATURE_NAME}}Dto?> GetByIdAsync(int id, CancellationToken cancellationToken = default)
103
+ {
104
+ // Cursor here
105
+ }
106
+ }
107
+ ```
108
+
109
+ ### Example 2: Using Case Helpers
110
+
111
+ **Scenario:** Convert `user-authentication` to different cases
112
+
113
+ ```handlebars
114
+ // Type: morph-pascal → Tab
115
+ {{pascalCase FEATURE_NAME}} // Output: UserAuthentication
116
+
117
+ // Type: morph-camel → Tab
118
+ {{camelCase FEATURE_NAME}} // Output: userAuthentication
119
+
120
+ // Type: morph-snake → Tab
121
+ {{snakeCase FEATURE_NAME}} // Output: user_authentication
122
+ ```
123
+
124
+ ### Example 3: Conditional Rendering
125
+
126
+ **Scenario:** Show different content based on stack
127
+
128
+ ```handlebars
129
+ // Type: morph-if-else → Tab
130
+ {{#if (eq STACK "Blazor")}}
131
+ // Blazor-specific code
132
+ {{else}}
133
+ // Generic code
134
+ {{/if}}
135
+ ```
136
+
137
+ ### Example 4: Looping Over Items
138
+
139
+ **Scenario:** Generate multiple DTOs
140
+
141
+ ```handlebars
142
+ // Type: morph-each → Tab
143
+ {{#each entities}}
144
+ public class {{pascalCase this.name}}Dto
145
+ {
146
+ // Properties
147
+ }
148
+ {{/each}}
149
+ ```
150
+
151
+ ---
152
+
153
+ ## 📝 Customizing Snippets
154
+
155
+ ### VS Code
156
+
157
+ Edit `framework/templates/.vscode/morph-templates.code-snippets`:
158
+
159
+ ```json
160
+ {
161
+ "MORPH Template - Custom": {
162
+ "prefix": "morph-custom",
163
+ "body": [
164
+ "// Your custom template",
165
+ "$1"
166
+ ],
167
+ "description": "Your description"
168
+ }
169
+ }
170
+ ```
171
+
172
+ ### JetBrains IDEs
173
+
174
+ 1. Go to `File > Settings > Editor > Live Templates`
175
+ 2. Select "MORPH Templates" group
176
+ 3. Click `+` → `Live Template`
177
+ 4. Set abbreviation (prefix), description, and template text
178
+
179
+ ---
180
+
181
+ ## 🎨 Snippet Scopes
182
+
183
+ | Snippet | VS Code Scope | JetBrains Scope |
184
+ |---------|---------------|-----------------|
185
+ | Handlebars helpers | All files | All files |
186
+ | .NET templates | `.cs`, `.razor` | C#, HTML |
187
+ | TypeScript templates | `.ts`, `.tsx` | TypeScript |
188
+
189
+ ---
190
+
191
+ ## 💡 Best Practices
192
+
193
+ **1. Use Helpers Over Pre-computed Variables**
194
+
195
+ ```handlebars
196
+ ✅ GOOD: {{pascalCase FEATURE_NAME}}Service
197
+ ❌ BAD: {{FEATURE_NAME_PASCAL}}Service // Deprecated
198
+ ```
199
+
200
+ **2. Chain Helpers for Complex Transformations**
201
+
202
+ ```handlebars
203
+ // Pluralize a PascalCase name
204
+ {{pascalCase (pluralize FEATURE_NAME)}} // Users, Orders, etc.
205
+ ```
206
+
207
+ **3. Use Conditional Blocks for Stack-Specific Code**
208
+
209
+ ```handlebars
210
+ {{#if (eq STACK "Blazor")}}
211
+ @inject NavigationManager Navigation
212
+ {{/if}}
213
+ {{#if (eq STACK "Nextjs")}}
214
+ import { useRouter } from 'next/navigation';
215
+ {{/if}}
216
+ ```
217
+
218
+ **4. Extract Common Patterns to Snippets**
219
+
220
+ If you find yourself typing the same template code repeatedly, create a custom snippet!
221
+
222
+ ---
223
+
224
+ ## 🔧 Troubleshooting
225
+
226
+ ### Snippets Not Showing Up (VS Code)
227
+
228
+ **Solution:**
229
+ 1. Check file extension matches snippet scope (e.g., `.cs` for C# snippets)
230
+ 2. Reload VS Code: `Ctrl+Shift+P` → `Developer: Reload Window`
231
+ 3. Verify snippet file location: `framework/templates/.vscode/morph-templates.code-snippets`
232
+
233
+ ### Snippets Not Showing Up (JetBrains)
234
+
235
+ **Solution:**
236
+ 1. Verify import: `File > Settings > Editor > Live Templates` → Check "MORPH Templates" group exists
237
+ 2. Check snippet scope: Click snippet → Verify "Applicable in" contexts
238
+ 3. Restart IDE
239
+
240
+ ### Tab Not Expanding Snippet
241
+
242
+ **Solution:**
243
+ - **VS Code:** Ensure `editor.tabCompletion` is enabled in settings
244
+ - **JetBrains:** Ensure `Tab` is set as expansion key in `Settings > Editor > Live Templates`
245
+
246
+ ---
247
+
248
+ ## 📚 Related Documentation
249
+
250
+ - [Template System README](framework/templates/README.md) - Complete template system documentation
251
+ - [Handlebars Helpers](framework/templates/README.md#handlebars-helpers) - Full list of available helpers
252
+ - [CLI Template Commands](CLAUDE.md#templates) - Command-line template management
253
+
254
+ ---
255
+
256
+ ## 🎁 Contributing Custom Snippets
257
+
258
+ Have a useful snippet? Share it!
259
+
260
+ 1. Add snippet to appropriate file (`.vscode/` or `.idea/`)
261
+ 2. Document it in this README (add row to tables)
262
+ 3. Submit PR with description of use case
263
+
264
+ ---
265
+
266
+ *MORPH-SPEC Template Snippets by Polymorphism Tech*