@polymorphism-tech/morph-spec 7.0.0 → 7.1.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 (79) hide show
  1. package/README.md +367 -367
  2. package/framework/agents.json +132 -127
  3. package/framework/rubrics/backend.json +41 -36
  4. package/framework/rules/ai-agents-standards.md +45 -15
  5. package/framework/rules/neon-standards.md +25 -26
  6. package/framework/standards/STANDARDS.json +1729 -1133
  7. package/framework/standards/ai-agents/agent-session.md +160 -0
  8. package/framework/standards/ai-agents/batching.md +193 -0
  9. package/framework/standards/ai-agents/context-providers.md +188 -0
  10. package/framework/standards/ai-agents/mcp-server.md +250 -0
  11. package/framework/standards/ai-agents/mcp-tools.md +197 -0
  12. package/framework/standards/ai-agents/middleware-patterns.md +207 -0
  13. package/framework/standards/ai-agents/modalities-image-gen.md +173 -0
  14. package/framework/standards/ai-agents/modalities-speech-to-text.md +171 -0
  15. package/framework/standards/ai-agents/modalities-text-to-speech.md +181 -0
  16. package/framework/standards/ai-agents/modalities-vision.md +201 -0
  17. package/framework/standards/ai-agents/multi-agent-patterns.md +155 -0
  18. package/framework/standards/ai-agents/production.md +114 -258
  19. package/framework/standards/ai-agents/prompts-in-db.md +214 -0
  20. package/framework/standards/ai-agents/providers/model-registry.md +158 -0
  21. package/framework/standards/ai-agents/rag-custom-pgvector.md +243 -0
  22. package/framework/standards/ai-agents/service-tier-flex.md +135 -0
  23. package/framework/standards/ai-agents/setup.md +142 -316
  24. package/framework/standards/ai-agents/structured-output.md +249 -0
  25. package/framework/standards/ai-agents/sweet-spot.md +109 -0
  26. package/framework/standards/ai-agents/workflows.md +114 -284
  27. package/framework/standards/architecture/vertical-slice/vertical-slice.md +433 -429
  28. package/framework/standards/backend/api/validation.md +92 -88
  29. package/framework/standards/backend/database/postgresql/database.md +336 -332
  30. package/framework/standards/backend/database/vector-search-rag.md +599 -541
  31. package/framework/standards/backend/dotnet/fluent-validation-vsa.md +4 -0
  32. package/framework/standards/backend/dotnet/result-pattern.md +4 -0
  33. package/framework/standards/backend/dotnet/scalar-ui.md +176 -172
  34. package/framework/standards/backend/dotnet/scrutor.md +4 -0
  35. package/framework/standards/backend/dotnet/vsa-handler-patterns.md +278 -274
  36. package/framework/standards/backend/integrations/asaas/asaas-api.md +260 -216
  37. package/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +354 -350
  38. package/framework/standards/backend/integrations/neon-auth/neon-auth.md +30 -19
  39. package/framework/standards/backend/integrations/resend/resend-email.md +400 -385
  40. package/framework/standards/data/nosql/cache/redis.md +106 -97
  41. package/framework/standards/data/nosql/cosmos-db.md +127 -118
  42. package/framework/standards/data/vector-search/rag-chunking.md +113 -104
  43. package/framework/standards/frontend/design-system/ai-image-generation.md +4 -0
  44. package/framework/standards/frontend/design-system/animations.md +164 -160
  45. package/framework/standards/frontend/design-system/naming.md +68 -64
  46. package/framework/standards/frontend/gsap/gsap-core.md +14 -8
  47. package/framework/standards/frontend/gsap/gsap-plugins.md +26 -21
  48. package/framework/standards/frontend/gsap/gsap-scrolltrigger.md +9 -7
  49. package/framework/standards/frontend/nextjs/app-router.md +127 -123
  50. package/framework/standards/frontend/nextjs/components.md +136 -132
  51. package/framework/standards/frontend/nextjs/data-fetching.md +130 -126
  52. package/framework/standards/frontend/nextjs/forms.md +134 -128
  53. package/framework/standards/frontend/nextjs/motion-patterns.md +328 -322
  54. package/framework/standards/frontend/nextjs/naming-conventions.md +71 -67
  55. package/framework/standards/frontend/nextjs/nextjs-patterns.md +229 -225
  56. package/framework/standards/frontend/nextjs/project-structure.md +106 -102
  57. package/framework/standards/frontend/nextjs/state-management.md +76 -72
  58. package/framework/standards/frontend/nextjs/testing.md +115 -111
  59. package/framework/standards/infrastructure/docker/easypanel-deploy.md +196 -192
  60. package/framework/standards/infrastructure/neon/neon-pgrag.md +6 -2
  61. package/framework/standards/infrastructure/neon/neon-pgvector.md +4 -0
  62. package/framework/standards/infrastructure/neon/neon-setup.md +5 -1
  63. package/framework/standards/integration/mcp/mcp-tools.md +471 -462
  64. package/framework/templates/REGISTRY.json +1745 -1239
  65. package/framework/templates/code/dotnet/ai-agents/AgentBootstrap.cs.template +39 -0
  66. package/framework/templates/code/dotnet/ai-agents/EmbeddingService.cs.template +68 -0
  67. package/framework/templates/code/dotnet/ai-agents/ModelRegistry.cs.template +117 -0
  68. package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +95 -0
  69. package/framework/templates/code/dotnet/ai-agents/ResilientToolMiddleware.cs.template +61 -0
  70. package/framework/templates/code/dotnet/ai-agents/VectorSearchTool.cs.template +107 -0
  71. package/framework/templates/code/dotnet/ai-agents/model-registry.json.template +58 -0
  72. package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +58 -0
  73. package/framework/templates/code/sql/ai-agents/pgvector-embeddings-migration.sql.template +91 -0
  74. package/package.json +89 -83
  75. package/src/core/templates/template-registry.js +289 -256
  76. package/src/lib/generators/context-generator.js +516 -518
  77. package/src/lib/generators/scaffold-generator.js +23 -26
  78. package/framework/standards/infrastructure/neon/neon-semantic-kernel.md +0 -310
  79. package/framework/templates/integrations/semantic-kernel-neon.cs +0 -125
