@polymorphism-tech/morph-spec 4.8.6 → 4.8.8

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 (33) hide show
  1. package/README.md +2 -2
  2. package/bin/morph-spec.js +22 -1
  3. package/bin/task-manager.cjs +120 -16
  4. package/claude-plugin.json +1 -1
  5. package/docs/CHEATSHEET.md +1 -1
  6. package/docs/QUICKSTART.md +1 -1
  7. package/framework/agents.json +1854 -1815
  8. package/framework/hooks/claude-code/pre-compact/save-morph-context.js +141 -23
  9. package/framework/hooks/claude-code/statusline.py +304 -280
  10. package/framework/hooks/claude-code/statusline.sh +6 -2
  11. package/framework/hooks/claude-code/stop/validate-completion.js +70 -23
  12. package/framework/hooks/dev/guard-version-numbers.js +1 -1
  13. package/framework/skills/level-0-meta/morph-init/SKILL.md +44 -6
  14. package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +67 -16
  15. package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +1 -1
  16. package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +77 -7
  17. package/framework/skills/level-1-workflows/phase-design/SKILL.md +114 -50
  18. package/framework/skills/level-1-workflows/phase-implement/SKILL.md +139 -1
  19. package/framework/skills/level-1-workflows/phase-setup/SKILL.md +29 -6
  20. package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +4 -3
  21. package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +1 -1
  22. package/framework/standards/STANDARDS.json +944 -933
  23. package/framework/standards/architecture/vertical-slice/vertical-slice.md +429 -0
  24. package/framework/templates/REGISTRY.json +1909 -1888
  25. package/framework/templates/code/dotnet/contracts/contracts-vsa.cs +282 -0
  26. package/package.json +1 -1
  27. package/src/commands/agents/dispatch-agents.js +430 -0
  28. package/src/commands/agents/index.js +2 -1
  29. package/src/commands/project/doctor.js +137 -2
  30. package/src/commands/state/state.js +20 -4
  31. package/src/commands/templates/generate-contracts.js +445 -0
  32. package/src/commands/templates/index.js +1 -0
  33. package/src/lib/validators/validation-runner.js +19 -7