@@ -1,1239 +1,1745 @@
1
- {
2
- "$schema": "https://json-schema.org/draft-07/schema#",
3
- "version": "2.0.0",
4
- "description": "Template Registry for MORPH-SPEC Framework - Technology-based organization for multi-stack reusability",
5
- "lastUpdated": "2026-02-27",
6
- "migration": "v1 → v2: Migrated all templates to framework/, organized by technology (code/dotnet/, infrastructure/azure/, etc.) instead of by stack. This enables future stacks (vue-firebase, angular-mongodb) to reuse existing technology templates.",
7
- "categories": [
8
- "documentation",
9
- "code",
10
- "infrastructure",
11
- "context",
12
- "examples",
13
- "integration",
14
- "saas",
15
- "ui"
16
- ],
17
- "technologies": [
18
- "dotnet",
19
- "typescript",
20
- "sql",
21
- "github-actions",
22
- "docker",
23
- "handlebars"
24
- ],
25
- "templates": [
26
- {
27
- "id": "proposal",
28
- "name": "Feature Proposal",
29
- "path": "docs/proposal.md",
30
- "location": "framework",
31
- "category": "documentation",
32
- "phase": "proposal",
33
- "required": true,
34
- "description": "Feature proposal with overview, problem statement, solution approach, and cost estimates",
35
- "outputName": "proposal.md",
36
- "placeholders": [
37
- "FEATURE_NAME",
38
- "STACK",
39
- "DATE",
40
- "AUTHOR"
41
- ],
42
- "stackSpecific": false,
43
- "engine": "handlebars",
44
- "deprecated": false,
45
- "technology": "handlebars"
46
- },
47
- {
48
- "id": "spec",
49
- "name": "Technical Specification",
50
- "path": "docs/spec.md",
51
- "location": "framework",
52
- "category": "documentation",
53
- "phase": "plan",
54
- "required": true,
55
- "description": "Detailed technical spec with architecture, data model, API contracts",
56
- "outputName": "spec.md",
57
- "placeholders": [
58
- "FEATURE_NAME",
59
- "STACK",
60
- "DATE"
61
- ],
62
- "stackSpecific": false,
63
- "engine": "handlebars",
64
- "deprecated": false,
65
- "technology": "handlebars"
66
- },
67
- {
68
- "id": "tasks",
69
- "name": "Implementation Tasks",
70
- "path": "feature/tasks.md",
71
- "location": "framework",
72
- "category": "documentation",
73
- "phase": "plan",
74
- "required": true,
75
- "description": "Task breakdown with IDs, dependencies, estimates, and checkpoints",
76
- "outputName": "tasks.md",
77
- "placeholders": [
78
- "FEATURE_NAME",
79
- "STACK"
80
- ],
81
- "stackSpecific": false,
82
- "engine": "handlebars",
83
- "deprecated": false,
84
- "technology": "handlebars"
85
- },
86
- {
87
- "id": "decisions",
88
- "name": "Architecture Decision Records",
89
- "path": "feature/decisions.md",
90
- "location": "framework",
91
- "category": "documentation",
92
- "phase": "plan",
93
- "required": true,
94
- "description": "ADR format for documenting architectural decisions with context, alternatives, consequences",
95
- "outputName": "decisions.md",
96
- "placeholders": [
97
- "FEATURE_NAME",
98
- "STACK",
99
- "DATE"
100
- ],
101
- "stackSpecific": false,
102
- "engine": "handlebars",
103
- "deprecated": false,
104
- "technology": "handlebars"
105
- },
106
- {
107
- "id": "recap",
108
- "name": "Feature Recap",
109
- "path": "feature/recap.md",
110
- "location": "framework",
111
- "category": "documentation",
112
- "phase": "implement",
113
- "required": true,
114
- "description": "Post-implementation summary with deliverables, metrics, lessons learned",
115
- "outputName": "recap.md",
116
- "placeholders": [
117
- "FEATURE_NAME",
118
- "STACK",
119
- "DATE"
120
- ],
121
- "stackSpecific": false,
122
- "engine": "handlebars",
123
- "deprecated": false,
124
- "technology": "handlebars"
125
- },
126
- {
127
- "id": "context",
128
- "name": "Project Context",
129
- "path": "context/CONTEXT.md",
130
- "location": "framework",
131
- "category": "context",
132
- "phase": "proposal",
133
- "required": false,
134
- "description": "Project-level context with tech stack, active features, agents, standards",
135
- "outputName": "CONTEXT.md",
136
- "placeholders": [
137
- "PROJECT_NAME",
138
- "STACK",
139
- "TIMESTAMP"
140
- ],
141
- "stackSpecific": false,
142
- "engine": "handlebars",
143
- "deprecated": false,
144
- "technology": "handlebars"
145
- },
146
- {
147
- "id": "architecture",
148
- "name": "Architecture Context",
149
- "path": "context/ARCHITECTURE.md",
150
- "location": "framework",
151
- "category": "context",
152
- "phase": "proposal",
153
- "required": false,
154
- "description": "Auto-scanned architecture context with entities, endpoints, pages, components, integrations, database tables, and package versions",
155
- "outputName": "ARCHITECTURE.md",
156
- "placeholders": [
157
- "projectName",
158
- "timestamp",
159
- "morphVersion"
160
- ],
161
- "stackSpecific": false,
162
- "engine": "handlebars",
163
- "deprecated": false,
164
- "technology": "handlebars"
165
- },
166
- {
167
- "id": "context-feature",
168
- "name": "Feature Context",
169
- "path": "context/CONTEXT-FEATURE.md",
170
- "location": "framework",
171
- "category": "context",
172
- "phase": "proposal",
173
- "required": false,
174
- "description": "Feature-level context with progress, agents, tasks, decisions, validations",
175
- "outputName": "CONTEXT-FEATURE.md",
176
- "placeholders": [
177
- "FEATURE_NAME",
178
- "PHASE",
179
- "STATUS",
180
- "COMPLEXITY"
181
- ],
182
- "stackSpecific": false,
183
- "engine": "handlebars",
184
- "deprecated": false,
185
- "technology": "handlebars"
186
- },
187
- {
188
- "id": "spec-examples",
189
- "name": "Spec Examples",
190
- "path": "examples/spec-examples.md",
191
- "location": "framework",
192
- "category": "examples",
193
- "phase": null,
194
- "required": false,
195
- "description": "Example technical specs for reference",
196
- "outputName": null,
197
- "placeholders": [],
198
- "stackSpecific": false,
199
- "engine": null,
200
- "deprecated": false,
201
- "technology": null
202
- },
203
- {
204
- "id": "design-system-examples",
205
- "name": "Design System Examples",
206
- "path": "examples/design-system-examples.md",
207
- "location": "framework",
208
- "category": "examples",
209
- "phase": null,
210
- "required": false,
211
- "description": "Example design system definitions",
212
- "outputName": null,
213
- "placeholders": [],
214
- "stackSpecific": false,
215
- "engine": null,
216
- "deprecated": false,
217
- "technology": null
218
- },
219
- {
220
- "id": "dotnet-backend-repository",
221
- "name": ".NET Repository Class",
222
- "path": "code/dotnet/backend/repository.cs",
223
- "location": "framework",
224
- "category": "code",
225
- "phase": "implement",
226
- "required": false,
227
- "description": "C# repository class template with EF Core patterns",
228
- "outputName": "{FeatureName}Repository.cs",
229
- "placeholders": [
230
- "FEATURE_NAME",
231
- "NAMESPACE"
232
- ],
233
- "stackSpecific": false,
234
- "engine": "handlebars",
235
- "deprecated": false,
236
- "technology": "dotnet",
237
- "applicableStacks": [
238
- "nextjs-neon"
239
- ]
240
- },
241
- {
242
- "id": "dotnet-backend-test",
243
- "name": ".NET Unit Test",
244
- "path": "code/dotnet/test.cs",
245
- "location": "framework",
246
- "category": "code",
247
- "phase": "implement",
248
- "required": false,
249
- "description": "xUnit test template with AAA pattern",
250
- "outputName": "{FeatureName}Tests.cs",
251
- "placeholders": [
252
- "FEATURE_NAME",
253
- "NAMESPACE"
254
- ],
255
- "stackSpecific": false,
256
- "engine": "handlebars",
257
- "deprecated": false,
258
- "technology": "dotnet",
259
- "applicableStacks": [
260
- "nextjs-neon"
261
- ]
262
- },
263
- {
264
- "id": "dotnet-database-migration",
265
- "name": "EF Core Migration",
266
- "path": "code/dotnet/database/migration.cs",
267
- "location": "framework",
268
- "category": "code",
269
- "phase": "implement",
270
- "required": false,
271
- "description": "EF Core migration template with Up/Down methods",
272
- "outputName": "{Timestamp}_{FeatureName}.cs",
273
- "placeholders": [
274
- "FEATURE_NAME",
275
- "NAMESPACE"
276
- ],
277
- "stackSpecific": false,
278
- "engine": "handlebars",
279
- "deprecated": false,
280
- "technology": "dotnet",
281
- "applicableStacks": [
282
- "nextjs-neon"
283
- ]
284
- },
285
- {
286
- "id": "dotnet-jobs-hangfire",
287
- "name": "Hangfire Background Job",
288
- "path": "code/dotnet/jobs/job.cs",
289
- "location": "framework",
290
- "category": "code",
291
- "phase": "implement",
292
- "required": false,
293
- "description": "Hangfire background job template with retry logic",
294
- "outputName": "{FeatureName}Job.cs",
295
- "placeholders": [
296
- "FEATURE_NAME",
297
- "NAMESPACE"
298
- ],
299
- "stackSpecific": false,
300
- "engine": "handlebars",
301
- "deprecated": false,
302
- "technology": "dotnet",
303
- "applicableStacks": [
304
- "nextjs-neon"
305
- ]
306
- },
307
- {
308
- "id": "dotnet-jobs-agent",
309
- "name": "MS Agent Framework Agent",
310
- "path": "code/dotnet/jobs/agent.cs",
311
- "location": "framework",
312
- "category": "code",
313
- "phase": "implement",
314
- "required": false,
315
- "description": "Microsoft Agent Framework agent template with prompt engineering",
316
- "outputName": "{FeatureName}Agent.cs",
317
- "placeholders": [
318
- "FEATURE_NAME",
319
- "NAMESPACE"
320
- ],
321
- "stackSpecific": false,
322
- "engine": "handlebars",
323
- "deprecated": false,
324
- "technology": "dotnet",
325
- "applicableStacks": [
326
- "nextjs-neon"
327
- ]
328
- },
329
- {
330
- "id": "dotnet-contracts-readme",
331
- "name": "Contracts README",
332
- "path": "code/dotnet/contracts/README.md",
333
- "location": "framework",
334
- "category": "documentation",
335
- "phase": "design",
336
- "required": false,
337
- "description": "Documentation for contract patterns and usage",
338
- "outputName": "README.md",
339
- "placeholders": [
340
- "FEATURE_NAME"
341
- ],
342
- "stackSpecific": false,
343
- "engine": "handlebars",
344
- "deprecated": false,
345
- "technology": "dotnet",
346
- "applicableStacks": [
347
- "nextjs-neon"
348
- ]
349
- },
350
- {
351
- "id": "dotnet-contracts-vsa",
352
- "name": "Vertical Slice Architecture Contracts",
353
- "path": "code/dotnet/contracts/contracts-vsa.cs",
354
- "location": "framework",
355
- "category": "code",
356
- "phase": "design",
357
- "required": false,
358
- "description": "Feature slice completo: Abstractions, Entity, Errors, e um slice de operação (Request, Response, Validator, Handler, Endpoint). Padrão KanaiyaKatarmal (.NET 10, Minimal APIs, EF Core 10, FluentValidation 12, Scrutor 7).",
359
- "outputName": "contracts.cs",
360
- "placeholders": [
361
- "FEATURE_NAME",
362
- "NAMESPACE",
363
- "ROUTE",
364
- "DATE"
365
- ],
366
- "stackSpecific": false,
367
- "engine": "handlebars",
368
- "deprecated": false,
369
- "technology": "dotnet"
370
- },
371
- {
372
- "id": "typescript-contracts",
373
- "name": "TypeScript Contracts",
374
- "path": "code/typescript/contracts.ts",
375
- "location": "framework",
376
- "category": "code",
377
- "phase": "design",
378
- "required": false,
379
- "description": "TypeScript type definitions and interfaces",
380
- "outputName": "contracts.ts",
381
- "placeholders": [
382
- "FEATURE_NAME"
383
- ],
384
- "stackSpecific": false,
385
- "engine": "handlebars",
386
- "deprecated": false,
387
- "technology": "typescript",
388
- "applicableStacks": [
389
- "nextjs-neon"
390
- ]
391
- },
392
- {
393
- "id": "sql-postgresql-migration",
394
- "name": "PostgreSQL Migration",
395
- "path": "code/sql/postgresql-migration.sql",
396
- "location": "framework",
397
- "category": "code",
398
- "phase": "implement",
399
- "required": false,
400
- "description": "PostgreSQL migration template (basic)",
401
- "outputName": "{timestamp}_{feature_name}.sql",
402
- "placeholders": [
403
- "FEATURE_NAME"
404
- ],
405
- "stackSpecific": false,
406
- "engine": "handlebars",
407
- "deprecated": false,
408
- "technology": "sql",
409
- "applicableStacks": [
410
- "nextjs-neon"
411
- ]
412
- },
413
- {
414
- "id": "sql-postgresql-migration-enhanced",
415
- "name": "PostgreSQL Migration (Enhanced)",
416
- "path": "code/sql/postgresql-migration.template.sql",
417
- "location": "framework",
418
- "category": "code",
419
- "phase": "implement",
420
- "required": false,
421
- "description": "Enhanced PostgreSQL migration with RLS and indexes",
422
- "outputName": "{timestamp}_{feature_name}.sql",
423
- "placeholders": [
424
- "FEATURE_NAME"
425
- ],
426
- "stackSpecific": false,
427
- "engine": "handlebars",
428
- "deprecated": false,
429
- "technology": "sql",
430
- "applicableStacks": [
431
- "nextjs-neon"
432
- ]
433
- },
434
- {
435
- "id": "sql-rls-policy",
436
- "name": "Row-Level Security Policy",
437
- "path": "code/sql/postgresql-rls-policy.sql",
438
- "location": "framework",
439
- "category": "code",
440
- "phase": "implement",
441
- "required": false,
442
- "description": "Row-level security policy template for PostgreSQL (Neon)",
443
- "outputName": "{table_name}_rls_policies.sql",
444
- "placeholders": [
445
- "FEATURE_NAME",
446
- "TABLE_NAME"
447
- ],
448
- "stackSpecific": false,
449
- "engine": "handlebars",
450
- "deprecated": false,
451
- "technology": "sql",
452
- "applicableStacks": [
453
- "nextjs-neon"
454
- ]
455
- },
456
- {
457
- "id": "docker-dockerfile-api",
458
- "name": "Dockerfile (.NET API)",
459
- "path": "infrastructure/docker/dockerfile-api.dockerfile",
460
- "location": "framework",
461
- "category": "infrastructure",
462
- "phase": "implement",
463
- "required": false,
464
- "description": ".NET API Dockerfile for EasyPanel/Docker",
465
- "outputName": "Dockerfile.api",
466
- "placeholders": [],
467
- "stackSpecific": false,
468
- "engine": null,
469
- "deprecated": false,
470
- "technology": "docker",
471
- "applicableStacks": [
472
- "nextjs-neon"
473
- ]
474
- },
475
- {
476
- "id": "docker-dockerfile-web",
477
- "name": "Dockerfile (Next.js Web)",
478
- "path": "infrastructure/docker/dockerfile-web.dockerfile",
479
- "location": "framework",
480
- "category": "infrastructure",
481
- "phase": "implement",
482
- "required": false,
483
- "description": "Next.js web Dockerfile for EasyPanel/Docker",
484
- "outputName": "Dockerfile.web",
485
- "placeholders": [],
486
- "stackSpecific": false,
487
- "engine": null,
488
- "deprecated": false,
489
- "technology": "docker",
490
- "applicableStacks": [
491
- "nextjs-neon"
492
- ]
493
- },
494
- {
495
- "id": "docker-dockerfile-generic",
496
- "name": "Dockerfile (Generic)",
497
- "path": "infrastructure/docker/Dockerfile.template",
498
- "location": "framework",
499
- "category": "infrastructure",
500
- "phase": "implement",
501
- "required": false,
502
- "description": "Generic multi-stage Dockerfile template",
503
- "outputName": "Dockerfile",
504
- "placeholders": [
505
- "PROJECT_NAME"
506
- ],
507
- "stackSpecific": false,
508
- "engine": "handlebars",
509
- "deprecated": false,
510
- "technology": "docker",
511
- "applicableStacks": [
512
- "nextjs-neon"
513
- ]
514
- },
515
- {
516
- "id": "docker-compose",
517
- "name": "Docker Compose",
518
- "path": "infrastructure/docker/docker-compose.template.yml",
519
- "location": "framework",
520
- "category": "infrastructure",
521
- "phase": "implement",
522
- "required": false,
523
- "description": "Docker Compose for local development environment",
524
- "outputName": "docker-compose.yml",
525
- "placeholders": [
526
- "PROJECT_NAME"
527
- ],
528
- "stackSpecific": false,
529
- "engine": "handlebars",
530
- "deprecated": false,
531
- "technology": "docker",
532
- "applicableStacks": [
533
- "nextjs-neon"
534
- ]
535
- },
536
- {
537
- "id": "easypanel-config",
538
- "name": "EasyPanel Configuration",
539
- "path": "infrastructure/docker/easypanel.template.json",
540
- "location": "framework",
541
- "category": "infrastructure",
542
- "phase": "implement",
543
- "required": false,
544
- "description": "EasyPanel deployment configuration",
545
- "outputName": "easypanel.json",
546
- "placeholders": [
547
- "PROJECT_NAME"
548
- ],
549
- "stackSpecific": false,
550
- "engine": "handlebars",
551
- "deprecated": false,
552
- "technology": "docker",
553
- "applicableStacks": [
554
- "nextjs-neon"
555
- ]
556
- },
557
- {
558
- "id": "integration-asaas-client",
559
- "name": "Asaas Financial Client",
560
- "path": "integrations/asaas-client.cs",
561
- "location": "framework",
562
- "category": "integration",
563
- "phase": "implement",
564
- "required": false,
565
- "description": "Asaas financial API client implementation",
566
- "outputName": "AsaasClient.cs",
567
- "placeholders": [
568
- "NAMESPACE"
569
- ],
570
- "stackSpecific": false,
571
- "engine": "handlebars",
572
- "deprecated": false,
573
- "technology": "dotnet",
574
- "applicableStacks": [
575
- "nextjs-neon"
576
- ]
577
- },
578
- {
579
- "id": "integration-asaas-webhook",
580
- "name": "Asaas Webhook Handler",
581
- "path": "integrations/asaas-webhook.cs",
582
- "location": "framework",
583
- "category": "integration",
584
- "phase": "implement",
585
- "required": false,
586
- "description": "Asaas webhook handler for payment events",
587
- "outputName": "AsaasWebhookHandler.cs",
588
- "placeholders": [
589
- "NAMESPACE"
590
- ],
591
- "stackSpecific": false,
592
- "engine": "handlebars",
593
- "deprecated": false,
594
- "technology": "dotnet",
595
- "applicableStacks": [
596
- "nextjs-neon"
597
- ]
598
- },
599
- {
600
- "id": "integration-neon-auth",
601
- "name": "Neon Auth Configuration",
602
- "path": "integrations/neon-auth-config.cs",
603
- "location": "framework",
604
- "category": "integration",
605
- "phase": "implement",
606
- "required": false,
607
- "description": "Neon Auth (Better Auth) authentication configuration for .NET",
608
- "outputName": "NeonAuthConfig.cs",
609
- "placeholders": [
610
- "NAMESPACE"
611
- ],
612
- "stackSpecific": false,
613
- "engine": "handlebars",
614
- "deprecated": false,
615
- "technology": "dotnet",
616
- "applicableStacks": [
617
- "nextjs-neon"
618
- ]
619
- },
620
- {
621
- "id": "ui-design-system-css",
622
- "name": "Design System CSS",
623
- "path": "ui/design-system.css",
624
- "location": "framework",
625
- "category": "ui",
626
- "phase": "uiux",
627
- "required": false,
628
- "description": "CSS design tokens and variables (colors, spacing, typography)",
629
- "outputName": "design-system.css",
630
- "placeholders": [
631
- "PROJECT_NAME"
632
- ],
633
- "stackSpecific": false,
634
- "engine": "handlebars",
635
- "deprecated": false,
636
- "technology": "css",
637
- "applicableStacks": [
638
- "nextjs-neon"
639
- ]
640
- },
641
- {
642
- "id": "ui-mockups",
643
- "name": "UI Mockups",
644
- "path": "docs/mockups.md",
645
- "location": "framework",
646
- "category": "documentation",
647
- "phase": "uiux",
648
- "required": false,
649
- "description": "Wireframes and layout specifications with ASCII mockups and responsive breakpoints",
650
- "outputName": "mockups.md",
651
- "placeholders": [
652
- "FEATURE_NAME",
653
- "DATE"
654
- ],
655
- "stackSpecific": false,
656
- "engine": "handlebars",
657
- "deprecated": false,
658
- "technology": "handlebars"
659
- },
660
- {
661
- "id": "ui-flows",
662
- "name": "UI Flows",
663
- "path": "docs/flows.md",
664
- "location": "framework",
665
- "category": "documentation",
666
- "phase": "uiux",
667
- "required": false,
668
- "description": "User flows and interaction patterns with state diagrams and edge cases",
669
- "outputName": "flows.md",
670
- "placeholders": [
671
- "FEATURE_NAME",
672
- "DATE"
673
- ],
674
- "stackSpecific": false,
675
- "engine": "handlebars",
676
- "deprecated": false,
677
- "technology": "handlebars"
678
- },
679
- {
680
- "id": "ui-components",
681
- "name": "UI Components",
682
- "path": "docs/components.md",
683
- "location": "framework",
684
- "category": "documentation",
685
- "phase": "uiux",
686
- "required": false,
687
- "description": "Component specifications mapping UI elements to shadcn/ui components with props and events",
688
- "outputName": "components.md",
689
- "placeholders": [
690
- "FEATURE_NAME",
691
- "DATE",
692
- "STACK"
693
- ],
694
- "stackSpecific": false,
695
- "engine": "handlebars",
696
- "deprecated": false,
697
- "technology": "handlebars"
698
- },
699
- {
700
- "id": "ui-design-system",
701
- "name": "UI Design System",
702
- "path": "docs/design-system.md",
703
- "location": "framework",
704
- "category": "documentation",
705
- "phase": "uiux",
706
- "required": false,
707
- "description": "Design system documentation with color palette, typography, spacing, and semantic tokens",
708
- "outputName": "design-system.md",
709
- "placeholders": [
710
- "FEATURE_NAME",
711
- "DATE",
712
- "PROJECT_NAME"
713
- ],
714
- "stackSpecific": false,
715
- "engine": "handlebars",
716
- "deprecated": false,
717
- "technology": "handlebars"
718
- },
719
- {
720
- "id": "github-workflow-dotnet-build",
721
- "name": "GitHub Actions - .NET Build Workflow",
722
- "path": "infrastructure/github/workflows/dotnet-build.yml.hbs",
723
- "location": "framework",
724
- "category": "infrastructure",
725
- "technology": "github-actions",
726
- "phase": "build",
727
- "required": false,
728
- "description": "Reusable workflow for building .NET applications with restore, build, test, coverage",
729
- "outputName": "dotnet-build.yml",
730
- "placeholders": [
731
- "DOTNET_VERSION"
732
- ],
733
- "stackSpecific": false,
734
- "applicableStacks": [
735
- "nextjs-neon"
736
- ],
737
- "engine": "handlebars",
738
- "deprecated": false,
739
- "isFragment": true
740
- },
741
- {
742
- "id": "github-workflow-docker-build-push",
743
- "name": "GitHub Actions - Docker Build & Push",
744
- "path": "infrastructure/github/workflows/docker-build-push.yml.hbs",
745
- "location": "framework",
746
- "category": "infrastructure",
747
- "technology": "github-actions",
748
- "phase": "build",
749
- "required": false,
750
- "description": "Reusable workflow for building and pushing Docker images to registry",
751
- "outputName": "docker-build-push.yml",
752
- "placeholders": [],
753
- "stackSpecific": false,
754
- "applicableStacks": [
755
- "nextjs-neon"
756
- ],
757
- "engine": "handlebars",
758
- "deprecated": false,
759
- "isFragment": true
760
- },
761
- {
762
- "id": "github-workflow-deploy-easypanel",
763
- "name": "GitHub Actions - Deploy to EasyPanel",
764
- "path": "infrastructure/github/workflows/deploy-easypanel.yml.hbs",
765
- "location": "framework",
766
- "category": "infrastructure",
767
- "technology": "github-actions",
768
- "phase": "deploy",
769
- "required": false,
770
- "description": "Reusable workflow for deploying to EasyPanel via webhook",
771
- "outputName": "deploy-easypanel.yml",
772
- "placeholders": [],
773
- "stackSpecific": false,
774
- "applicableStacks": [
775
- "nextjs-neon"
776
- ],
777
- "engine": "handlebars",
778
- "deprecated": false,
779
- "isFragment": true
780
- },
781
- {
782
- "id": "github-action-docker-build-push",
783
- "name": "GitHub Composite Action - Docker Build & Push",
784
- "path": "infrastructure/github/actions/docker-build-push/action.yml.hbs",
785
- "location": "framework",
786
- "category": "infrastructure",
787
- "technology": "github-actions",
788
- "phase": "build",
789
- "required": false,
790
- "description": "Composite action for building and pushing Docker images",
791
- "outputName": "action.yml",
792
- "placeholders": [],
793
- "stackSpecific": false,
794
- "applicableStacks": [
795
- "nextjs-neon"
796
- ],
797
- "engine": "handlebars",
798
- "deprecated": false,
799
- "isFragment": true
800
- },
801
- {
802
- "id": "github-action-health-check",
803
- "name": "GitHub Composite Action - Health Check",
804
- "path": "infrastructure/github/actions/health-check/action.yml.hbs",
805
- "location": "framework",
806
- "category": "infrastructure",
807
- "technology": "github-actions",
808
- "phase": "deploy",
809
- "required": false,
810
- "description": "Composite action for polling health endpoint until ready",
811
- "outputName": "action.yml",
812
- "placeholders": [],
813
- "stackSpecific": false,
814
- "applicableStacks": [
815
- "nextjs-neon"
816
- ],
817
- "engine": "handlebars",
818
- "deprecated": false,
819
- "isFragment": true
820
- },
821
- {
822
- "id": "nextjs-neon-ci-build",
823
- "name": "NextJS-Neon CI Build Workflow",
824
- "path": "infrastructure/github/workflows/ci-build.yml.hbs",
825
- "location": "stack/nextjs-neon",
826
- "category": "infrastructure",
827
- "technology": "github-actions",
828
- "phase": "build",
829
- "required": true,
830
- "description": "CI build workflow for NextJS-Neon stack (Node.js + .NET combined)",
831
- "outputName": "ci-build.yml",
832
- "placeholders": [
833
- "DOTNET_VERSION"
834
- ],
835
- "stackSpecific": true,
836
- "applicableStacks": [
837
- "nextjs-neon"
838
- ],
839
- "engine": "handlebars",
840
- "deprecated": false
841
- },
842
- {
843
- "id": "hop-squad-leader",
844
- "name": "Squad Leader HOP",
845
- "path": "meta-prompts/squad-leaders/squad-leader.md",
846
- "location": "framework",
847
- "category": "meta-prompts",
848
- "technology": "handlebars",
849
- "phase": "implement",
850
- "required": false,
851
- "description": "Generic squad leader higher-order prompt with mission, domain-leaders, standards, tasks, deliverables, constraints",
852
- "outputName": "squad-leader-prompt.md",
853
- "placeholders": [
854
- "AGENT_ID",
855
- "DOMAIN",
856
- "MISSION",
857
- "DOMAIN_LEADERS",
858
- "SPEC_SUMMARY",
859
- "STANDARDS",
860
- "TASKS",
861
- "DELIVERABLES",
862
- "CONSTRAINTS",
863
- "FEATURE_NAME"
864
- ],
865
- "stackSpecific": false,
866
- "engine": "handlebars",
867
- "deprecated": false,
868
- "hopType": "squad-leader"
869
- },
870
- {
871
- "id": "hop-backend-squad",
872
- "name": "Backend Squad Leader HOP",
873
- "path": "meta-prompts/squad-leaders/backend-squad.md",
874
- "location": "framework",
875
- "category": "meta-prompts",
876
- "technology": "handlebars",
877
- "phase": "implement",
878
- "required": false,
879
- "description": "Backend squad leader HOP for dotnet-senior with backend domain leaders, .NET 10 standards, architecture and security guidelines",
880
- "outputName": "backend-squad-prompt.md",
881
- "placeholders": [
882
- "AGENT_ID",
883
- "MISSION",
884
- "SPEC_SUMMARY",
885
- "TASKS",
886
- "DELIVERABLES",
887
- "CONSTRAINTS",
888
- "FEATURE_NAME"
889
- ],
890
- "stackSpecific": false,
891
- "engine": "handlebars",
892
- "deprecated": false,
893
- "hopType": "squad-leader",
894
- "applicableStacks": [
895
- "nextjs-neon"
896
- ]
897
- },
898
- {
899
- "id": "hop-frontend-squad",
900
- "name": "Frontend Squad Leader HOP",
901
- "path": "meta-prompts/squad-leaders/frontend-squad.md",
902
- "location": "framework",
903
- "category": "meta-prompts",
904
- "technology": "handlebars",
905
- "phase": "implement",
906
- "required": false,
907
- "description": "Frontend squad leader HOP for ui-designer with Next.js domain leaders and design system standards",
908
- "outputName": "frontend-squad-prompt.md",
909
- "placeholders": [
910
- "AGENT_ID",
911
- "DOMAIN",
912
- "MISSION",
913
- "SPEC_SUMMARY",
914
- "TASKS",
915
- "DELIVERABLES",
916
- "CONSTRAINTS",
917
- "FEATURE_NAME",
918
- "IS_BLAZOR",
919
- "IS_NEXTJS"
920
- ],
921
- "stackSpecific": false,
922
- "engine": "handlebars",
923
- "deprecated": false,
924
- "hopType": "squad-leader",
925
- "applicableStacks": [
926
- "nextjs-neon"
927
- ]
928
- },
929
- {
930
- "id": "hop-parallel-worker",
931
- "name": "Parallel Worker HOP",
932
- "path": "meta-prompts/parallel-workers/parallel-worker.md",
933
- "location": "framework",
934
- "category": "meta-prompts",
935
- "technology": "handlebars",
936
- "phase": "implement",
937
- "required": false,
938
- "description": "P-Thread parallel worker HOP with isolation rules, assigned file scope, and structured completion report",
939
- "outputName": "parallel-worker-prompt.md",
940
- "placeholders": [
941
- "AGENT_ID",
942
- "THREAD_ID",
943
- "FEATURE_NAME",
944
- "MISSION",
945
- "SCOPE",
946
- "DELIVERABLES",
947
- "SPEC_SUMMARY",
948
- "STANDARDS",
949
- "TASKS"
950
- ],
951
- "stackSpecific": false,
952
- "engine": "handlebars",
953
- "deprecated": false,
954
- "hopType": "parallel-worker"
955
- },
956
- {
957
- "id": "hop-parallel-coordinator",
958
- "name": "Parallel Coordinator HOP",
959
- "path": "meta-prompts/parallel-workers/parallel-coordinator.md",
960
- "location": "framework",
961
- "category": "meta-prompts",
962
- "technology": "handlebars",
963
- "phase": "implement",
964
- "required": false,
965
- "description": "P-Thread coordinator HOP for spawning, monitoring and merging parallel worker results",
966
- "outputName": "parallel-coordinator-prompt.md",
967
- "placeholders": [
968
- "AGENT_ID",
969
- "SESSION_ID",
970
- "FEATURE_NAME",
971
- "WORKER_COUNT",
972
- "WORKERS",
973
- "PARALLEL_STRATEGY",
974
- "MAX_CONCURRENT",
975
- "TIMEOUT_MINUTES",
976
- "MERGE_STRATEGY",
977
- "SPEC_SUMMARY",
978
- "PRE_SPAWN_TASKS",
979
- "POST_MERGE_TASKS",
980
- "CONSTRAINTS"
981
- ],
982
- "stackSpecific": false,
983
- "engine": "handlebars",
984
- "deprecated": false,
985
- "hopType": "parallel-coordinator"
986
- },
987
- {
988
- "id": "hop-checkpoint-validator",
989
- "name": "Checkpoint Validator HOP",
990
- "path": "meta-prompts/validators/checkpoint-validator.md",
991
- "location": "framework",
992
- "category": "meta-prompts",
993
- "technology": "handlebars",
994
- "phase": "implement",
995
- "required": false,
996
- "description": "Checkpoint validator HOP running architecture, security, design-system, and packages validators with pass/fail decision logic",
997
- "outputName": "checkpoint-validator-prompt.md",
998
- "placeholders": [
999
- "FEATURE_NAME",
1000
- "CHECKPOINT_NUM",
1001
- "CHECKPOINT_FREQUENCY",
1002
- "TASKS_SINCE_LAST",
1003
- "TASKS_COMPLETED",
1004
- "TASKS_TOTAL",
1005
- "RECENT_TASKS",
1006
- "FILES_CHANGED",
1007
- "HAS_UI_FILES",
1008
- "HAS_CSPROJ_CHANGES"
1009
- ],
1010
- "stackSpecific": false,
1011
- "engine": "handlebars",
1012
- "deprecated": false,
1013
- "hopType": "validator"
1014
- },
1015
- {
1016
- "id": "hop-pre-commit-validator",
1017
- "name": "Pre-Commit Validator HOP",
1018
- "path": "meta-prompts/validators/pre-commit-validator.md",
1019
- "location": "framework",
1020
- "category": "meta-prompts",
1021
- "technology": "handlebars",
1022
- "phase": "implement",
1023
- "required": false,
1024
- "description": "Pre-commit hook validator HOP checking conventional commits, secrets, agent spec validity, and stack-specific rules",
1025
- "outputName": "pre-commit-validator-prompt.md",
1026
- "placeholders": [
1027
- "FEATURE_NAME",
1028
- "BRANCH_NAME",
1029
- "STAGED_FILE_COUNT",
1030
- "STAGED_FILES",
1031
- "IS_CSHARP",
1032
- "IS_TYPESCRIPT"
1033
- ],
1034
- "stackSpecific": false,
1035
- "engine": "handlebars",
1036
- "deprecated": false,
1037
- "hopType": "validator"
1038
- },
1039
- {
1040
- "id": "hop-fusion-agent",
1041
- "name": "Fusion Agent HOP",
1042
- "path": "meta-prompts/fusion/fusion-agent.md",
1043
- "location": "framework",
1044
- "category": "meta-prompts",
1045
- "technology": "handlebars",
1046
- "phase": "implement",
1047
- "required": false,
1048
- "description": "F-Thread fusion participant HOP with approach hints per thread index (standard, alternative, optimized) and self-assessment scoring",
1049
- "outputName": "fusion-agent-prompt.md",
1050
- "placeholders": [
1051
- "AGENT_ID",
1052
- "THREAD_INDEX",
1053
- "THREAD_COUNT",
1054
- "THREAD_COUNT_MINUS_ONE",
1055
- "THREAD_ID",
1056
- "FEATURE_NAME",
1057
- "FUSION_STRATEGY",
1058
- "TASK_DESCRIPTION",
1059
- "SPEC_SUMMARY",
1060
- "STANDARDS",
1061
- "DELIVERABLES"
1062
- ],
1063
- "stackSpecific": false,
1064
- "engine": "handlebars",
1065
- "deprecated": false,
1066
- "hopType": "fusion"
1067
- },
1068
- {
1069
- "id": "hop-fusion-aggregator",
1070
- "name": "Fusion Aggregator HOP",
1071
- "path": "meta-prompts/fusion/fusion-aggregator.md",
1072
- "location": "framework",
1073
- "category": "meta-prompts",
1074
- "technology": "handlebars",
1075
- "phase": "implement",
1076
- "required": false,
1077
- "description": "F-Thread aggregator HOP that scores and selects the winning implementation using best-of-n, consensus, or manual-select strategies",
1078
- "outputName": "fusion-aggregator-prompt.md",
1079
- "placeholders": [
1080
- "SESSION_ID",
1081
- "FEATURE_NAME",
1082
- "THREAD_COUNT",
1083
- "FUSION_STRATEGY",
1084
- "FUSION_RESULTS"
1085
- ],
1086
- "stackSpecific": false,
1087
- "engine": "handlebars",
1088
- "deprecated": false,
1089
- "hopType": "fusion"
1090
- },
1091
- {
1092
- "id": "dotnet-abstractions-handler",
1093
- "path": "code/dotnet/abstractions/handler.cs",
1094
- "category": "abstractions",
1095
- "stack": "dotnet",
1096
- "description": "IHandler<TRequest, TResponse> interface"
1097
- },
1098
- {
1099
- "id": "dotnet-abstractions-result",
1100
- "path": "code/dotnet/abstractions/result.cs",
1101
- "category": "abstractions",
1102
- "stack": "dotnet",
1103
- "description": "Result<T> railway-oriented pattern"
1104
- },
1105
- {
1106
- "id": "dotnet-abstractions-error",
1107
- "path": "code/dotnet/abstractions/error.cs",
1108
- "category": "abstractions",
1109
- "stack": "dotnet",
1110
- "description": "Error record + ErrorType enum + ValidationError"
1111
- },
1112
- {
1113
- "id": "dotnet-abstractions-api-endpoint",
1114
- "path": "code/dotnet/abstractions/api-endpoint.cs",
1115
- "category": "abstractions",
1116
- "stack": "dotnet",
1117
- "description": "IApiEndpoint interface for minimal APIs"
1118
- },
1119
- {
1120
- "id": "dotnet-extensions-handler-registration",
1121
- "path": "code/dotnet/extensions/handler-registration.cs",
1122
- "category": "extensions",
1123
- "stack": "dotnet",
1124
- "description": "Scrutor handler auto-discovery + decorators"
1125
- },
1126
- {
1127
- "id": "dotnet-extensions-map-endpoints",
1128
- "path": "code/dotnet/extensions/map-endpoints.cs",
1129
- "category": "extensions",
1130
- "stack": "dotnet",
1131
- "description": "IApiEndpoint auto-discovery + mapping"
1132
- },
1133
- {
1134
- "id": "dotnet-extensions-result-extensions",
1135
- "path": "code/dotnet/extensions/result-extensions.cs",
1136
- "category": "extensions",
1137
- "stack": "dotnet",
1138
- "description": "Match() pattern matching for Result<T>"
1139
- },
1140
- {
1141
- "id": "dotnet-extensions-database",
1142
- "path": "code/dotnet/extensions/database-extensions.cs",
1143
- "category": "extensions",
1144
- "stack": "dotnet",
1145
- "description": "EF Core + Npgsql database configuration"
1146
- },
1147
- {
1148
- "id": "dotnet-extensions-health-checks",
1149
- "path": "code/dotnet/extensions/health-checks.cs",
1150
- "category": "extensions",
1151
- "stack": "dotnet",
1152
- "description": "Health check configuration"
1153
- },
1154
- {
1155
- "id": "dotnet-pipelines-validation-decorator",
1156
- "path": "code/dotnet/pipelines/validation-decorator.cs",
1157
- "category": "pipelines",
1158
- "stack": "dotnet",
1159
- "description": "FluentValidation decorator for handlers"
1160
- },
1161
- {
1162
- "id": "dotnet-pipelines-logging-decorator",
1163
- "path": "code/dotnet/pipelines/logging-decorator.cs",
1164
- "category": "pipelines",
1165
- "stack": "dotnet",
1166
- "description": "Logging decorator with duration tracking"
1167
- },
1168
- {
1169
- "id": "dotnet-exceptions-handler",
1170
- "path": "code/dotnet/exceptions/exception-handler.cs",
1171
- "category": "exceptions",
1172
- "stack": "dotnet",
1173
- "description": "IExceptionHandler with ProblemDetails"
1174
- },
1175
- {
1176
- "id": "dotnet-constants-api-tags",
1177
- "path": "code/dotnet/constants/api-tags.cs",
1178
- "category": "constants",
1179
- "stack": "dotnet",
1180
- "description": "ApiTags constants for endpoint grouping"
1181
- },
1182
- {
1183
- "id": "dotnet-feature-endpoint",
1184
- "path": "code/dotnet/feature/endpoint.cs.hbs",
1185
- "category": "feature",
1186
- "stack": "dotnet",
1187
- "description": "VSA feature endpoint (IApiEndpoint)"
1188
- },
1189
- {
1190
- "id": "dotnet-feature-handler",
1191
- "path": "code/dotnet/feature/handler.cs.hbs",
1192
- "category": "feature",
1193
- "stack": "dotnet",
1194
- "description": "VSA feature handler (IHandler)"
1195
- },
1196
- {
1197
- "id": "dotnet-feature-validator",
1198
- "path": "code/dotnet/feature/validator.cs.hbs",
1199
- "category": "feature",
1200
- "stack": "dotnet",
1201
- "description": "VSA feature validator (AbstractValidator)"
1202
- },
1203
- {
1204
- "id": "dotnet-feature-request",
1205
- "path": "code/dotnet/feature/request.cs.hbs",
1206
- "category": "feature",
1207
- "stack": "dotnet",
1208
- "description": "VSA feature request (sealed record)"
1209
- },
1210
- {
1211
- "id": "dotnet-feature-response",
1212
- "path": "code/dotnet/feature/response.cs.hbs",
1213
- "category": "feature",
1214
- "stack": "dotnet",
1215
- "description": "VSA feature response (sealed record)"
1216
- },
1217
- {
1218
- "id": "dotnet-feature-errors",
1219
- "path": "code/dotnet/feature/errors.cs.hbs",
1220
- "category": "feature",
1221
- "stack": "dotnet",
1222
- "description": "VSA feature error factory"
1223
- },
1224
- {
1225
- "id": "dotnet-feature-entity",
1226
- "path": "code/dotnet/feature/entity.cs.hbs",
1227
- "category": "feature",
1228
- "stack": "dotnet",
1229
- "description": "VSA feature entity"
1230
- },
1231
- {
1232
- "id": "gsap-scroll-section",
1233
- "path": "frontend/nextjs/gsap-scroll-section.tsx.hbs",
1234
- "category": "ui",
1235
- "stack": "nextjs",
1236
- "description": "Scroll-animated section using GSAP ScrollTrigger with useGSAP hook and reduced-motion check"
1237
- }
1238
- ]
1239
- }
1
+ {
2
+ "$schema": "https://json-schema.org/draft-07/schema#",
3
+ "version": "2.0.0",
4
+ "description": "Template Registry for MORPH-SPEC Framework - Technology-based organization for multi-stack reusability",
5
+ "lastUpdated": "2026-02-27",
6
+ "migration": "v1 → v2: Migrated all templates to framework/, organized by technology (code/dotnet/, infrastructure/azure/, etc.) instead of by stack. This enables future stacks (vue-firebase, angular-mongodb) to reuse existing technology templates.",
7
+ "categories": [
8
+ "documentation",
9
+ "code",
10
+ "infrastructure",
11
+ "context",
12
+ "examples",
13
+ "integration",
14
+ "saas",
15
+ "ui"
16
+ ],
17
+ "technologies": [
18
+ "dotnet",
19
+ "typescript",
20
+ "sql",
21
+ "github-actions",
22
+ "docker",
23
+ "handlebars"
24
+ ],
25
+ "templates": [
26
+ {
27
+ "id": "proposal",
28
+ "kind": "template",
29
+ "name": "Feature Proposal",
30
+ "path": "docs/proposal.md",
31
+ "location": "framework",
32
+ "category": "documentation",
33
+ "phase": "proposal",
34
+ "required": true,
35
+ "description": "Feature proposal with overview, problem statement, solution approach, and cost estimates",
36
+ "outputName": "proposal.md",
37
+ "placeholders": [
38
+ "AUTHOR",
39
+ "DATE",
40
+ "STACK"
41
+ ],
42
+ "stackSpecific": false,
43
+ "engine": "handlebars",
44
+ "deprecated": false,
45
+ "technology": "handlebars",
46
+ "validatePlaceholders": true
47
+ },
48
+ {
49
+ "id": "spec",
50
+ "kind": "template",
51
+ "name": "Technical Specification",
52
+ "path": "docs/spec.md",
53
+ "location": "framework",
54
+ "category": "documentation",
55
+ "phase": "plan",
56
+ "required": true,
57
+ "description": "Detailed technical spec with architecture, data model, API contracts",
58
+ "outputName": "spec.md",
59
+ "placeholders": [
60
+ "DATE",
61
+ "FEATURE_NAME",
62
+ "STACK"
63
+ ],
64
+ "stackSpecific": false,
65
+ "engine": "handlebars",
66
+ "deprecated": false,
67
+ "technology": "handlebars",
68
+ "validatePlaceholders": true
69
+ },
70
+ {
71
+ "id": "tasks",
72
+ "kind": "template",
73
+ "name": "Implementation Tasks",
74
+ "path": "feature/tasks.md",
75
+ "location": "framework",
76
+ "category": "documentation",
77
+ "phase": "plan",
78
+ "required": true,
79
+ "description": "Task breakdown with IDs, dependencies, estimates, and checkpoints",
80
+ "outputName": "tasks.md",
81
+ "placeholders": [],
82
+ "stackSpecific": false,
83
+ "engine": "handlebars",
84
+ "deprecated": false,
85
+ "technology": "handlebars",
86
+ "validatePlaceholders": true
87
+ },
88
+ {
89
+ "id": "decisions",
90
+ "kind": "template",
91
+ "name": "Architecture Decision Records",
92
+ "path": "feature/decisions.md",
93
+ "location": "framework",
94
+ "category": "documentation",
95
+ "phase": "plan",
96
+ "required": true,
97
+ "description": "ADR format for documenting architectural decisions with context, alternatives, consequences",
98
+ "outputName": "decisions.md",
99
+ "placeholders": [
100
+ "DATE"
101
+ ],
102
+ "stackSpecific": false,
103
+ "engine": "handlebars",
104
+ "deprecated": false,
105
+ "technology": "handlebars",
106
+ "validatePlaceholders": true
107
+ },
108
+ {
109
+ "id": "recap",
110
+ "kind": "template",
111
+ "name": "Feature Recap",
112
+ "path": "feature/recap.md",
113
+ "location": "framework",
114
+ "category": "documentation",
115
+ "phase": "implement",
116
+ "required": true,
117
+ "description": "Post-implementation summary with deliverables, metrics, lessons learned",
118
+ "outputName": "recap.md",
119
+ "placeholders": [
120
+ "DATE",
121
+ "FEATURE_NAME",
122
+ "STACK"
123
+ ],
124
+ "stackSpecific": false,
125
+ "engine": "handlebars",
126
+ "deprecated": false,
127
+ "technology": "handlebars",
128
+ "validatePlaceholders": true
129
+ },
130
+ {
131
+ "id": "context",
132
+ "kind": "template",
133
+ "name": "Project Context",
134
+ "path": "context/CONTEXT.md",
135
+ "location": "framework",
136
+ "category": "context",
137
+ "phase": "proposal",
138
+ "required": false,
139
+ "description": "Project-level context with tech stack, active features, agents, standards",
140
+ "outputName": "CONTEXT.md",
141
+ "placeholders": [
142
+ "AGENT_COUNT",
143
+ "AGENT_TEAMS_DISPLAY_MODE",
144
+ "AGENT_TEAMS_THRESHOLDS",
145
+ "APP_INSIGHTS",
146
+ "AZURE_LOCATION",
147
+ "CONTAINER_ENV",
148
+ "DEVOPS_AREA_PATH",
149
+ "DEVOPS_BUILD_PIPELINE",
150
+ "DEVOPS_ORG",
151
+ "DEVOPS_PROJECT",
152
+ "DEVOPS_RELEASE_PIPELINE",
153
+ "DEVOPS_WIKI_NAME",
154
+ "DOTNET_VERSION",
155
+ "EASYPANEL_API_URL",
156
+ "EASYPANEL_WEB_URL",
157
+ "EF_VERSION",
158
+ "INFERRED_STANDARDS",
159
+ "MORPH_VERSION",
160
+ "NEON_PROJECT_ID",
161
+ "NEON_REGION",
162
+ "NEXTJS_VERSION",
163
+ "OPENAI_MODEL",
164
+ "PROJECT_DESCRIPTION",
165
+ "PROJECT_NAME",
166
+ "PROJECT_TYPE",
167
+ "REPOSITORY_URL",
168
+ "SQL_DATABASE",
169
+ "SQL_SERVER",
170
+ "TIMESTAMP",
171
+ "UI_LIBRARY"
172
+ ],
173
+ "stackSpecific": false,
174
+ "engine": "handlebars",
175
+ "deprecated": false,
176
+ "technology": "handlebars",
177
+ "validatePlaceholders": true
178
+ },
179
+ {
180
+ "id": "architecture",
181
+ "kind": "template",
182
+ "name": "Architecture Context",
183
+ "path": "context/ARCHITECTURE.md",
184
+ "location": "framework",
185
+ "category": "context",
186
+ "phase": "proposal",
187
+ "required": false,
188
+ "description": "Auto-scanned architecture context with entities, endpoints, pages, components, integrations, database tables, and package versions",
189
+ "outputName": "ARCHITECTURE.md",
190
+ "placeholders": [],
191
+ "stackSpecific": false,
192
+ "engine": "handlebars",
193
+ "deprecated": false,
194
+ "technology": "handlebars",
195
+ "validatePlaceholders": true
196
+ },
197
+ {
198
+ "id": "context-feature",
199
+ "kind": "template",
200
+ "name": "Feature Context",
201
+ "path": "context/CONTEXT-FEATURE.md",
202
+ "location": "framework",
203
+ "category": "context",
204
+ "phase": "proposal",
205
+ "required": false,
206
+ "description": "Feature-level context with progress, agents, tasks, decisions, validations",
207
+ "outputName": "CONTEXT-FEATURE.md",
208
+ "placeholders": [
209
+ "ACTIVE_AGENTS_COUNT",
210
+ "AGENT_TEAMS_DECISION",
211
+ "COMPLEXITY",
212
+ "CONTRACTS_PATH",
213
+ "CURRENT_TASK",
214
+ "CURRENT_TASK_ID",
215
+ "DECISIONS_PATH",
216
+ "DESCRIPTION",
217
+ "FEATURE_ID",
218
+ "FEATURE_NAME",
219
+ "MORPH_VERSION",
220
+ "PHASE",
221
+ "PHASE_DESCRIPTION",
222
+ "PROPOSAL_PATH",
223
+ "RECAP_PATH",
224
+ "SPEC_PATH",
225
+ "STATUS",
226
+ "TASKS_BLOCKED",
227
+ "TASKS_COMPLETED",
228
+ "TASKS_IN_PROGRESS",
229
+ "TASKS_PATH",
230
+ "TASKS_PROGRESS",
231
+ "TASKS_TOTAL",
232
+ "TEAM_LEAD",
233
+ "TIMESTAMP",
234
+ "VALIDATION_TIMESTAMP",
235
+ "VALIDATOR",
236
+ "WORKFLOW_TYPE"
237
+ ],
238
+ "stackSpecific": false,
239
+ "engine": "handlebars",
240
+ "deprecated": false,
241
+ "technology": "handlebars",
242
+ "validatePlaceholders": true
243
+ },
244
+ {
245
+ "id": "spec-examples",
246
+ "kind": "template",
247
+ "name": "Spec Examples",
248
+ "path": "examples/spec-examples.md",
249
+ "location": "framework",
250
+ "category": "examples",
251
+ "phase": null,
252
+ "required": false,
253
+ "description": "Example technical specs for reference",
254
+ "outputName": null,
255
+ "placeholders": [],
256
+ "stackSpecific": false,
257
+ "engine": null,
258
+ "deprecated": false,
259
+ "technology": null,
260
+ "validatePlaceholders": true
261
+ },
262
+ {
263
+ "id": "design-system-examples",
264
+ "kind": "template",
265
+ "name": "Design System Examples",
266
+ "path": "examples/design-system-examples.md",
267
+ "location": "framework",
268
+ "category": "examples",
269
+ "phase": null,
270
+ "required": false,
271
+ "description": "Example design system definitions",
272
+ "outputName": null,
273
+ "placeholders": [],
274
+ "stackSpecific": false,
275
+ "engine": null,
276
+ "deprecated": false,
277
+ "technology": null,
278
+ "validatePlaceholders": true
279
+ },
280
+ {
281
+ "id": "dotnet-backend-repository",
282
+ "kind": "template",
283
+ "name": ".NET Repository Class",
284
+ "path": "code/dotnet/backend/repository.cs",
285
+ "location": "framework",
286
+ "category": "code",
287
+ "phase": "implement",
288
+ "required": false,
289
+ "description": "C# repository class template with EF Core patterns",
290
+ "outputName": "{FeatureName}Repository.cs",
291
+ "placeholders": [],
292
+ "stackSpecific": false,
293
+ "engine": "handlebars",
294
+ "deprecated": false,
295
+ "technology": "dotnet",
296
+ "applicableStacks": [
297
+ "nextjs-neon"
298
+ ],
299
+ "validatePlaceholders": true
300
+ },
301
+ {
302
+ "id": "dotnet-backend-test",
303
+ "kind": "template",
304
+ "name": ".NET Unit Test",
305
+ "path": "code/dotnet/test.cs",
306
+ "location": "framework",
307
+ "category": "code",
308
+ "phase": "implement",
309
+ "required": false,
310
+ "description": "xUnit test template with AAA pattern",
311
+ "outputName": "{FeatureName}Tests.cs",
312
+ "placeholders": [],
313
+ "stackSpecific": false,
314
+ "engine": "handlebars",
315
+ "deprecated": false,
316
+ "technology": "dotnet",
317
+ "applicableStacks": [
318
+ "nextjs-neon"
319
+ ],
320
+ "validatePlaceholders": true
321
+ },
322
+ {
323
+ "id": "dotnet-database-migration",
324
+ "kind": "template",
325
+ "name": "EF Core Migration",
326
+ "path": "code/dotnet/database/migration.cs",
327
+ "location": "framework",
328
+ "category": "code",
329
+ "phase": "implement",
330
+ "required": false,
331
+ "description": "EF Core migration template with Up/Down methods",
332
+ "outputName": "{Timestamp}_{FeatureName}.cs",
333
+ "placeholders": [
334
+ "NAMESPACE"
335
+ ],
336
+ "stackSpecific": false,
337
+ "engine": "handlebars",
338
+ "deprecated": false,
339
+ "technology": "dotnet",
340
+ "applicableStacks": [
341
+ "nextjs-neon"
342
+ ],
343
+ "validatePlaceholders": true
344
+ },
345
+ {
346
+ "id": "dotnet-jobs-hangfire",
347
+ "kind": "template",
348
+ "name": "Hangfire Background Job",
349
+ "path": "code/dotnet/jobs/job.cs",
350
+ "location": "framework",
351
+ "category": "code",
352
+ "phase": "implement",
353
+ "required": false,
354
+ "description": "Hangfire background job template with retry logic",
355
+ "outputName": "{FeatureName}Job.cs",
356
+ "placeholders": [],
357
+ "stackSpecific": false,
358
+ "engine": "handlebars",
359
+ "deprecated": false,
360
+ "technology": "dotnet",
361
+ "applicableStacks": [
362
+ "nextjs-neon"
363
+ ],
364
+ "validatePlaceholders": true
365
+ },
366
+ {
367
+ "id": "dotnet-jobs-agent",
368
+ "kind": "template",
369
+ "name": "MS Agent Framework Agent",
370
+ "path": "code/dotnet/jobs/agent.cs",
371
+ "location": "framework",
372
+ "category": "code",
373
+ "phase": "implement",
374
+ "required": false,
375
+ "description": "Microsoft Agent Framework agent template with prompt engineering",
376
+ "outputName": "{FeatureName}Agent.cs",
377
+ "placeholders": [
378
+ "NAMESPACE"
379
+ ],
380
+ "stackSpecific": false,
381
+ "engine": "handlebars",
382
+ "deprecated": false,
383
+ "technology": "dotnet",
384
+ "applicableStacks": [
385
+ "nextjs-neon"
386
+ ],
387
+ "validatePlaceholders": true
388
+ },
389
+ {
390
+ "id": "dotnet-contracts-readme",
391
+ "kind": "template",
392
+ "name": "Contracts README",
393
+ "path": "code/dotnet/contracts/README.md",
394
+ "location": "framework",
395
+ "category": "documentation",
396
+ "phase": "design",
397
+ "required": false,
398
+ "description": "Documentation for contract patterns and usage",
399
+ "outputName": "README.md",
400
+ "placeholders": [],
401
+ "stackSpecific": false,
402
+ "engine": "handlebars",
403
+ "deprecated": false,
404
+ "technology": "dotnet",
405
+ "applicableStacks": [
406
+ "nextjs-neon"
407
+ ],
408
+ "validatePlaceholders": true
409
+ },
410
+ {
411
+ "id": "dotnet-contracts-vsa",
412
+ "kind": "template",
413
+ "name": "Vertical Slice Architecture Contracts",
414
+ "path": "code/dotnet/contracts/contracts-vsa.cs",
415
+ "location": "framework",
416
+ "category": "code",
417
+ "phase": "design",
418
+ "required": false,
419
+ "description": "Feature slice completo: Abstractions, Entity, Errors, e um slice de operação (Request, Response, Validator, Handler, Endpoint). Padrão KanaiyaKatarmal (.NET 10, Minimal APIs, EF Core 10, FluentValidation 12, Scrutor 7).",
420
+ "outputName": "contracts.cs",
421
+ "placeholders": [
422
+ "DATE",
423
+ "NAMESPACE",
424
+ "ROUTE"
425
+ ],
426
+ "stackSpecific": false,
427
+ "engine": "handlebars",
428
+ "deprecated": false,
429
+ "technology": "dotnet",
430
+ "validatePlaceholders": true
431
+ },
432
+ {
433
+ "id": "typescript-contracts",
434
+ "kind": "template",
435
+ "name": "TypeScript Contracts",
436
+ "path": "code/typescript/contracts.ts",
437
+ "location": "framework",
438
+ "category": "code",
439
+ "phase": "design",
440
+ "required": false,
441
+ "description": "TypeScript type definitions and interfaces",
442
+ "outputName": "contracts.ts",
443
+ "placeholders": [
444
+ "DATE",
445
+ "FEATURE_NAME"
446
+ ],
447
+ "stackSpecific": false,
448
+ "engine": "handlebars",
449
+ "deprecated": false,
450
+ "technology": "typescript",
451
+ "applicableStacks": [
452
+ "nextjs-neon"
453
+ ],
454
+ "validatePlaceholders": true
455
+ },
456
+ {
457
+ "id": "sql-postgresql-migration",
458
+ "kind": "template",
459
+ "name": "PostgreSQL Migration",
460
+ "path": "code/sql/postgresql-migration.sql",
461
+ "location": "framework",
462
+ "category": "code",
463
+ "phase": "implement",
464
+ "required": false,
465
+ "description": "PostgreSQL migration template (basic)",
466
+ "outputName": "{timestamp}_{feature_name}.sql",
467
+ "placeholders": [
468
+ "DATE",
469
+ "TABLE_NAME"
470
+ ],
471
+ "stackSpecific": false,
472
+ "engine": "handlebars",
473
+ "deprecated": false,
474
+ "technology": "sql",
475
+ "applicableStacks": [
476
+ "nextjs-neon"
477
+ ],
478
+ "validatePlaceholders": true
479
+ },
480
+ {
481
+ "id": "sql-postgresql-migration-enhanced",
482
+ "kind": "template",
483
+ "name": "PostgreSQL Migration (Enhanced)",
484
+ "path": "code/sql/postgresql-migration.template.sql",
485
+ "location": "framework",
486
+ "category": "code",
487
+ "phase": "implement",
488
+ "required": false,
489
+ "description": "Enhanced PostgreSQL migration with RLS and indexes",
490
+ "outputName": "{timestamp}_{feature_name}_enhanced.sql",
491
+ "placeholders": [
492
+ "DATE",
493
+ "DESCRIPTION",
494
+ "FEATURE_NAME_HUMAN",
495
+ "TABLE_NAME"
496
+ ],
497
+ "stackSpecific": false,
498
+ "engine": "handlebars",
499
+ "deprecated": false,
500
+ "technology": "sql",
501
+ "applicableStacks": [
502
+ "nextjs-neon"
503
+ ],
504
+ "validatePlaceholders": true
505
+ },
506
+ {
507
+ "id": "sql-rls-policy",
508
+ "kind": "template",
509
+ "name": "Row-Level Security Policy",
510
+ "path": "code/sql/postgresql-rls-policy.sql",
511
+ "location": "framework",
512
+ "category": "code",
513
+ "phase": "implement",
514
+ "required": false,
515
+ "description": "Row-level security policy template for PostgreSQL (Neon)",
516
+ "outputName": "{table_name}_rls_policies.sql",
517
+ "placeholders": [
518
+ "DATE",
519
+ "OPERATION",
520
+ "POLICY_NAME",
521
+ "TABLE_NAME",
522
+ "USING_EXPRESSION",
523
+ "WITH_CHECK_EXPRESSION"
524
+ ],
525
+ "stackSpecific": false,
526
+ "engine": "handlebars",
527
+ "deprecated": false,
528
+ "technology": "sql",
529
+ "applicableStacks": [
530
+ "nextjs-neon"
531
+ ],
532
+ "validatePlaceholders": true
533
+ },
534
+ {
535
+ "id": "docker-dockerfile-api",
536
+ "kind": "template",
537
+ "name": "Dockerfile (.NET API)",
538
+ "path": "infrastructure/docker/dockerfile-api.dockerfile",
539
+ "location": "framework",
540
+ "category": "infrastructure",
541
+ "phase": "implement",
542
+ "required": false,
543
+ "description": ".NET API Dockerfile for EasyPanel/Docker",
544
+ "outputName": "Dockerfile.api",
545
+ "placeholders": [],
546
+ "stackSpecific": false,
547
+ "engine": null,
548
+ "deprecated": false,
549
+ "technology": "docker",
550
+ "applicableStacks": [
551
+ "nextjs-neon"
552
+ ],
553
+ "validatePlaceholders": true
554
+ },
555
+ {
556
+ "id": "docker-dockerfile-web",
557
+ "kind": "template",
558
+ "name": "Dockerfile (Next.js Web)",
559
+ "path": "infrastructure/docker/dockerfile-web.dockerfile",
560
+ "location": "framework",
561
+ "category": "infrastructure",
562
+ "phase": "implement",
563
+ "required": false,
564
+ "description": "Next.js web Dockerfile for EasyPanel/Docker",
565
+ "outputName": "Dockerfile.web",
566
+ "placeholders": [],
567
+ "stackSpecific": false,
568
+ "engine": null,
569
+ "deprecated": false,
570
+ "technology": "docker",
571
+ "applicableStacks": [
572
+ "nextjs-neon"
573
+ ],
574
+ "validatePlaceholders": true
575
+ },
576
+ {
577
+ "id": "docker-dockerfile-generic",
578
+ "kind": "template",
579
+ "name": "Dockerfile (Generic)",
580
+ "path": "infrastructure/docker/Dockerfile.template",
581
+ "location": "framework",
582
+ "category": "infrastructure",
583
+ "phase": "implement",
584
+ "required": false,
585
+ "description": "Generic multi-stage Dockerfile template",
586
+ "outputName": "Dockerfile",
587
+ "placeholders": [],
588
+ "stackSpecific": false,
589
+ "engine": "handlebars",
590
+ "deprecated": false,
591
+ "technology": "docker",
592
+ "applicableStacks": [
593
+ "nextjs-neon"
594
+ ],
595
+ "validatePlaceholders": true
596
+ },
597
+ {
598
+ "id": "docker-compose",
599
+ "kind": "template",
600
+ "name": "Docker Compose",
601
+ "path": "infrastructure/docker/docker-compose.template.yml",
602
+ "location": "framework",
603
+ "category": "infrastructure",
604
+ "phase": "implement",
605
+ "required": false,
606
+ "description": "Docker Compose for local development environment",
607
+ "outputName": "docker-compose.yml",
608
+ "placeholders": [],
609
+ "stackSpecific": false,
610
+ "engine": "handlebars",
611
+ "deprecated": false,
612
+ "technology": "docker",
613
+ "applicableStacks": [
614
+ "nextjs-neon"
615
+ ],
616
+ "validatePlaceholders": true
617
+ },
618
+ {
619
+ "id": "easypanel-config",
620
+ "kind": "template",
621
+ "name": "EasyPanel Configuration",
622
+ "path": "infrastructure/docker/easypanel.template.json",
623
+ "location": "framework",
624
+ "category": "infrastructure",
625
+ "phase": "implement",
626
+ "required": false,
627
+ "description": "EasyPanel deployment configuration",
628
+ "outputName": "easypanel.json",
629
+ "placeholders": [
630
+ "GITHUB_OWNER",
631
+ "GITHUB_REPO"
632
+ ],
633
+ "stackSpecific": false,
634
+ "engine": "handlebars",
635
+ "deprecated": false,
636
+ "technology": "docker",
637
+ "applicableStacks": [
638
+ "nextjs-neon"
639
+ ],
640
+ "validatePlaceholders": true
641
+ },
642
+ {
643
+ "id": "integration-asaas-client",
644
+ "kind": "template",
645
+ "name": "Asaas Financial Client",
646
+ "path": "integrations/asaas-client.cs",
647
+ "location": "framework",
648
+ "category": "integration",
649
+ "phase": "implement",
650
+ "required": false,
651
+ "description": "Asaas financial API client implementation",
652
+ "outputName": "AsaasClient.cs",
653
+ "placeholders": [],
654
+ "stackSpecific": false,
655
+ "engine": "handlebars",
656
+ "deprecated": false,
657
+ "technology": "dotnet",
658
+ "applicableStacks": [
659
+ "nextjs-neon"
660
+ ],
661
+ "validatePlaceholders": true
662
+ },
663
+ {
664
+ "id": "integration-asaas-webhook",
665
+ "kind": "template",
666
+ "name": "Asaas Webhook Handler",
667
+ "path": "integrations/asaas-webhook.cs",
668
+ "location": "framework",
669
+ "category": "integration",
670
+ "phase": "implement",
671
+ "required": false,
672
+ "description": "Asaas webhook handler for payment events",
673
+ "outputName": "AsaasWebhookHandler.cs",
674
+ "placeholders": [],
675
+ "stackSpecific": false,
676
+ "engine": "handlebars",
677
+ "deprecated": false,
678
+ "technology": "dotnet",
679
+ "applicableStacks": [
680
+ "nextjs-neon"
681
+ ],
682
+ "validatePlaceholders": true
683
+ },
684
+ {
685
+ "id": "integration-neon-auth",
686
+ "kind": "template",
687
+ "name": "Neon Auth Configuration",
688
+ "path": "integrations/neon-auth-config.cs",
689
+ "location": "framework",
690
+ "category": "integration",
691
+ "phase": "implement",
692
+ "required": false,
693
+ "description": "Neon Auth (Better Auth) authentication configuration for .NET",
694
+ "outputName": "NeonAuthConfig.cs",
695
+ "placeholders": [],
696
+ "stackSpecific": false,
697
+ "engine": "handlebars",
698
+ "deprecated": false,
699
+ "technology": "dotnet",
700
+ "applicableStacks": [
701
+ "nextjs-neon"
702
+ ],
703
+ "validatePlaceholders": true
704
+ },
705
+ {
706
+ "id": "ui-design-system-css",
707
+ "kind": "template",
708
+ "name": "Design System CSS",
709
+ "path": "ui/design-system.css",
710
+ "location": "framework",
711
+ "category": "ui",
712
+ "phase": "uiux",
713
+ "required": false,
714
+ "description": "CSS design tokens and variables (colors, spacing, typography)",
715
+ "outputName": "design-system.css",
716
+ "placeholders": [],
717
+ "stackSpecific": false,
718
+ "engine": "handlebars",
719
+ "deprecated": false,
720
+ "technology": "css",
721
+ "applicableStacks": [
722
+ "nextjs-neon"
723
+ ],
724
+ "validatePlaceholders": true
725
+ },
726
+ {
727
+ "id": "ui-mockups",
728
+ "kind": "template",
729
+ "name": "UI Mockups",
730
+ "path": "docs/ui-mockups.md",
731
+ "location": "framework",
732
+ "category": "documentation",
733
+ "phase": "uiux",
734
+ "required": false,
735
+ "description": "Wireframes and layout specifications with ASCII mockups and responsive breakpoints",
736
+ "outputName": "mockups.md",
737
+ "placeholders": [
738
+ "DATE",
739
+ "FEATURE_NAME"
740
+ ],
741
+ "stackSpecific": false,
742
+ "engine": "handlebars",
743
+ "deprecated": false,
744
+ "technology": "handlebars",
745
+ "validatePlaceholders": true
746
+ },
747
+ {
748
+ "id": "ui-flows",
749
+ "kind": "template",
750
+ "name": "UI Flows",
751
+ "path": "docs/ui-flows.md",
752
+ "location": "framework",
753
+ "category": "documentation",
754
+ "phase": "uiux",
755
+ "required": false,
756
+ "description": "User flows and interaction patterns with state diagrams and edge cases",
757
+ "outputName": "flows.md",
758
+ "placeholders": [
759
+ "DATE",
760
+ "FEATURE_NAME"
761
+ ],
762
+ "stackSpecific": false,
763
+ "engine": "handlebars",
764
+ "deprecated": false,
765
+ "technology": "handlebars",
766
+ "validatePlaceholders": true
767
+ },
768
+ {
769
+ "id": "ui-components",
770
+ "kind": "template",
771
+ "name": "UI Components",
772
+ "path": "docs/ui-components.md",
773
+ "location": "framework",
774
+ "category": "documentation",
775
+ "phase": "uiux",
776
+ "required": false,
777
+ "description": "Component specifications mapping UI elements to shadcn/ui components with props and events",
778
+ "outputName": "components.md",
779
+ "placeholders": [
780
+ "DATE",
781
+ "FEATURE_NAME",
782
+ "STACK"
783
+ ],
784
+ "stackSpecific": false,
785
+ "engine": "handlebars",
786
+ "deprecated": false,
787
+ "technology": "handlebars",
788
+ "validatePlaceholders": true
789
+ },
790
+ {
791
+ "id": "ui-design-system",
792
+ "kind": "template",
793
+ "name": "UI Design System",
794
+ "path": "docs/ui-design-system.md",
795
+ "location": "framework",
796
+ "category": "documentation",
797
+ "phase": "uiux",
798
+ "required": false,
799
+ "description": "Design system documentation with color palette, typography, spacing, and semantic tokens",
800
+ "outputName": "design-system.md",
801
+ "placeholders": [
802
+ "DATE",
803
+ "FEATURE_NAME",
804
+ "PROJECT_NAME"
805
+ ],
806
+ "stackSpecific": false,
807
+ "engine": "handlebars",
808
+ "deprecated": false,
809
+ "technology": "handlebars",
810
+ "validatePlaceholders": true
811
+ },
812
+ {
813
+ "id": "github-workflow-dotnet-build",
814
+ "kind": "template",
815
+ "name": "GitHub Actions - .NET Build Workflow",
816
+ "path": "infrastructure/github/workflows/dotnet-build.yml.hbs",
817
+ "location": "framework",
818
+ "category": "infrastructure",
819
+ "technology": "github-actions",
820
+ "phase": "build",
821
+ "required": false,
822
+ "description": "Reusable workflow for building .NET applications with restore, build, test, coverage",
823
+ "outputName": "dotnet-build.yml",
824
+ "placeholders": [
825
+ "DOTNET_VERSION"
826
+ ],
827
+ "stackSpecific": false,
828
+ "applicableStacks": [
829
+ "nextjs-neon"
830
+ ],
831
+ "engine": "handlebars",
832
+ "deprecated": false,
833
+ "isFragment": true,
834
+ "validatePlaceholders": true
835
+ },
836
+ {
837
+ "id": "github-workflow-docker-build-push",
838
+ "kind": "template",
839
+ "name": "GitHub Actions - Docker Build & Push",
840
+ "path": "infrastructure/github/workflows/docker-build-push.yml.hbs",
841
+ "location": "framework",
842
+ "category": "infrastructure",
843
+ "technology": "github-actions",
844
+ "phase": "build",
845
+ "required": false,
846
+ "description": "Reusable workflow for building and pushing Docker images to registry",
847
+ "outputName": "docker-build-push.yml",
848
+ "placeholders": [],
849
+ "stackSpecific": false,
850
+ "applicableStacks": [
851
+ "nextjs-neon"
852
+ ],
853
+ "engine": "handlebars",
854
+ "deprecated": false,
855
+ "isFragment": true,
856
+ "validatePlaceholders": true
857
+ },
858
+ {
859
+ "id": "github-workflow-deploy-easypanel",
860
+ "kind": "template",
861
+ "name": "GitHub Actions - Deploy to EasyPanel",
862
+ "path": "infrastructure/github/workflows/deploy-easypanel.yml.hbs",
863
+ "location": "framework",
864
+ "category": "infrastructure",
865
+ "technology": "github-actions",
866
+ "phase": "deploy",
867
+ "required": false,
868
+ "description": "Reusable workflow for deploying to EasyPanel via webhook",
869
+ "outputName": "deploy-easypanel.yml",
870
+ "placeholders": [],
871
+ "stackSpecific": false,
872
+ "applicableStacks": [
873
+ "nextjs-neon"
874
+ ],
875
+ "engine": "handlebars",
876
+ "deprecated": false,
877
+ "isFragment": true,
878
+ "validatePlaceholders": true
879
+ },
880
+ {
881
+ "id": "github-action-docker-build-push",
882
+ "kind": "template",
883
+ "name": "GitHub Composite Action - Docker Build & Push",
884
+ "path": "infrastructure/github/actions/docker-build-push/action.yml.hbs",
885
+ "location": "framework",
886
+ "category": "infrastructure",
887
+ "technology": "github-actions",
888
+ "phase": "build",
889
+ "required": false,
890
+ "description": "Composite action for building and pushing Docker images",
891
+ "outputName": "action.yml",
892
+ "placeholders": [],
893
+ "stackSpecific": false,
894
+ "applicableStacks": [
895
+ "nextjs-neon"
896
+ ],
897
+ "engine": "handlebars",
898
+ "deprecated": false,
899
+ "isFragment": true,
900
+ "validatePlaceholders": true
901
+ },
902
+ {
903
+ "id": "github-action-health-check",
904
+ "kind": "template",
905
+ "name": "GitHub Composite Action - Health Check",
906
+ "path": "infrastructure/github/actions/health-check/action.yml.hbs",
907
+ "location": "framework",
908
+ "category": "infrastructure",
909
+ "technology": "github-actions",
910
+ "phase": "deploy",
911
+ "required": false,
912
+ "description": "Composite action for polling health endpoint until ready",
913
+ "outputName": "action.yml",
914
+ "placeholders": [],
915
+ "stackSpecific": false,
916
+ "applicableStacks": [
917
+ "nextjs-neon"
918
+ ],
919
+ "engine": "handlebars",
920
+ "deprecated": false,
921
+ "isFragment": true,
922
+ "validatePlaceholders": true
923
+ },
924
+ {
925
+ "id": "hop-squad-leader",
926
+ "kind": "template",
927
+ "name": "Squad Leader HOP",
928
+ "path": "meta-prompts/squad-leaders/squad-leader.md",
929
+ "location": "framework",
930
+ "category": "meta-prompts",
931
+ "technology": "handlebars",
932
+ "phase": "implement",
933
+ "required": false,
934
+ "description": "Generic squad leader higher-order prompt with mission, domain-leaders, standards, tasks, deliverables, constraints",
935
+ "outputName": "squad-leader-prompt.md",
936
+ "placeholders": [
937
+ "AGENT_ID",
938
+ "CONSTRAINTS",
939
+ "DELIVERABLES",
940
+ "DOMAIN",
941
+ "DOMAIN_LEADERS",
942
+ "FEATURE_NAME",
943
+ "MISSION",
944
+ "SPEC_SUMMARY",
945
+ "STANDARDS",
946
+ "TASKS"
947
+ ],
948
+ "stackSpecific": false,
949
+ "engine": "handlebars",
950
+ "deprecated": false,
951
+ "hopType": "squad-leader",
952
+ "validatePlaceholders": true
953
+ },
954
+ {
955
+ "id": "hop-backend-squad",
956
+ "kind": "template",
957
+ "name": "Backend Squad Leader HOP",
958
+ "path": "meta-prompts/squad-leaders/backend-squad.md",
959
+ "location": "framework",
960
+ "category": "meta-prompts",
961
+ "technology": "handlebars",
962
+ "phase": "implement",
963
+ "required": false,
964
+ "description": "Backend squad leader HOP for dotnet-senior with backend domain leaders, .NET 10 standards, architecture and security guidelines",
965
+ "outputName": "backend-squad-prompt.md",
966
+ "placeholders": [
967
+ "ADDITIONAL_LEADERS",
968
+ "AGENT_ID",
969
+ "CONSTRAINTS",
970
+ "DELIVERABLES",
971
+ "FEATURE_NAME",
972
+ "MISSION",
973
+ "SPEC_SUMMARY",
974
+ "TASKS"
975
+ ],
976
+ "stackSpecific": false,
977
+ "engine": "handlebars",
978
+ "deprecated": false,
979
+ "hopType": "squad-leader",
980
+ "applicableStacks": [
981
+ "nextjs-neon"
982
+ ],
983
+ "validatePlaceholders": true
984
+ },
985
+ {
986
+ "id": "hop-frontend-squad",
987
+ "kind": "template",
988
+ "name": "Frontend Squad Leader HOP",
989
+ "path": "meta-prompts/squad-leaders/frontend-squad.md",
990
+ "location": "framework",
991
+ "category": "meta-prompts",
992
+ "technology": "handlebars",
993
+ "phase": "implement",
994
+ "required": false,
995
+ "description": "Frontend squad leader HOP for ui-designer with Next.js domain leaders and design system standards",
996
+ "outputName": "frontend-squad-prompt.md",
997
+ "placeholders": [
998
+ "ADDITIONAL_LEADERS",
999
+ "AGENT_ID",
1000
+ "CONSTRAINTS",
1001
+ "DELIVERABLES",
1002
+ "DOMAIN",
1003
+ "FEATURE_NAME",
1004
+ "MISSION",
1005
+ "SPEC_SUMMARY",
1006
+ "TASKS"
1007
+ ],
1008
+ "stackSpecific": false,
1009
+ "engine": "handlebars",
1010
+ "deprecated": false,
1011
+ "hopType": "squad-leader",
1012
+ "applicableStacks": [
1013
+ "nextjs-neon"
1014
+ ],
1015
+ "validatePlaceholders": true
1016
+ },
1017
+ {
1018
+ "id": "hop-parallel-worker",
1019
+ "kind": "template",
1020
+ "name": "Parallel Worker HOP",
1021
+ "path": "meta-prompts/parallel-workers/parallel-worker.md",
1022
+ "location": "framework",
1023
+ "category": "meta-prompts",
1024
+ "technology": "handlebars",
1025
+ "phase": "implement",
1026
+ "required": false,
1027
+ "description": "P-Thread parallel worker HOP with isolation rules, assigned file scope, and structured completion report",
1028
+ "outputName": "parallel-worker-prompt.md",
1029
+ "placeholders": [
1030
+ "AGENT_ID",
1031
+ "DELIVERABLES",
1032
+ "FEATURE_NAME",
1033
+ "MISSION",
1034
+ "SCOPE",
1035
+ "SPEC_SUMMARY",
1036
+ "STANDARDS",
1037
+ "TASKS",
1038
+ "THREAD_ID"
1039
+ ],
1040
+ "stackSpecific": false,
1041
+ "engine": "handlebars",
1042
+ "deprecated": false,
1043
+ "hopType": "parallel-worker",
1044
+ "validatePlaceholders": true
1045
+ },
1046
+ {
1047
+ "id": "hop-parallel-coordinator",
1048
+ "kind": "template",
1049
+ "name": "Parallel Coordinator HOP",
1050
+ "path": "meta-prompts/parallel-workers/parallel-coordinator.md",
1051
+ "location": "framework",
1052
+ "category": "meta-prompts",
1053
+ "technology": "handlebars",
1054
+ "phase": "implement",
1055
+ "required": false,
1056
+ "description": "P-Thread coordinator HOP for spawning, monitoring and merging parallel worker results",
1057
+ "outputName": "parallel-coordinator-prompt.md",
1058
+ "placeholders": [
1059
+ "AGENT_ID",
1060
+ "CONSTRAINTS",
1061
+ "FEATURE_NAME",
1062
+ "MAX_CONCURRENT",
1063
+ "MERGE_STRATEGY",
1064
+ "PARALLEL_STRATEGY",
1065
+ "POST_MERGE_TASKS",
1066
+ "PRE_SPAWN_TASKS",
1067
+ "SESSION_ID",
1068
+ "SPEC_SUMMARY",
1069
+ "TIMEOUT_MINUTES",
1070
+ "WORKERS",
1071
+ "WORKER_COUNT"
1072
+ ],
1073
+ "stackSpecific": false,
1074
+ "engine": "handlebars",
1075
+ "deprecated": false,
1076
+ "hopType": "parallel-coordinator",
1077
+ "validatePlaceholders": true
1078
+ },
1079
+ {
1080
+ "id": "hop-checkpoint-validator",
1081
+ "kind": "template",
1082
+ "name": "Checkpoint Validator HOP",
1083
+ "path": "meta-prompts/validators/checkpoint-validator.md",
1084
+ "location": "framework",
1085
+ "category": "meta-prompts",
1086
+ "technology": "handlebars",
1087
+ "phase": "implement",
1088
+ "required": false,
1089
+ "description": "Checkpoint validator HOP running architecture, security, design-system, and packages validators with pass/fail decision logic",
1090
+ "outputName": "checkpoint-validator-prompt.md",
1091
+ "placeholders": [
1092
+ "CHECKPOINT_FREQUENCY",
1093
+ "CHECKPOINT_NUM",
1094
+ "FEATURE_NAME",
1095
+ "FILES_CHANGED",
1096
+ "RECENT_TASKS",
1097
+ "TASKS_COMPLETED",
1098
+ "TASKS_SINCE_LAST",
1099
+ "TASKS_TOTAL"
1100
+ ],
1101
+ "stackSpecific": false,
1102
+ "engine": "handlebars",
1103
+ "deprecated": false,
1104
+ "hopType": "validator",
1105
+ "validatePlaceholders": true
1106
+ },
1107
+ {
1108
+ "id": "hop-pre-commit-validator",
1109
+ "kind": "template",
1110
+ "name": "Pre-Commit Validator HOP",
1111
+ "path": "meta-prompts/validators/pre-commit-validator.md",
1112
+ "location": "framework",
1113
+ "category": "meta-prompts",
1114
+ "technology": "handlebars",
1115
+ "phase": "implement",
1116
+ "required": false,
1117
+ "description": "Pre-commit hook validator HOP checking conventional commits, secrets, agent spec validity, and stack-specific rules",
1118
+ "outputName": "pre-commit-validator-prompt.md",
1119
+ "placeholders": [
1120
+ "BRANCH_NAME",
1121
+ "FEATURE_NAME",
1122
+ "STAGED_FILES",
1123
+ "STAGED_FILE_COUNT",
1124
+ "TODO"
1125
+ ],
1126
+ "stackSpecific": false,
1127
+ "engine": "handlebars",
1128
+ "deprecated": false,
1129
+ "hopType": "validator",
1130
+ "validatePlaceholders": false
1131
+ },
1132
+ {
1133
+ "id": "hop-fusion-agent",
1134
+ "kind": "template",
1135
+ "name": "Fusion Agent HOP",
1136
+ "path": "meta-prompts/fusion/fusion-agent.md",
1137
+ "location": "framework",
1138
+ "category": "meta-prompts",
1139
+ "technology": "handlebars",
1140
+ "phase": "implement",
1141
+ "required": false,
1142
+ "description": "F-Thread fusion participant HOP with approach hints per thread index (standard, alternative, optimized) and self-assessment scoring",
1143
+ "outputName": "fusion-agent-prompt.md",
1144
+ "placeholders": [
1145
+ "AGENT_ID",
1146
+ "DELIVERABLES",
1147
+ "FUSION_STRATEGY",
1148
+ "SPEC_SUMMARY",
1149
+ "STANDARDS",
1150
+ "TASK_DESCRIPTION",
1151
+ "THREAD_COUNT",
1152
+ "THREAD_COUNT_MINUS_ONE",
1153
+ "THREAD_ID",
1154
+ "THREAD_INDEX"
1155
+ ],
1156
+ "stackSpecific": false,
1157
+ "engine": "handlebars",
1158
+ "deprecated": false,
1159
+ "hopType": "fusion",
1160
+ "validatePlaceholders": true
1161
+ },
1162
+ {
1163
+ "id": "hop-fusion-aggregator",
1164
+ "kind": "template",
1165
+ "name": "Fusion Aggregator HOP",
1166
+ "path": "meta-prompts/fusion/fusion-aggregator.md",
1167
+ "location": "framework",
1168
+ "category": "meta-prompts",
1169
+ "technology": "handlebars",
1170
+ "phase": "implement",
1171
+ "required": false,
1172
+ "description": "F-Thread aggregator HOP that scores and selects the winning implementation using best-of-n, consensus, or manual-select strategies",
1173
+ "outputName": "fusion-aggregator-prompt.md",
1174
+ "placeholders": [
1175
+ "AGENT_1",
1176
+ "AGENT_2",
1177
+ "AGENT_3",
1178
+ "FEATURE_NAME",
1179
+ "FUSION_RESULTS",
1180
+ "FUSION_STRATEGY",
1181
+ "SESSION_ID",
1182
+ "THREAD_COUNT",
1183
+ "WINNING_AGENT",
1184
+ "WINNING_SCORE",
1185
+ "WINNING_THREAD"
1186
+ ],
1187
+ "stackSpecific": false,
1188
+ "engine": "handlebars",
1189
+ "deprecated": false,
1190
+ "hopType": "fusion",
1191
+ "validatePlaceholders": true
1192
+ },
1193
+ {
1194
+ "id": "dotnet-abstractions-handler",
1195
+ "kind": "fragment",
1196
+ "path": "code/dotnet/abstractions/handler.cs",
1197
+ "category": "abstractions",
1198
+ "stack": "dotnet",
1199
+ "description": "IHandler<TRequest, TResponse> interface",
1200
+ "consumption": "reference"
1201
+ },
1202
+ {
1203
+ "id": "dotnet-abstractions-result",
1204
+ "kind": "fragment",
1205
+ "path": "code/dotnet/abstractions/result.cs",
1206
+ "category": "abstractions",
1207
+ "stack": "dotnet",
1208
+ "description": "Result<T> railway-oriented pattern",
1209
+ "consumption": "reference"
1210
+ },
1211
+ {
1212
+ "id": "dotnet-abstractions-error",
1213
+ "kind": "fragment",
1214
+ "path": "code/dotnet/abstractions/error.cs",
1215
+ "category": "abstractions",
1216
+ "stack": "dotnet",
1217
+ "description": "Error record + ErrorType enum + ValidationError",
1218
+ "consumption": "reference"
1219
+ },
1220
+ {
1221
+ "id": "dotnet-abstractions-api-endpoint",
1222
+ "kind": "fragment",
1223
+ "path": "code/dotnet/abstractions/api-endpoint.cs",
1224
+ "category": "abstractions",
1225
+ "stack": "dotnet",
1226
+ "description": "IApiEndpoint interface for minimal APIs",
1227
+ "consumption": "reference"
1228
+ },
1229
+ {
1230
+ "id": "dotnet-extensions-handler-registration",
1231
+ "kind": "fragment",
1232
+ "path": "code/dotnet/extensions/handler-registration.cs",
1233
+ "category": "extensions",
1234
+ "stack": "dotnet",
1235
+ "description": "Scrutor handler auto-discovery + decorators",
1236
+ "consumption": "reference"
1237
+ },
1238
+ {
1239
+ "id": "dotnet-extensions-map-endpoints",
1240
+ "kind": "fragment",
1241
+ "path": "code/dotnet/extensions/map-endpoints.cs",
1242
+ "category": "extensions",
1243
+ "stack": "dotnet",
1244
+ "description": "IApiEndpoint auto-discovery + mapping",
1245
+ "consumption": "reference"
1246
+ },
1247
+ {
1248
+ "id": "dotnet-extensions-result-extensions",
1249
+ "kind": "fragment",
1250
+ "path": "code/dotnet/extensions/result-extensions.cs",
1251
+ "category": "extensions",
1252
+ "stack": "dotnet",
1253
+ "description": "Match() pattern matching for Result<T>",
1254
+ "consumption": "reference"
1255
+ },
1256
+ {
1257
+ "id": "dotnet-extensions-database",
1258
+ "kind": "fragment",
1259
+ "path": "code/dotnet/extensions/database-extensions.cs",
1260
+ "category": "extensions",
1261
+ "stack": "dotnet",
1262
+ "description": "EF Core + Npgsql database configuration",
1263
+ "consumption": "reference"
1264
+ },
1265
+ {
1266
+ "id": "dotnet-extensions-health-checks",
1267
+ "kind": "fragment",
1268
+ "path": "code/dotnet/extensions/health-checks.cs",
1269
+ "category": "extensions",
1270
+ "stack": "dotnet",
1271
+ "description": "Health check configuration",
1272
+ "consumption": "reference"
1273
+ },
1274
+ {
1275
+ "id": "dotnet-pipelines-validation-decorator",
1276
+ "kind": "fragment",
1277
+ "path": "code/dotnet/pipelines/validation-decorator.cs",
1278
+ "category": "pipelines",
1279
+ "stack": "dotnet",
1280
+ "description": "FluentValidation decorator for handlers",
1281
+ "consumption": "reference"
1282
+ },
1283
+ {
1284
+ "id": "dotnet-pipelines-logging-decorator",
1285
+ "kind": "fragment",
1286
+ "path": "code/dotnet/pipelines/logging-decorator.cs",
1287
+ "category": "pipelines",
1288
+ "stack": "dotnet",
1289
+ "description": "Logging decorator with duration tracking",
1290
+ "consumption": "reference"
1291
+ },
1292
+ {
1293
+ "id": "dotnet-exceptions-handler",
1294
+ "kind": "fragment",
1295
+ "path": "code/dotnet/exceptions/exception-handler.cs",
1296
+ "category": "exceptions",
1297
+ "stack": "dotnet",
1298
+ "description": "IExceptionHandler with ProblemDetails",
1299
+ "consumption": "reference"
1300
+ },
1301
+ {
1302
+ "id": "dotnet-constants-api-tags",
1303
+ "kind": "fragment",
1304
+ "path": "code/dotnet/constants/api-tags.cs",
1305
+ "category": "constants",
1306
+ "stack": "dotnet",
1307
+ "description": "ApiTags constants for endpoint grouping",
1308
+ "consumption": "reference"
1309
+ },
1310
+ {
1311
+ "id": "dotnet-feature-endpoint",
1312
+ "kind": "fragment",
1313
+ "path": "code/dotnet/feature/endpoint.cs.hbs",
1314
+ "category": "feature",
1315
+ "stack": "dotnet",
1316
+ "description": "VSA feature endpoint (IApiEndpoint)",
1317
+ "consumption": "reference"
1318
+ },
1319
+ {
1320
+ "id": "dotnet-feature-handler",
1321
+ "kind": "fragment",
1322
+ "path": "code/dotnet/feature/handler.cs.hbs",
1323
+ "category": "feature",
1324
+ "stack": "dotnet",
1325
+ "description": "VSA feature handler (IHandler)",
1326
+ "consumption": "reference"
1327
+ },
1328
+ {
1329
+ "id": "dotnet-feature-validator",
1330
+ "kind": "fragment",
1331
+ "path": "code/dotnet/feature/validator.cs.hbs",
1332
+ "category": "feature",
1333
+ "stack": "dotnet",
1334
+ "description": "VSA feature validator (AbstractValidator)",
1335
+ "consumption": "reference"
1336
+ },
1337
+ {
1338
+ "id": "dotnet-feature-request",
1339
+ "kind": "fragment",
1340
+ "path": "code/dotnet/feature/request.cs.hbs",
1341
+ "category": "feature",
1342
+ "stack": "dotnet",
1343
+ "description": "VSA feature request (sealed record)",
1344
+ "consumption": "reference"
1345
+ },
1346
+ {
1347
+ "id": "dotnet-feature-response",
1348
+ "kind": "fragment",
1349
+ "path": "code/dotnet/feature/response.cs.hbs",
1350
+ "category": "feature",
1351
+ "stack": "dotnet",
1352
+ "description": "VSA feature response (sealed record)",
1353
+ "consumption": "reference"
1354
+ },
1355
+ {
1356
+ "id": "dotnet-feature-errors",
1357
+ "kind": "fragment",
1358
+ "path": "code/dotnet/feature/errors.cs.hbs",
1359
+ "category": "feature",
1360
+ "stack": "dotnet",
1361
+ "description": "VSA feature error factory",
1362
+ "consumption": "reference"
1363
+ },
1364
+ {
1365
+ "id": "dotnet-feature-entity",
1366
+ "kind": "fragment",
1367
+ "path": "code/dotnet/feature/entity.cs.hbs",
1368
+ "category": "feature",
1369
+ "stack": "dotnet",
1370
+ "description": "VSA feature entity",
1371
+ "consumption": "reference"
1372
+ },
1373
+ {
1374
+ "id": "gsap-scroll-section",
1375
+ "kind": "template",
1376
+ "path": "frontend/nextjs/gsap-scroll-section.tsx.hbs",
1377
+ "category": "ui",
1378
+ "stack": "nextjs",
1379
+ "description": "Scroll-animated section using GSAP ScrollTrigger with useGSAP hook and reduced-motion check",
1380
+ "consumption": "reference",
1381
+ "name": "GSAP Scroll Section",
1382
+ "engine": "handlebars",
1383
+ "deprecated": false,
1384
+ "phase": null,
1385
+ "outputName": null,
1386
+ "placeholders": [],
1387
+ "validatePlaceholders": true
1388
+ },
1389
+ {
1390
+ "id": "maf-agent-bootstrap",
1391
+ "kind": "fragment",
1392
+ "consumption": "reference",
1393
+ "path": "code/dotnet/ai-agents/AgentBootstrap.cs.template",
1394
+ "category": "ai-agents",
1395
+ "stack": "dotnet",
1396
+ "description": "DI extension method to register ModelRegistry + a default MAF agent"
1397
+ },
1398
+ {
1399
+ "id": "maf-embedding-service",
1400
+ "kind": "fragment",
1401
+ "consumption": "reference",
1402
+ "path": "code/dotnet/ai-agents/EmbeddingService.cs.template",
1403
+ "category": "ai-agents",
1404
+ "stack": "dotnet",
1405
+ "description": "Generates embeddings for RAG indexing and query via IEmbeddingGenerator"
1406
+ },
1407
+ {
1408
+ "id": "maf-model-registry",
1409
+ "kind": "fragment",
1410
+ "consumption": "reference",
1411
+ "path": "code/dotnet/ai-agents/ModelRegistry.cs.template",
1412
+ "category": "ai-agents",
1413
+ "stack": "dotnet",
1414
+ "description": "Reads config/model-registry.json at startup, exposes IChatClient by alias"
1415
+ },
1416
+ {
1417
+ "id": "maf-prompt-repository",
1418
+ "kind": "fragment",
1419
+ "consumption": "reference",
1420
+ "path": "code/dotnet/ai-agents/PromptRepository.cs.template",
1421
+ "category": "ai-agents",
1422
+ "stack": "dotnet",
1423
+ "description": "Loads agent system prompts from the agent_prompts table, with caching"
1424
+ },
1425
+ {
1426
+ "id": "maf-resilient-tool-middleware",
1427
+ "kind": "fragment",
1428
+ "consumption": "reference",
1429
+ "path": "code/dotnet/ai-agents/ResilientToolMiddleware.cs.template",
1430
+ "category": "ai-agents",
1431
+ "stack": "dotnet",
1432
+ "description": "Function-calling middleware: retry/rate-limit resilience + arg validation"
1433
+ },
1434
+ {
1435
+ "id": "maf-vector-search-tool",
1436
+ "kind": "fragment",
1437
+ "consumption": "reference",
1438
+ "path": "code/dotnet/ai-agents/VectorSearchTool.cs.template",
1439
+ "category": "ai-agents",
1440
+ "stack": "dotnet",
1441
+ "description": "Typed MAF tool retrieving relevant chunks from the pgvector knowledge base"
1442
+ },
1443
+ {
1444
+ "id": "maf-model-registry-config",
1445
+ "kind": "fragment",
1446
+ "consumption": "reference",
1447
+ "path": "code/dotnet/ai-agents/model-registry.json.template",
1448
+ "category": "ai-agents",
1449
+ "stack": "dotnet",
1450
+ "description": "config/model-registry.json — single source of truth for model selection"
1451
+ },
1452
+ {
1453
+ "id": "maf-agent-prompts-migration",
1454
+ "kind": "fragment",
1455
+ "consumption": "reference",
1456
+ "path": "code/sql/ai-agents/agent-prompts-migration.sql.template",
1457
+ "category": "code",
1458
+ "stack": "dotnet",
1459
+ "description": "SQL migration: agent_prompts table for versioned, runtime-editable prompts"
1460
+ },
1461
+ {
1462
+ "id": "maf-pgvector-embeddings-migration",
1463
+ "kind": "fragment",
1464
+ "consumption": "reference",
1465
+ "path": "code/sql/ai-agents/pgvector-embeddings-migration.sql.template",
1466
+ "category": "code",
1467
+ "stack": "dotnet",
1468
+ "description": "SQL migration: kb_embeddings table for custom RAG chunk storage with pgvector"
1469
+ },
1470
+ {
1471
+ "id": "dotnet-database-vector-entity",
1472
+ "kind": "fragment",
1473
+ "consumption": "reference",
1474
+ "path": "code/dotnet/database/vector-entity.cs",
1475
+ "category": "code",
1476
+ "stack": "dotnet",
1477
+ "description": "pgvector entity + EF Core configuration template"
1478
+ },
1479
+ {
1480
+ "id": "nextjs-page",
1481
+ "kind": "template",
1482
+ "consumption": "generated",
1483
+ "name": "Next.js Feature Page",
1484
+ "path": "frontend/nextjs/page.tsx.hbs",
1485
+ "category": "ui",
1486
+ "phase": null,
1487
+ "outputName": null,
1488
+ "description": "Server component page for a dashboard feature route",
1489
+ "engine": "handlebars",
1490
+ "deprecated": false,
1491
+ "placeholders": [],
1492
+ "validatePlaceholders": true
1493
+ },
1494
+ {
1495
+ "id": "nextjs-client-component",
1496
+ "kind": "template",
1497
+ "consumption": "generated",
1498
+ "name": "Next.js Client Component",
1499
+ "path": "frontend/nextjs/client-component.tsx.hbs",
1500
+ "category": "ui",
1501
+ "phase": null,
1502
+ "outputName": null,
1503
+ "description": "Client component listing feature records",
1504
+ "engine": "handlebars",
1505
+ "deprecated": false,
1506
+ "placeholders": [],
1507
+ "validatePlaceholders": true
1508
+ },
1509
+ {
1510
+ "id": "nextjs-feature-form",
1511
+ "kind": "template",
1512
+ "consumption": "generated",
1513
+ "name": "Next.js Feature Form",
1514
+ "path": "frontend/nextjs/feature-form.tsx.hbs",
1515
+ "category": "ui",
1516
+ "phase": null,
1517
+ "outputName": null,
1518
+ "description": "Client form component for creating a feature record",
1519
+ "engine": "handlebars",
1520
+ "deprecated": false,
1521
+ "placeholders": [],
1522
+ "validatePlaceholders": true
1523
+ },
1524
+ {
1525
+ "id": "nextjs-use-feature",
1526
+ "kind": "template",
1527
+ "consumption": "generated",
1528
+ "name": "Next.js Feature Hook",
1529
+ "path": "frontend/nextjs/use-feature.ts.hbs",
1530
+ "category": "ui",
1531
+ "phase": null,
1532
+ "outputName": null,
1533
+ "description": "Data-fetching hook for a feature",
1534
+ "engine": "handlebars",
1535
+ "deprecated": false,
1536
+ "placeholders": [],
1537
+ "validatePlaceholders": true
1538
+ },
1539
+ {
1540
+ "id": "nextjs-dockerfile",
1541
+ "kind": "template",
1542
+ "consumption": "reference",
1543
+ "name": "Next.js Dockerfile",
1544
+ "path": "frontend/nextjs/Dockerfile.nextjs.hbs",
1545
+ "category": "infrastructure",
1546
+ "phase": null,
1547
+ "outputName": null,
1548
+ "description": "Multi-stage Dockerfile for a Next.js standalone build",
1549
+ "engine": "handlebars",
1550
+ "deprecated": false,
1551
+ "placeholders": [],
1552
+ "validatePlaceholders": true
1553
+ },
1554
+ {
1555
+ "id": "nextjs-env-mjs",
1556
+ "kind": "template",
1557
+ "consumption": "reference",
1558
+ "name": "Next.js Env Schema",
1559
+ "path": "frontend/nextjs/env.mjs.hbs",
1560
+ "category": "ui",
1561
+ "phase": null,
1562
+ "outputName": null,
1563
+ "description": "Type-safe environment variable schema (env.mjs)",
1564
+ "engine": "handlebars",
1565
+ "deprecated": false,
1566
+ "placeholders": [],
1567
+ "validatePlaceholders": true
1568
+ },
1569
+ {
1570
+ "id": "nextjs-tsconfig",
1571
+ "kind": "template",
1572
+ "consumption": "reference",
1573
+ "name": "Next.js tsconfig",
1574
+ "path": "frontend/nextjs/tsconfig.json.hbs",
1575
+ "category": "ui",
1576
+ "phase": null,
1577
+ "outputName": null,
1578
+ "description": "TypeScript configuration for a Next.js project",
1579
+ "engine": "handlebars",
1580
+ "deprecated": false,
1581
+ "placeholders": [],
1582
+ "validatePlaceholders": true
1583
+ },
1584
+ {
1585
+ "id": "clarifications",
1586
+ "kind": "template",
1587
+ "consumption": "generated",
1588
+ "name": "Clarifications",
1589
+ "path": "docs/clarifications.md",
1590
+ "category": "documentation",
1591
+ "phase": null,
1592
+ "outputName": null,
1593
+ "description": "Clarification questions and answers captured during the proposal phase",
1594
+ "engine": "handlebars",
1595
+ "deprecated": false,
1596
+ "placeholders": [
1597
+ "DATE",
1598
+ "FEATURE_NAME",
1599
+ "FEATURE_NAME_TITLE",
1600
+ "FRAMEWORK_VERSION"
1601
+ ],
1602
+ "validatePlaceholders": true
1603
+ },
1604
+ {
1605
+ "id": "onboarding",
1606
+ "kind": "template",
1607
+ "consumption": "generated",
1608
+ "name": "Onboarding Guide",
1609
+ "path": "docs/onboarding.md",
1610
+ "category": "documentation",
1611
+ "phase": null,
1612
+ "outputName": null,
1613
+ "description": "Generated onboarding guide for a project",
1614
+ "engine": "handlebars",
1615
+ "deprecated": false,
1616
+ "placeholders": [
1617
+ "AGENTS_LIST",
1618
+ "ARCHITECTURE",
1619
+ "AVAILABLE_MCPS",
1620
+ "DATE",
1621
+ "PROJECT_NAME",
1622
+ "STACK",
1623
+ "STANDARDS_SUMMARY",
1624
+ "VERSION",
1625
+ "WORKFLOW_SUMMARY"
1626
+ ],
1627
+ "validatePlaceholders": true
1628
+ },
1629
+ {
1630
+ "id": "schema-analysis",
1631
+ "kind": "template",
1632
+ "consumption": "generated",
1633
+ "name": "Schema Analysis",
1634
+ "path": "docs/schema-analysis.md",
1635
+ "category": "documentation",
1636
+ "phase": null,
1637
+ "outputName": null,
1638
+ "description": "Database schema analysis for a feature",
1639
+ "engine": "handlebars",
1640
+ "deprecated": false,
1641
+ "placeholders": [
1642
+ "AUTHOR",
1643
+ "DATE",
1644
+ "FEATURE_NAME",
1645
+ "FEATURE_NAME_TITLE",
1646
+ "FRAMEWORK_VERSION"
1647
+ ],
1648
+ "validatePlaceholders": true
1649
+ },
1650
+ {
1651
+ "id": "user-stories",
1652
+ "kind": "template",
1653
+ "consumption": "generated",
1654
+ "name": "User Stories",
1655
+ "path": "docs/user-stories.md",
1656
+ "category": "documentation",
1657
+ "phase": null,
1658
+ "outputName": null,
1659
+ "description": "User stories captured for a feature",
1660
+ "engine": "handlebars",
1661
+ "deprecated": false,
1662
+ "placeholders": [],
1663
+ "validatePlaceholders": true
1664
+ },
1665
+ {
1666
+ "id": "context-design-system",
1667
+ "kind": "template",
1668
+ "consumption": "reference",
1669
+ "name": "Design System Context",
1670
+ "path": "context/design-system.md",
1671
+ "category": "context",
1672
+ "phase": null,
1673
+ "outputName": null,
1674
+ "description": "Design system context document — copy to .morph/context/design-system.md",
1675
+ "engine": "handlebars",
1676
+ "deprecated": false,
1677
+ "placeholders": [],
1678
+ "validatePlaceholders": true
1679
+ },
1680
+ {
1681
+ "id": "claude-md-core",
1682
+ "kind": "template",
1683
+ "consumption": "reference",
1684
+ "name": "CLAUDE.md (core)",
1685
+ "path": "CLAUDE.md.core.template",
1686
+ "category": "documentation",
1687
+ "phase": null,
1688
+ "outputName": null,
1689
+ "description": "CLAUDE.md project-instructions template for a new morph-spec project",
1690
+ "engine": "handlebars",
1691
+ "deprecated": false,
1692
+ "placeholders": [],
1693
+ "validatePlaceholders": true
1694
+ },
1695
+ {
1696
+ "id": "claude-md-core-guide",
1697
+ "kind": "template",
1698
+ "consumption": "reference",
1699
+ "name": "CLAUDE.md Authoring Guide",
1700
+ "path": "CLAUDE.md.core.guide.md",
1701
+ "category": "documentation",
1702
+ "phase": null,
1703
+ "outputName": null,
1704
+ "description": "Authoring guide explaining how to fill in the CLAUDE.md core template",
1705
+ "engine": "handlebars",
1706
+ "deprecated": false,
1707
+ "placeholders": [],
1708
+ "validatePlaceholders": true
1709
+ },
1710
+ {
1711
+ "id": "state-template",
1712
+ "kind": "template",
1713
+ "consumption": "reference",
1714
+ "name": "state.json",
1715
+ "path": "state.template.json",
1716
+ "category": "context",
1717
+ "phase": null,
1718
+ "outputName": null,
1719
+ "description": "Initial .morph/state.json scaffold for a new project",
1720
+ "engine": "handlebars",
1721
+ "deprecated": false,
1722
+ "placeholders": [
1723
+ "PROJECT_NAME",
1724
+ "PROJECT_TYPE",
1725
+ "TIMESTAMP"
1726
+ ],
1727
+ "validatePlaceholders": true
1728
+ },
1729
+ {
1730
+ "id": "tasks-template",
1731
+ "kind": "template",
1732
+ "consumption": "reference",
1733
+ "name": "tasks.json",
1734
+ "path": "tasks.template.json",
1735
+ "category": "context",
1736
+ "phase": null,
1737
+ "outputName": null,
1738
+ "description": "Initial tasks.json scaffold",
1739
+ "engine": "handlebars",
1740
+ "deprecated": false,
1741
+ "placeholders": [],
1742
+ "validatePlaceholders": true
1743
+ }
1744
+ ]
1745
+ }