@@ -1,933 +1,944 @@
1
- {
2
- "version": "1.0.0",
3
- "standards": [
4
- {
5
- "id": "ai-agents-blazor-ui",
6
- "name": "blazor ui",
7
- "path": "ai-agents/blazor-ui.md",
8
- "category": "ai-agents",
9
- "subcategory": null,
10
- "tags": [
11
- "ai-agents"
12
- ]
13
- },
14
- {
15
- "id": "ai-agents-production",
16
- "name": "production",
17
- "path": "ai-agents/production.md",
18
- "category": "ai-agents",
19
- "subcategory": null,
20
- "tags": [
21
- "ai-agents"
22
- ]
23
- },
24
- {
25
- "id": "ai-agents-setup",
26
- "name": "setup",
27
- "path": "ai-agents/setup.md",
28
- "category": "ai-agents",
29
- "subcategory": null,
30
- "tags": [
31
- "ai-agents"
32
- ]
33
- },
34
- {
35
- "id": "ai-agents-team-orchestration",
36
- "name": "team orchestration",
37
- "path": "ai-agents/team-orchestration.md",
38
- "category": "ai-agents",
39
- "subcategory": null,
40
- "tags": [
41
- "ai-agents"
42
- ]
43
- },
44
- {
45
- "id": "ai-agents-workflows",
46
- "name": "workflows",
47
- "path": "ai-agents/workflows.md",
48
- "category": "ai-agents",
49
- "subcategory": null,
50
- "tags": [
51
- "ai-agents"
52
- ]
53
- },
54
- {
55
- "id": "architecture-ddd-aggregates",
56
- "name": "aggregates",
57
- "path": "architecture/ddd/aggregates.md",
58
- "category": "architecture",
59
- "subcategory": "ddd",
60
- "tags": [
61
- "architecture",
62
- "ddd"
63
- ]
64
- },
65
- {
66
- "id": "architecture-ddd-bounded-contexts",
67
- "name": "bounded contexts",
68
- "path": "architecture/ddd/bounded-contexts.md",
69
- "category": "architecture",
70
- "subcategory": "ddd",
71
- "tags": [
72
- "architecture",
73
- "ddd"
74
- ]
75
- },
76
- {
77
- "id": "architecture-ddd-complexity-levels",
78
- "name": "complexity levels",
79
- "path": "architecture/ddd/complexity-levels.md",
80
- "category": "architecture",
81
- "subcategory": "ddd",
82
- "tags": [
83
- "architecture",
84
- "ddd"
85
- ]
86
- },
87
- {
88
- "id": "architecture-ddd-entities",
89
- "name": "entities",
90
- "path": "architecture/ddd/entities.md",
91
- "category": "architecture",
92
- "subcategory": "ddd",
93
- "tags": [
94
- "architecture",
95
- "ddd"
96
- ]
97
- },
98
- {
99
- "id": "architecture-ddd-ubiquitous-language",
100
- "name": "ubiquitous language",
101
- "path": "architecture/ddd/ubiquitous-language.md",
102
- "category": "architecture",
103
- "subcategory": "ddd",
104
- "tags": [
105
- "architecture",
106
- "ddd"
107
- ]
108
- },
109
- {
110
- "id": "architecture-ddd-value-objects",
111
- "name": "value objects",
112
- "path": "architecture/ddd/value-objects.md",
113
- "category": "architecture",
114
- "subcategory": "ddd",
115
- "tags": [
116
- "architecture",
117
- "ddd"
118
- ]
119
- },
120
- {
121
- "id": "backend-api-minimal-api",
122
- "name": "minimal api",
123
- "path": "backend/api/minimal-api.md",
124
- "category": "backend",
125
- "subcategory": "api",
126
- "tags": [
127
- "backend",
128
- "api"
129
- ]
130
- },
131
- {
132
- "id": "backend-api-rest",
133
- "name": "rest",
134
- "path": "backend/api/rest.md",
135
- "category": "backend",
136
- "subcategory": "api",
137
- "tags": [
138
- "backend",
139
- "api"
140
- ]
141
- },
142
- {
143
- "id": "backend-api-validation",
144
- "name": "validation",
145
- "path": "backend/api/validation.md",
146
- "category": "backend",
147
- "subcategory": "api",
148
- "tags": [
149
- "backend",
150
- "api"
151
- ]
152
- },
153
- {
154
- "id": "backend-authentication-passkeys",
155
- "name": "passkeys",
156
- "path": "backend/authentication/passkeys.md",
157
- "category": "backend",
158
- "subcategory": "authentication",
159
- "tags": [
160
- "backend",
161
- "authentication"
162
- ]
163
- },
164
- {
165
- "id": "backend-database-ef-core",
166
- "name": "ef core",
167
- "path": "backend/database/ef-core.md",
168
- "category": "backend",
169
- "subcategory": "database",
170
- "tags": [
171
- "backend",
172
- "database"
173
- ]
174
- },
175
- {
176
- "id": "backend-database-migrations",
177
- "name": "migrations",
178
- "path": "backend/database/migrations.md",
179
- "category": "backend",
180
- "subcategory": "database",
181
- "tags": [
182
- "backend",
183
- "database"
184
- ]
185
- },
186
- {
187
- "id": "backend-database-postgresql-database",
188
- "name": "database",
189
- "path": "backend/database/postgresql/database.md",
190
- "category": "backend",
191
- "subcategory": "database",
192
- "tags": [
193
- "backend",
194
- "database",
195
- "postgresql"
196
- ]
197
- },
198
- {
199
- "id": "backend-database-repository-patterns",
200
- "name": "repository patterns",
201
- "path": "backend/database/repository-patterns.md",
202
- "category": "backend",
203
- "subcategory": "database",
204
- "tags": [
205
- "backend",
206
- "database"
207
- ]
208
- },
209
- {
210
- "id": "backend-database-vector-search-rag",
211
- "name": "vector search rag",
212
- "path": "backend/database/vector-search-rag.md",
213
- "category": "backend",
214
- "subcategory": "database",
215
- "tags": [
216
- "backend",
217
- "database"
218
- ]
219
- },
220
- {
221
- "id": "backend-dotnet-async",
222
- "name": "async",
223
- "path": "backend/dotnet/async.md",
224
- "category": "backend",
225
- "subcategory": "dotnet",
226
- "tags": [
227
- "backend",
228
- "dotnet"
229
- ]
230
- },
231
- {
232
- "id": "backend-dotnet-core",
233
- "name": "core",
234
- "path": "backend/dotnet/core.md",
235
- "category": "backend",
236
- "subcategory": "dotnet",
237
- "tags": [
238
- "backend",
239
- "dotnet"
240
- ]
241
- },
242
- {
243
- "id": "backend-dotnet-di",
244
- "name": "di",
245
- "path": "backend/dotnet/di.md",
246
- "category": "backend",
247
- "subcategory": "dotnet",
248
- "tags": [
249
- "backend",
250
- "dotnet"
251
- ]
252
- },
253
- {
254
- "id": "backend-dotnet-program-cs-checklist",
255
- "name": "program cs checklist",
256
- "path": "backend/dotnet/program-cs-checklist.md",
257
- "category": "backend",
258
- "subcategory": "dotnet",
259
- "tags": [
260
- "backend",
261
- "dotnet"
262
- ]
263
- },
264
- {
265
- "id": "backend-integrations-asaas-asaas-api",
266
- "name": "asaas api",
267
- "path": "backend/integrations/asaas/asaas-api.md",
268
- "category": "backend",
269
- "subcategory": "integrations",
270
- "tags": [
271
- "backend",
272
- "integrations",
273
- "asaas"
274
- ]
275
- },
276
- {
277
- "id": "backend-integrations-clerk-clerk-auth",
278
- "name": "clerk auth",
279
- "path": "backend/integrations/clerk/clerk-auth.md",
280
- "category": "backend",
281
- "subcategory": "integrations",
282
- "tags": [
283
- "backend",
284
- "integrations",
285
- "clerk"
286
- ]
287
- },
288
- {
289
- "id": "backend-integrations-hangfire-hangfire-jobs",
290
- "name": "hangfire jobs",
291
- "path": "backend/integrations/hangfire/hangfire-jobs.md",
292
- "category": "backend",
293
- "subcategory": "integrations",
294
- "tags": [
295
- "backend",
296
- "integrations",
297
- "hangfire"
298
- ]
299
- },
300
- {
301
- "id": "backend-integrations-resend-resend-email",
302
- "name": "resend email",
303
- "path": "backend/integrations/resend/resend-email.md",
304
- "category": "backend",
305
- "subcategory": "integrations",
306
- "tags": [
307
- "backend",
308
- "integrations",
309
- "resend"
310
- ]
311
- },
312
- {
313
- "id": "context-analytics",
314
- "name": "analytics",
315
- "path": "context/analytics.md",
316
- "category": "context",
317
- "subcategory": null,
318
- "tags": [
319
- "context"
320
- ]
321
- },
322
- {
323
- "id": "context-bundles",
324
- "name": "bundles",
325
- "path": "context/bundles.md",
326
- "category": "context",
327
- "subcategory": null,
328
- "tags": [
329
- "context"
330
- ]
331
- },
332
- {
333
- "id": "context-priming",
334
- "name": "priming",
335
- "path": "context/priming.md",
336
- "category": "context",
337
- "subcategory": null,
338
- "tags": [
339
- "context"
340
- ]
341
- },
342
- {
343
- "id": "core-architecture",
344
- "name": "architecture",
345
- "path": "core/architecture.md",
346
- "category": "core",
347
- "subcategory": null,
348
- "tags": [
349
- "core"
350
- ]
351
- },
352
- {
353
- "id": "core-coding",
354
- "name": "coding",
355
- "path": "core/coding.md",
356
- "category": "core",
357
- "subcategory": null,
358
- "tags": [
359
- "core"
360
- ]
361
- },
362
- {
363
- "id": "core-git-branching-strategy",
364
- "name": "git branching strategy",
365
- "path": "core/git-branching-strategy.md",
366
- "category": "core",
367
- "subcategory": null,
368
- "tags": [
369
- "core"
370
- ]
371
- },
372
- {
373
- "id": "core-git",
374
- "name": "git",
375
- "path": "core/git.md",
376
- "category": "core",
377
- "subcategory": null,
378
- "tags": [
379
- "core"
380
- ]
381
- },
382
- {
383
- "id": "core-testing",
384
- "name": "testing",
385
- "path": "core/testing.md",
386
- "category": "core",
387
- "subcategory": null,
388
- "tags": [
389
- "core"
390
- ]
391
- },
392
- {
393
- "id": "data-nosql-blob-storage",
394
- "name": "blob storage",
395
- "path": "data/nosql/blob-storage.md",
396
- "category": "data",
397
- "subcategory": "nosql",
398
- "tags": [
399
- "data",
400
- "nosql"
401
- ]
402
- },
403
- {
404
- "id": "data-nosql-cache-redis",
405
- "name": "redis",
406
- "path": "data/nosql/cache/redis.md",
407
- "category": "data",
408
- "subcategory": "nosql",
409
- "tags": [
410
- "data",
411
- "nosql",
412
- "cache"
413
- ]
414
- },
415
- {
416
- "id": "data-nosql-cosmos-db",
417
- "name": "cosmos db",
418
- "path": "data/nosql/cosmos-db.md",
419
- "category": "data",
420
- "subcategory": "nosql",
421
- "tags": [
422
- "data",
423
- "nosql"
424
- ]
425
- },
426
- {
427
- "id": "data-vector-search-azure-ai-search",
428
- "name": "azure ai search",
429
- "path": "data/vector-search/azure-ai-search.md",
430
- "category": "data",
431
- "subcategory": "vector-search",
432
- "tags": [
433
- "data",
434
- "vector-search"
435
- ]
436
- },
437
- {
438
- "id": "data-vector-search-rag-chunking",
439
- "name": "rag chunking",
440
- "path": "data/vector-search/rag-chunking.md",
441
- "category": "data",
442
- "subcategory": "vector-search",
443
- "tags": [
444
- "data",
445
- "vector-search"
446
- ]
447
- },
448
- {
449
- "id": "frontend-blazor-design-checklist",
450
- "name": "design checklist",
451
- "path": "frontend/blazor/design-checklist.md",
452
- "category": "frontend",
453
- "subcategory": "blazor",
454
- "tags": [
455
- "frontend",
456
- "blazor"
457
- ]
458
- },
459
- {
460
- "id": "frontend-blazor-fluent-ui-setup",
461
- "name": "fluent ui setup",
462
- "path": "frontend/blazor/fluent-ui-setup.md",
463
- "category": "frontend",
464
- "subcategory": "blazor",
465
- "tags": [
466
- "frontend",
467
- "blazor"
468
- ]
469
- },
470
- {
471
- "id": "frontend-blazor-fluent-ui",
472
- "name": "fluent ui",
473
- "path": "frontend/blazor/fluent-ui.md",
474
- "category": "frontend",
475
- "subcategory": "blazor",
476
- "tags": [
477
- "frontend",
478
- "blazor"
479
- ]
480
- },
481
- {
482
- "id": "frontend-blazor-html-conversion",
483
- "name": "html conversion",
484
- "path": "frontend/blazor/html-conversion.md",
485
- "category": "frontend",
486
- "subcategory": "blazor",
487
- "tags": [
488
- "frontend",
489
- "blazor"
490
- ]
491
- },
492
- {
493
- "id": "frontend-blazor-lifecycle",
494
- "name": "lifecycle",
495
- "path": "frontend/blazor/lifecycle.md",
496
- "category": "frontend",
497
- "subcategory": "blazor",
498
- "tags": [
499
- "frontend",
500
- "blazor"
501
- ]
502
- },
503
- {
504
- "id": "frontend-blazor-pitfalls",
505
- "name": "pitfalls",
506
- "path": "frontend/blazor/pitfalls.md",
507
- "category": "frontend",
508
- "subcategory": "blazor",
509
- "tags": [
510
- "frontend",
511
- "blazor"
512
- ]
513
- },
514
- {
515
- "id": "frontend-blazor-state",
516
- "name": "state",
517
- "path": "frontend/blazor/state.md",
518
- "category": "frontend",
519
- "subcategory": "blazor",
520
- "tags": [
521
- "frontend",
522
- "blazor"
523
- ]
524
- },
525
- {
526
- "id": "frontend-design-system-animations",
527
- "name": "animations",
528
- "path": "frontend/design-system/animations.md",
529
- "category": "frontend",
530
- "subcategory": "design-system",
531
- "tags": [
532
- "frontend",
533
- "design-system"
534
- ]
535
- },
536
- {
537
- "id": "frontend-design-system-naming",
538
- "name": "naming",
539
- "path": "frontend/design-system/naming.md",
540
- "category": "frontend",
541
- "subcategory": "design-system",
542
- "tags": [
543
- "frontend",
544
- "design-system"
545
- ]
546
- },
547
- {
548
- "id": "frontend-nextjs-app-router",
549
- "name": "app router",
550
- "path": "frontend/nextjs/app-router.md",
551
- "category": "frontend",
552
- "subcategory": "nextjs",
553
- "tags": [
554
- "frontend",
555
- "nextjs"
556
- ]
557
- },
558
- {
559
- "id": "frontend-nextjs-components",
560
- "name": "components",
561
- "path": "frontend/nextjs/components.md",
562
- "category": "frontend",
563
- "subcategory": "nextjs",
564
- "tags": [
565
- "frontend",
566
- "nextjs"
567
- ]
568
- },
569
- {
570
- "id": "frontend-nextjs-data-fetching",
571
- "name": "data fetching",
572
- "path": "frontend/nextjs/data-fetching.md",
573
- "category": "frontend",
574
- "subcategory": "nextjs",
575
- "tags": [
576
- "frontend",
577
- "nextjs"
578
- ]
579
- },
580
- {
581
- "id": "frontend-nextjs-forms",
582
- "name": "forms",
583
- "path": "frontend/nextjs/forms.md",
584
- "category": "frontend",
585
- "subcategory": "nextjs",
586
- "tags": [
587
- "frontend",
588
- "nextjs"
589
- ]
590
- },
591
- {
592
- "id": "frontend-nextjs-naming-conventions",
593
- "name": "naming conventions",
594
- "path": "frontend/nextjs/naming-conventions.md",
595
- "category": "frontend",
596
- "subcategory": "nextjs",
597
- "tags": [
598
- "frontend",
599
- "nextjs"
600
- ]
601
- },
602
- {
603
- "id": "frontend-nextjs-nextjs-patterns",
604
- "name": "nextjs patterns",
605
- "path": "frontend/nextjs/nextjs-patterns.md",
606
- "category": "frontend",
607
- "subcategory": "nextjs",
608
- "tags": [
609
- "frontend",
610
- "nextjs"
611
- ]
612
- },
613
- {
614
- "id": "frontend-nextjs-project-structure",
615
- "name": "project structure",
616
- "path": "frontend/nextjs/project-structure.md",
617
- "category": "frontend",
618
- "subcategory": "nextjs",
619
- "tags": [
620
- "frontend",
621
- "nextjs"
622
- ]
623
- },
624
- {
625
- "id": "frontend-nextjs-state-management",
626
- "name": "state management",
627
- "path": "frontend/nextjs/state-management.md",
628
- "category": "frontend",
629
- "subcategory": "nextjs",
630
- "tags": [
631
- "frontend",
632
- "nextjs"
633
- ]
634
- },
635
- {
636
- "id": "frontend-nextjs-testing",
637
- "name": "testing",
638
- "path": "frontend/nextjs/testing.md",
639
- "category": "frontend",
640
- "subcategory": "nextjs",
641
- "tags": [
642
- "frontend",
643
- "nextjs"
644
- ]
645
- },
646
- {
647
- "id": "infrastructure-azure-azure",
648
- "name": "azure",
649
- "path": "infrastructure/azure/azure.md",
650
- "category": "infrastructure",
651
- "subcategory": "azure",
652
- "tags": [
653
- "infrastructure",
654
- "azure"
655
- ]
656
- },
657
- {
658
- "id": "infrastructure-azure-bicep-bicep-patterns",
659
- "name": "bicep patterns",
660
- "path": "infrastructure/azure/bicep/bicep-patterns.md",
661
- "category": "infrastructure",
662
- "subcategory": "azure",
663
- "tags": [
664
- "infrastructure",
665
- "azure",
666
- "bicep"
667
- ]
668
- },
669
- {
670
- "id": "infrastructure-azure-devops-azure-devops-setup",
671
- "name": "azure devops setup",
672
- "path": "infrastructure/azure/devops/azure-devops-setup.md",
673
- "category": "infrastructure",
674
- "subcategory": "azure",
675
- "tags": [
676
- "infrastructure",
677
- "azure",
678
- "devops"
679
- ]
680
- },
681
- {
682
- "id": "infrastructure-azure-devops-local-development",
683
- "name": "local development",
684
- "path": "infrastructure/azure/devops/local-development.md",
685
- "category": "infrastructure",
686
- "subcategory": "azure",
687
- "tags": [
688
- "infrastructure",
689
- "azure",
690
- "devops"
691
- ]
692
- },
693
- {
694
- "id": "infrastructure-azure-services-functions",
695
- "name": "functions",
696
- "path": "infrastructure/azure/services/functions.md",
697
- "category": "infrastructure",
698
- "subcategory": "azure",
699
- "tags": [
700
- "infrastructure",
701
- "azure",
702
- "services"
703
- ]
704
- },
705
- {
706
- "id": "infrastructure-azure-services-service-bus",
707
- "name": "service bus",
708
- "path": "infrastructure/azure/services/service-bus.md",
709
- "category": "infrastructure",
710
- "subcategory": "azure",
711
- "tags": [
712
- "infrastructure",
713
- "azure",
714
- "services"
715
- ]
716
- },
717
- {
718
- "id": "infrastructure-azure-services-storage",
719
- "name": "storage",
720
- "path": "infrastructure/azure/services/storage.md",
721
- "category": "infrastructure",
722
- "subcategory": "azure",
723
- "tags": [
724
- "infrastructure",
725
- "azure",
726
- "services"
727
- ]
728
- },
729
- {
730
- "id": "infrastructure-docker-easypanel-deploy",
731
- "name": "easypanel deploy",
732
- "path": "infrastructure/docker/easypanel-deploy.md",
733
- "category": "infrastructure",
734
- "subcategory": "docker",
735
- "tags": [
736
- "infrastructure",
737
- "docker"
738
- ]
739
- },
740
- {
741
- "id": "infrastructure-supabase-mcp-setup",
742
- "name": "mcp setup",
743
- "path": "infrastructure/supabase/mcp-setup.md",
744
- "category": "infrastructure",
745
- "subcategory": "supabase",
746
- "tags": [
747
- "infrastructure",
748
- "supabase"
749
- ]
750
- },
751
- {
752
- "id": "infrastructure-supabase-supabase-auth",
753
- "name": "supabase auth",
754
- "path": "infrastructure/supabase/supabase-auth.md",
755
- "category": "infrastructure",
756
- "subcategory": "supabase",
757
- "tags": [
758
- "infrastructure",
759
- "supabase"
760
- ]
761
- },
762
- {
763
- "id": "infrastructure-supabase-supabase-pgvector",
764
- "name": "supabase pgvector",
765
- "path": "infrastructure/supabase/supabase-pgvector.md",
766
- "category": "infrastructure",
767
- "subcategory": "supabase",
768
- "tags": [
769
- "infrastructure",
770
- "supabase"
771
- ]
772
- },
773
- {
774
- "id": "infrastructure-supabase-supabase-rls",
775
- "name": "supabase rls",
776
- "path": "infrastructure/supabase/supabase-rls.md",
777
- "category": "infrastructure",
778
- "subcategory": "supabase",
779
- "tags": [
780
- "infrastructure",
781
- "supabase"
782
- ]
783
- },
784
- {
785
- "id": "infrastructure-supabase-supabase-storage",
786
- "name": "supabase storage",
787
- "path": "infrastructure/supabase/supabase-storage.md",
788
- "category": "infrastructure",
789
- "subcategory": "supabase",
790
- "tags": [
791
- "infrastructure",
792
- "supabase"
793
- ]
794
- },
795
- {
796
- "id": "integration-api-graphql",
797
- "name": "graphql",
798
- "path": "integration/api/graphql.md",
799
- "category": "integration",
800
- "subcategory": "api",
801
- "tags": [
802
- "integration",
803
- "api"
804
- ]
805
- },
806
- {
807
- "id": "integration-api-grpc",
808
- "name": "grpc",
809
- "path": "integration/api/grpc.md",
810
- "category": "integration",
811
- "subcategory": "api",
812
- "tags": [
813
- "integration",
814
- "api"
815
- ]
816
- },
817
- {
818
- "id": "integration-api-rest-design",
819
- "name": "rest design",
820
- "path": "integration/api/rest-design.md",
821
- "category": "integration",
822
- "subcategory": "api",
823
- "tags": [
824
- "integration",
825
- "api"
826
- ]
827
- },
828
- {
829
- "id": "integration-event-driven-cqrs",
830
- "name": "cqrs",
831
- "path": "integration/event-driven/cqrs.md",
832
- "category": "integration",
833
- "subcategory": "event-driven",
834
- "tags": [
835
- "integration",
836
- "event-driven"
837
- ]
838
- },
839
- {
840
- "id": "integration-event-driven-event-sourcing",
841
- "name": "event sourcing",
842
- "path": "integration/event-driven/event-sourcing.md",
843
- "category": "integration",
844
- "subcategory": "event-driven",
845
- "tags": [
846
- "integration",
847
- "event-driven"
848
- ]
849
- },
850
- {
851
- "id": "integration-event-driven-service-bus",
852
- "name": "service bus",
853
- "path": "integration/event-driven/service-bus.md",
854
- "category": "integration",
855
- "subcategory": "event-driven",
856
- "tags": [
857
- "integration",
858
- "event-driven"
859
- ]
860
- },
861
- {
862
- "id": "integration-mcp-mcp-tools",
863
- "name": "mcp tools",
864
- "path": "integration/mcp/mcp-tools.md",
865
- "category": "integration",
866
- "subcategory": "mcp",
867
- "tags": [
868
- "integration",
869
- "mcp"
870
- ]
871
- },
872
- {
873
- "id": "observability-logging",
874
- "name": "logging",
875
- "path": "observability/logging.md",
876
- "category": "observability",
877
- "subcategory": null,
878
- "tags": [
879
- "observability"
880
- ]
881
- },
882
- {
883
- "id": "observability-metrics",
884
- "name": "metrics",
885
- "path": "observability/metrics.md",
886
- "category": "observability",
887
- "subcategory": null,
888
- "tags": [
889
- "observability"
890
- ]
891
- },
892
- {
893
- "id": "observability-monitoring",
894
- "name": "monitoring",
895
- "path": "observability/monitoring.md",
896
- "category": "observability",
897
- "subcategory": null,
898
- "tags": [
899
- "observability"
900
- ]
901
- },
902
- {
903
- "id": "observability-tracing",
904
- "name": "tracing",
905
- "path": "observability/tracing.md",
906
- "category": "observability",
907
- "subcategory": null,
908
- "tags": [
909
- "observability"
910
- ]
911
- },
912
- {
913
- "id": "workflows-parallel-execution",
914
- "name": "parallel execution",
915
- "path": "workflows/parallel-execution.md",
916
- "category": "workflows",
917
- "subcategory": null,
918
- "tags": [
919
- "workflows"
920
- ]
921
- },
922
- {
923
- "id": "workflows-thread-management",
924
- "name": "thread management",
925
- "path": "workflows/thread-management.md",
926
- "category": "workflows",
927
- "subcategory": null,
928
- "tags": [
929
- "workflows"
930
- ]
931
- }
932
- ]
933
- }
1
+ {
2
+ "version": "1.0.0",
3
+ "standards": [
4
+ {
5
+ "id": "ai-agents-blazor-ui",
6
+ "name": "blazor ui",
7
+ "path": "ai-agents/blazor-ui.md",
8
+ "category": "ai-agents",
9
+ "subcategory": null,
10
+ "tags": [
11
+ "ai-agents"
12
+ ]
13
+ },
14
+ {
15
+ "id": "ai-agents-production",
16
+ "name": "production",
17
+ "path": "ai-agents/production.md",
18
+ "category": "ai-agents",
19
+ "subcategory": null,
20
+ "tags": [
21
+ "ai-agents"
22
+ ]
23
+ },
24
+ {
25
+ "id": "ai-agents-setup",
26
+ "name": "setup",
27
+ "path": "ai-agents/setup.md",
28
+ "category": "ai-agents",
29
+ "subcategory": null,
30
+ "tags": [
31
+ "ai-agents"
32
+ ]
33
+ },
34
+ {
35
+ "id": "ai-agents-team-orchestration",
36
+ "name": "team orchestration",
37
+ "path": "ai-agents/team-orchestration.md",
38
+ "category": "ai-agents",
39
+ "subcategory": null,
40
+ "tags": [
41
+ "ai-agents"
42
+ ]
43
+ },
44
+ {
45
+ "id": "ai-agents-workflows",
46
+ "name": "workflows",
47
+ "path": "ai-agents/workflows.md",
48
+ "category": "ai-agents",
49
+ "subcategory": null,
50
+ "tags": [
51
+ "ai-agents"
52
+ ]
53
+ },
54
+ {
55
+ "id": "architecture-ddd-aggregates",
56
+ "name": "aggregates",
57
+ "path": "architecture/ddd/aggregates.md",
58
+ "category": "architecture",
59
+ "subcategory": "ddd",
60
+ "tags": [
61
+ "architecture",
62
+ "ddd"
63
+ ]
64
+ },
65
+ {
66
+ "id": "architecture-ddd-bounded-contexts",
67
+ "name": "bounded contexts",
68
+ "path": "architecture/ddd/bounded-contexts.md",
69
+ "category": "architecture",
70
+ "subcategory": "ddd",
71
+ "tags": [
72
+ "architecture",
73
+ "ddd"
74
+ ]
75
+ },
76
+ {
77
+ "id": "architecture-ddd-complexity-levels",
78
+ "name": "complexity levels",
79
+ "path": "architecture/ddd/complexity-levels.md",
80
+ "category": "architecture",
81
+ "subcategory": "ddd",
82
+ "tags": [
83
+ "architecture",
84
+ "ddd"
85
+ ]
86
+ },
87
+ {
88
+ "id": "architecture-ddd-entities",
89
+ "name": "entities",
90
+ "path": "architecture/ddd/entities.md",
91
+ "category": "architecture",
92
+ "subcategory": "ddd",
93
+ "tags": [
94
+ "architecture",
95
+ "ddd"
96
+ ]
97
+ },
98
+ {
99
+ "id": "architecture-ddd-ubiquitous-language",
100
+ "name": "ubiquitous language",
101
+ "path": "architecture/ddd/ubiquitous-language.md",
102
+ "category": "architecture",
103
+ "subcategory": "ddd",
104
+ "tags": [
105
+ "architecture",
106
+ "ddd"
107
+ ]
108
+ },
109
+ {
110
+ "id": "architecture-ddd-value-objects",
111
+ "name": "value objects",
112
+ "path": "architecture/ddd/value-objects.md",
113
+ "category": "architecture",
114
+ "subcategory": "ddd",
115
+ "tags": [
116
+ "architecture",
117
+ "ddd"
118
+ ]
119
+ },
120
+ {
121
+ "id": "architecture-vertical-slice-vertical-slice",
122
+ "name": "vertical slice",
123
+ "path": "architecture/vertical-slice/vertical-slice.md",
124
+ "category": "architecture",
125
+ "subcategory": "vertical-slice",
126
+ "tags": [
127
+ "architecture",
128
+ "vertical-slice"
129
+ ]
130
+ },
131
+ {
132
+ "id": "backend-api-minimal-api",
133
+ "name": "minimal api",
134
+ "path": "backend/api/minimal-api.md",
135
+ "category": "backend",
136
+ "subcategory": "api",
137
+ "tags": [
138
+ "backend",
139
+ "api"
140
+ ]
141
+ },
142
+ {
143
+ "id": "backend-api-rest",
144
+ "name": "rest",
145
+ "path": "backend/api/rest.md",
146
+ "category": "backend",
147
+ "subcategory": "api",
148
+ "tags": [
149
+ "backend",
150
+ "api"
151
+ ]
152
+ },
153
+ {
154
+ "id": "backend-api-validation",
155
+ "name": "validation",
156
+ "path": "backend/api/validation.md",
157
+ "category": "backend",
158
+ "subcategory": "api",
159
+ "tags": [
160
+ "backend",
161
+ "api"
162
+ ]
163
+ },
164
+ {
165
+ "id": "backend-authentication-passkeys",
166
+ "name": "passkeys",
167
+ "path": "backend/authentication/passkeys.md",
168
+ "category": "backend",
169
+ "subcategory": "authentication",
170
+ "tags": [
171
+ "backend",
172
+ "authentication"
173
+ ]
174
+ },
175
+ {
176
+ "id": "backend-database-ef-core",
177
+ "name": "ef core",
178
+ "path": "backend/database/ef-core.md",
179
+ "category": "backend",
180
+ "subcategory": "database",
181
+ "tags": [
182
+ "backend",
183
+ "database"
184
+ ]
185
+ },
186
+ {
187
+ "id": "backend-database-migrations",
188
+ "name": "migrations",
189
+ "path": "backend/database/migrations.md",
190
+ "category": "backend",
191
+ "subcategory": "database",
192
+ "tags": [
193
+ "backend",
194
+ "database"
195
+ ]
196
+ },
197
+ {
198
+ "id": "backend-database-postgresql-database",
199
+ "name": "database",
200
+ "path": "backend/database/postgresql/database.md",
201
+ "category": "backend",
202
+ "subcategory": "database",
203
+ "tags": [
204
+ "backend",
205
+ "database",
206
+ "postgresql"
207
+ ]
208
+ },
209
+ {
210
+ "id": "backend-database-repository-patterns",
211
+ "name": "repository patterns",
212
+ "path": "backend/database/repository-patterns.md",
213
+ "category": "backend",
214
+ "subcategory": "database",
215
+ "tags": [
216
+ "backend",
217
+ "database"
218
+ ]
219
+ },
220
+ {
221
+ "id": "backend-database-vector-search-rag",
222
+ "name": "vector search rag",
223
+ "path": "backend/database/vector-search-rag.md",
224
+ "category": "backend",
225
+ "subcategory": "database",
226
+ "tags": [
227
+ "backend",
228
+ "database"
229
+ ]
230
+ },
231
+ {
232
+ "id": "backend-dotnet-async",
233
+ "name": "async",
234
+ "path": "backend/dotnet/async.md",
235
+ "category": "backend",
236
+ "subcategory": "dotnet",
237
+ "tags": [
238
+ "backend",
239
+ "dotnet"
240
+ ]
241
+ },
242
+ {
243
+ "id": "backend-dotnet-core",
244
+ "name": "core",
245
+ "path": "backend/dotnet/core.md",
246
+ "category": "backend",
247
+ "subcategory": "dotnet",
248
+ "tags": [
249
+ "backend",
250
+ "dotnet"
251
+ ]
252
+ },
253
+ {
254
+ "id": "backend-dotnet-di",
255
+ "name": "di",
256
+ "path": "backend/dotnet/di.md",
257
+ "category": "backend",
258
+ "subcategory": "dotnet",
259
+ "tags": [
260
+ "backend",
261
+ "dotnet"
262
+ ]
263
+ },
264
+ {
265
+ "id": "backend-dotnet-program-cs-checklist",
266
+ "name": "program cs checklist",
267
+ "path": "backend/dotnet/program-cs-checklist.md",
268
+ "category": "backend",
269
+ "subcategory": "dotnet",
270
+ "tags": [
271
+ "backend",
272
+ "dotnet"
273
+ ]
274
+ },
275
+ {
276
+ "id": "backend-integrations-asaas-asaas-api",
277
+ "name": "asaas api",
278
+ "path": "backend/integrations/asaas/asaas-api.md",
279
+ "category": "backend",
280
+ "subcategory": "integrations",
281
+ "tags": [
282
+ "backend",
283
+ "integrations",
284
+ "asaas"
285
+ ]
286
+ },
287
+ {
288
+ "id": "backend-integrations-clerk-clerk-auth",
289
+ "name": "clerk auth",
290
+ "path": "backend/integrations/clerk/clerk-auth.md",
291
+ "category": "backend",
292
+ "subcategory": "integrations",
293
+ "tags": [
294
+ "backend",
295
+ "integrations",
296
+ "clerk"
297
+ ]
298
+ },
299
+ {
300
+ "id": "backend-integrations-hangfire-hangfire-jobs",
301
+ "name": "hangfire jobs",
302
+ "path": "backend/integrations/hangfire/hangfire-jobs.md",
303
+ "category": "backend",
304
+ "subcategory": "integrations",
305
+ "tags": [
306
+ "backend",
307
+ "integrations",
308
+ "hangfire"
309
+ ]
310
+ },
311
+ {
312
+ "id": "backend-integrations-resend-resend-email",
313
+ "name": "resend email",
314
+ "path": "backend/integrations/resend/resend-email.md",
315
+ "category": "backend",
316
+ "subcategory": "integrations",
317
+ "tags": [
318
+ "backend",
319
+ "integrations",
320
+ "resend"
321
+ ]
322
+ },
323
+ {
324
+ "id": "context-analytics",
325
+ "name": "analytics",
326
+ "path": "context/analytics.md",
327
+ "category": "context",
328
+ "subcategory": null,
329
+ "tags": [
330
+ "context"
331
+ ]
332
+ },
333
+ {
334
+ "id": "context-bundles",
335
+ "name": "bundles",
336
+ "path": "context/bundles.md",
337
+ "category": "context",
338
+ "subcategory": null,
339
+ "tags": [
340
+ "context"
341
+ ]
342
+ },
343
+ {
344
+ "id": "context-priming",
345
+ "name": "priming",
346
+ "path": "context/priming.md",
347
+ "category": "context",
348
+ "subcategory": null,
349
+ "tags": [
350
+ "context"
351
+ ]
352
+ },
353
+ {
354
+ "id": "core-architecture",
355
+ "name": "architecture",
356
+ "path": "core/architecture.md",
357
+ "category": "core",
358
+ "subcategory": null,
359
+ "tags": [
360
+ "core"
361
+ ]
362
+ },
363
+ {
364
+ "id": "core-coding",
365
+ "name": "coding",
366
+ "path": "core/coding.md",
367
+ "category": "core",
368
+ "subcategory": null,
369
+ "tags": [
370
+ "core"
371
+ ]
372
+ },
373
+ {
374
+ "id": "core-git-branching-strategy",
375
+ "name": "git branching strategy",
376
+ "path": "core/git-branching-strategy.md",
377
+ "category": "core",
378
+ "subcategory": null,
379
+ "tags": [
380
+ "core"
381
+ ]
382
+ },
383
+ {
384
+ "id": "core-git",
385
+ "name": "git",
386
+ "path": "core/git.md",
387
+ "category": "core",
388
+ "subcategory": null,
389
+ "tags": [
390
+ "core"
391
+ ]
392
+ },
393
+ {
394
+ "id": "core-testing",
395
+ "name": "testing",
396
+ "path": "core/testing.md",
397
+ "category": "core",
398
+ "subcategory": null,
399
+ "tags": [
400
+ "core"
401
+ ]
402
+ },
403
+ {
404
+ "id": "data-nosql-blob-storage",
405
+ "name": "blob storage",
406
+ "path": "data/nosql/blob-storage.md",
407
+ "category": "data",
408
+ "subcategory": "nosql",
409
+ "tags": [
410
+ "data",
411
+ "nosql"
412
+ ]
413
+ },
414
+ {
415
+ "id": "data-nosql-cache-redis",
416
+ "name": "redis",
417
+ "path": "data/nosql/cache/redis.md",
418
+ "category": "data",
419
+ "subcategory": "nosql",
420
+ "tags": [
421
+ "data",
422
+ "nosql",
423
+ "cache"
424
+ ]
425
+ },
426
+ {
427
+ "id": "data-nosql-cosmos-db",
428
+ "name": "cosmos db",
429
+ "path": "data/nosql/cosmos-db.md",
430
+ "category": "data",
431
+ "subcategory": "nosql",
432
+ "tags": [
433
+ "data",
434
+ "nosql"
435
+ ]
436
+ },
437
+ {
438
+ "id": "data-vector-search-azure-ai-search",
439
+ "name": "azure ai search",
440
+ "path": "data/vector-search/azure-ai-search.md",
441
+ "category": "data",
442
+ "subcategory": "vector-search",
443
+ "tags": [
444
+ "data",
445
+ "vector-search"
446
+ ]
447
+ },
448
+ {
449
+ "id": "data-vector-search-rag-chunking",
450
+ "name": "rag chunking",
451
+ "path": "data/vector-search/rag-chunking.md",
452
+ "category": "data",
453
+ "subcategory": "vector-search",
454
+ "tags": [
455
+ "data",
456
+ "vector-search"
457
+ ]
458
+ },
459
+ {
460
+ "id": "frontend-blazor-design-checklist",
461
+ "name": "design checklist",
462
+ "path": "frontend/blazor/design-checklist.md",
463
+ "category": "frontend",
464
+ "subcategory": "blazor",
465
+ "tags": [
466
+ "frontend",
467
+ "blazor"
468
+ ]
469
+ },
470
+ {
471
+ "id": "frontend-blazor-fluent-ui-setup",
472
+ "name": "fluent ui setup",
473
+ "path": "frontend/blazor/fluent-ui-setup.md",
474
+ "category": "frontend",
475
+ "subcategory": "blazor",
476
+ "tags": [
477
+ "frontend",
478
+ "blazor"
479
+ ]
480
+ },
481
+ {
482
+ "id": "frontend-blazor-fluent-ui",
483
+ "name": "fluent ui",
484
+ "path": "frontend/blazor/fluent-ui.md",
485
+ "category": "frontend",
486
+ "subcategory": "blazor",
487
+ "tags": [
488
+ "frontend",
489
+ "blazor"
490
+ ]
491
+ },
492
+ {
493
+ "id": "frontend-blazor-html-conversion",
494
+ "name": "html conversion",
495
+ "path": "frontend/blazor/html-conversion.md",
496
+ "category": "frontend",
497
+ "subcategory": "blazor",
498
+ "tags": [
499
+ "frontend",
500
+ "blazor"
501
+ ]
502
+ },
503
+ {
504
+ "id": "frontend-blazor-lifecycle",
505
+ "name": "lifecycle",
506
+ "path": "frontend/blazor/lifecycle.md",
507
+ "category": "frontend",
508
+ "subcategory": "blazor",
509
+ "tags": [
510
+ "frontend",
511
+ "blazor"
512
+ ]
513
+ },
514
+ {
515
+ "id": "frontend-blazor-pitfalls",
516
+ "name": "pitfalls",
517
+ "path": "frontend/blazor/pitfalls.md",
518
+ "category": "frontend",
519
+ "subcategory": "blazor",
520
+ "tags": [
521
+ "frontend",
522
+ "blazor"
523
+ ]
524
+ },
525
+ {
526
+ "id": "frontend-blazor-state",
527
+ "name": "state",
528
+ "path": "frontend/blazor/state.md",
529
+ "category": "frontend",
530
+ "subcategory": "blazor",
531
+ "tags": [
532
+ "frontend",
533
+ "blazor"
534
+ ]
535
+ },
536
+ {
537
+ "id": "frontend-design-system-animations",
538
+ "name": "animations",
539
+ "path": "frontend/design-system/animations.md",
540
+ "category": "frontend",
541
+ "subcategory": "design-system",
542
+ "tags": [
543
+ "frontend",
544
+ "design-system"
545
+ ]
546
+ },
547
+ {
548
+ "id": "frontend-design-system-naming",
549
+ "name": "naming",
550
+ "path": "frontend/design-system/naming.md",
551
+ "category": "frontend",
552
+ "subcategory": "design-system",
553
+ "tags": [
554
+ "frontend",
555
+ "design-system"
556
+ ]
557
+ },
558
+ {
559
+ "id": "frontend-nextjs-app-router",
560
+ "name": "app router",
561
+ "path": "frontend/nextjs/app-router.md",
562
+ "category": "frontend",
563
+ "subcategory": "nextjs",
564
+ "tags": [
565
+ "frontend",
566
+ "nextjs"
567
+ ]
568
+ },
569
+ {
570
+ "id": "frontend-nextjs-components",
571
+ "name": "components",
572
+ "path": "frontend/nextjs/components.md",
573
+ "category": "frontend",
574
+ "subcategory": "nextjs",
575
+ "tags": [
576
+ "frontend",
577
+ "nextjs"
578
+ ]
579
+ },
580
+ {
581
+ "id": "frontend-nextjs-data-fetching",
582
+ "name": "data fetching",
583
+ "path": "frontend/nextjs/data-fetching.md",
584
+ "category": "frontend",
585
+ "subcategory": "nextjs",
586
+ "tags": [
587
+ "frontend",
588
+ "nextjs"
589
+ ]
590
+ },
591
+ {
592
+ "id": "frontend-nextjs-forms",
593
+ "name": "forms",
594
+ "path": "frontend/nextjs/forms.md",
595
+ "category": "frontend",
596
+ "subcategory": "nextjs",
597
+ "tags": [
598
+ "frontend",
599
+ "nextjs"
600
+ ]
601
+ },
602
+ {
603
+ "id": "frontend-nextjs-naming-conventions",
604
+ "name": "naming conventions",
605
+ "path": "frontend/nextjs/naming-conventions.md",
606
+ "category": "frontend",
607
+ "subcategory": "nextjs",
608
+ "tags": [
609
+ "frontend",
610
+ "nextjs"
611
+ ]
612
+ },
613
+ {
614
+ "id": "frontend-nextjs-nextjs-patterns",
615
+ "name": "nextjs patterns",
616
+ "path": "frontend/nextjs/nextjs-patterns.md",
617
+ "category": "frontend",
618
+ "subcategory": "nextjs",
619
+ "tags": [
620
+ "frontend",
621
+ "nextjs"
622
+ ]
623
+ },
624
+ {
625
+ "id": "frontend-nextjs-project-structure",
626
+ "name": "project structure",
627
+ "path": "frontend/nextjs/project-structure.md",
628
+ "category": "frontend",
629
+ "subcategory": "nextjs",
630
+ "tags": [
631
+ "frontend",
632
+ "nextjs"
633
+ ]
634
+ },
635
+ {
636
+ "id": "frontend-nextjs-state-management",
637
+ "name": "state management",
638
+ "path": "frontend/nextjs/state-management.md",
639
+ "category": "frontend",
640
+ "subcategory": "nextjs",
641
+ "tags": [
642
+ "frontend",
643
+ "nextjs"
644
+ ]
645
+ },
646
+ {
647
+ "id": "frontend-nextjs-testing",
648
+ "name": "testing",
649
+ "path": "frontend/nextjs/testing.md",
650
+ "category": "frontend",
651
+ "subcategory": "nextjs",
652
+ "tags": [
653
+ "frontend",
654
+ "nextjs"
655
+ ]
656
+ },
657
+ {
658
+ "id": "infrastructure-azure-azure",
659
+ "name": "azure",
660
+ "path": "infrastructure/azure/azure.md",
661
+ "category": "infrastructure",
662
+ "subcategory": "azure",
663
+ "tags": [
664
+ "infrastructure",
665
+ "azure"
666
+ ]
667
+ },
668
+ {
669
+ "id": "infrastructure-azure-bicep-bicep-patterns",
670
+ "name": "bicep patterns",
671
+ "path": "infrastructure/azure/bicep/bicep-patterns.md",
672
+ "category": "infrastructure",
673
+ "subcategory": "azure",
674
+ "tags": [
675
+ "infrastructure",
676
+ "azure",
677
+ "bicep"
678
+ ]
679
+ },
680
+ {
681
+ "id": "infrastructure-azure-devops-azure-devops-setup",
682
+ "name": "azure devops setup",
683
+ "path": "infrastructure/azure/devops/azure-devops-setup.md",
684
+ "category": "infrastructure",
685
+ "subcategory": "azure",
686
+ "tags": [
687
+ "infrastructure",
688
+ "azure",
689
+ "devops"
690
+ ]
691
+ },
692
+ {
693
+ "id": "infrastructure-azure-devops-local-development",
694
+ "name": "local development",
695
+ "path": "infrastructure/azure/devops/local-development.md",
696
+ "category": "infrastructure",
697
+ "subcategory": "azure",
698
+ "tags": [
699
+ "infrastructure",
700
+ "azure",
701
+ "devops"
702
+ ]
703
+ },
704
+ {
705
+ "id": "infrastructure-azure-services-functions",
706
+ "name": "functions",
707
+ "path": "infrastructure/azure/services/functions.md",
708
+ "category": "infrastructure",
709
+ "subcategory": "azure",
710
+ "tags": [
711
+ "infrastructure",
712
+ "azure",
713
+ "services"
714
+ ]
715
+ },
716
+ {
717
+ "id": "infrastructure-azure-services-service-bus",
718
+ "name": "service bus",
719
+ "path": "infrastructure/azure/services/service-bus.md",
720
+ "category": "infrastructure",
721
+ "subcategory": "azure",
722
+ "tags": [
723
+ "infrastructure",
724
+ "azure",
725
+ "services"
726
+ ]
727
+ },
728
+ {
729
+ "id": "infrastructure-azure-services-storage",
730
+ "name": "storage",
731
+ "path": "infrastructure/azure/services/storage.md",
732
+ "category": "infrastructure",
733
+ "subcategory": "azure",
734
+ "tags": [
735
+ "infrastructure",
736
+ "azure",
737
+ "services"
738
+ ]
739
+ },
740
+ {
741
+ "id": "infrastructure-docker-easypanel-deploy",
742
+ "name": "easypanel deploy",
743
+ "path": "infrastructure/docker/easypanel-deploy.md",
744
+ "category": "infrastructure",
745
+ "subcategory": "docker",
746
+ "tags": [
747
+ "infrastructure",
748
+ "docker"
749
+ ]
750
+ },
751
+ {
752
+ "id": "infrastructure-supabase-mcp-setup",
753
+ "name": "mcp setup",
754
+ "path": "infrastructure/supabase/mcp-setup.md",
755
+ "category": "infrastructure",
756
+ "subcategory": "supabase",
757
+ "tags": [
758
+ "infrastructure",
759
+ "supabase"
760
+ ]
761
+ },
762
+ {
763
+ "id": "infrastructure-supabase-supabase-auth",
764
+ "name": "supabase auth",
765
+ "path": "infrastructure/supabase/supabase-auth.md",
766
+ "category": "infrastructure",
767
+ "subcategory": "supabase",
768
+ "tags": [
769
+ "infrastructure",
770
+ "supabase"
771
+ ]
772
+ },
773
+ {
774
+ "id": "infrastructure-supabase-supabase-pgvector",
775
+ "name": "supabase pgvector",
776
+ "path": "infrastructure/supabase/supabase-pgvector.md",
777
+ "category": "infrastructure",
778
+ "subcategory": "supabase",
779
+ "tags": [
780
+ "infrastructure",
781
+ "supabase"
782
+ ]
783
+ },
784
+ {
785
+ "id": "infrastructure-supabase-supabase-rls",
786
+ "name": "supabase rls",
787
+ "path": "infrastructure/supabase/supabase-rls.md",
788
+ "category": "infrastructure",
789
+ "subcategory": "supabase",
790
+ "tags": [
791
+ "infrastructure",
792
+ "supabase"
793
+ ]
794
+ },
795
+ {
796
+ "id": "infrastructure-supabase-supabase-storage",
797
+ "name": "supabase storage",
798
+ "path": "infrastructure/supabase/supabase-storage.md",
799
+ "category": "infrastructure",
800
+ "subcategory": "supabase",
801
+ "tags": [
802
+ "infrastructure",
803
+ "supabase"
804
+ ]
805
+ },
806
+ {
807
+ "id": "integration-api-graphql",
808
+ "name": "graphql",
809
+ "path": "integration/api/graphql.md",
810
+ "category": "integration",
811
+ "subcategory": "api",
812
+ "tags": [
813
+ "integration",
814
+ "api"
815
+ ]
816
+ },
817
+ {
818
+ "id": "integration-api-grpc",
819
+ "name": "grpc",
820
+ "path": "integration/api/grpc.md",
821
+ "category": "integration",
822
+ "subcategory": "api",
823
+ "tags": [
824
+ "integration",
825
+ "api"
826
+ ]
827
+ },
828
+ {
829
+ "id": "integration-api-rest-design",
830
+ "name": "rest design",
831
+ "path": "integration/api/rest-design.md",
832
+ "category": "integration",
833
+ "subcategory": "api",
834
+ "tags": [
835
+ "integration",
836
+ "api"
837
+ ]
838
+ },
839
+ {
840
+ "id": "integration-event-driven-cqrs",
841
+ "name": "cqrs",
842
+ "path": "integration/event-driven/cqrs.md",
843
+ "category": "integration",
844
+ "subcategory": "event-driven",
845
+ "tags": [
846
+ "integration",
847
+ "event-driven"
848
+ ]
849
+ },
850
+ {
851
+ "id": "integration-event-driven-event-sourcing",
852
+ "name": "event sourcing",
853
+ "path": "integration/event-driven/event-sourcing.md",
854
+ "category": "integration",
855
+ "subcategory": "event-driven",
856
+ "tags": [
857
+ "integration",
858
+ "event-driven"
859
+ ]
860
+ },
861
+ {
862
+ "id": "integration-event-driven-service-bus",
863
+ "name": "service bus",
864
+ "path": "integration/event-driven/service-bus.md",
865
+ "category": "integration",
866
+ "subcategory": "event-driven",
867
+ "tags": [
868
+ "integration",
869
+ "event-driven"
870
+ ]
871
+ },
872
+ {
873
+ "id": "integration-mcp-mcp-tools",
874
+ "name": "mcp tools",
875
+ "path": "integration/mcp/mcp-tools.md",
876
+ "category": "integration",
877
+ "subcategory": "mcp",
878
+ "tags": [
879
+ "integration",
880
+ "mcp"
881
+ ]
882
+ },
883
+ {
884
+ "id": "observability-logging",
885
+ "name": "logging",
886
+ "path": "observability/logging.md",
887
+ "category": "observability",
888
+ "subcategory": null,
889
+ "tags": [
890
+ "observability"
891
+ ]
892
+ },
893
+ {
894
+ "id": "observability-metrics",
895
+ "name": "metrics",
896
+ "path": "observability/metrics.md",
897
+ "category": "observability",
898
+ "subcategory": null,
899
+ "tags": [
900
+ "observability"
901
+ ]
902
+ },
903
+ {
904
+ "id": "observability-monitoring",
905
+ "name": "monitoring",
906
+ "path": "observability/monitoring.md",
907
+ "category": "observability",
908
+ "subcategory": null,
909
+ "tags": [
910
+ "observability"
911
+ ]
912
+ },
913
+ {
914
+ "id": "observability-tracing",
915
+ "name": "tracing",
916
+ "path": "observability/tracing.md",
917
+ "category": "observability",
918
+ "subcategory": null,
919
+ "tags": [
920
+ "observability"
921
+ ]
922
+ },
923
+ {
924
+ "id": "workflows-parallel-execution",
925
+ "name": "parallel execution",
926
+ "path": "workflows/parallel-execution.md",
927
+ "category": "workflows",
928
+ "subcategory": null,
929
+ "tags": [
930
+ "workflows"
931
+ ]
932
+ },
933
+ {
934
+ "id": "workflows-thread-management",
935
+ "name": "thread management",
936
+ "path": "workflows/thread-management.md",
937
+ "category": "workflows",
938
+ "subcategory": null,
939
+ "tags": [
940
+ "workflows"
941
+ ]
942
+ }
943
+ ]
944
+ }