@agents-inc/cli 0.79.0 → 0.80.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 (166) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +2 -2
  3. package/dist/{chunk-XA7WF3BI.js → chunk-3C6AXGR7.js} +3 -3
  4. package/dist/{chunk-VDVLM3KB.js → chunk-3HWFTE3S.js} +8 -4
  5. package/dist/chunk-3HWFTE3S.js.map +1 -0
  6. package/dist/{chunk-7JQIMEUX.js → chunk-3SCIYMRK.js} +3 -3
  7. package/dist/{chunk-OOWNDQCG.js → chunk-3WDZKBCE.js} +6 -4
  8. package/dist/chunk-3WDZKBCE.js.map +1 -0
  9. package/dist/{chunk-FSK4TQX7.js → chunk-4R6I6A3U.js} +3225 -134
  10. package/dist/chunk-4R6I6A3U.js.map +1 -0
  11. package/dist/{chunk-MUCQ27HV.js → chunk-4R72372U.js} +2 -2
  12. package/dist/{chunk-Q755X6QF.js → chunk-4VFBRV76.js} +4 -4
  13. package/dist/{chunk-F4IZ3UAS.js → chunk-55AZIEK6.js} +4 -4
  14. package/dist/{chunk-XYPAOBBV.js → chunk-633YIZOU.js} +2 -2
  15. package/dist/{chunk-N2XGUAJU.js → chunk-6YJXWQCI.js} +2 -12
  16. package/dist/chunk-6YJXWQCI.js.map +1 -0
  17. package/dist/{chunk-32HX6UYI.js → chunk-BN73X3JN.js} +59 -2
  18. package/dist/chunk-BN73X3JN.js.map +1 -0
  19. package/dist/{chunk-B4C2S5LP.js → chunk-BORVYGIX.js} +17 -15
  20. package/dist/chunk-BORVYGIX.js.map +1 -0
  21. package/dist/{chunk-YFHVP3VA.js → chunk-F4VG5XWZ.js} +3 -3
  22. package/dist/{chunk-NKLNT7N7.js → chunk-H3NQGJMB.js} +2 -2
  23. package/dist/{chunk-QD3GQ2CH.js → chunk-II3ISVCE.js} +6 -5
  24. package/dist/chunk-II3ISVCE.js.map +1 -0
  25. package/dist/{chunk-FUWUCKES.js → chunk-LO4X32JC.js} +2 -2
  26. package/dist/{chunk-D4T3HHE7.js → chunk-MNJAF4K2.js} +2 -2
  27. package/dist/{chunk-KVRR4PEJ.js → chunk-NJCU7OC2.js} +5 -5
  28. package/dist/{chunk-U2KFFRRX.js → chunk-NZAJTLEK.js} +2 -2
  29. package/dist/{chunk-HANGA633.js → chunk-OBTC2FD7.js} +5 -5
  30. package/dist/chunk-OBTC2FD7.js.map +1 -0
  31. package/dist/{chunk-EO6KJI5D.js → chunk-PPBUSAKG.js} +913 -33
  32. package/dist/chunk-PPBUSAKG.js.map +1 -0
  33. package/dist/{chunk-OTMIGYBB.js → chunk-RTHAMTDE.js} +6 -6
  34. package/dist/{chunk-KQDGLEBF.js → chunk-TJXBRYM4.js} +10 -10
  35. package/dist/chunk-TJXBRYM4.js.map +1 -0
  36. package/dist/{chunk-7LBYURQR.js → chunk-TQ363UUH.js} +2 -2
  37. package/dist/{chunk-N34D3ROY.js → chunk-TXFQBYOX.js} +8 -5
  38. package/dist/chunk-TXFQBYOX.js.map +1 -0
  39. package/dist/{chunk-IFCASC6R.js → chunk-TZY7WNWO.js} +2 -2
  40. package/dist/{chunk-SJNUTUSJ.js → chunk-W6PIVGMH.js} +5 -5
  41. package/dist/{chunk-W46L2PXK.js → chunk-WZGROC5L.js} +2 -2
  42. package/dist/{chunk-OIHZ2YH3.js → chunk-XFL7EIM7.js} +7 -7
  43. package/dist/{chunk-7HGMFJ4Y.js → chunk-YDB5KXMG.js} +3 -3
  44. package/dist/commands/build/marketplace.js +4 -4
  45. package/dist/commands/build/plugins.js +8 -8
  46. package/dist/commands/build/stack.js +8 -8
  47. package/dist/commands/compile.js +8 -8
  48. package/dist/commands/config/index.js +8 -8
  49. package/dist/commands/config/path.js +7 -7
  50. package/dist/commands/config/show.js +8 -8
  51. package/dist/commands/diff.js +7 -7
  52. package/dist/commands/doctor.js +7 -7
  53. package/dist/commands/edit.js +23 -23
  54. package/dist/commands/eject.js +7 -7
  55. package/dist/commands/import/skill.js +7 -7
  56. package/dist/commands/info.js +7 -7
  57. package/dist/commands/init.js +23 -23
  58. package/dist/commands/list.js +7 -7
  59. package/dist/commands/new/agent.js +8 -8
  60. package/dist/commands/new/marketplace.js +9 -9
  61. package/dist/commands/new/skill.js +8 -8
  62. package/dist/commands/outdated.js +7 -7
  63. package/dist/commands/search.js +7 -7
  64. package/dist/commands/uninstall.js +7 -7
  65. package/dist/commands/update.js +8 -8
  66. package/dist/commands/validate.js +7 -7
  67. package/dist/components/wizard/category-grid.js +2 -2
  68. package/dist/components/wizard/category-grid.test.js +11 -11
  69. package/dist/components/wizard/domain-selection.js +9 -9
  70. package/dist/components/wizard/source-grid.js +2 -2
  71. package/dist/components/wizard/source-grid.test.js +11 -11
  72. package/dist/components/wizard/stack-selection.js +8 -8
  73. package/dist/components/wizard/step-agents.js +9 -9
  74. package/dist/components/wizard/step-agents.test.js +13 -13
  75. package/dist/components/wizard/step-agents.test.js.map +1 -1
  76. package/dist/components/wizard/step-build.js +9 -9
  77. package/dist/components/wizard/step-build.test.js +12 -12
  78. package/dist/components/wizard/step-confirm.js +4 -4
  79. package/dist/components/wizard/step-confirm.test.js +10 -10
  80. package/dist/components/wizard/step-settings.js +7 -7
  81. package/dist/components/wizard/step-settings.test.js +10 -10
  82. package/dist/components/wizard/step-sources.js +9 -9
  83. package/dist/components/wizard/step-sources.test.js +12 -12
  84. package/dist/components/wizard/step-stack.js +9 -12
  85. package/dist/components/wizard/step-stack.test.js +19 -111
  86. package/dist/components/wizard/step-stack.test.js.map +1 -1
  87. package/dist/components/wizard/wizard-layout.js +10 -10
  88. package/dist/components/wizard/wizard-tabs.js +1 -1
  89. package/dist/components/wizard/wizard-tabs.test.js +12 -23
  90. package/dist/components/wizard/wizard-tabs.test.js.map +1 -1
  91. package/dist/components/wizard/wizard.js +21 -21
  92. package/dist/config-exports.js +1 -1
  93. package/dist/hooks/init.js +23 -23
  94. package/dist/{loader-JMOO2A7C.js → loader-LI3EM4VG.js} +4 -4
  95. package/dist/{source-loader-D3VIG3GM.js → source-loader-TPUCZELX.js} +7 -7
  96. package/dist/source-manager-PJ5APXX2.js +19 -0
  97. package/dist/src/agents/meta/agent-summoner/workflow.md +10 -10
  98. package/dist/src/agents/meta/convention-keeper/critical-reminders.md +17 -0
  99. package/dist/src/agents/meta/convention-keeper/critical-requirements.md +15 -0
  100. package/dist/src/agents/meta/convention-keeper/examples.md +71 -0
  101. package/dist/src/agents/meta/convention-keeper/intro.md +11 -0
  102. package/dist/src/agents/meta/convention-keeper/metadata.yaml +12 -0
  103. package/dist/src/agents/meta/convention-keeper/output-format.md +134 -0
  104. package/dist/src/agents/meta/convention-keeper/workflow.md +258 -0
  105. package/dist/src/agents/meta/{documentor → scribe}/metadata.yaml +2 -2
  106. package/{src/agents/meta/documentor → dist/src/agents/meta/scribe}/workflow.md +1 -1
  107. package/dist/src/agents/planning/web-pm/workflow.md +1 -1
  108. package/dist/stores/wizard-store.js +7 -7
  109. package/dist/stores/wizard-store.test.js +19 -13
  110. package/dist/stores/wizard-store.test.js.map +1 -1
  111. package/package.json +1 -1
  112. package/src/agents/meta/agent-summoner/workflow.md +10 -10
  113. package/src/agents/meta/convention-keeper/critical-reminders.md +17 -0
  114. package/src/agents/meta/convention-keeper/critical-requirements.md +15 -0
  115. package/src/agents/meta/convention-keeper/examples.md +71 -0
  116. package/src/agents/meta/convention-keeper/intro.md +11 -0
  117. package/src/agents/meta/convention-keeper/metadata.yaml +12 -0
  118. package/src/agents/meta/convention-keeper/output-format.md +134 -0
  119. package/src/agents/meta/convention-keeper/workflow.md +258 -0
  120. package/src/agents/meta/{documentor → scribe}/metadata.yaml +2 -2
  121. package/{dist/src/agents/meta/documentor → src/agents/meta/scribe}/workflow.md +1 -1
  122. package/src/agents/planning/web-pm/workflow.md +1 -1
  123. package/dist/chunk-32HX6UYI.js.map +0 -1
  124. package/dist/chunk-B4C2S5LP.js.map +0 -1
  125. package/dist/chunk-EO6KJI5D.js.map +0 -1
  126. package/dist/chunk-FSK4TQX7.js.map +0 -1
  127. package/dist/chunk-HANGA633.js.map +0 -1
  128. package/dist/chunk-KQDGLEBF.js.map +0 -1
  129. package/dist/chunk-N2XGUAJU.js.map +0 -1
  130. package/dist/chunk-N34D3ROY.js.map +0 -1
  131. package/dist/chunk-OOWNDQCG.js.map +0 -1
  132. package/dist/chunk-QD3GQ2CH.js.map +0 -1
  133. package/dist/chunk-VDVLM3KB.js.map +0 -1
  134. package/dist/source-manager-FPYFJRR7.js +0 -19
  135. /package/dist/{chunk-XA7WF3BI.js.map → chunk-3C6AXGR7.js.map} +0 -0
  136. /package/dist/{chunk-7JQIMEUX.js.map → chunk-3SCIYMRK.js.map} +0 -0
  137. /package/dist/{chunk-MUCQ27HV.js.map → chunk-4R72372U.js.map} +0 -0
  138. /package/dist/{chunk-Q755X6QF.js.map → chunk-4VFBRV76.js.map} +0 -0
  139. /package/dist/{chunk-F4IZ3UAS.js.map → chunk-55AZIEK6.js.map} +0 -0
  140. /package/dist/{chunk-XYPAOBBV.js.map → chunk-633YIZOU.js.map} +0 -0
  141. /package/dist/{chunk-YFHVP3VA.js.map → chunk-F4VG5XWZ.js.map} +0 -0
  142. /package/dist/{chunk-NKLNT7N7.js.map → chunk-H3NQGJMB.js.map} +0 -0
  143. /package/dist/{chunk-FUWUCKES.js.map → chunk-LO4X32JC.js.map} +0 -0
  144. /package/dist/{chunk-D4T3HHE7.js.map → chunk-MNJAF4K2.js.map} +0 -0
  145. /package/dist/{chunk-KVRR4PEJ.js.map → chunk-NJCU7OC2.js.map} +0 -0
  146. /package/dist/{chunk-U2KFFRRX.js.map → chunk-NZAJTLEK.js.map} +0 -0
  147. /package/dist/{chunk-OTMIGYBB.js.map → chunk-RTHAMTDE.js.map} +0 -0
  148. /package/dist/{chunk-7LBYURQR.js.map → chunk-TQ363UUH.js.map} +0 -0
  149. /package/dist/{chunk-IFCASC6R.js.map → chunk-TZY7WNWO.js.map} +0 -0
  150. /package/dist/{chunk-SJNUTUSJ.js.map → chunk-W6PIVGMH.js.map} +0 -0
  151. /package/dist/{chunk-W46L2PXK.js.map → chunk-WZGROC5L.js.map} +0 -0
  152. /package/dist/{chunk-OIHZ2YH3.js.map → chunk-XFL7EIM7.js.map} +0 -0
  153. /package/dist/{chunk-7HGMFJ4Y.js.map → chunk-YDB5KXMG.js.map} +0 -0
  154. /package/dist/{loader-JMOO2A7C.js.map → loader-LI3EM4VG.js.map} +0 -0
  155. /package/dist/{source-loader-D3VIG3GM.js.map → source-loader-TPUCZELX.js.map} +0 -0
  156. /package/dist/{source-manager-FPYFJRR7.js.map → source-manager-PJ5APXX2.js.map} +0 -0
  157. /package/dist/src/agents/meta/{documentor → scribe}/critical-reminders.md +0 -0
  158. /package/dist/src/agents/meta/{documentor → scribe}/critical-requirements.md +0 -0
  159. /package/dist/src/agents/meta/{documentor → scribe}/examples.md +0 -0
  160. /package/dist/src/agents/meta/{documentor → scribe}/intro.md +0 -0
  161. /package/dist/src/agents/meta/{documentor → scribe}/output-format.md +0 -0
  162. /package/src/agents/meta/{documentor → scribe}/critical-reminders.md +0 -0
  163. /package/src/agents/meta/{documentor → scribe}/critical-requirements.md +0 -0
  164. /package/src/agents/meta/{documentor → scribe}/examples.md +0 -0
  165. /package/src/agents/meta/{documentor → scribe}/intro.md +0 -0
  166. /package/src/agents/meta/{documentor → scribe}/output-format.md +0 -0
@@ -341,6 +341,42 @@ var BUILT_IN_MATRIX = {
341
341
  required: true,
342
342
  order: 1
343
343
  },
344
+ "api-cms": {
345
+ id: "api-cms",
346
+ displayName: "Api Cms",
347
+ description: "Auto-generated category for api-cms",
348
+ domain: "api",
349
+ exclusive: false,
350
+ required: false,
351
+ order: 999
352
+ },
353
+ "api-framework": {
354
+ id: "api-framework",
355
+ displayName: "Api Framework",
356
+ description: "Auto-generated category for api-framework",
357
+ domain: "api",
358
+ exclusive: false,
359
+ required: false,
360
+ order: 999
361
+ },
362
+ "api-search": {
363
+ id: "api-search",
364
+ displayName: "Api Search",
365
+ description: "Auto-generated category for api-search",
366
+ domain: "api",
367
+ exclusive: false,
368
+ required: false,
369
+ order: 999
370
+ },
371
+ "api-vector-db": {
372
+ id: "api-vector-db",
373
+ displayName: "Api Vector Db",
374
+ description: "Auto-generated category for api-vector-db",
375
+ domain: "api",
376
+ exclusive: false,
377
+ required: false,
378
+ order: 999
379
+ },
344
380
  "shared-infra": {
345
381
  id: "shared-infra",
346
382
  displayName: "Shared Infra",
@@ -349,6 +385,15 @@ var BUILT_IN_MATRIX = {
349
385
  exclusive: false,
350
386
  required: false,
351
387
  order: 999
388
+ },
389
+ "api-commerce": {
390
+ id: "api-commerce",
391
+ displayName: "Api Commerce",
392
+ description: "Auto-generated category for api-commerce",
393
+ domain: "api",
394
+ exclusive: false,
395
+ required: false,
396
+ order: 999
352
397
  }
353
398
  },
354
399
  skills: {
@@ -380,11 +425,21 @@ var BUILT_IN_MATRIX = {
380
425
  usageGuidance: "Use when configuring Biome as an all-in-one linter, formatter, and import organizer \u2014 replacing ESLint and Prettier with a single fast tool.",
381
426
  category: "shared-tooling",
382
427
  author: "@vince",
383
- conflictsWith: [],
428
+ conflictsWith: [
429
+ {
430
+ skillId: "shared-tooling-eslint-prettier",
431
+ reason: "Linting and formatting tools are mutually exclusive"
432
+ }
433
+ ],
384
434
  discourages: [],
385
435
  compatibleWith: [],
386
436
  requires: [],
387
- alternatives: [],
437
+ alternatives: [
438
+ {
439
+ skillId: "shared-tooling-eslint-prettier",
440
+ purpose: "Linting / Formatting"
441
+ }
442
+ ],
388
443
  isRecommended: false,
389
444
  path: "skills/shared-tooling-biome"
390
445
  },
@@ -404,6 +459,14 @@ var BUILT_IN_MATRIX = {
404
459
  {
405
460
  skillId: "api-framework-fastify",
406
461
  reason: "API frameworks are mutually exclusive within a single service"
462
+ },
463
+ {
464
+ skillId: "api-framework-elysia",
465
+ reason: "API frameworks are mutually exclusive within a single service"
466
+ },
467
+ {
468
+ skillId: "api-framework-nestjs",
469
+ reason: "API frameworks are mutually exclusive within a single service"
407
470
  }
408
471
  ],
409
472
  discourages: [
@@ -422,9 +485,18 @@ var BUILT_IN_MATRIX = {
422
485
  {
423
486
  skillId: "api-framework-fastify",
424
487
  purpose: "API Framework"
488
+ },
489
+ {
490
+ skillId: "api-framework-elysia",
491
+ purpose: "API Framework"
492
+ },
493
+ {
494
+ skillId: "api-framework-nestjs",
495
+ purpose: "API Framework"
425
496
  }
426
497
  ],
427
- isRecommended: false,
498
+ isRecommended: true,
499
+ recommendedReason: "Fast, lightweight API framework with edge support",
428
500
  path: "skills/api-framework-hono"
429
501
  },
430
502
  "api-database-mongodb": {
@@ -437,27 +509,14 @@ var BUILT_IN_MATRIX = {
437
509
  author: "@vince",
438
510
  conflictsWith: [
439
511
  {
440
- skillId: "api-database-drizzle",
441
- reason: "Database ORMs/ODMs are mutually exclusive"
442
- },
443
- {
444
- skillId: "api-database-prisma",
445
- reason: "Database ORMs/ODMs are mutually exclusive"
512
+ skillId: "api-database-mongoose",
513
+ reason: "Raw MongoDB driver and Mongoose ODM are alternative approaches"
446
514
  }
447
515
  ],
448
516
  discourages: [],
449
517
  compatibleWith: [],
450
518
  requires: [],
451
- alternatives: [
452
- {
453
- skillId: "api-database-drizzle",
454
- purpose: "Database ORM / ODM"
455
- },
456
- {
457
- skillId: "api-database-prisma",
458
- purpose: "Database ORM / ODM"
459
- }
460
- ],
519
+ alternatives: [],
461
520
  isRecommended: false,
462
521
  path: "skills/api-database-mongodb"
463
522
  },
@@ -530,7 +589,18 @@ var BUILT_IN_MATRIX = {
530
589
  "web-framework-angular-standalone",
531
590
  "web-meta-framework-nuxt",
532
591
  "web-data-fetching-graphql-urql",
533
- "web-framework-solidjs"
592
+ "web-framework-solidjs",
593
+ "web-routing-react-router",
594
+ "web-ui-chakra-ui",
595
+ "web-ui-mantine",
596
+ "web-ui-mui",
597
+ "web-ui-ant-design",
598
+ "web-ui-headless-ui",
599
+ "mobile-framework-expo",
600
+ "mobile-framework-react-native",
601
+ "web-tooling-storybook",
602
+ "web-framework-svelte",
603
+ "web-meta-framework-sveltekit"
534
604
  ],
535
605
  requires: [],
536
606
  alternatives: [
@@ -554,6 +624,106 @@ var BUILT_IN_MATRIX = {
554
624
  isRecommended: false,
555
625
  path: "skills/web-framework-react"
556
626
  },
627
+ "api-database-typeorm": {
628
+ id: "api-database-typeorm",
629
+ slug: "typeorm",
630
+ displayName: "TypeORM",
631
+ description: "Decorator-based TypeScript ORM with Data Mapper patterns",
632
+ usageGuidance: "Use when building TypeScript applications with relational databases \u2014 entity decorators, repository pattern, migrations, relations, query builder, and transaction management.",
633
+ category: "api-database",
634
+ author: "@vince",
635
+ conflictsWith: [
636
+ {
637
+ skillId: "api-database-drizzle",
638
+ reason: "SQL ORMs are mutually exclusive"
639
+ },
640
+ {
641
+ skillId: "api-database-prisma",
642
+ reason: "SQL ORMs are mutually exclusive"
643
+ },
644
+ {
645
+ skillId: "api-database-sequelize",
646
+ reason: "SQL ORMs are mutually exclusive"
647
+ }
648
+ ],
649
+ discourages: [
650
+ {
651
+ skillId: "api-database-drizzle",
652
+ reason: "TypeORM uses decorators; Drizzle is more TypeScript-native"
653
+ }
654
+ ],
655
+ compatibleWith: [],
656
+ requires: [],
657
+ alternatives: [
658
+ {
659
+ skillId: "api-database-drizzle",
660
+ purpose: "Database ORM / ODM"
661
+ },
662
+ {
663
+ skillId: "api-database-prisma",
664
+ purpose: "Database ORM / ODM"
665
+ },
666
+ {
667
+ skillId: "api-database-sequelize",
668
+ purpose: "Database ORM / ODM"
669
+ },
670
+ {
671
+ skillId: "api-database-mongoose",
672
+ purpose: "Database ORM / ODM"
673
+ }
674
+ ],
675
+ isRecommended: false,
676
+ path: "skills/api-database-typeorm"
677
+ },
678
+ "api-ai-replicate": {
679
+ id: "api-ai-replicate",
680
+ slug: "replicate",
681
+ displayName: "Replicate",
682
+ description: "API for running open-source ML models with serverless GPU inference",
683
+ usageGuidance: "Use when running open-source models on Replicate \u2014 model predictions, streaming, webhooks, file handling, model versioning, and serverless GPU deployment.",
684
+ category: "api-ai",
685
+ author: "@vince",
686
+ conflictsWith: [],
687
+ discourages: [],
688
+ compatibleWith: [],
689
+ requires: [],
690
+ alternatives: [
691
+ {
692
+ skillId: "api-ai-anthropic-sdk",
693
+ purpose: "AI Provider SDK"
694
+ },
695
+ {
696
+ skillId: "api-ai-openai-sdk",
697
+ purpose: "AI Provider SDK"
698
+ },
699
+ {
700
+ skillId: "api-ai-google-gemini-sdk",
701
+ purpose: "AI Provider SDK"
702
+ },
703
+ {
704
+ skillId: "api-ai-mistral-sdk",
705
+ purpose: "AI Provider SDK"
706
+ },
707
+ {
708
+ skillId: "api-ai-cohere-sdk",
709
+ purpose: "AI Provider SDK"
710
+ },
711
+ {
712
+ skillId: "api-ai-together-ai",
713
+ purpose: "AI Provider SDK"
714
+ },
715
+ {
716
+ skillId: "api-ai-huggingface-inference",
717
+ purpose: "AI Provider SDK"
718
+ },
719
+ {
720
+ skillId: "api-ai-ollama",
721
+ purpose: "AI Provider SDK"
722
+ }
723
+ ],
724
+ isRecommended: false,
725
+ path: "skills/api-ai-replicate"
726
+ },
557
727
  "api-database-prisma": {
558
728
  id: "api-database-prisma",
559
729
  slug: "prisma",
@@ -565,11 +735,15 @@ var BUILT_IN_MATRIX = {
565
735
  conflictsWith: [
566
736
  {
567
737
  skillId: "api-database-drizzle",
568
- reason: "Database ORMs/ODMs are mutually exclusive"
738
+ reason: "SQL ORMs are mutually exclusive"
569
739
  },
570
740
  {
571
- skillId: "api-database-mongodb",
572
- reason: "Database ORMs/ODMs are mutually exclusive"
741
+ skillId: "api-database-sequelize",
742
+ reason: "SQL ORMs are mutually exclusive"
743
+ },
744
+ {
745
+ skillId: "api-database-typeorm",
746
+ reason: "SQL ORMs are mutually exclusive"
573
747
  }
574
748
  ],
575
749
  discourages: [],
@@ -581,7 +755,15 @@ var BUILT_IN_MATRIX = {
581
755
  purpose: "Database ORM / ODM"
582
756
  },
583
757
  {
584
- skillId: "api-database-mongodb",
758
+ skillId: "api-database-sequelize",
759
+ purpose: "Database ORM / ODM"
760
+ },
761
+ {
762
+ skillId: "api-database-typeorm",
763
+ purpose: "Database ORM / ODM"
764
+ },
765
+ {
766
+ skillId: "api-database-mongoose",
585
767
  purpose: "Database ORM / ODM"
586
768
  }
587
769
  ],
@@ -589,6 +771,56 @@ var BUILT_IN_MATRIX = {
589
771
  recommendedReason: "Mature database ORM with great DX",
590
772
  path: "skills/api-database-prisma"
591
773
  },
774
+ "api-ai-anthropic-sdk": {
775
+ id: "api-ai-anthropic-sdk",
776
+ slug: "anthropic-sdk",
777
+ displayName: "Anthropic SDK",
778
+ description: "Official TypeScript SDK for Claude API with messages, streaming, tool use, and vision",
779
+ usageGuidance: "Use when integrating Claude via the Anthropic API \u2014 messages API, streaming responses, tool use (function calling), vision (image input), extended thinking, batch API, and prompt caching.",
780
+ category: "api-ai",
781
+ author: "@vince",
782
+ conflictsWith: [],
783
+ discourages: [],
784
+ compatibleWith: [],
785
+ requires: [],
786
+ alternatives: [
787
+ {
788
+ skillId: "api-ai-openai-sdk",
789
+ purpose: "AI Provider SDK"
790
+ },
791
+ {
792
+ skillId: "api-ai-google-gemini-sdk",
793
+ purpose: "AI Provider SDK"
794
+ },
795
+ {
796
+ skillId: "api-ai-mistral-sdk",
797
+ purpose: "AI Provider SDK"
798
+ },
799
+ {
800
+ skillId: "api-ai-cohere-sdk",
801
+ purpose: "AI Provider SDK"
802
+ },
803
+ {
804
+ skillId: "api-ai-together-ai",
805
+ purpose: "AI Provider SDK"
806
+ },
807
+ {
808
+ skillId: "api-ai-replicate",
809
+ purpose: "AI Provider SDK"
810
+ },
811
+ {
812
+ skillId: "api-ai-huggingface-inference",
813
+ purpose: "AI Provider SDK"
814
+ },
815
+ {
816
+ skillId: "api-ai-ollama",
817
+ purpose: "AI Provider SDK"
818
+ }
819
+ ],
820
+ isRecommended: true,
821
+ recommendedReason: "Direct Claude API access with tool use and vision",
822
+ path: "skills/api-ai-anthropic-sdk"
823
+ },
592
824
  "shared-ci-cd-github-actions": {
593
825
  id: "shared-ci-cd-github-actions",
594
826
  slug: "github-actions",
@@ -642,6 +874,22 @@ var BUILT_IN_MATRIX = {
642
874
  recommendedReason: "Type-safe validation for forms and APIs",
643
875
  path: "skills/web-forms-zod-validation"
644
876
  },
877
+ "web-utilities-rxjs": {
878
+ id: "web-utilities-rxjs",
879
+ slug: "rxjs",
880
+ displayName: "RxJS",
881
+ description: "Reactive programming with Observables, operators, and async stream composition",
882
+ usageGuidance: "Use when handling complex async flows with RxJS \u2014 Observables, operators (map, filter, switchMap, mergeMap), Subjects, error handling, unsubscription, and reactive patterns for event streams and HTTP requests.",
883
+ category: "web-utilities",
884
+ author: "@vince",
885
+ conflictsWith: [],
886
+ discourages: [],
887
+ compatibleWith: [],
888
+ requires: [],
889
+ alternatives: [],
890
+ isRecommended: false,
891
+ path: "skills/web-utilities-rxjs"
892
+ },
645
893
  "web-ui-headless-ui": {
646
894
  id: "web-ui-headless-ui",
647
895
  slug: "headless-ui",
@@ -652,11 +900,128 @@ var BUILT_IN_MATRIX = {
652
900
  author: "@vince",
653
901
  conflictsWith: [],
654
902
  discourages: [],
903
+ compatibleWith: [
904
+ "web-framework-react",
905
+ "web-framework-vue-composition-api",
906
+ "web-meta-framework-nextjs",
907
+ "web-meta-framework-remix",
908
+ "web-meta-framework-nuxt"
909
+ ],
910
+ requires: [
911
+ {
912
+ skillIds: [
913
+ "web-framework-react",
914
+ "web-framework-vue-composition-api",
915
+ "web-meta-framework-nextjs",
916
+ "web-meta-framework-remix",
917
+ "web-meta-framework-nuxt"
918
+ ],
919
+ needsAny: true,
920
+ reason: "Headless UI supports React and Vue"
921
+ }
922
+ ],
923
+ alternatives: [],
924
+ isRecommended: false,
925
+ path: "skills/web-ui-headless-ui"
926
+ },
927
+ "api-cms-payload": {
928
+ id: "api-cms-payload",
929
+ slug: "payload",
930
+ displayName: "Payload CMS",
931
+ description: "TypeScript-native headless CMS with code-first schema and built-in admin panel",
932
+ usageGuidance: "Use when building content-managed applications with Payload \u2014 collection configs, field types, hooks, access control, REST/GraphQL/Local API, admin panel customization, and database adapter pattern.",
933
+ category: "api-cms",
934
+ author: "@vince",
935
+ conflictsWith: [
936
+ {
937
+ skillId: "api-cms-sanity",
938
+ reason: "CMS platforms are mutually exclusive"
939
+ },
940
+ {
941
+ skillId: "api-cms-strapi",
942
+ reason: "CMS platforms are mutually exclusive"
943
+ }
944
+ ],
945
+ discourages: [],
946
+ compatibleWith: [],
947
+ requires: [],
948
+ alternatives: [
949
+ {
950
+ skillId: "api-cms-sanity",
951
+ purpose: "CMS"
952
+ },
953
+ {
954
+ skillId: "api-cms-strapi",
955
+ purpose: "CMS"
956
+ }
957
+ ],
958
+ isRecommended: false,
959
+ path: "skills/api-cms-payload"
960
+ },
961
+ "api-database-mysql": {
962
+ id: "api-database-mysql",
963
+ slug: "mysql",
964
+ displayName: "MySQL",
965
+ description: "Direct MySQL database access with mysql2 driver",
966
+ usageGuidance: "Use when interacting directly with MySQL -- connection pools, prepared statements, transactions, streaming, and promise-based API with mysql2.",
967
+ category: "api-database",
968
+ author: "@vince",
969
+ conflictsWith: [],
970
+ discourages: [],
655
971
  compatibleWith: [],
656
972
  requires: [],
657
973
  alternatives: [],
658
974
  isRecommended: false,
659
- path: "skills/web-ui-headless-ui"
975
+ path: "skills/api-database-mysql"
976
+ },
977
+ "api-ai-cohere-sdk": {
978
+ id: "api-ai-cohere-sdk",
979
+ slug: "cohere-sdk",
980
+ displayName: "Cohere SDK",
981
+ description: "Official TypeScript SDK for Cohere with chat, embeddings, rerank, and RAG",
982
+ usageGuidance: "Use when integrating Cohere AI -- chat completions with Command models, embeddings for semantic search, rerank for relevance scoring, RAG with inline documents and citations, tool use / function calling, and streaming.",
983
+ category: "api-ai",
984
+ author: "@vince",
985
+ conflictsWith: [],
986
+ discourages: [],
987
+ compatibleWith: [],
988
+ requires: [],
989
+ alternatives: [
990
+ {
991
+ skillId: "api-ai-anthropic-sdk",
992
+ purpose: "AI Provider SDK"
993
+ },
994
+ {
995
+ skillId: "api-ai-openai-sdk",
996
+ purpose: "AI Provider SDK"
997
+ },
998
+ {
999
+ skillId: "api-ai-google-gemini-sdk",
1000
+ purpose: "AI Provider SDK"
1001
+ },
1002
+ {
1003
+ skillId: "api-ai-mistral-sdk",
1004
+ purpose: "AI Provider SDK"
1005
+ },
1006
+ {
1007
+ skillId: "api-ai-together-ai",
1008
+ purpose: "AI Provider SDK"
1009
+ },
1010
+ {
1011
+ skillId: "api-ai-replicate",
1012
+ purpose: "AI Provider SDK"
1013
+ },
1014
+ {
1015
+ skillId: "api-ai-huggingface-inference",
1016
+ purpose: "AI Provider SDK"
1017
+ },
1018
+ {
1019
+ skillId: "api-ai-ollama",
1020
+ purpose: "AI Provider SDK"
1021
+ }
1022
+ ],
1023
+ isRecommended: false,
1024
+ path: "skills/api-ai-cohere-sdk"
660
1025
  },
661
1026
  "cli-framework-cli-commander": {
662
1027
  id: "cli-framework-cli-commander",
@@ -718,7 +1083,10 @@ var BUILT_IN_MATRIX = {
718
1083
  "web-framework-vue-composition-api",
719
1084
  "web-meta-framework-nextjs",
720
1085
  "web-meta-framework-remix",
721
- "web-meta-framework-nuxt"
1086
+ "web-meta-framework-nuxt",
1087
+ "web-tooling-storybook",
1088
+ "web-framework-svelte",
1089
+ "web-meta-framework-sveltekit"
722
1090
  ],
723
1091
  requires: [],
724
1092
  alternatives: [
@@ -800,16 +1168,64 @@ var BUILT_IN_MATRIX = {
800
1168
  author: "@vince",
801
1169
  conflictsWith: [],
802
1170
  discourages: [],
803
- compatibleWith: [],
804
- requires: [],
805
- alternatives: [],
806
- isRecommended: false,
807
- path: "skills/mobile-framework-expo"
808
- },
809
- "web-state-jotai": {
810
- id: "web-state-jotai",
811
- slug: "jotai",
812
- displayName: "Jotai",
1171
+ compatibleWith: ["web-framework-react", "mobile-framework-react-native"],
1172
+ requires: [
1173
+ {
1174
+ skillIds: ["mobile-framework-react-native"],
1175
+ needsAny: false,
1176
+ reason: "Expo is a React Native framework"
1177
+ }
1178
+ ],
1179
+ alternatives: [
1180
+ {
1181
+ skillId: "mobile-framework-react-native",
1182
+ purpose: "Mobile"
1183
+ }
1184
+ ],
1185
+ isRecommended: true,
1186
+ recommendedReason: "Best-in-class React Native development experience",
1187
+ path: "skills/mobile-framework-expo"
1188
+ },
1189
+ "web-routing-react-router": {
1190
+ id: "web-routing-react-router",
1191
+ slug: "react-router",
1192
+ displayName: "React Router",
1193
+ description: "Client-side and server-side routing for React applications",
1194
+ usageGuidance: "Use when building React apps with client-side routing \u2014 nested routes, loaders, actions, error boundaries, lazy loading, and URL-based state.",
1195
+ category: "web-routing",
1196
+ author: "@vince",
1197
+ conflictsWith: [
1198
+ {
1199
+ skillId: "web-routing-tanstack-router",
1200
+ reason: "React client-side routers are mutually exclusive"
1201
+ }
1202
+ ],
1203
+ discourages: [],
1204
+ compatibleWith: ["web-framework-react", "web-meta-framework-remix"],
1205
+ requires: [
1206
+ {
1207
+ skillIds: [
1208
+ "web-framework-react",
1209
+ "web-meta-framework-nextjs",
1210
+ "web-meta-framework-remix"
1211
+ ],
1212
+ needsAny: true,
1213
+ reason: "React Router is a React routing library"
1214
+ }
1215
+ ],
1216
+ alternatives: [
1217
+ {
1218
+ skillId: "web-routing-tanstack-router",
1219
+ purpose: "Routing (React)"
1220
+ }
1221
+ ],
1222
+ isRecommended: false,
1223
+ path: "skills/web-routing-react-router"
1224
+ },
1225
+ "web-state-jotai": {
1226
+ id: "web-state-jotai",
1227
+ slug: "jotai",
1228
+ displayName: "Jotai",
813
1229
  description: "Atomic client state",
814
1230
  usageGuidance: "Use when managing atomic state with bottom-up composition.",
815
1231
  category: "web-client-state",
@@ -839,6 +1255,89 @@ var BUILT_IN_MATRIX = {
839
1255
  isRecommended: false,
840
1256
  path: "skills/web-state-jotai"
841
1257
  },
1258
+ "api-ai-huggingface-inference": {
1259
+ id: "api-ai-huggingface-inference",
1260
+ slug: "huggingface-inference",
1261
+ displayName: "Hugging Face Inference",
1262
+ description: "Access 200k+ models via Hugging Face Inference API and Inference Endpoints",
1263
+ usageGuidance: "Use when accessing ML models via Hugging Face \u2014 text generation, chat completion, embeddings, image generation, audio transcription, translation, summarization, and custom Inference Endpoints for dedicated deployments.",
1264
+ category: "api-ai",
1265
+ author: "@vince",
1266
+ conflictsWith: [],
1267
+ discourages: [],
1268
+ compatibleWith: [],
1269
+ requires: [],
1270
+ alternatives: [
1271
+ {
1272
+ skillId: "api-ai-anthropic-sdk",
1273
+ purpose: "AI Provider SDK"
1274
+ },
1275
+ {
1276
+ skillId: "api-ai-openai-sdk",
1277
+ purpose: "AI Provider SDK"
1278
+ },
1279
+ {
1280
+ skillId: "api-ai-google-gemini-sdk",
1281
+ purpose: "AI Provider SDK"
1282
+ },
1283
+ {
1284
+ skillId: "api-ai-mistral-sdk",
1285
+ purpose: "AI Provider SDK"
1286
+ },
1287
+ {
1288
+ skillId: "api-ai-cohere-sdk",
1289
+ purpose: "AI Provider SDK"
1290
+ },
1291
+ {
1292
+ skillId: "api-ai-together-ai",
1293
+ purpose: "AI Provider SDK"
1294
+ },
1295
+ {
1296
+ skillId: "api-ai-replicate",
1297
+ purpose: "AI Provider SDK"
1298
+ },
1299
+ {
1300
+ skillId: "api-ai-ollama",
1301
+ purpose: "AI Provider SDK"
1302
+ }
1303
+ ],
1304
+ isRecommended: false,
1305
+ path: "skills/api-ai-huggingface-inference"
1306
+ },
1307
+ "api-cms-sanity": {
1308
+ id: "api-cms-sanity",
1309
+ slug: "sanity",
1310
+ displayName: "Sanity",
1311
+ description: "Structured content platform with GROQ query language and real-time collaboration",
1312
+ usageGuidance: "Use when building content-managed applications with Sanity \u2014 schema definitions, GROQ queries, @sanity/client for data fetching, image handling with @sanity/image-url, Portable Text for rich text, and Sanity Studio customization.",
1313
+ category: "api-cms",
1314
+ author: "@vince",
1315
+ conflictsWith: [
1316
+ {
1317
+ skillId: "api-cms-payload",
1318
+ reason: "CMS platforms are mutually exclusive"
1319
+ },
1320
+ {
1321
+ skillId: "api-cms-strapi",
1322
+ reason: "CMS platforms are mutually exclusive"
1323
+ }
1324
+ ],
1325
+ discourages: [],
1326
+ compatibleWith: [],
1327
+ requires: [],
1328
+ alternatives: [
1329
+ {
1330
+ skillId: "api-cms-payload",
1331
+ purpose: "CMS"
1332
+ },
1333
+ {
1334
+ skillId: "api-cms-strapi",
1335
+ purpose: "CMS"
1336
+ }
1337
+ ],
1338
+ isRecommended: false,
1339
+ path: "skills/api-cms-sanity"
1340
+ },
842
1341
  "api-observability-setup-axiom-pino-sentry": {
843
1342
  id: "api-observability-setup-axiom-pino-sentry",
844
1343
  slug: "setup-axiom-pino-sentry",
@@ -855,6 +1354,55 @@ var BUILT_IN_MATRIX = {
855
1354
  isRecommended: false,
856
1355
  path: "skills/api-observability-setup-axiom-pino-sentry"
857
1356
  },
1357
+ "api-ai-mistral-sdk": {
1358
+ id: "api-ai-mistral-sdk",
1359
+ slug: "mistral-sdk",
1360
+ displayName: "Mistral SDK",
1361
+ description: "Official TypeScript SDK for Mistral AI with chat, embeddings, function calling, and code generation",
1362
+ usageGuidance: "Use when integrating Mistral AI models \u2014 chat completions, streaming, function calling, embeddings, JSON mode, structured outputs with Zod, vision with Pixtral, and Codestral for code generation / FIM.",
1363
+ category: "api-ai",
1364
+ author: "@vince",
1365
+ conflictsWith: [],
1366
+ discourages: [],
1367
+ compatibleWith: [],
1368
+ requires: [],
1369
+ alternatives: [
1370
+ {
1371
+ skillId: "api-ai-anthropic-sdk",
1372
+ purpose: "AI Provider SDK"
1373
+ },
1374
+ {
1375
+ skillId: "api-ai-openai-sdk",
1376
+ purpose: "AI Provider SDK"
1377
+ },
1378
+ {
1379
+ skillId: "api-ai-google-gemini-sdk",
1380
+ purpose: "AI Provider SDK"
1381
+ },
1382
+ {
1383
+ skillId: "api-ai-cohere-sdk",
1384
+ purpose: "AI Provider SDK"
1385
+ },
1386
+ {
1387
+ skillId: "api-ai-together-ai",
1388
+ purpose: "AI Provider SDK"
1389
+ },
1390
+ {
1391
+ skillId: "api-ai-replicate",
1392
+ purpose: "AI Provider SDK"
1393
+ },
1394
+ {
1395
+ skillId: "api-ai-huggingface-inference",
1396
+ purpose: "AI Provider SDK"
1397
+ },
1398
+ {
1399
+ skillId: "api-ai-ollama",
1400
+ purpose: "AI Provider SDK"
1401
+ }
1402
+ ],
1403
+ isRecommended: false,
1404
+ path: "skills/api-ai-mistral-sdk"
1405
+ },
858
1406
  "shared-meta-research-methodology": {
859
1407
  id: "shared-meta-research-methodology",
860
1408
  slug: "research-methodology",
@@ -883,7 +1431,16 @@ var BUILT_IN_MATRIX = {
883
1431
  discourages: [],
884
1432
  compatibleWith: [],
885
1433
  requires: [],
886
- alternatives: [],
1434
+ alternatives: [
1435
+ {
1436
+ skillId: "web-realtime-socket-io",
1437
+ purpose: "Realtime"
1438
+ },
1439
+ {
1440
+ skillId: "web-realtime-sse",
1441
+ purpose: "Realtime"
1442
+ }
1443
+ ],
887
1444
  isRecommended: false,
888
1445
  path: "skills/web-realtime-websockets"
889
1446
  },
@@ -1003,6 +1560,35 @@ var BUILT_IN_MATRIX = {
1003
1560
  isRecommended: false,
1004
1561
  path: "skills/web-state-redux-toolkit"
1005
1562
  },
1563
+ "api-baas-turso": {
1564
+ id: "api-baas-turso",
1565
+ slug: "turso",
1566
+ displayName: "Turso",
1567
+ description: "Edge-hosted SQLite database with libSQL driver and embedded replicas",
1568
+ usageGuidance: "Use when deploying SQLite on Turso \u2014 libSQL client for edge/serverless, embedded replicas for zero-latency reads, database groups for multi-region, and schema migrations with branching.",
1569
+ category: "api-baas",
1570
+ author: "@vince",
1571
+ conflictsWith: [],
1572
+ discourages: [],
1573
+ compatibleWith: [],
1574
+ requires: [],
1575
+ alternatives: [
1576
+ {
1577
+ skillId: "api-baas-neon",
1578
+ purpose: "Managed Database"
1579
+ },
1580
+ {
1581
+ skillId: "api-baas-planetscale",
1582
+ purpose: "Managed Database"
1583
+ },
1584
+ {
1585
+ skillId: "api-baas-vercel-postgres",
1586
+ purpose: "Managed Database"
1587
+ }
1588
+ ],
1589
+ isRecommended: false,
1590
+ path: "skills/api-baas-turso"
1591
+ },
1006
1592
  "web-state-pinia": {
1007
1593
  id: "web-state-pinia",
1008
1594
  slug: "pinia",
@@ -1043,6 +1629,71 @@ var BUILT_IN_MATRIX = {
1043
1629
  recommendedReason: "Vue community standard state management",
1044
1630
  path: "skills/web-state-pinia"
1045
1631
  },
1632
+ "api-ai-promptfoo": {
1633
+ id: "api-ai-promptfoo",
1634
+ slug: "promptfoo",
1635
+ displayName: "Promptfoo",
1636
+ description: "Testing and evaluation framework for LLM prompts and applications",
1637
+ usageGuidance: "Use when testing LLM prompts and applications \u2014 promptfooconfig.yaml for test definitions, assertion types, model-graded evals, red teaming, CI integration, and comparative evaluation across providers.",
1638
+ category: "api-ai",
1639
+ author: "@vince",
1640
+ conflictsWith: [],
1641
+ discourages: [],
1642
+ compatibleWith: [],
1643
+ requires: [],
1644
+ alternatives: [],
1645
+ isRecommended: false,
1646
+ path: "skills/api-ai-promptfoo"
1647
+ },
1648
+ "api-ai-ollama": {
1649
+ id: "api-ai-ollama",
1650
+ slug: "ollama",
1651
+ displayName: "Ollama",
1652
+ description: "Local LLM inference with the Ollama JavaScript client",
1653
+ usageGuidance: "Use when running LLMs locally with Ollama \u2014 chat completions, streaming, tool calling, vision, embeddings, model management, structured output with JSON schemas, and the OpenAI-compatible endpoint.",
1654
+ category: "api-ai",
1655
+ author: "@vince",
1656
+ conflictsWith: [],
1657
+ discourages: [],
1658
+ compatibleWith: [],
1659
+ requires: [],
1660
+ alternatives: [
1661
+ {
1662
+ skillId: "api-ai-anthropic-sdk",
1663
+ purpose: "AI Provider SDK"
1664
+ },
1665
+ {
1666
+ skillId: "api-ai-openai-sdk",
1667
+ purpose: "AI Provider SDK"
1668
+ },
1669
+ {
1670
+ skillId: "api-ai-google-gemini-sdk",
1671
+ purpose: "AI Provider SDK"
1672
+ },
1673
+ {
1674
+ skillId: "api-ai-mistral-sdk",
1675
+ purpose: "AI Provider SDK"
1676
+ },
1677
+ {
1678
+ skillId: "api-ai-cohere-sdk",
1679
+ purpose: "AI Provider SDK"
1680
+ },
1681
+ {
1682
+ skillId: "api-ai-together-ai",
1683
+ purpose: "AI Provider SDK"
1684
+ },
1685
+ {
1686
+ skillId: "api-ai-replicate",
1687
+ purpose: "AI Provider SDK"
1688
+ },
1689
+ {
1690
+ skillId: "api-ai-huggingface-inference",
1691
+ purpose: "AI Provider SDK"
1692
+ }
1693
+ ],
1694
+ isRecommended: false,
1695
+ path: "skills/api-ai-ollama"
1696
+ },
1046
1697
  "api-auth-clerk": {
1047
1698
  id: "api-auth-clerk",
1048
1699
  slug: "clerk",
@@ -1068,6 +1719,61 @@ var BUILT_IN_MATRIX = {
1068
1719
  isRecommended: false,
1069
1720
  path: "skills/api-auth-clerk"
1070
1721
  },
1722
+ "api-framework-elysia": {
1723
+ id: "api-framework-elysia",
1724
+ slug: "elysia",
1725
+ displayName: "Elysia",
1726
+ description: "Bun-native HTTP framework with end-to-end type safety",
1727
+ usageGuidance: "Use when building APIs on Bun runtime \u2014 end-to-end type safety via Eden Treaty, plugin-based architecture, schema validation with TypeBox, lifecycle hooks, and high-performance routing.",
1728
+ category: "api-framework",
1729
+ author: "@vince",
1730
+ conflictsWith: [
1731
+ {
1732
+ skillId: "api-framework-hono",
1733
+ reason: "API frameworks are mutually exclusive within a single service"
1734
+ },
1735
+ {
1736
+ skillId: "api-framework-express",
1737
+ reason: "API frameworks are mutually exclusive within a single service"
1738
+ },
1739
+ {
1740
+ skillId: "api-framework-fastify",
1741
+ reason: "API frameworks are mutually exclusive within a single service"
1742
+ },
1743
+ {
1744
+ skillId: "api-framework-nestjs",
1745
+ reason: "API frameworks are mutually exclusive within a single service"
1746
+ }
1747
+ ],
1748
+ discourages: [
1749
+ {
1750
+ skillId: "api-framework-express",
1751
+ reason: "Express is mature but Elysia is faster on Bun with end-to-end type safety"
1752
+ }
1753
+ ],
1754
+ compatibleWith: [],
1755
+ requires: [],
1756
+ alternatives: [
1757
+ {
1758
+ skillId: "api-framework-hono",
1759
+ purpose: "API Framework"
1760
+ },
1761
+ {
1762
+ skillId: "api-framework-express",
1763
+ purpose: "API Framework"
1764
+ },
1765
+ {
1766
+ skillId: "api-framework-fastify",
1767
+ purpose: "API Framework"
1768
+ },
1769
+ {
1770
+ skillId: "api-framework-nestjs",
1771
+ purpose: "API Framework"
1772
+ }
1773
+ ],
1774
+ isRecommended: false,
1775
+ path: "skills/api-framework-elysia"
1776
+ },
1071
1777
  "web-tooling-vite": {
1072
1778
  id: "web-tooling-vite",
1073
1779
  slug: "vite",
@@ -1084,6 +1790,32 @@ var BUILT_IN_MATRIX = {
1084
1790
  isRecommended: false,
1085
1791
  path: "skills/web-tooling-vite"
1086
1792
  },
1793
+ "api-search-meilisearch": {
1794
+ id: "api-search-meilisearch",
1795
+ slug: "meilisearch",
1796
+ displayName: "Meilisearch",
1797
+ description: "Fast, typo-tolerant search engine with instant results and faceted filtering",
1798
+ usageGuidance: "Use when adding search to applications with Meilisearch -- instant typo-tolerant search, faceted filtering, geo search, multi-index search, and real-time document indexing.",
1799
+ category: "api-search",
1800
+ author: "@vince",
1801
+ conflictsWith: [
1802
+ {
1803
+ skillId: "api-search-elasticsearch",
1804
+ reason: "Search engines are mutually exclusive"
1805
+ }
1806
+ ],
1807
+ discourages: [],
1808
+ compatibleWith: [],
1809
+ requires: [],
1810
+ alternatives: [
1811
+ {
1812
+ skillId: "api-search-elasticsearch",
1813
+ purpose: "Search Engine"
1814
+ }
1815
+ ],
1816
+ isRecommended: false,
1817
+ path: "skills/api-search-meilisearch"
1818
+ },
1087
1819
  "shared-meta-cli-reviewing": {
1088
1820
  id: "shared-meta-cli-reviewing",
1089
1821
  slug: "cli-reviewing",
@@ -1100,6 +1832,32 @@ var BUILT_IN_MATRIX = {
1100
1832
  isRecommended: false,
1101
1833
  path: "skills/shared-meta-cli-reviewing"
1102
1834
  },
1835
+ "api-search-elasticsearch": {
1836
+ id: "api-search-elasticsearch",
1837
+ slug: "elasticsearch",
1838
+ displayName: "Elasticsearch",
1839
+ description: "Distributed search and analytics engine with full-text search, aggregations, and vector search",
1840
+ usageGuidance: "Use when building search with Elasticsearch -- full-text search, structured queries, aggregations, vector/semantic search, index management, and bulk operations.",
1841
+ category: "api-search",
1842
+ author: "@vince",
1843
+ conflictsWith: [
1844
+ {
1845
+ skillId: "api-search-meilisearch",
1846
+ reason: "Search engines are mutually exclusive"
1847
+ }
1848
+ ],
1849
+ discourages: [],
1850
+ compatibleWith: [],
1851
+ requires: [],
1852
+ alternatives: [
1853
+ {
1854
+ skillId: "api-search-meilisearch",
1855
+ purpose: "Search Engine"
1856
+ }
1857
+ ],
1858
+ isRecommended: false,
1859
+ path: "skills/api-search-elasticsearch"
1860
+ },
1103
1861
  "web-utilities-date-fns": {
1104
1862
  id: "web-utilities-date-fns",
1105
1863
  slug: "date-fns",
@@ -1116,6 +1874,31 @@ var BUILT_IN_MATRIX = {
1116
1874
  isRecommended: false,
1117
1875
  path: "skills/web-utilities-date-fns"
1118
1876
  },
1877
+ "api-baas-upstash": {
1878
+ id: "api-baas-upstash",
1879
+ slug: "upstash",
1880
+ displayName: "Upstash",
1881
+ description: "Serverless Redis with REST API for edge and serverless functions",
1882
+ usageGuidance: "Use when deploying Redis on Upstash -- REST-based Redis for edge/serverless compatibility, automatic JSON serialization, pipeline support, rate limiting with @upstash/ratelimit, and global replication.",
1883
+ category: "api-baas",
1884
+ author: "@vince",
1885
+ conflictsWith: [],
1886
+ discourages: [],
1887
+ compatibleWith: [],
1888
+ requires: [],
1889
+ alternatives: [
1890
+ {
1891
+ skillId: "api-database-redis",
1892
+ purpose: "Cache / KV Store"
1893
+ },
1894
+ {
1895
+ skillId: "api-baas-vercel-kv",
1896
+ purpose: "Cache / KV Store"
1897
+ }
1898
+ ],
1899
+ isRecommended: false,
1900
+ path: "skills/api-baas-upstash"
1901
+ },
1119
1902
  "web-tooling-storybook": {
1120
1903
  id: "web-tooling-storybook",
1121
1904
  slug: "storybook",
@@ -1126,11 +1909,65 @@ var BUILT_IN_MATRIX = {
1126
1909
  author: "@vince",
1127
1910
  conflictsWith: [],
1128
1911
  discourages: [],
1129
- compatibleWith: [],
1130
- requires: [],
1131
- alternatives: [],
1132
- isRecommended: false,
1133
- path: "skills/web-tooling-storybook"
1912
+ compatibleWith: [
1913
+ "web-framework-react",
1914
+ "web-framework-vue-composition-api",
1915
+ "web-framework-angular-standalone",
1916
+ "web-framework-svelte",
1917
+ "web-meta-framework-nextjs",
1918
+ "web-meta-framework-remix",
1919
+ "web-meta-framework-nuxt",
1920
+ "web-meta-framework-sveltekit"
1921
+ ],
1922
+ requires: [],
1923
+ alternatives: [],
1924
+ isRecommended: false,
1925
+ path: "skills/web-tooling-storybook"
1926
+ },
1927
+ "api-ai-tool-use-patterns": {
1928
+ id: "api-ai-tool-use-patterns",
1929
+ slug: "tool-use-patterns",
1930
+ displayName: "Tool Use Patterns",
1931
+ description: "Provider-agnostic patterns for LLM function calling",
1932
+ usageGuidance: "Use when implementing LLM tool use -- tool definition schemas, the tool call loop pattern, parallel tool calls, error reporting back to the model, multi-step agent workflows, human-in-the-loop patterns, and tool choice control. Provider-agnostic -- shows generic TypeScript patterns, not provider-specific SDK code.",
1933
+ category: "api-ai",
1934
+ author: "@vince",
1935
+ conflictsWith: [],
1936
+ discourages: [],
1937
+ compatibleWith: [],
1938
+ requires: [],
1939
+ alternatives: [],
1940
+ isRecommended: false,
1941
+ path: "skills/api-ai-tool-use-patterns"
1942
+ },
1943
+ "api-baas-planetscale": {
1944
+ id: "api-baas-planetscale",
1945
+ slug: "planetscale",
1946
+ displayName: "PlanetScale",
1947
+ description: "Serverless MySQL platform with branching, deploy requests, and edge-compatible driver",
1948
+ usageGuidance: "Use when deploying MySQL on PlanetScale \u2014 serverless driver for edge/serverless, database branching, deploy requests for schema changes, connection pooling, and Vitess-powered horizontal scaling.",
1949
+ category: "api-baas",
1950
+ author: "@vince",
1951
+ conflictsWith: [],
1952
+ discourages: [],
1953
+ compatibleWith: [],
1954
+ requires: [],
1955
+ alternatives: [
1956
+ {
1957
+ skillId: "api-baas-neon",
1958
+ purpose: "Managed Database"
1959
+ },
1960
+ {
1961
+ skillId: "api-baas-turso",
1962
+ purpose: "Managed Database"
1963
+ },
1964
+ {
1965
+ skillId: "api-baas-vercel-postgres",
1966
+ purpose: "Managed Database"
1967
+ }
1968
+ ],
1969
+ isRecommended: false,
1970
+ path: "skills/api-baas-planetscale"
1134
1971
  },
1135
1972
  "web-ui-shadcn-ui": {
1136
1973
  id: "web-ui-shadcn-ui",
@@ -1140,7 +1977,24 @@ var BUILT_IN_MATRIX = {
1140
1977
  usageGuidance: "Use when using shadcn/ui components, theming, or customization.",
1141
1978
  category: "web-ui-components",
1142
1979
  author: "@vince",
1143
- conflictsWith: [],
1980
+ conflictsWith: [
1981
+ {
1982
+ skillId: "web-ui-mui",
1983
+ reason: "React UI component libraries define competing design systems"
1984
+ },
1985
+ {
1986
+ skillId: "web-ui-chakra-ui",
1987
+ reason: "React UI component libraries define competing design systems"
1988
+ },
1989
+ {
1990
+ skillId: "web-ui-mantine",
1991
+ reason: "React UI component libraries define competing design systems"
1992
+ },
1993
+ {
1994
+ skillId: "web-ui-ant-design",
1995
+ reason: "React UI component libraries define competing design systems"
1996
+ }
1997
+ ],
1144
1998
  discourages: [],
1145
1999
  compatibleWith: [
1146
2000
  "web-framework-react",
@@ -1163,7 +2017,24 @@ var BUILT_IN_MATRIX = {
1163
2017
  reason: "shadcn/ui requires Tailwind CSS"
1164
2018
  }
1165
2019
  ],
1166
- alternatives: [],
2020
+ alternatives: [
2021
+ {
2022
+ skillId: "web-ui-mui",
2023
+ purpose: "UI Components (React)"
2024
+ },
2025
+ {
2026
+ skillId: "web-ui-chakra-ui",
2027
+ purpose: "UI Components (React)"
2028
+ },
2029
+ {
2030
+ skillId: "web-ui-mantine",
2031
+ purpose: "UI Components (React)"
2032
+ },
2033
+ {
2034
+ skillId: "web-ui-ant-design",
2035
+ purpose: "UI Components (React)"
2036
+ }
2037
+ ],
1167
2038
  isRecommended: true,
1168
2039
  recommendedReason: "Best-in-class React + Tailwind component library",
1169
2040
  path: "skills/web-ui-shadcn-ui"
@@ -1203,9 +2074,20 @@ var BUILT_IN_MATRIX = {
1203
2074
  author: "@vince",
1204
2075
  conflictsWith: [],
1205
2076
  discourages: [],
1206
- compatibleWith: [],
1207
- requires: [],
1208
- alternatives: [],
2077
+ compatibleWith: ["mobile-framework-expo", "web-framework-react"],
2078
+ requires: [
2079
+ {
2080
+ skillIds: ["web-framework-react"],
2081
+ needsAny: false,
2082
+ reason: "React Native is built on React"
2083
+ }
2084
+ ],
2085
+ alternatives: [
2086
+ {
2087
+ skillId: "mobile-framework-expo",
2088
+ purpose: "Mobile"
2089
+ }
2090
+ ],
1209
2091
  isRecommended: false,
1210
2092
  path: "skills/mobile-framework-react-native"
1211
2093
  },
@@ -1221,7 +2103,16 @@ var BUILT_IN_MATRIX = {
1221
2103
  discourages: [],
1222
2104
  compatibleWith: [],
1223
2105
  requires: [],
1224
- alternatives: [],
2106
+ alternatives: [
2107
+ {
2108
+ skillId: "web-realtime-websockets",
2109
+ purpose: "Realtime"
2110
+ },
2111
+ {
2112
+ skillId: "web-realtime-socket-io",
2113
+ purpose: "Realtime"
2114
+ }
2115
+ ],
1225
2116
  isRecommended: false,
1226
2117
  path: "skills/web-realtime-sse"
1227
2118
  },
@@ -1264,7 +2155,12 @@ var BUILT_IN_MATRIX = {
1264
2155
  "web-meta-framework-nextjs",
1265
2156
  "web-meta-framework-remix",
1266
2157
  "web-data-fetching-graphql-urql",
1267
- "web-framework-solidjs"
2158
+ "web-framework-solidjs",
2159
+ "web-ui-headless-ui",
2160
+ "web-utilities-vueuse",
2161
+ "web-tooling-storybook",
2162
+ "web-framework-svelte",
2163
+ "web-meta-framework-sveltekit"
1268
2164
  ],
1269
2165
  requires: [],
1270
2166
  alternatives: [
@@ -1288,6 +2184,48 @@ var BUILT_IN_MATRIX = {
1288
2184
  isRecommended: false,
1289
2185
  path: "skills/web-framework-vue-composition-api"
1290
2186
  },
2187
+ "api-vector-db-chroma": {
2188
+ id: "api-vector-db-chroma",
2189
+ slug: "chroma",
2190
+ displayName: "Chroma",
2191
+ description: "Lightweight embedding database with automatic vectorization and metadata filtering",
2192
+ usageGuidance: "Use when building semantic search or RAG with Chroma -- collection management, automatic embedding generation, metadata filtering, document storage, and multi-modal embeddings.",
2193
+ category: "api-vector-db",
2194
+ author: "@vince",
2195
+ conflictsWith: [
2196
+ {
2197
+ skillId: "api-vector-db-pinecone",
2198
+ reason: "Vector databases are mutually exclusive"
2199
+ },
2200
+ {
2201
+ skillId: "api-vector-db-qdrant",
2202
+ reason: "Vector databases are mutually exclusive"
2203
+ },
2204
+ {
2205
+ skillId: "api-vector-db-weaviate",
2206
+ reason: "Vector databases are mutually exclusive"
2207
+ }
2208
+ ],
2209
+ discourages: [],
2210
+ compatibleWith: [],
2211
+ requires: [],
2212
+ alternatives: [
2213
+ {
2214
+ skillId: "api-vector-db-pinecone",
2215
+ purpose: "Vector Database"
2216
+ },
2217
+ {
2218
+ skillId: "api-vector-db-qdrant",
2219
+ purpose: "Vector Database"
2220
+ },
2221
+ {
2222
+ skillId: "api-vector-db-weaviate",
2223
+ purpose: "Vector Database"
2224
+ }
2225
+ ],
2226
+ isRecommended: false,
2227
+ path: "skills/api-vector-db-chroma"
2228
+ },
1291
2229
  "web-forms-vee-validate": {
1292
2230
  id: "web-forms-vee-validate",
1293
2231
  slug: "vee-validate",
@@ -1344,6 +2282,70 @@ var BUILT_IN_MATRIX = {
1344
2282
  recommendedReason: "Vue component testing library",
1345
2283
  path: "skills/web-testing-vue-test-utils"
1346
2284
  },
2285
+ "web-ui-chakra-ui": {
2286
+ id: "web-ui-chakra-ui",
2287
+ slug: "chakra-ui",
2288
+ displayName: "Chakra UI",
2289
+ description: "Accessible React component library with style props and theming",
2290
+ usageGuidance: "Use when building React UIs with Chakra UI \u2014 style props, responsive design, theming, accessible components, and composable component patterns.",
2291
+ category: "web-ui-components",
2292
+ author: "@vince",
2293
+ conflictsWith: [
2294
+ {
2295
+ skillId: "web-ui-shadcn-ui",
2296
+ reason: "React UI component libraries define competing design systems"
2297
+ },
2298
+ {
2299
+ skillId: "web-ui-mui",
2300
+ reason: "React UI component libraries define competing design systems"
2301
+ },
2302
+ {
2303
+ skillId: "web-ui-mantine",
2304
+ reason: "React UI component libraries define competing design systems"
2305
+ },
2306
+ {
2307
+ skillId: "web-ui-ant-design",
2308
+ reason: "React UI component libraries define competing design systems"
2309
+ }
2310
+ ],
2311
+ discourages: [],
2312
+ compatibleWith: [
2313
+ "web-framework-react",
2314
+ "web-meta-framework-nextjs",
2315
+ "web-meta-framework-remix"
2316
+ ],
2317
+ requires: [
2318
+ {
2319
+ skillIds: [
2320
+ "web-framework-react",
2321
+ "web-meta-framework-nextjs",
2322
+ "web-meta-framework-remix"
2323
+ ],
2324
+ needsAny: true,
2325
+ reason: "Chakra UI is a React component library"
2326
+ }
2327
+ ],
2328
+ alternatives: [
2329
+ {
2330
+ skillId: "web-ui-shadcn-ui",
2331
+ purpose: "UI Components (React)"
2332
+ },
2333
+ {
2334
+ skillId: "web-ui-mui",
2335
+ purpose: "UI Components (React)"
2336
+ },
2337
+ {
2338
+ skillId: "web-ui-mantine",
2339
+ purpose: "UI Components (React)"
2340
+ },
2341
+ {
2342
+ skillId: "web-ui-ant-design",
2343
+ purpose: "UI Components (React)"
2344
+ }
2345
+ ],
2346
+ isRecommended: false,
2347
+ path: "skills/web-ui-chakra-ui"
2348
+ },
1347
2349
  "web-state-zustand": {
1348
2350
  id: "web-state-zustand",
1349
2351
  slug: "zustand",
@@ -1420,7 +2422,7 @@ var BUILT_IN_MATRIX = {
1420
2422
  slug: "radix-ui",
1421
2423
  displayName: "Radix UI",
1422
2424
  description: "Accessible UI primitives",
1423
- usageGuidance: "Use when building accessible UI with Radix primitives.",
2425
+ usageGuidance: "Use when building accessible overlay components (dialogs, popovers, dropdowns, tooltips), compound component APIs, keyboard navigation, focus management, or polymorphic components with asChild and Slot patterns.",
1424
2426
  category: "web-ui-components",
1425
2427
  author: "@vince",
1426
2428
  conflictsWith: [],
@@ -1516,11 +2518,21 @@ var BUILT_IN_MATRIX = {
1516
2518
  usageGuidance: "Use when configuring ESLint 9 flat config, Prettier formatting, shared linting configs, or migrating from legacy .eslintrc to flat config.",
1517
2519
  category: "shared-tooling",
1518
2520
  author: "@vince",
1519
- conflictsWith: [],
2521
+ conflictsWith: [
2522
+ {
2523
+ skillId: "shared-tooling-biome",
2524
+ reason: "Linting and formatting tools are mutually exclusive"
2525
+ }
2526
+ ],
1520
2527
  discourages: [],
1521
2528
  compatibleWith: [],
1522
2529
  requires: [],
1523
- alternatives: [],
2530
+ alternatives: [
2531
+ {
2532
+ skillId: "shared-tooling-biome",
2533
+ purpose: "Linting / Formatting"
2534
+ }
2535
+ ],
1524
2536
  isRecommended: false,
1525
2537
  path: "skills/shared-tooling-eslint-prettier"
1526
2538
  },
@@ -1540,7 +2552,16 @@ var BUILT_IN_MATRIX = {
1540
2552
  "web-meta-framework-remix"
1541
2553
  ],
1542
2554
  requires: [],
1543
- alternatives: [],
2555
+ alternatives: [
2556
+ {
2557
+ skillId: "web-animation-css-animations",
2558
+ purpose: "Animation"
2559
+ },
2560
+ {
2561
+ skillId: "web-animation-view-transitions",
2562
+ purpose: "Animation"
2563
+ }
2564
+ ],
1544
2565
  isRecommended: false,
1545
2566
  path: "skills/web-animation-framer-motion"
1546
2567
  },
@@ -1705,6 +2726,10 @@ var BUILT_IN_MATRIX = {
1705
2726
  {
1706
2727
  skillId: "web-meta-framework-sveltekit",
1707
2728
  reason: "Meta-frameworks are mutually exclusive"
2729
+ },
2730
+ {
2731
+ skillId: "web-meta-framework-qwik",
2732
+ reason: "Meta-frameworks are mutually exclusive"
1708
2733
  }
1709
2734
  ],
1710
2735
  discourages: [],
@@ -1726,11 +2751,44 @@ var BUILT_IN_MATRIX = {
1726
2751
  {
1727
2752
  skillId: "web-meta-framework-sveltekit",
1728
2753
  purpose: "Meta-Framework"
2754
+ },
2755
+ {
2756
+ skillId: "web-meta-framework-qwik",
2757
+ purpose: "Meta-Framework"
1729
2758
  }
1730
2759
  ],
1731
2760
  isRecommended: false,
1732
2761
  path: "skills/web-meta-framework-astro"
1733
2762
  },
2763
+ "api-baas-neon": {
2764
+ id: "api-baas-neon",
2765
+ slug: "neon",
2766
+ displayName: "Neon",
2767
+ description: "Serverless PostgreSQL with branching, autoscaling, and edge-compatible driver",
2768
+ usageGuidance: "Use when deploying PostgreSQL on Neon \u2014 serverless driver for edge/serverless functions, database branching for dev/preview, autoscaling, connection pooling, and the Neon API for programmatic management.",
2769
+ category: "api-baas",
2770
+ author: "@vince",
2771
+ conflictsWith: [],
2772
+ discourages: [],
2773
+ compatibleWith: [],
2774
+ requires: [],
2775
+ alternatives: [
2776
+ {
2777
+ skillId: "api-baas-planetscale",
2778
+ purpose: "Managed Database"
2779
+ },
2780
+ {
2781
+ skillId: "api-baas-turso",
2782
+ purpose: "Managed Database"
2783
+ },
2784
+ {
2785
+ skillId: "api-baas-vercel-postgres",
2786
+ purpose: "Managed Database"
2787
+ }
2788
+ ],
2789
+ isRecommended: false,
2790
+ path: "skills/api-baas-neon"
2791
+ },
1734
2792
  "shared-meta-reviewing": {
1735
2793
  id: "shared-meta-reviewing",
1736
2794
  slug: "reviewing",
@@ -1747,6 +2805,64 @@ var BUILT_IN_MATRIX = {
1747
2805
  isRecommended: false,
1748
2806
  path: "skills/shared-meta-reviewing"
1749
2807
  },
2808
+ "api-database-edgedb": {
2809
+ id: "api-database-edgedb",
2810
+ slug: "edgedb",
2811
+ displayName: "Gel (EdgeDB)",
2812
+ description: "Graph-relational database with EdgeQL and code-first schema",
2813
+ usageGuidance: "Use when working with Gel (formerly EdgeDB) \u2014 EdgeQL for type-safe queries, code-first schema with migrations, link-based relations, computed properties, and the query builder for fully typed TypeScript queries.",
2814
+ category: "api-database",
2815
+ author: "@vince",
2816
+ conflictsWith: [],
2817
+ discourages: [],
2818
+ compatibleWith: [],
2819
+ requires: [],
2820
+ alternatives: [],
2821
+ isRecommended: false,
2822
+ path: "skills/api-database-edgedb"
2823
+ },
2824
+ "api-vector-db-weaviate": {
2825
+ id: "api-vector-db-weaviate",
2826
+ slug: "weaviate",
2827
+ displayName: "Weaviate",
2828
+ description: "Open-source vector database with built-in vectorization and hybrid search",
2829
+ usageGuidance: "Use when building semantic search or RAG with Weaviate \u2014 collection management, built-in vectorization modules, hybrid search (vector + keyword), filtering, multi-tenancy, and generative search.",
2830
+ category: "api-vector-db",
2831
+ author: "@vince",
2832
+ conflictsWith: [
2833
+ {
2834
+ skillId: "api-vector-db-pinecone",
2835
+ reason: "Vector databases are mutually exclusive"
2836
+ },
2837
+ {
2838
+ skillId: "api-vector-db-qdrant",
2839
+ reason: "Vector databases are mutually exclusive"
2840
+ },
2841
+ {
2842
+ skillId: "api-vector-db-chroma",
2843
+ reason: "Vector databases are mutually exclusive"
2844
+ }
2845
+ ],
2846
+ discourages: [],
2847
+ compatibleWith: [],
2848
+ requires: [],
2849
+ alternatives: [
2850
+ {
2851
+ skillId: "api-vector-db-pinecone",
2852
+ purpose: "Vector Database"
2853
+ },
2854
+ {
2855
+ skillId: "api-vector-db-qdrant",
2856
+ purpose: "Vector Database"
2857
+ },
2858
+ {
2859
+ skillId: "api-vector-db-chroma",
2860
+ purpose: "Vector Database"
2861
+ }
2862
+ ],
2863
+ isRecommended: false,
2864
+ path: "skills/api-vector-db-weaviate"
2865
+ },
1750
2866
  "web-pwa-service-workers": {
1751
2867
  id: "web-pwa-service-workers",
1752
2868
  slug: "service-workers",
@@ -1815,6 +2931,22 @@ var BUILT_IN_MATRIX = {
1815
2931
  recommendedReason: "Standard React component testing",
1816
2932
  path: "skills/web-testing-react-testing-library"
1817
2933
  },
2934
+ "api-database-knex": {
2935
+ id: "api-database-knex",
2936
+ slug: "knex",
2937
+ displayName: "Knex.js",
2938
+ description: "SQL query builder for PostgreSQL, MySQL, SQLite, and MSSQL",
2939
+ usageGuidance: "Use when building SQL queries programmatically -- fluent query builder, schema builder, migrations, seeds, transactions, and raw queries with parameter binding.",
2940
+ category: "api-database",
2941
+ author: "@vince",
2942
+ conflictsWith: [],
2943
+ discourages: [],
2944
+ compatibleWith: [],
2945
+ requires: [],
2946
+ alternatives: [],
2947
+ isRecommended: false,
2948
+ path: "skills/api-database-knex"
2949
+ },
1818
2950
  "web-styling-cva": {
1819
2951
  id: "web-styling-cva",
1820
2952
  slug: "cva",
@@ -1866,11 +2998,21 @@ var BUILT_IN_MATRIX = {
1866
2998
  usageGuidance: "Use when configuring monorepo pipelines, workspaces, or package architecture.",
1867
2999
  category: "shared-monorepo",
1868
3000
  author: "@vince",
1869
- conflictsWith: [],
3001
+ conflictsWith: [
3002
+ {
3003
+ skillId: "shared-monorepo-nx",
3004
+ reason: "Monorepo build orchestrators are mutually exclusive"
3005
+ }
3006
+ ],
1870
3007
  discourages: [],
1871
3008
  compatibleWith: [],
1872
3009
  requires: [],
1873
- alternatives: [],
3010
+ alternatives: [
3011
+ {
3012
+ skillId: "shared-monorepo-nx",
3013
+ purpose: "Monorepo Orchestrator"
3014
+ }
3015
+ ],
1874
3016
  isRecommended: false,
1875
3017
  path: "skills/shared-monorepo-turborepo"
1876
3018
  },
@@ -1898,7 +3040,12 @@ var BUILT_IN_MATRIX = {
1898
3040
  usageGuidance: "Use when building React SPAs with type-safe routing \u2014 file-based routes, search params validation, route loaders, code splitting, and nested layouts.",
1899
3041
  category: "web-routing",
1900
3042
  author: "@vince",
1901
- conflictsWith: [],
3043
+ conflictsWith: [
3044
+ {
3045
+ skillId: "web-routing-react-router",
3046
+ reason: "React client-side routers are mutually exclusive"
3047
+ }
3048
+ ],
1902
3049
  discourages: [],
1903
3050
  compatibleWith: ["web-framework-react"],
1904
3051
  requires: [
@@ -1908,26 +3055,73 @@ var BUILT_IN_MATRIX = {
1908
3055
  reason: "TanStack Router is a React routing library"
1909
3056
  }
1910
3057
  ],
1911
- alternatives: [],
3058
+ alternatives: [
3059
+ {
3060
+ skillId: "web-routing-react-router",
3061
+ purpose: "Routing (React)"
3062
+ }
3063
+ ],
1912
3064
  isRecommended: false,
1913
3065
  path: "skills/web-routing-tanstack-router"
1914
3066
  },
1915
- "web-files-image-handling": {
1916
- id: "web-files-image-handling",
1917
- slug: "image-handling",
1918
- displayName: "Image Handling",
1919
- description: "Client-side image processing",
1920
- usageGuidance: "Use when processing images client-side, resizing, or format conversion.",
1921
- category: "web-files",
3067
+ "api-vector-db-qdrant": {
3068
+ id: "api-vector-db-qdrant",
3069
+ slug: "qdrant",
3070
+ displayName: "Qdrant",
3071
+ description: "High-performance vector database with filtering, payload indexing, and quantization",
3072
+ usageGuidance: "Use when building semantic search or RAG with Qdrant -- collection management, vector upsert/search, payload filtering, named vectors, quantization, and recommendation API.",
3073
+ category: "api-vector-db",
1922
3074
  author: "@vince",
1923
- conflictsWith: [],
1924
- discourages: [],
1925
- compatibleWith: [
1926
- "web-framework-react",
1927
- "web-meta-framework-nextjs",
1928
- "web-meta-framework-remix"
1929
- ],
1930
- requires: [],
3075
+ conflictsWith: [
3076
+ {
3077
+ skillId: "api-vector-db-pinecone",
3078
+ reason: "Vector databases are mutually exclusive"
3079
+ },
3080
+ {
3081
+ skillId: "api-vector-db-chroma",
3082
+ reason: "Vector databases are mutually exclusive"
3083
+ },
3084
+ {
3085
+ skillId: "api-vector-db-weaviate",
3086
+ reason: "Vector databases are mutually exclusive"
3087
+ }
3088
+ ],
3089
+ discourages: [],
3090
+ compatibleWith: [],
3091
+ requires: [],
3092
+ alternatives: [
3093
+ {
3094
+ skillId: "api-vector-db-pinecone",
3095
+ purpose: "Vector Database"
3096
+ },
3097
+ {
3098
+ skillId: "api-vector-db-chroma",
3099
+ purpose: "Vector Database"
3100
+ },
3101
+ {
3102
+ skillId: "api-vector-db-weaviate",
3103
+ purpose: "Vector Database"
3104
+ }
3105
+ ],
3106
+ isRecommended: false,
3107
+ path: "skills/api-vector-db-qdrant"
3108
+ },
3109
+ "web-files-image-handling": {
3110
+ id: "web-files-image-handling",
3111
+ slug: "image-handling",
3112
+ displayName: "Image Handling",
3113
+ description: "Client-side image processing",
3114
+ usageGuidance: "Use when processing images client-side, resizing, or format conversion.",
3115
+ category: "web-files",
3116
+ author: "@vince",
3117
+ conflictsWith: [],
3118
+ discourages: [],
3119
+ compatibleWith: [
3120
+ "web-framework-react",
3121
+ "web-meta-framework-nextjs",
3122
+ "web-meta-framework-remix"
3123
+ ],
3124
+ requires: [],
1931
3125
  alternatives: [],
1932
3126
  isRecommended: false,
1933
3127
  path: "skills/web-files-image-handling"
@@ -1948,6 +3142,28 @@ var BUILT_IN_MATRIX = {
1948
3142
  isRecommended: false,
1949
3143
  path: "skills/api-email-setup-resend"
1950
3144
  },
3145
+ "api-ai-claude-vision": {
3146
+ id: "api-ai-claude-vision",
3147
+ slug: "claude-vision",
3148
+ displayName: "Claude Vision",
3149
+ description: "Image understanding and document analysis with Claude's multimodal capabilities",
3150
+ usageGuidance: "Use when processing images and documents with Claude \u2014 image analysis, document extraction, chart interpretation, multi-image comparison, and PDF processing with the Anthropic API.",
3151
+ category: "api-ai",
3152
+ author: "@vince",
3153
+ conflictsWith: [],
3154
+ discourages: [],
3155
+ compatibleWith: [],
3156
+ requires: [
3157
+ {
3158
+ skillIds: ["api-ai-anthropic-sdk"],
3159
+ needsAny: false,
3160
+ reason: "Claude Vision uses the Anthropic SDK"
3161
+ }
3162
+ ],
3163
+ alternatives: [],
3164
+ isRecommended: false,
3165
+ path: "skills/api-ai-claude-vision"
3166
+ },
1951
3167
  "web-server-state-react-query": {
1952
3168
  id: "web-server-state-react-query",
1953
3169
  slug: "react-query",
@@ -1995,6 +3211,31 @@ var BUILT_IN_MATRIX = {
1995
3211
  recommendedReason: "Modern server state caching for React",
1996
3212
  path: "skills/web-server-state-react-query"
1997
3213
  },
3214
+ "api-ai-llamaindex": {
3215
+ id: "api-ai-llamaindex",
3216
+ slug: "llamaindex",
3217
+ displayName: "LlamaIndex",
3218
+ description: "Data framework for LLM applications with indexing, retrieval, and query engines",
3219
+ usageGuidance: "Use when building RAG and data-aware LLM applications \u2014 document loading, text chunking, vector indexing, query engines, chat engines, and agentic RAG with LlamaIndex.TS.",
3220
+ category: "api-ai",
3221
+ author: "@vince",
3222
+ conflictsWith: [],
3223
+ discourages: [],
3224
+ compatibleWith: [],
3225
+ requires: [],
3226
+ alternatives: [
3227
+ {
3228
+ skillId: "api-ai-vercel-ai-sdk",
3229
+ purpose: "AI SDK"
3230
+ },
3231
+ {
3232
+ skillId: "api-ai-langchain",
3233
+ purpose: "AI SDK"
3234
+ }
3235
+ ],
3236
+ isRecommended: false,
3237
+ path: "skills/api-ai-llamaindex"
3238
+ },
1998
3239
  "web-framework-svelte": {
1999
3240
  id: "web-framework-svelte",
2000
3241
  slug: "svelte",
@@ -2022,7 +3263,16 @@ var BUILT_IN_MATRIX = {
2022
3263
  }
2023
3264
  ],
2024
3265
  discourages: [],
2025
- compatibleWith: [],
3266
+ compatibleWith: [
3267
+ "web-tooling-storybook",
3268
+ "web-framework-react",
3269
+ "web-framework-vue-composition-api",
3270
+ "web-framework-angular-standalone",
3271
+ "web-meta-framework-nextjs",
3272
+ "web-meta-framework-remix",
3273
+ "web-meta-framework-nuxt",
3274
+ "web-meta-framework-sveltekit"
3275
+ ],
2026
3276
  requires: [],
2027
3277
  alternatives: [
2028
3278
  {
@@ -2045,6 +3295,22 @@ var BUILT_IN_MATRIX = {
2045
3295
  isRecommended: false,
2046
3296
  path: "skills/web-framework-svelte"
2047
3297
  },
3298
+ "api-ai-elevenlabs": {
3299
+ id: "api-ai-elevenlabs",
3300
+ slug: "elevenlabs",
3301
+ displayName: "ElevenLabs",
3302
+ description: "AI voice synthesis with text-to-speech, voice cloning, and real-time streaming",
3303
+ usageGuidance: "Use when generating speech with ElevenLabs \u2014 text-to-speech, streaming audio, voice cloning, voice selection, pronunciation control (SSML), and real-time conversational AI.",
3304
+ category: "api-ai",
3305
+ author: "@vince",
3306
+ conflictsWith: [],
3307
+ discourages: [],
3308
+ compatibleWith: [],
3309
+ requires: [],
3310
+ alternatives: [],
3311
+ isRecommended: false,
3312
+ path: "skills/api-ai-elevenlabs"
3313
+ },
2048
3314
  "api-performance-api-performance": {
2049
3315
  id: "api-performance-api-performance",
2050
3316
  slug: "api-performance",
@@ -2115,11 +3381,59 @@ var BUILT_IN_MATRIX = {
2115
3381
  usageGuidance: "Use when building React UIs with Ant Design \u2014 ConfigProvider theming, Table, Form, Layout, data entry components, and enterprise design patterns.",
2116
3382
  category: "web-ui-components",
2117
3383
  author: "@vince",
2118
- conflictsWith: [],
3384
+ conflictsWith: [
3385
+ {
3386
+ skillId: "web-ui-shadcn-ui",
3387
+ reason: "React UI component libraries define competing design systems"
3388
+ },
3389
+ {
3390
+ skillId: "web-ui-mui",
3391
+ reason: "React UI component libraries define competing design systems"
3392
+ },
3393
+ {
3394
+ skillId: "web-ui-chakra-ui",
3395
+ reason: "React UI component libraries define competing design systems"
3396
+ },
3397
+ {
3398
+ skillId: "web-ui-mantine",
3399
+ reason: "React UI component libraries define competing design systems"
3400
+ }
3401
+ ],
2119
3402
  discourages: [],
2120
- compatibleWith: [],
2121
- requires: [],
2122
- alternatives: [],
3403
+ compatibleWith: [
3404
+ "web-framework-react",
3405
+ "web-meta-framework-nextjs",
3406
+ "web-meta-framework-remix"
3407
+ ],
3408
+ requires: [
3409
+ {
3410
+ skillIds: [
3411
+ "web-framework-react",
3412
+ "web-meta-framework-nextjs",
3413
+ "web-meta-framework-remix"
3414
+ ],
3415
+ needsAny: true,
3416
+ reason: "Ant Design is a React component library"
3417
+ }
3418
+ ],
3419
+ alternatives: [
3420
+ {
3421
+ skillId: "web-ui-shadcn-ui",
3422
+ purpose: "UI Components (React)"
3423
+ },
3424
+ {
3425
+ skillId: "web-ui-mui",
3426
+ purpose: "UI Components (React)"
3427
+ },
3428
+ {
3429
+ skillId: "web-ui-chakra-ui",
3430
+ purpose: "UI Components (React)"
3431
+ },
3432
+ {
3433
+ skillId: "web-ui-mantine",
3434
+ purpose: "UI Components (React)"
3435
+ }
3436
+ ],
2123
3437
  isRecommended: false,
2124
3438
  path: "skills/web-ui-ant-design"
2125
3439
  },
@@ -2145,7 +3459,12 @@ var BUILT_IN_MATRIX = {
2145
3459
  "web-meta-framework-nextjs",
2146
3460
  "web-meta-framework-remix",
2147
3461
  "web-data-fetching-graphql-urql",
2148
- "web-framework-solidjs"
3462
+ "web-framework-solidjs",
3463
+ "web-ui-headless-ui",
3464
+ "web-utilities-vueuse",
3465
+ "web-tooling-storybook",
3466
+ "web-framework-svelte",
3467
+ "web-meta-framework-sveltekit"
2149
3468
  ],
2150
3469
  requires: [
2151
3470
  {
@@ -2170,6 +3489,10 @@ var BUILT_IN_MATRIX = {
2170
3489
  {
2171
3490
  skillId: "web-meta-framework-astro",
2172
3491
  purpose: "Meta-Framework"
3492
+ },
3493
+ {
3494
+ skillId: "web-meta-framework-qwik",
3495
+ purpose: "Meta-Framework"
2173
3496
  }
2174
3497
  ],
2175
3498
  isRecommended: false,
@@ -2187,10 +3510,57 @@ var BUILT_IN_MATRIX = {
2187
3510
  discourages: [],
2188
3511
  compatibleWith: [],
2189
3512
  requires: [],
2190
- alternatives: [],
3513
+ alternatives: [
3514
+ {
3515
+ skillId: "api-baas-firebase",
3516
+ purpose: "Backend as a Service"
3517
+ },
3518
+ {
3519
+ skillId: "api-baas-appwrite",
3520
+ purpose: "Backend as a Service"
3521
+ }
3522
+ ],
2191
3523
  isRecommended: false,
2192
3524
  path: "skills/api-baas-supabase"
2193
3525
  },
3526
+ "api-database-mongoose": {
3527
+ id: "api-database-mongoose",
3528
+ slug: "mongoose",
3529
+ displayName: "Mongoose",
3530
+ description: "MongoDB ODM with schemas, validation, middleware, and TypeScript support",
3531
+ usageGuidance: "Use when working with MongoDB via Mongoose \u2014 schema definitions, model creation, queries, population, middleware hooks, virtuals, and TypeScript integration.",
3532
+ category: "api-database",
3533
+ author: "@vince",
3534
+ conflictsWith: [
3535
+ {
3536
+ skillId: "api-database-mongodb",
3537
+ reason: "Raw MongoDB driver and Mongoose ODM are alternative approaches"
3538
+ }
3539
+ ],
3540
+ discourages: [],
3541
+ compatibleWith: [],
3542
+ requires: [],
3543
+ alternatives: [
3544
+ {
3545
+ skillId: "api-database-drizzle",
3546
+ purpose: "Database ORM / ODM"
3547
+ },
3548
+ {
3549
+ skillId: "api-database-prisma",
3550
+ purpose: "Database ORM / ODM"
3551
+ },
3552
+ {
3553
+ skillId: "api-database-sequelize",
3554
+ purpose: "Database ORM / ODM"
3555
+ },
3556
+ {
3557
+ skillId: "api-database-typeorm",
3558
+ purpose: "Database ORM / ODM"
3559
+ }
3560
+ ],
3561
+ isRecommended: false,
3562
+ path: "skills/api-database-mongoose"
3563
+ },
2194
3564
  "web-state-mobx": {
2195
3565
  id: "web-state-mobx",
2196
3566
  slug: "mobx",
@@ -2272,7 +3642,16 @@ var BUILT_IN_MATRIX = {
2272
3642
  discourages: [],
2273
3643
  compatibleWith: [],
2274
3644
  requires: [],
2275
- alternatives: [],
3645
+ alternatives: [
3646
+ {
3647
+ skillId: "web-animation-framer-motion",
3648
+ purpose: "Animation"
3649
+ },
3650
+ {
3651
+ skillId: "web-animation-view-transitions",
3652
+ purpose: "Animation"
3653
+ }
3654
+ ],
2276
3655
  isRecommended: false,
2277
3656
  path: "skills/web-animation-css-animations"
2278
3657
  },
@@ -2316,14 +3695,49 @@ var BUILT_IN_MATRIX = {
2316
3695
  usageGuidance: "Use when setting up or working with Nx monorepos \u2014 workspace configuration, project graph, task pipelines, caching, generators, and plugins.",
2317
3696
  category: "shared-monorepo",
2318
3697
  author: "@vince",
2319
- conflictsWith: [],
3698
+ conflictsWith: [
3699
+ {
3700
+ skillId: "shared-monorepo-turborepo",
3701
+ reason: "Monorepo build orchestrators are mutually exclusive"
3702
+ }
3703
+ ],
2320
3704
  discourages: [],
2321
3705
  compatibleWith: [],
2322
3706
  requires: [],
2323
- alternatives: [],
3707
+ alternatives: [
3708
+ {
3709
+ skillId: "shared-monorepo-turborepo",
3710
+ purpose: "Monorepo Orchestrator"
3711
+ }
3712
+ ],
2324
3713
  isRecommended: false,
2325
3714
  path: "skills/shared-monorepo-nx"
2326
3715
  },
3716
+ "api-baas-appwrite": {
3717
+ id: "api-baas-appwrite",
3718
+ slug: "appwrite",
3719
+ displayName: "Appwrite",
3720
+ description: "Open-source backend-as-a-service with auth, databases, storage, and functions",
3721
+ usageGuidance: "Use when building with Appwrite \u2014 client/server SDKs for authentication, TablesDB (tables, rows, columns), file storage with buckets, serverless functions, and realtime subscriptions.",
3722
+ category: "api-baas",
3723
+ author: "@vince",
3724
+ conflictsWith: [],
3725
+ discourages: [],
3726
+ compatibleWith: [],
3727
+ requires: [],
3728
+ alternatives: [
3729
+ {
3730
+ skillId: "api-baas-supabase",
3731
+ purpose: "Backend as a Service"
3732
+ },
3733
+ {
3734
+ skillId: "api-baas-firebase",
3735
+ purpose: "Backend as a Service"
3736
+ }
3737
+ ],
3738
+ isRecommended: false,
3739
+ path: "skills/api-baas-appwrite"
3740
+ },
2327
3741
  "cli-framework-oclif-ink": {
2328
3742
  id: "cli-framework-oclif-ink",
2329
3743
  slug: "oclif-ink",
@@ -2350,6 +3764,62 @@ var BUILT_IN_MATRIX = {
2350
3764
  isRecommended: false,
2351
3765
  path: "skills/cli-framework-oclif-ink"
2352
3766
  },
3767
+ "api-cms-strapi": {
3768
+ id: "api-cms-strapi",
3769
+ slug: "strapi",
3770
+ displayName: "Strapi",
3771
+ description: "Open-source headless CMS with content types, REST/GraphQL API, and admin panel",
3772
+ usageGuidance: "Use when building content-managed applications with Strapi \u2014 content type schemas, REST API (filters, populate, pagination), Document Service API (find, create, update, delete, publish), custom controllers, services, policies, middlewares, lifecycle hooks, authentication (register, login, JWT), roles and permissions, media upload, and TypeScript support.",
3773
+ category: "api-cms",
3774
+ author: "@vince",
3775
+ conflictsWith: [
3776
+ {
3777
+ skillId: "api-cms-payload",
3778
+ reason: "CMS platforms are mutually exclusive"
3779
+ },
3780
+ {
3781
+ skillId: "api-cms-sanity",
3782
+ reason: "CMS platforms are mutually exclusive"
3783
+ }
3784
+ ],
3785
+ discourages: [],
3786
+ compatibleWith: [],
3787
+ requires: [],
3788
+ alternatives: [
3789
+ {
3790
+ skillId: "api-cms-payload",
3791
+ purpose: "CMS"
3792
+ },
3793
+ {
3794
+ skillId: "api-cms-sanity",
3795
+ purpose: "CMS"
3796
+ }
3797
+ ],
3798
+ isRecommended: false,
3799
+ path: "skills/api-cms-strapi"
3800
+ },
3801
+ "web-utilities-vueuse": {
3802
+ id: "web-utilities-vueuse",
3803
+ slug: "vueuse",
3804
+ displayName: "Vueuse",
3805
+ description: "Vue Composition API utility collection with 250+ composable functions",
3806
+ usageGuidance: "Use when building Vue apps with VueUse \u2014 browser APIs (useLocalStorage, useClipboard, useFetch), sensors (useMouse, useScroll), animations, state management helpers, and component utilities.",
3807
+ category: "web-utilities",
3808
+ author: "@vince",
3809
+ conflictsWith: [],
3810
+ discourages: [],
3811
+ compatibleWith: ["web-framework-vue-composition-api", "web-meta-framework-nuxt"],
3812
+ requires: [
3813
+ {
3814
+ skillIds: ["web-framework-vue-composition-api", "web-meta-framework-nuxt"],
3815
+ needsAny: true,
3816
+ reason: "VueUse composables require Vue 3"
3817
+ }
3818
+ ],
3819
+ alternatives: [],
3820
+ isRecommended: false,
3821
+ path: "skills/web-utilities-vueuse"
3822
+ },
2353
3823
  "api-baas-firebase": {
2354
3824
  id: "api-baas-firebase",
2355
3825
  slug: "firebase",
@@ -2362,7 +3832,16 @@ var BUILT_IN_MATRIX = {
2362
3832
  discourages: [],
2363
3833
  compatibleWith: [],
2364
3834
  requires: [],
2365
- alternatives: [],
3835
+ alternatives: [
3836
+ {
3837
+ skillId: "api-baas-supabase",
3838
+ purpose: "Backend as a Service"
3839
+ },
3840
+ {
3841
+ skillId: "api-baas-appwrite",
3842
+ purpose: "Backend as a Service"
3843
+ }
3844
+ ],
2366
3845
  isRecommended: false,
2367
3846
  path: "skills/api-baas-firebase"
2368
3847
  },
@@ -2378,17 +3857,50 @@ var BUILT_IN_MATRIX = {
2378
3857
  discourages: [],
2379
3858
  compatibleWith: [],
2380
3859
  requires: [],
2381
- alternatives: [],
3860
+ alternatives: [
3861
+ {
3862
+ skillId: "api-ai-anthropic-sdk",
3863
+ purpose: "AI Provider SDK"
3864
+ },
3865
+ {
3866
+ skillId: "api-ai-google-gemini-sdk",
3867
+ purpose: "AI Provider SDK"
3868
+ },
3869
+ {
3870
+ skillId: "api-ai-mistral-sdk",
3871
+ purpose: "AI Provider SDK"
3872
+ },
3873
+ {
3874
+ skillId: "api-ai-cohere-sdk",
3875
+ purpose: "AI Provider SDK"
3876
+ },
3877
+ {
3878
+ skillId: "api-ai-together-ai",
3879
+ purpose: "AI Provider SDK"
3880
+ },
3881
+ {
3882
+ skillId: "api-ai-replicate",
3883
+ purpose: "AI Provider SDK"
3884
+ },
3885
+ {
3886
+ skillId: "api-ai-huggingface-inference",
3887
+ purpose: "AI Provider SDK"
3888
+ },
3889
+ {
3890
+ skillId: "api-ai-ollama",
3891
+ purpose: "AI Provider SDK"
3892
+ }
3893
+ ],
2382
3894
  isRecommended: false,
2383
3895
  path: "skills/api-ai-openai-sdk"
2384
3896
  },
2385
- "api-database-redis": {
2386
- id: "api-database-redis",
2387
- slug: "redis",
2388
- displayName: "Redis",
2389
- description: "Redis in-memory data store with ioredis",
2390
- usageGuidance: "Use when implementing caching, session storage, rate limiting, pub/sub messaging, queues, or real-time leaderboards with Redis.",
2391
- category: "api-database",
3897
+ "api-ai-langfuse": {
3898
+ id: "api-ai-langfuse",
3899
+ slug: "langfuse",
3900
+ displayName: "Langfuse",
3901
+ description: "LLM observability platform with tracing, evaluations, and prompt management",
3902
+ usageGuidance: "Use when adding observability to LLM applications \u2014 tracing LLM calls, tracking costs, evaluations, prompt management, session tracking, user feedback, and datasets for testing with Langfuse.",
3903
+ category: "api-ai",
2392
3904
  author: "@vince",
2393
3905
  conflictsWith: [],
2394
3906
  discourages: [],
@@ -2396,6 +3908,53 @@ var BUILT_IN_MATRIX = {
2396
3908
  requires: [],
2397
3909
  alternatives: [],
2398
3910
  isRecommended: false,
3911
+ path: "skills/api-ai-langfuse"
3912
+ },
3913
+ "api-ai-openai-whisper": {
3914
+ id: "api-ai-openai-whisper",
3915
+ slug: "openai-whisper",
3916
+ displayName: "OpenAI Whisper",
3917
+ description: "Speech-to-text transcription and translation via OpenAI Audio API",
3918
+ usageGuidance: "Use when transcribing or translating audio with OpenAI Whisper -- file transcription, real-time transcription, translation to English, timestamp generation, and custom vocabulary prompting.",
3919
+ category: "api-ai",
3920
+ author: "@vince",
3921
+ conflictsWith: [],
3922
+ discourages: [],
3923
+ compatibleWith: [],
3924
+ requires: [
3925
+ {
3926
+ skillIds: ["api-ai-openai-sdk"],
3927
+ needsAny: false,
3928
+ reason: "Whisper API uses the OpenAI SDK"
3929
+ }
3930
+ ],
3931
+ alternatives: [],
3932
+ isRecommended: false,
3933
+ path: "skills/api-ai-openai-whisper"
3934
+ },
3935
+ "api-database-redis": {
3936
+ id: "api-database-redis",
3937
+ slug: "redis",
3938
+ displayName: "Redis",
3939
+ description: "Redis in-memory data store with ioredis",
3940
+ usageGuidance: "Use when implementing caching, session storage, rate limiting, pub/sub messaging, queues, or real-time leaderboards with Redis.",
3941
+ category: "api-database",
3942
+ author: "@vince",
3943
+ conflictsWith: [],
3944
+ discourages: [],
3945
+ compatibleWith: [],
3946
+ requires: [],
3947
+ alternatives: [
3948
+ {
3949
+ skillId: "api-baas-upstash",
3950
+ purpose: "Cache / KV Store"
3951
+ },
3952
+ {
3953
+ skillId: "api-baas-vercel-kv",
3954
+ purpose: "Cache / KV Store"
3955
+ }
3956
+ ],
3957
+ isRecommended: false,
2399
3958
  path: "skills/api-database-redis"
2400
3959
  },
2401
3960
  "shared-monorepo-pnpm-workspaces": {
@@ -2414,6 +3973,22 @@ var BUILT_IN_MATRIX = {
2414
3973
  isRecommended: false,
2415
3974
  path: "skills/shared-monorepo-pnpm-workspaces"
2416
3975
  },
3976
+ "api-ai-litellm": {
3977
+ id: "api-ai-litellm",
3978
+ slug: "litellm",
3979
+ displayName: "LiteLLM",
3980
+ description: "Unified LLM proxy supporting 100+ providers with OpenAI-compatible API",
3981
+ usageGuidance: "Use when routing LLM requests through LiteLLM proxy \u2014 unified OpenAI-compatible API across providers, model fallbacks, load balancing, spend tracking, and rate limiting. Covers proxy server config.yaml setup, TypeScript client via OpenAI SDK, virtual keys, and production deployment.",
3982
+ category: "api-ai",
3983
+ author: "@vince",
3984
+ conflictsWith: [],
3985
+ discourages: [],
3986
+ compatibleWith: [],
3987
+ requires: [],
3988
+ alternatives: [],
3989
+ isRecommended: false,
3990
+ path: "skills/api-ai-litellm"
3991
+ },
2417
3992
  "web-ui-mui": {
2418
3993
  id: "web-ui-mui",
2419
3994
  slug: "mui",
@@ -2422,11 +3997,59 @@ var BUILT_IN_MATRIX = {
2422
3997
  usageGuidance: "Use when building React UIs with MUI \u2014 theming, component customization, sx prop, styled API, data grids, date pickers, and Material Design patterns.",
2423
3998
  category: "web-ui-components",
2424
3999
  author: "@vince",
2425
- conflictsWith: [],
4000
+ conflictsWith: [
4001
+ {
4002
+ skillId: "web-ui-shadcn-ui",
4003
+ reason: "React UI component libraries define competing design systems"
4004
+ },
4005
+ {
4006
+ skillId: "web-ui-chakra-ui",
4007
+ reason: "React UI component libraries define competing design systems"
4008
+ },
4009
+ {
4010
+ skillId: "web-ui-mantine",
4011
+ reason: "React UI component libraries define competing design systems"
4012
+ },
4013
+ {
4014
+ skillId: "web-ui-ant-design",
4015
+ reason: "React UI component libraries define competing design systems"
4016
+ }
4017
+ ],
2426
4018
  discourages: [],
2427
- compatibleWith: [],
2428
- requires: [],
2429
- alternatives: [],
4019
+ compatibleWith: [
4020
+ "web-framework-react",
4021
+ "web-meta-framework-nextjs",
4022
+ "web-meta-framework-remix"
4023
+ ],
4024
+ requires: [
4025
+ {
4026
+ skillIds: [
4027
+ "web-framework-react",
4028
+ "web-meta-framework-nextjs",
4029
+ "web-meta-framework-remix"
4030
+ ],
4031
+ needsAny: true,
4032
+ reason: "MUI is a React component library"
4033
+ }
4034
+ ],
4035
+ alternatives: [
4036
+ {
4037
+ skillId: "web-ui-shadcn-ui",
4038
+ purpose: "UI Components (React)"
4039
+ },
4040
+ {
4041
+ skillId: "web-ui-chakra-ui",
4042
+ purpose: "UI Components (React)"
4043
+ },
4044
+ {
4045
+ skillId: "web-ui-mantine",
4046
+ purpose: "UI Components (React)"
4047
+ },
4048
+ {
4049
+ skillId: "web-ui-ant-design",
4050
+ purpose: "UI Components (React)"
4051
+ }
4052
+ ],
2430
4053
  isRecommended: false,
2431
4054
  path: "skills/web-ui-mui"
2432
4055
  },
@@ -2441,14 +4064,27 @@ var BUILT_IN_MATRIX = {
2441
4064
  conflictsWith: [
2442
4065
  {
2443
4066
  skillId: "api-database-prisma",
2444
- reason: "Database ORMs/ODMs are mutually exclusive"
4067
+ reason: "SQL ORMs are mutually exclusive"
2445
4068
  },
2446
4069
  {
2447
- skillId: "api-database-mongodb",
2448
- reason: "Database ORMs/ODMs are mutually exclusive"
4070
+ skillId: "api-database-sequelize",
4071
+ reason: "SQL ORMs are mutually exclusive"
4072
+ },
4073
+ {
4074
+ skillId: "api-database-typeorm",
4075
+ reason: "SQL ORMs are mutually exclusive"
4076
+ }
4077
+ ],
4078
+ discourages: [
4079
+ {
4080
+ skillId: "api-database-sequelize",
4081
+ reason: "Sequelize is mature but Drizzle offers better TypeScript integration"
4082
+ },
4083
+ {
4084
+ skillId: "api-database-typeorm",
4085
+ reason: "TypeORM uses decorators; Drizzle is more TypeScript-native"
2449
4086
  }
2450
4087
  ],
2451
- discourages: [],
2452
4088
  compatibleWith: [],
2453
4089
  requires: [],
2454
4090
  alternatives: [
@@ -2457,7 +4093,15 @@ var BUILT_IN_MATRIX = {
2457
4093
  purpose: "Database ORM / ODM"
2458
4094
  },
2459
4095
  {
2460
- skillId: "api-database-mongodb",
4096
+ skillId: "api-database-sequelize",
4097
+ purpose: "Database ORM / ODM"
4098
+ },
4099
+ {
4100
+ skillId: "api-database-typeorm",
4101
+ purpose: "Database ORM / ODM"
4102
+ },
4103
+ {
4104
+ skillId: "api-database-mongoose",
2461
4105
  purpose: "Database ORM / ODM"
2462
4106
  }
2463
4107
  ],
@@ -2465,6 +4109,22 @@ var BUILT_IN_MATRIX = {
2465
4109
  recommendedReason: "Modern TypeScript-first ORM",
2466
4110
  path: "skills/api-database-drizzle"
2467
4111
  },
4112
+ "api-database-surrealdb": {
4113
+ id: "api-database-surrealdb",
4114
+ slug: "surrealdb",
4115
+ displayName: "SurrealDB",
4116
+ description: "Multi-model database with SQL-like query language, graph relations, and real-time subscriptions",
4117
+ usageGuidance: "Use when working with SurrealDB \u2014 SurrealQL queries, record links for graph relations, live queries for real-time, schema-full and schema-less modes, and multi-tenancy with namespaces and databases.",
4118
+ category: "api-database",
4119
+ author: "@vince",
4120
+ conflictsWith: [],
4121
+ discourages: [],
4122
+ compatibleWith: [],
4123
+ requires: [],
4124
+ alternatives: [],
4125
+ isRecommended: false,
4126
+ path: "skills/api-database-surrealdb"
4127
+ },
2468
4128
  "web-testing-vitest": {
2469
4129
  id: "web-testing-vitest",
2470
4130
  slug: "vitest",
@@ -2502,6 +4162,10 @@ var BUILT_IN_MATRIX = {
2502
4162
  {
2503
4163
  skillId: "web-meta-framework-astro",
2504
4164
  reason: "Meta-frameworks are mutually exclusive"
4165
+ },
4166
+ {
4167
+ skillId: "web-meta-framework-qwik",
4168
+ reason: "Meta-frameworks are mutually exclusive"
2505
4169
  }
2506
4170
  ],
2507
4171
  discourages: [],
@@ -2531,7 +4195,15 @@ var BUILT_IN_MATRIX = {
2531
4195
  "web-framework-angular-standalone",
2532
4196
  "web-meta-framework-nuxt",
2533
4197
  "web-data-fetching-graphql-urql",
2534
- "web-framework-solidjs"
4198
+ "web-framework-solidjs",
4199
+ "web-ui-chakra-ui",
4200
+ "web-ui-mantine",
4201
+ "web-ui-mui",
4202
+ "web-ui-ant-design",
4203
+ "web-ui-headless-ui",
4204
+ "web-tooling-storybook",
4205
+ "web-framework-svelte",
4206
+ "web-meta-framework-sveltekit"
2535
4207
  ],
2536
4208
  requires: [
2537
4209
  {
@@ -2556,11 +4228,31 @@ var BUILT_IN_MATRIX = {
2556
4228
  {
2557
4229
  skillId: "web-meta-framework-astro",
2558
4230
  purpose: "Meta-Framework"
4231
+ },
4232
+ {
4233
+ skillId: "web-meta-framework-qwik",
4234
+ purpose: "Meta-Framework"
2559
4235
  }
2560
4236
  ],
2561
4237
  isRecommended: false,
2562
4238
  path: "skills/web-meta-framework-nextjs"
2563
4239
  },
4240
+ "api-database-cockroachdb": {
4241
+ id: "api-database-cockroachdb",
4242
+ slug: "cockroachdb",
4243
+ displayName: "CockroachDB",
4244
+ description: "Distributed SQL database with PostgreSQL compatibility and automatic replication",
4245
+ usageGuidance: "Use when working with CockroachDB -- PostgreSQL-compatible wire protocol, distributed transactions with serializable isolation, automatic sharding, multi-region locality, and transaction retry logic.",
4246
+ category: "api-database",
4247
+ author: "@vince",
4248
+ conflictsWith: [],
4249
+ discourages: [],
4250
+ compatibleWith: [],
4251
+ requires: [],
4252
+ alternatives: [],
4253
+ isRecommended: false,
4254
+ path: "skills/api-database-cockroachdb"
4255
+ },
2564
4256
  "web-animation-view-transitions": {
2565
4257
  id: "web-animation-view-transitions",
2566
4258
  slug: "view-transitions",
@@ -2573,7 +4265,16 @@ var BUILT_IN_MATRIX = {
2573
4265
  discourages: [],
2574
4266
  compatibleWith: [],
2575
4267
  requires: [],
2576
- alternatives: [],
4268
+ alternatives: [
4269
+ {
4270
+ skillId: "web-animation-framer-motion",
4271
+ purpose: "Animation"
4272
+ },
4273
+ {
4274
+ skillId: "web-animation-css-animations",
4275
+ purpose: "Animation"
4276
+ }
4277
+ ],
2577
4278
  isRecommended: false,
2578
4279
  path: "skills/web-animation-view-transitions"
2579
4280
  },
@@ -2585,11 +4286,45 @@ var BUILT_IN_MATRIX = {
2585
4286
  usageGuidance: "Use when building NestJS apps with modules, controllers, services, or decorators.",
2586
4287
  category: "api-api",
2587
4288
  author: "@vince",
2588
- conflictsWith: [],
4289
+ conflictsWith: [
4290
+ {
4291
+ skillId: "api-framework-hono",
4292
+ reason: "API frameworks are mutually exclusive within a single service"
4293
+ },
4294
+ {
4295
+ skillId: "api-framework-express",
4296
+ reason: "API frameworks are mutually exclusive within a single service"
4297
+ },
4298
+ {
4299
+ skillId: "api-framework-fastify",
4300
+ reason: "API frameworks are mutually exclusive within a single service"
4301
+ },
4302
+ {
4303
+ skillId: "api-framework-elysia",
4304
+ reason: "API frameworks are mutually exclusive within a single service"
4305
+ }
4306
+ ],
2589
4307
  discourages: [],
2590
4308
  compatibleWith: [],
2591
4309
  requires: [],
2592
- alternatives: [],
4310
+ alternatives: [
4311
+ {
4312
+ skillId: "api-framework-hono",
4313
+ purpose: "API Framework"
4314
+ },
4315
+ {
4316
+ skillId: "api-framework-express",
4317
+ purpose: "API Framework"
4318
+ },
4319
+ {
4320
+ skillId: "api-framework-fastify",
4321
+ purpose: "API Framework"
4322
+ },
4323
+ {
4324
+ skillId: "api-framework-elysia",
4325
+ purpose: "API Framework"
4326
+ }
4327
+ ],
2593
4328
  isRecommended: false,
2594
4329
  path: "skills/api-framework-nestjs"
2595
4330
  },
@@ -2609,6 +4344,60 @@ var BUILT_IN_MATRIX = {
2609
4344
  isRecommended: false,
2610
4345
  path: "skills/api-email-resend-react-email"
2611
4346
  },
4347
+ "api-baas-vercel-kv": {
4348
+ id: "api-baas-vercel-kv",
4349
+ slug: "vercel-kv",
4350
+ displayName: "Vercel KV",
4351
+ description: "Serverless Redis-compatible key-value store on Vercel",
4352
+ usageGuidance: "Use when deploying Redis-compatible KV storage on Vercel -- automatic connection via UPSTASH_REDIS_REST_URL env vars, edge-compatible REST API, Redis command compatibility, and TTL-based caching.",
4353
+ category: "api-baas",
4354
+ author: "@vince",
4355
+ conflictsWith: [],
4356
+ discourages: [],
4357
+ compatibleWith: [],
4358
+ requires: [],
4359
+ alternatives: [
4360
+ {
4361
+ skillId: "api-database-redis",
4362
+ purpose: "Cache / KV Store"
4363
+ },
4364
+ {
4365
+ skillId: "api-baas-upstash",
4366
+ purpose: "Cache / KV Store"
4367
+ }
4368
+ ],
4369
+ isRecommended: false,
4370
+ path: "skills/api-baas-vercel-kv"
4371
+ },
4372
+ "api-baas-vercel-postgres": {
4373
+ id: "api-baas-vercel-postgres",
4374
+ slug: "vercel-postgres",
4375
+ displayName: "Vercel Postgres",
4376
+ description: "Serverless PostgreSQL on Vercel with edge-compatible SDK",
4377
+ usageGuidance: "Use when deploying PostgreSQL on Vercel -- sql tagged template for edge functions, createPool/createClient for Node.js, automatic connection management via POSTGRES_URL env vars. NOTE: @vercel/postgres is deprecated (Dec 2024). For new projects, use @neondatabase/serverless instead.",
4378
+ category: "api-baas",
4379
+ author: "@vince",
4380
+ conflictsWith: [],
4381
+ discourages: [],
4382
+ compatibleWith: [],
4383
+ requires: [],
4384
+ alternatives: [
4385
+ {
4386
+ skillId: "api-baas-neon",
4387
+ purpose: "Managed Database"
4388
+ },
4389
+ {
4390
+ skillId: "api-baas-planetscale",
4391
+ purpose: "Managed Database"
4392
+ },
4393
+ {
4394
+ skillId: "api-baas-turso",
4395
+ purpose: "Managed Database"
4396
+ }
4397
+ ],
4398
+ isRecommended: false,
4399
+ path: "skills/api-baas-vercel-postgres"
4400
+ },
2612
4401
  "api-framework-express": {
2613
4402
  id: "api-framework-express",
2614
4403
  slug: "express",
@@ -2625,6 +4414,14 @@ var BUILT_IN_MATRIX = {
2625
4414
  {
2626
4415
  skillId: "api-framework-fastify",
2627
4416
  reason: "API frameworks are mutually exclusive within a single service"
4417
+ },
4418
+ {
4419
+ skillId: "api-framework-elysia",
4420
+ reason: "API frameworks are mutually exclusive within a single service"
4421
+ },
4422
+ {
4423
+ skillId: "api-framework-nestjs",
4424
+ reason: "API frameworks are mutually exclusive within a single service"
2628
4425
  }
2629
4426
  ],
2630
4427
  discourages: [
@@ -2635,6 +4432,10 @@ var BUILT_IN_MATRIX = {
2635
4432
  {
2636
4433
  skillId: "api-framework-fastify",
2637
4434
  reason: "Express is mature but Fastify offers better performance"
4435
+ },
4436
+ {
4437
+ skillId: "api-framework-elysia",
4438
+ reason: "Express is mature but Elysia is faster on Bun with end-to-end type safety"
2638
4439
  }
2639
4440
  ],
2640
4441
  compatibleWith: [],
@@ -2647,11 +4448,35 @@ var BUILT_IN_MATRIX = {
2647
4448
  {
2648
4449
  skillId: "api-framework-fastify",
2649
4450
  purpose: "API Framework"
4451
+ },
4452
+ {
4453
+ skillId: "api-framework-elysia",
4454
+ purpose: "API Framework"
4455
+ },
4456
+ {
4457
+ skillId: "api-framework-nestjs",
4458
+ purpose: "API Framework"
2650
4459
  }
2651
4460
  ],
2652
4461
  isRecommended: false,
2653
4462
  path: "skills/api-framework-express"
2654
4463
  },
4464
+ "api-ai-modal": {
4465
+ id: "api-ai-modal",
4466
+ slug: "modal",
4467
+ displayName: "Modal",
4468
+ description: "Serverless GPU compute platform for AI model deployment and inference",
4469
+ usageGuidance: "Use when deploying ML models or GPU workloads on Modal \u2014 web endpoints for API access from TypeScript, serverless GPU functions, model serving, scheduled jobs, and container-based deployments.",
4470
+ category: "api-ai",
4471
+ author: "@vince",
4472
+ conflictsWith: [],
4473
+ discourages: [],
4474
+ compatibleWith: [],
4475
+ requires: [],
4476
+ alternatives: [],
4477
+ isRecommended: false,
4478
+ path: "skills/api-ai-modal"
4479
+ },
2655
4480
  "web-ui-tanstack-table": {
2656
4481
  id: "web-ui-tanstack-table",
2657
4482
  slug: "tanstack-table",
@@ -2692,6 +4517,10 @@ var BUILT_IN_MATRIX = {
2692
4517
  {
2693
4518
  skillId: "web-meta-framework-astro",
2694
4519
  reason: "Meta-frameworks are mutually exclusive"
4520
+ },
4521
+ {
4522
+ skillId: "web-meta-framework-qwik",
4523
+ reason: "Meta-frameworks are mutually exclusive"
2695
4524
  }
2696
4525
  ],
2697
4526
  discourages: [],
@@ -2720,7 +4549,16 @@ var BUILT_IN_MATRIX = {
2720
4549
  "web-framework-angular-standalone",
2721
4550
  "web-meta-framework-nuxt",
2722
4551
  "web-data-fetching-graphql-urql",
2723
- "web-framework-solidjs"
4552
+ "web-framework-solidjs",
4553
+ "web-routing-react-router",
4554
+ "web-ui-chakra-ui",
4555
+ "web-ui-mantine",
4556
+ "web-ui-mui",
4557
+ "web-ui-ant-design",
4558
+ "web-ui-headless-ui",
4559
+ "web-tooling-storybook",
4560
+ "web-framework-svelte",
4561
+ "web-meta-framework-sveltekit"
2724
4562
  ],
2725
4563
  requires: [
2726
4564
  {
@@ -2745,6 +4583,10 @@ var BUILT_IN_MATRIX = {
2745
4583
  {
2746
4584
  skillId: "web-meta-framework-astro",
2747
4585
  purpose: "Meta-Framework"
4586
+ },
4587
+ {
4588
+ skillId: "web-meta-framework-qwik",
4589
+ purpose: "Meta-Framework"
2748
4590
  }
2749
4591
  ],
2750
4592
  isRecommended: false,
@@ -2762,10 +4604,45 @@ var BUILT_IN_MATRIX = {
2762
4604
  discourages: [],
2763
4605
  compatibleWith: [],
2764
4606
  requires: [],
2765
- alternatives: [],
2766
- isRecommended: false,
4607
+ alternatives: [
4608
+ {
4609
+ skillId: "api-ai-langchain",
4610
+ purpose: "AI SDK"
4611
+ },
4612
+ {
4613
+ skillId: "api-ai-llamaindex",
4614
+ purpose: "AI SDK"
4615
+ }
4616
+ ],
4617
+ isRecommended: true,
4618
+ recommendedReason: "Provider-agnostic AI integration with streaming",
2767
4619
  path: "skills/api-ai-vercel-ai-sdk"
2768
4620
  },
4621
+ "api-ai-langchain": {
4622
+ id: "api-ai-langchain",
4623
+ slug: "langchain",
4624
+ displayName: "LangChain",
4625
+ description: "LLM application framework with chains, agents, RAG, and memory",
4626
+ usageGuidance: "Use when building LLM-powered applications with LangChain.js \u2014 chat models, prompt templates, output parsers, chains (LCEL), agents with tools, RAG pipelines, vector stores, and memory.",
4627
+ category: "api-ai",
4628
+ author: "@vince",
4629
+ conflictsWith: [],
4630
+ discourages: [],
4631
+ compatibleWith: [],
4632
+ requires: [],
4633
+ alternatives: [
4634
+ {
4635
+ skillId: "api-ai-vercel-ai-sdk",
4636
+ purpose: "AI SDK"
4637
+ },
4638
+ {
4639
+ skillId: "api-ai-llamaindex",
4640
+ purpose: "AI SDK"
4641
+ }
4642
+ ],
4643
+ isRecommended: false,
4644
+ path: "skills/api-ai-langchain"
4645
+ },
2769
4646
  "web-error-handling-result-types": {
2770
4647
  id: "web-error-handling-result-types",
2771
4648
  slug: "result-types",
@@ -2877,12 +4754,77 @@ var BUILT_IN_MATRIX = {
2877
4754
  recommendedReason: "Best React form library",
2878
4755
  path: "skills/web-forms-react-hook-form"
2879
4756
  },
2880
- "web-meta-framework-sveltekit": {
2881
- id: "web-meta-framework-sveltekit",
2882
- slug: "sveltekit",
2883
- displayName: "SvelteKit",
2884
- description: "SvelteKit full-stack framework",
2885
- usageGuidance: "Use when building SvelteKit apps with load functions, form actions, or server hooks.",
4757
+ "api-ai-google-gemini-sdk": {
4758
+ id: "api-ai-google-gemini-sdk",
4759
+ slug: "google-gemini-sdk",
4760
+ displayName: "Google Gemini SDK",
4761
+ description: "Official TypeScript SDK for Google Gemini with multimodal input, function calling, and structured output",
4762
+ usageGuidance: "Use when integrating Google Gemini \u2014 text generation, multimodal input (images, video, audio, PDF), function calling, structured JSON output, streaming, embeddings, and context caching.",
4763
+ category: "api-ai",
4764
+ author: "@vince",
4765
+ conflictsWith: [],
4766
+ discourages: [],
4767
+ compatibleWith: [],
4768
+ requires: [],
4769
+ alternatives: [
4770
+ {
4771
+ skillId: "api-ai-anthropic-sdk",
4772
+ purpose: "AI Provider SDK"
4773
+ },
4774
+ {
4775
+ skillId: "api-ai-openai-sdk",
4776
+ purpose: "AI Provider SDK"
4777
+ },
4778
+ {
4779
+ skillId: "api-ai-mistral-sdk",
4780
+ purpose: "AI Provider SDK"
4781
+ },
4782
+ {
4783
+ skillId: "api-ai-cohere-sdk",
4784
+ purpose: "AI Provider SDK"
4785
+ },
4786
+ {
4787
+ skillId: "api-ai-together-ai",
4788
+ purpose: "AI Provider SDK"
4789
+ },
4790
+ {
4791
+ skillId: "api-ai-replicate",
4792
+ purpose: "AI Provider SDK"
4793
+ },
4794
+ {
4795
+ skillId: "api-ai-huggingface-inference",
4796
+ purpose: "AI Provider SDK"
4797
+ },
4798
+ {
4799
+ skillId: "api-ai-ollama",
4800
+ purpose: "AI Provider SDK"
4801
+ }
4802
+ ],
4803
+ isRecommended: false,
4804
+ path: "skills/api-ai-google-gemini-sdk"
4805
+ },
4806
+ "api-database-postgresql": {
4807
+ id: "api-database-postgresql",
4808
+ slug: "postgresql",
4809
+ displayName: "PostgreSQL",
4810
+ description: "Direct PostgreSQL database access with node-postgres (pg)",
4811
+ usageGuidance: "Use when interacting directly with PostgreSQL -- connection pools, parameterized queries, transactions, migrations, and type-safe query results with pg.",
4812
+ category: "api-database",
4813
+ author: "@vince",
4814
+ conflictsWith: [],
4815
+ discourages: [],
4816
+ compatibleWith: [],
4817
+ requires: [],
4818
+ alternatives: [],
4819
+ isRecommended: false,
4820
+ path: "skills/api-database-postgresql"
4821
+ },
4822
+ "web-meta-framework-sveltekit": {
4823
+ id: "web-meta-framework-sveltekit",
4824
+ slug: "sveltekit",
4825
+ displayName: "SvelteKit",
4826
+ description: "SvelteKit full-stack framework",
4827
+ usageGuidance: "Use when building SvelteKit apps with load functions, form actions, or server hooks.",
2886
4828
  category: "web-meta-framework",
2887
4829
  author: "@vince",
2888
4830
  conflictsWith: [
@@ -2897,10 +4839,23 @@ var BUILT_IN_MATRIX = {
2897
4839
  {
2898
4840
  skillId: "web-meta-framework-astro",
2899
4841
  reason: "Meta-frameworks are mutually exclusive"
4842
+ },
4843
+ {
4844
+ skillId: "web-meta-framework-qwik",
4845
+ reason: "Meta-frameworks are mutually exclusive"
2900
4846
  }
2901
4847
  ],
2902
4848
  discourages: [],
2903
- compatibleWith: [],
4849
+ compatibleWith: [
4850
+ "web-tooling-storybook",
4851
+ "web-framework-react",
4852
+ "web-framework-vue-composition-api",
4853
+ "web-framework-angular-standalone",
4854
+ "web-framework-svelte",
4855
+ "web-meta-framework-nextjs",
4856
+ "web-meta-framework-remix",
4857
+ "web-meta-framework-nuxt"
4858
+ ],
2904
4859
  requires: [
2905
4860
  {
2906
4861
  skillIds: ["web-framework-svelte"],
@@ -2924,6 +4879,10 @@ var BUILT_IN_MATRIX = {
2924
4879
  {
2925
4880
  skillId: "web-meta-framework-astro",
2926
4881
  purpose: "Meta-Framework"
4882
+ },
4883
+ {
4884
+ skillId: "web-meta-framework-qwik",
4885
+ purpose: "Meta-Framework"
2927
4886
  }
2928
4887
  ],
2929
4888
  isRecommended: false,
@@ -2941,10 +4900,62 @@ var BUILT_IN_MATRIX = {
2941
4900
  discourages: [],
2942
4901
  compatibleWith: [],
2943
4902
  requires: [],
2944
- alternatives: [],
4903
+ alternatives: [
4904
+ {
4905
+ skillId: "web-realtime-websockets",
4906
+ purpose: "Realtime"
4907
+ },
4908
+ {
4909
+ skillId: "web-realtime-sse",
4910
+ purpose: "Realtime"
4911
+ }
4912
+ ],
2945
4913
  isRecommended: false,
2946
4914
  path: "skills/web-realtime-socket-io"
2947
4915
  },
4916
+ "api-vector-db-pinecone": {
4917
+ id: "api-vector-db-pinecone",
4918
+ slug: "pinecone",
4919
+ displayName: "Pinecone",
4920
+ description: "Serverless vector database for similarity search and RAG applications",
4921
+ usageGuidance: "Use when building semantic search or RAG with Pinecone -- index management, vector upsert/query, metadata filtering, namespaces, sparse-dense hybrid search, and serverless scaling.",
4922
+ category: "api-vector-db",
4923
+ author: "@vince",
4924
+ conflictsWith: [
4925
+ {
4926
+ skillId: "api-vector-db-qdrant",
4927
+ reason: "Vector databases are mutually exclusive"
4928
+ },
4929
+ {
4930
+ skillId: "api-vector-db-chroma",
4931
+ reason: "Vector databases are mutually exclusive"
4932
+ },
4933
+ {
4934
+ skillId: "api-vector-db-weaviate",
4935
+ reason: "Vector databases are mutually exclusive"
4936
+ }
4937
+ ],
4938
+ discourages: [],
4939
+ compatibleWith: [],
4940
+ requires: [],
4941
+ alternatives: [
4942
+ {
4943
+ skillId: "api-vector-db-qdrant",
4944
+ purpose: "Vector Database"
4945
+ },
4946
+ {
4947
+ skillId: "api-vector-db-chroma",
4948
+ purpose: "Vector Database"
4949
+ },
4950
+ {
4951
+ skillId: "api-vector-db-weaviate",
4952
+ purpose: "Vector Database"
4953
+ }
4954
+ ],
4955
+ isRecommended: true,
4956
+ recommendedReason: "Managed vector database for AI applications",
4957
+ path: "skills/api-vector-db-pinecone"
4958
+ },
2948
4959
  "web-accessibility-web-accessibility": {
2949
4960
  id: "web-accessibility-web-accessibility",
2950
4961
  slug: "web-accessibility",
@@ -2961,6 +4972,55 @@ var BUILT_IN_MATRIX = {
2961
4972
  isRecommended: false,
2962
4973
  path: "skills/web-accessibility-web-accessibility"
2963
4974
  },
4975
+ "api-ai-together-ai": {
4976
+ id: "api-ai-together-ai",
4977
+ slug: "together-ai",
4978
+ displayName: "Together AI",
4979
+ description: "Multi-model inference API for open-source LLMs",
4980
+ usageGuidance: "Use when running open-source LLMs on Together AI \u2014 chat completions, streaming, embeddings, image generation, function calling, JSON mode, structured output, fine-tuning, and OpenAI-compatible endpoints.",
4981
+ category: "api-ai",
4982
+ author: "@vince",
4983
+ conflictsWith: [],
4984
+ discourages: [],
4985
+ compatibleWith: [],
4986
+ requires: [],
4987
+ alternatives: [
4988
+ {
4989
+ skillId: "api-ai-anthropic-sdk",
4990
+ purpose: "AI Provider SDK"
4991
+ },
4992
+ {
4993
+ skillId: "api-ai-openai-sdk",
4994
+ purpose: "AI Provider SDK"
4995
+ },
4996
+ {
4997
+ skillId: "api-ai-google-gemini-sdk",
4998
+ purpose: "AI Provider SDK"
4999
+ },
5000
+ {
5001
+ skillId: "api-ai-mistral-sdk",
5002
+ purpose: "AI Provider SDK"
5003
+ },
5004
+ {
5005
+ skillId: "api-ai-cohere-sdk",
5006
+ purpose: "AI Provider SDK"
5007
+ },
5008
+ {
5009
+ skillId: "api-ai-replicate",
5010
+ purpose: "AI Provider SDK"
5011
+ },
5012
+ {
5013
+ skillId: "api-ai-huggingface-inference",
5014
+ purpose: "AI Provider SDK"
5015
+ },
5016
+ {
5017
+ skillId: "api-ai-ollama",
5018
+ purpose: "AI Provider SDK"
5019
+ }
5020
+ ],
5021
+ isRecommended: false,
5022
+ path: "skills/api-ai-together-ai"
5023
+ },
2964
5024
  "web-styling-scss-modules": {
2965
5025
  id: "web-styling-scss-modules",
2966
5026
  slug: "scss-modules",
@@ -2986,6 +5046,70 @@ var BUILT_IN_MATRIX = {
2986
5046
  isRecommended: false,
2987
5047
  path: "skills/web-styling-scss-modules"
2988
5048
  },
5049
+ "web-ui-mantine": {
5050
+ id: "web-ui-mantine",
5051
+ slug: "mantine",
5052
+ displayName: "Mantine",
5053
+ description: "Full-featured React component library with hooks, forms, and theming",
5054
+ usageGuidance: "Use when building React UIs with Mantine \u2014 100+ components, CSS modules styling, theme customization, built-in hooks, form management with @mantine/form, and notification system.",
5055
+ category: "web-ui-components",
5056
+ author: "@vince",
5057
+ conflictsWith: [
5058
+ {
5059
+ skillId: "web-ui-shadcn-ui",
5060
+ reason: "React UI component libraries define competing design systems"
5061
+ },
5062
+ {
5063
+ skillId: "web-ui-mui",
5064
+ reason: "React UI component libraries define competing design systems"
5065
+ },
5066
+ {
5067
+ skillId: "web-ui-chakra-ui",
5068
+ reason: "React UI component libraries define competing design systems"
5069
+ },
5070
+ {
5071
+ skillId: "web-ui-ant-design",
5072
+ reason: "React UI component libraries define competing design systems"
5073
+ }
5074
+ ],
5075
+ discourages: [],
5076
+ compatibleWith: [
5077
+ "web-framework-react",
5078
+ "web-meta-framework-nextjs",
5079
+ "web-meta-framework-remix"
5080
+ ],
5081
+ requires: [
5082
+ {
5083
+ skillIds: [
5084
+ "web-framework-react",
5085
+ "web-meta-framework-nextjs",
5086
+ "web-meta-framework-remix"
5087
+ ],
5088
+ needsAny: true,
5089
+ reason: "Mantine is a React component library"
5090
+ }
5091
+ ],
5092
+ alternatives: [
5093
+ {
5094
+ skillId: "web-ui-shadcn-ui",
5095
+ purpose: "UI Components (React)"
5096
+ },
5097
+ {
5098
+ skillId: "web-ui-mui",
5099
+ purpose: "UI Components (React)"
5100
+ },
5101
+ {
5102
+ skillId: "web-ui-chakra-ui",
5103
+ purpose: "UI Components (React)"
5104
+ },
5105
+ {
5106
+ skillId: "web-ui-ant-design",
5107
+ purpose: "UI Components (React)"
5108
+ }
5109
+ ],
5110
+ isRecommended: false,
5111
+ path: "skills/web-ui-mantine"
5112
+ },
2989
5113
  "shared-security-auth-security": {
2990
5114
  id: "shared-security-auth-security",
2991
5115
  slug: "auth-security",
@@ -3018,6 +5142,23 @@ var BUILT_IN_MATRIX = {
3018
5142
  isRecommended: false,
3019
5143
  path: "skills/web-utilities-native-js"
3020
5144
  },
5145
+ "api-commerce-stripe": {
5146
+ id: "api-commerce-stripe",
5147
+ slug: "stripe",
5148
+ displayName: "Stripe",
5149
+ description: "Payment processing with subscriptions, checkout, webhooks, and Connect",
5150
+ usageGuidance: "Use when integrating payments with Stripe \u2014 Checkout Sessions, Payment Intents, subscriptions, webhooks, customer management, Connect for platforms, and Stripe Elements.",
5151
+ category: "api-commerce",
5152
+ author: "@vince",
5153
+ conflictsWith: [],
5154
+ discourages: [],
5155
+ compatibleWith: [],
5156
+ requires: [],
5157
+ alternatives: [],
5158
+ isRecommended: true,
5159
+ recommendedReason: "Industry-standard payment processing",
5160
+ path: "skills/api-commerce-stripe"
5161
+ },
3021
5162
  "api-framework-fastify": {
3022
5163
  id: "api-framework-fastify",
3023
5164
  slug: "fastify",
@@ -3034,6 +5175,14 @@ var BUILT_IN_MATRIX = {
3034
5175
  {
3035
5176
  skillId: "api-framework-express",
3036
5177
  reason: "API frameworks are mutually exclusive within a single service"
5178
+ },
5179
+ {
5180
+ skillId: "api-framework-elysia",
5181
+ reason: "API frameworks are mutually exclusive within a single service"
5182
+ },
5183
+ {
5184
+ skillId: "api-framework-nestjs",
5185
+ reason: "API frameworks are mutually exclusive within a single service"
3037
5186
  }
3038
5187
  ],
3039
5188
  discourages: [
@@ -3052,6 +5201,14 @@ var BUILT_IN_MATRIX = {
3052
5201
  {
3053
5202
  skillId: "api-framework-express",
3054
5203
  purpose: "API Framework"
5204
+ },
5205
+ {
5206
+ skillId: "api-framework-elysia",
5207
+ purpose: "API Framework"
5208
+ },
5209
+ {
5210
+ skillId: "api-framework-nestjs",
5211
+ purpose: "API Framework"
3055
5212
  }
3056
5213
  ],
3057
5214
  isRecommended: false,
@@ -3105,6 +5262,60 @@ var BUILT_IN_MATRIX = {
3105
5262
  recommendedReason: "Product analytics and feature flags",
3106
5263
  path: "skills/api-analytics-posthog-analytics"
3107
5264
  },
5265
+ "web-meta-framework-qwik": {
5266
+ id: "web-meta-framework-qwik",
5267
+ slug: "qwik",
5268
+ displayName: "Qwik",
5269
+ description: "Resumable framework with zero JS hydration and fine-grained lazy loading",
5270
+ usageGuidance: "Use when building web apps that need instant interactivity \u2014 resumability eliminates hydration, $ suffixed functions mark lazy boundaries, and Qwik City provides file-based routing with server loaders and actions.",
5271
+ category: "web-meta-framework",
5272
+ author: "@vince",
5273
+ conflictsWith: [
5274
+ {
5275
+ skillId: "web-meta-framework-nextjs",
5276
+ reason: "Meta-frameworks are mutually exclusive"
5277
+ },
5278
+ {
5279
+ skillId: "web-meta-framework-remix",
5280
+ reason: "Meta-frameworks are mutually exclusive"
5281
+ },
5282
+ {
5283
+ skillId: "web-meta-framework-sveltekit",
5284
+ reason: "Meta-frameworks are mutually exclusive"
5285
+ },
5286
+ {
5287
+ skillId: "web-meta-framework-astro",
5288
+ reason: "Meta-frameworks are mutually exclusive"
5289
+ }
5290
+ ],
5291
+ discourages: [],
5292
+ compatibleWith: [],
5293
+ requires: [],
5294
+ alternatives: [
5295
+ {
5296
+ skillId: "web-meta-framework-nextjs",
5297
+ purpose: "Meta-Framework"
5298
+ },
5299
+ {
5300
+ skillId: "web-meta-framework-remix",
5301
+ purpose: "Meta-Framework"
5302
+ },
5303
+ {
5304
+ skillId: "web-meta-framework-nuxt",
5305
+ purpose: "Meta-Framework"
5306
+ },
5307
+ {
5308
+ skillId: "web-meta-framework-sveltekit",
5309
+ purpose: "Meta-Framework"
5310
+ },
5311
+ {
5312
+ skillId: "web-meta-framework-astro",
5313
+ purpose: "Meta-Framework"
5314
+ }
5315
+ ],
5316
+ isRecommended: false,
5317
+ path: "skills/web-meta-framework-qwik"
5318
+ },
3108
5319
  "web-data-fetching-swr": {
3109
5320
  id: "web-data-fetching-swr",
3110
5321
  slug: "swr",
@@ -3151,6 +5362,57 @@ var BUILT_IN_MATRIX = {
3151
5362
  isRecommended: false,
3152
5363
  path: "skills/web-data-fetching-swr"
3153
5364
  },
5365
+ "api-database-sequelize": {
5366
+ id: "api-database-sequelize",
5367
+ slug: "sequelize",
5368
+ displayName: "Sequelize",
5369
+ description: "Promise-based ORM for SQL databases with model definitions and migrations",
5370
+ usageGuidance: "Use when working with SQL databases via Sequelize \u2014 model definitions, associations, queries, transactions, migrations, hooks, and scopes.",
5371
+ category: "api-database",
5372
+ author: "@vince",
5373
+ conflictsWith: [
5374
+ {
5375
+ skillId: "api-database-drizzle",
5376
+ reason: "SQL ORMs are mutually exclusive"
5377
+ },
5378
+ {
5379
+ skillId: "api-database-prisma",
5380
+ reason: "SQL ORMs are mutually exclusive"
5381
+ },
5382
+ {
5383
+ skillId: "api-database-typeorm",
5384
+ reason: "SQL ORMs are mutually exclusive"
5385
+ }
5386
+ ],
5387
+ discourages: [
5388
+ {
5389
+ skillId: "api-database-drizzle",
5390
+ reason: "Sequelize is mature but Drizzle offers better TypeScript integration"
5391
+ }
5392
+ ],
5393
+ compatibleWith: [],
5394
+ requires: [],
5395
+ alternatives: [
5396
+ {
5397
+ skillId: "api-database-drizzle",
5398
+ purpose: "Database ORM / ODM"
5399
+ },
5400
+ {
5401
+ skillId: "api-database-prisma",
5402
+ purpose: "Database ORM / ODM"
5403
+ },
5404
+ {
5405
+ skillId: "api-database-typeorm",
5406
+ purpose: "Database ORM / ODM"
5407
+ },
5408
+ {
5409
+ skillId: "api-database-mongoose",
5410
+ purpose: "Database ORM / ODM"
5411
+ }
5412
+ ],
5413
+ isRecommended: false,
5414
+ path: "skills/api-database-sequelize"
5415
+ },
3154
5416
  "web-i18n-react-intl": {
3155
5417
  id: "web-i18n-react-intl",
3156
5418
  slug: "react-intl",
@@ -3362,7 +5624,7 @@ var BUILT_IN_MATRIX = {
3362
5624
  "cli-framework": ["cli-framework-cli-commander"],
3363
5625
  "shared-meta": ["shared-meta-reviewing"]
3364
5626
  },
3365
- documentor: {
5627
+ scribe: {
3366
5628
  "web-framework": ["web-framework-react"],
3367
5629
  "web-meta-framework": ["web-meta-framework-nextjs"],
3368
5630
  "web-styling": ["web-styling-scss-modules"],
@@ -3513,7 +5775,7 @@ var BUILT_IN_MATRIX = {
3513
5775
  "api-auth": ["api-auth-nextauth"],
3514
5776
  "shared-meta": ["shared-meta-reviewing"]
3515
5777
  },
3516
- documentor: {
5778
+ scribe: {
3517
5779
  "web-framework": ["web-framework-react"],
3518
5780
  "web-meta-framework": ["web-meta-framework-nextjs"],
3519
5781
  "web-styling": ["web-styling-tailwind"],
@@ -3742,7 +6004,7 @@ var BUILT_IN_MATRIX = {
3742
6004
  "cli-framework": ["cli-framework-cli-commander"],
3743
6005
  "shared-meta": ["shared-meta-reviewing"]
3744
6006
  },
3745
- documentor: {
6007
+ scribe: {
3746
6008
  "web-framework": ["web-framework-react"],
3747
6009
  "web-meta-framework": ["web-meta-framework-nextjs"],
3748
6010
  "web-styling": ["web-styling-scss-modules"],
@@ -3996,7 +6258,7 @@ var BUILT_IN_MATRIX = {
3996
6258
  "shared-meta": ["shared-meta-reviewing"],
3997
6259
  "shared-monorepo": ["shared-monorepo-turborepo", "shared-monorepo-pnpm-workspaces"]
3998
6260
  },
3999
- documentor: {
6261
+ scribe: {
4000
6262
  "web-framework": ["web-framework-react"],
4001
6263
  "web-meta-framework": ["web-meta-framework-nextjs"],
4002
6264
  "web-styling": ["web-styling-scss-modules"],
@@ -4056,6 +6318,7 @@ var BUILT_IN_MATRIX = {
4056
6318
  "web-framework": ["web-framework-react"],
4057
6319
  "web-client-state": ["web-state-redux-toolkit"],
4058
6320
  "web-styling": ["web-styling-scss-modules"],
6321
+ "web-routing": ["web-routing-react-router"],
4059
6322
  "web-testing": ["web-testing-vitest"],
4060
6323
  "shared-tooling": [
4061
6324
  "shared-tooling-eslint-prettier",
@@ -4069,30 +6332,35 @@ var BUILT_IN_MATRIX = {
4069
6332
  "web-framework": ["web-framework-react"],
4070
6333
  "web-client-state": ["web-state-redux-toolkit"],
4071
6334
  "web-styling": ["web-styling-scss-modules"],
6335
+ "web-routing": ["web-routing-react-router"],
4072
6336
  "web-testing": ["web-testing-vitest"]
4073
6337
  },
4074
6338
  "web-pm": {
4075
6339
  "web-framework": ["web-framework-react"],
4076
6340
  "web-client-state": ["web-state-redux-toolkit"],
4077
6341
  "web-styling": ["web-styling-scss-modules"],
6342
+ "web-routing": ["web-routing-react-router"],
4078
6343
  "web-testing": ["web-testing-vitest"]
4079
6344
  },
4080
6345
  "web-researcher": {
4081
6346
  "web-framework": ["web-framework-react"],
4082
6347
  "web-client-state": ["web-state-redux-toolkit"],
4083
6348
  "web-styling": ["web-styling-scss-modules"],
6349
+ "web-routing": ["web-routing-react-router"],
4084
6350
  "web-testing": ["web-testing-vitest"]
4085
6351
  },
4086
6352
  "pattern-scout": {
4087
6353
  "web-framework": ["web-framework-react"],
4088
6354
  "web-client-state": ["web-state-redux-toolkit"],
4089
6355
  "web-styling": ["web-styling-scss-modules"],
6356
+ "web-routing": ["web-routing-react-router"],
4090
6357
  "web-testing": ["web-testing-vitest"]
4091
6358
  },
4092
6359
  "web-pattern-critique": {
4093
6360
  "web-framework": ["web-framework-react"],
4094
6361
  "web-client-state": ["web-state-redux-toolkit"],
4095
6362
  "web-styling": ["web-styling-scss-modules"],
6363
+ "web-routing": ["web-routing-react-router"],
4096
6364
  "web-testing": ["web-testing-vitest"],
4097
6365
  "shared-meta": ["shared-meta-reviewing"]
4098
6366
  },
@@ -4100,6 +6368,7 @@ var BUILT_IN_MATRIX = {
4100
6368
  "web-framework": ["web-framework-react"],
4101
6369
  "web-client-state": ["web-state-redux-toolkit"],
4102
6370
  "web-styling": ["web-styling-scss-modules"],
6371
+ "web-routing": ["web-routing-react-router"],
4103
6372
  "web-testing": ["web-testing-vitest"],
4104
6373
  "shared-meta": ["shared-meta-reviewing"]
4105
6374
  },
@@ -4107,13 +6376,15 @@ var BUILT_IN_MATRIX = {
4107
6376
  "web-framework": ["web-framework-react"],
4108
6377
  "web-client-state": ["web-state-redux-toolkit"],
4109
6378
  "web-styling": ["web-styling-scss-modules"],
6379
+ "web-routing": ["web-routing-react-router"],
4110
6380
  "web-testing": ["web-testing-vitest"],
4111
6381
  "shared-meta": ["shared-meta-reviewing"]
4112
6382
  },
4113
- documentor: {
6383
+ scribe: {
4114
6384
  "web-framework": ["web-framework-react"],
4115
6385
  "web-client-state": ["web-state-redux-toolkit"],
4116
6386
  "web-styling": ["web-styling-scss-modules"],
6387
+ "web-routing": ["web-routing-react-router"],
4117
6388
  "web-testing": ["web-testing-vitest"],
4118
6389
  "shared-meta": ["shared-meta-reviewing"]
4119
6390
  },
@@ -4125,6 +6396,7 @@ var BUILT_IN_MATRIX = {
4125
6396
  "web-framework-react",
4126
6397
  "web-state-redux-toolkit",
4127
6398
  "web-styling-scss-modules",
6399
+ "web-routing-react-router",
4128
6400
  "web-testing-vitest",
4129
6401
  "shared-tooling-eslint-prettier",
4130
6402
  "shared-tooling-typescript-config",
@@ -4316,7 +6588,7 @@ var BUILT_IN_MATRIX = {
4316
6588
  "cli-framework": ["cli-framework-cli-commander"],
4317
6589
  "shared-meta": ["shared-meta-reviewing"]
4318
6590
  },
4319
- documentor: {
6591
+ scribe: {
4320
6592
  "web-framework": ["web-framework-react"],
4321
6593
  "web-styling": ["web-styling-scss-modules"],
4322
6594
  "web-client-state": ["web-state-zustand"],
@@ -4467,7 +6739,7 @@ var BUILT_IN_MATRIX = {
4467
6739
  "api-observability": ["api-observability-axiom-pino-sentry"],
4468
6740
  "shared-meta": ["shared-meta-reviewing"]
4469
6741
  },
4470
- documentor: {
6742
+ scribe: {
4471
6743
  "web-framework": ["web-framework-react"],
4472
6744
  "web-meta-framework": ["web-meta-framework-remix"],
4473
6745
  "web-testing": ["web-testing-vitest"],
@@ -4603,7 +6875,7 @@ var BUILT_IN_MATRIX = {
4603
6875
  "api-observability": ["api-observability-axiom-pino-sentry"],
4604
6876
  "shared-meta": ["shared-meta-reviewing"]
4605
6877
  },
4606
- documentor: {
6878
+ scribe: {
4607
6879
  "web-framework": ["web-framework-svelte"],
4608
6880
  "web-meta-framework": ["web-meta-framework-sveltekit"],
4609
6881
  "web-testing": ["web-testing-vitest"],
@@ -4731,7 +7003,7 @@ var BUILT_IN_MATRIX = {
4731
7003
  "api-observability": ["api-observability-axiom-pino-sentry"],
4732
7004
  "shared-meta": ["shared-meta-reviewing"]
4733
7005
  },
4734
- documentor: {
7006
+ scribe: {
4735
7007
  "web-framework": ["web-framework-solidjs"],
4736
7008
  "web-testing": ["web-testing-vitest"],
4737
7009
  "api-api": ["api-framework-hono"],
@@ -4779,6 +7051,7 @@ var BUILT_IN_MATRIX = {
4779
7051
  "api-api": ["api-framework-hono"],
4780
7052
  "api-database": ["api-database-drizzle"],
4781
7053
  "api-observability": ["api-observability-axiom-pino-sentry"],
7054
+ "api-cms": ["api-cms-sanity"],
4782
7055
  "shared-tooling": [
4783
7056
  "shared-tooling-eslint-prettier",
4784
7057
  "shared-tooling-typescript-config",
@@ -4794,19 +7067,22 @@ var BUILT_IN_MATRIX = {
4794
7067
  "shared-meta": ["shared-meta-reviewing"],
4795
7068
  "api-api": ["api-framework-hono"],
4796
7069
  "api-database": ["api-database-drizzle"],
4797
- "api-observability": ["api-observability-axiom-pino-sentry"]
7070
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7071
+ "api-cms": ["api-cms-sanity"]
4798
7072
  },
4799
7073
  "web-pm": {
4800
7074
  "web-meta-framework": ["web-meta-framework-astro"],
4801
7075
  "web-testing": ["web-testing-vitest"],
4802
7076
  "api-api": ["api-framework-hono"],
4803
7077
  "api-database": ["api-database-drizzle"],
4804
- "api-observability": ["api-observability-axiom-pino-sentry"]
7078
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7079
+ "api-cms": ["api-cms-sanity"]
4805
7080
  },
4806
7081
  "web-architecture": {
4807
7082
  "api-api": ["api-framework-hono"],
4808
7083
  "api-database": ["api-database-drizzle"],
4809
- "api-observability": ["api-observability-axiom-pino-sentry"]
7084
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7085
+ "api-cms": ["api-cms-sanity"]
4810
7086
  },
4811
7087
  "web-researcher": {
4812
7088
  "web-meta-framework": ["web-meta-framework-astro"],
@@ -4815,14 +7091,16 @@ var BUILT_IN_MATRIX = {
4815
7091
  "api-researcher": {
4816
7092
  "api-api": ["api-framework-hono"],
4817
7093
  "api-database": ["api-database-drizzle"],
4818
- "api-observability": ["api-observability-axiom-pino-sentry"]
7094
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7095
+ "api-cms": ["api-cms-sanity"]
4819
7096
  },
4820
7097
  "pattern-scout": {
4821
7098
  "web-meta-framework": ["web-meta-framework-astro"],
4822
7099
  "web-testing": ["web-testing-vitest"],
4823
7100
  "api-api": ["api-framework-hono"],
4824
7101
  "api-database": ["api-database-drizzle"],
4825
- "api-observability": ["api-observability-axiom-pino-sentry"]
7102
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7103
+ "api-cms": ["api-cms-sanity"]
4826
7104
  },
4827
7105
  "web-pattern-critique": {
4828
7106
  "web-meta-framework": ["web-meta-framework-astro"],
@@ -4830,6 +7108,7 @@ var BUILT_IN_MATRIX = {
4830
7108
  "api-api": ["api-framework-hono"],
4831
7109
  "api-database": ["api-database-drizzle"],
4832
7110
  "api-observability": ["api-observability-axiom-pino-sentry"],
7111
+ "api-cms": ["api-cms-sanity"],
4833
7112
  "shared-meta": ["shared-meta-reviewing"]
4834
7113
  },
4835
7114
  "agent-summoner": {
@@ -4838,6 +7117,7 @@ var BUILT_IN_MATRIX = {
4838
7117
  "api-api": ["api-framework-hono"],
4839
7118
  "api-database": ["api-database-drizzle"],
4840
7119
  "api-observability": ["api-observability-axiom-pino-sentry"],
7120
+ "api-cms": ["api-cms-sanity"],
4841
7121
  "shared-meta": ["shared-meta-reviewing"]
4842
7122
  },
4843
7123
  "skill-summoner": {
@@ -4846,14 +7126,16 @@ var BUILT_IN_MATRIX = {
4846
7126
  "api-api": ["api-framework-hono"],
4847
7127
  "api-database": ["api-database-drizzle"],
4848
7128
  "api-observability": ["api-observability-axiom-pino-sentry"],
7129
+ "api-cms": ["api-cms-sanity"],
4849
7130
  "shared-meta": ["shared-meta-reviewing"]
4850
7131
  },
4851
- documentor: {
7132
+ scribe: {
4852
7133
  "web-meta-framework": ["web-meta-framework-astro"],
4853
7134
  "web-testing": ["web-testing-vitest"],
4854
7135
  "api-api": ["api-framework-hono"],
4855
7136
  "api-database": ["api-database-drizzle"],
4856
7137
  "api-observability": ["api-observability-axiom-pino-sentry"],
7138
+ "api-cms": ["api-cms-sanity"],
4857
7139
  "shared-meta": ["shared-meta-reviewing"]
4858
7140
  },
4859
7141
  "web-tester": {
@@ -4870,6 +7152,7 @@ var BUILT_IN_MATRIX = {
4870
7152
  "api-framework-hono",
4871
7153
  "api-database-drizzle",
4872
7154
  "api-observability-axiom-pino-sentry",
7155
+ "api-cms-sanity",
4873
7156
  "shared-meta-reviewing",
4874
7157
  "web-testing-playwright-e2e"
4875
7158
  ],
@@ -4980,7 +7263,7 @@ var BUILT_IN_MATRIX = {
4980
7263
  "api-observability": ["api-observability-axiom-pino-sentry"],
4981
7264
  "shared-meta": ["shared-meta-reviewing"]
4982
7265
  },
4983
- documentor: {
7266
+ scribe: {
4984
7267
  "web-framework": ["web-framework-vue-composition-api"],
4985
7268
  "web-client-state": ["web-state-pinia"],
4986
7269
  "web-testing": ["web-testing-vitest"],
@@ -5124,7 +7407,7 @@ var BUILT_IN_MATRIX = {
5124
7407
  "api-observability": ["api-observability-axiom-pino-sentry"],
5125
7408
  "shared-meta": ["shared-meta-reviewing"]
5126
7409
  },
5127
- documentor: {
7410
+ scribe: {
5128
7411
  "web-framework": ["web-framework-vue-composition-api"],
5129
7412
  "web-meta-framework": ["web-meta-framework-nuxt"],
5130
7413
  "web-client-state": ["web-state-pinia"],
@@ -5262,7 +7545,7 @@ var BUILT_IN_MATRIX = {
5262
7545
  "api-observability": ["api-observability-axiom-pino-sentry"],
5263
7546
  "shared-meta": ["shared-meta-reviewing"]
5264
7547
  },
5265
- documentor: {
7548
+ scribe: {
5266
7549
  "web-framework": ["web-framework-angular-standalone"],
5267
7550
  "web-client-state": ["web-state-ngrx-signalstore"],
5268
7551
  "web-testing": ["web-testing-vitest"],
@@ -5292,6 +7575,712 @@ var BUILT_IN_MATRIX = {
5292
7575
  "web-testing-playwright-e2e"
5293
7576
  ],
5294
7577
  philosophy: "Enterprise-grade and type-safe"
7578
+ },
7579
+ {
7580
+ id: "nextjs-ai-saas",
7581
+ name: "Next.js AI SaaS",
7582
+ description: "Next.js, Vercel AI SDK, Anthropic SDK, Drizzle, Pinecone",
7583
+ skills: {
7584
+ "web-developer": {
7585
+ "web-framework": ["web-framework-react"],
7586
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7587
+ "web-styling": ["web-styling-tailwind"],
7588
+ "web-client-state": ["web-state-zustand"],
7589
+ "web-server-state": ["web-server-state-react-query"],
7590
+ "web-testing": ["web-testing-vitest"],
7591
+ "web-mocking": ["web-mocks-msw"],
7592
+ "web-accessibility": ["web-accessibility-web-accessibility"],
7593
+ "shared-tooling": [
7594
+ "shared-tooling-eslint-prettier",
7595
+ "shared-tooling-typescript-config",
7596
+ "shared-tooling-git-hooks"
7597
+ ],
7598
+ "web-tooling": ["web-tooling-vite"]
7599
+ },
7600
+ "api-developer": {
7601
+ "api-api": ["api-framework-hono"],
7602
+ "api-database": ["api-database-drizzle"],
7603
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7604
+ "api-ai": ["api-ai-vercel-ai-sdk", "api-ai-anthropic-sdk", "api-ai-tool-use-patterns"],
7605
+ "api-vector-db": ["api-vector-db-pinecone"],
7606
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7607
+ "api-email": ["api-email-resend-react-email"],
7608
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7609
+ "shared-tooling": [
7610
+ "shared-tooling-eslint-prettier",
7611
+ "shared-tooling-typescript-config",
7612
+ "shared-tooling-git-hooks"
7613
+ ]
7614
+ },
7615
+ "cli-developer": {
7616
+ "cli-framework": ["cli-framework-cli-commander"],
7617
+ "shared-tooling": [
7618
+ "shared-tooling-eslint-prettier",
7619
+ "shared-tooling-typescript-config",
7620
+ "shared-tooling-git-hooks"
7621
+ ]
7622
+ },
7623
+ "web-reviewer": {
7624
+ "shared-meta": ["shared-meta-reviewing"],
7625
+ "web-framework": ["web-framework-react"],
7626
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7627
+ "web-styling": ["web-styling-tailwind"],
7628
+ "web-client-state": ["web-state-zustand"],
7629
+ "web-server-state": ["web-server-state-react-query"],
7630
+ "web-testing": ["web-testing-vitest"],
7631
+ "web-mocking": ["web-mocks-msw"]
7632
+ },
7633
+ "api-reviewer": {
7634
+ "shared-meta": ["shared-meta-reviewing"],
7635
+ "api-api": ["api-framework-hono"],
7636
+ "api-database": ["api-database-drizzle"],
7637
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7638
+ "api-ai": ["api-ai-vercel-ai-sdk", "api-ai-anthropic-sdk"],
7639
+ "api-observability": ["api-observability-axiom-pino-sentry"]
7640
+ },
7641
+ "cli-reviewer": {
7642
+ "shared-meta": ["shared-meta-cli-reviewing"],
7643
+ "cli-framework": ["cli-framework-cli-commander"]
7644
+ },
7645
+ "web-tester": {
7646
+ "web-testing": ["web-testing-playwright-e2e", "web-testing-vitest"],
7647
+ "web-mocking": ["web-mocks-msw"]
7648
+ },
7649
+ "web-pm": {
7650
+ "web-framework": ["web-framework-react"],
7651
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7652
+ "web-styling": ["web-styling-tailwind"],
7653
+ "web-client-state": ["web-state-zustand"],
7654
+ "web-server-state": ["web-server-state-react-query"],
7655
+ "web-testing": ["web-testing-vitest"],
7656
+ "web-mocking": ["web-mocks-msw"],
7657
+ "web-accessibility": ["web-accessibility-web-accessibility"],
7658
+ "api-api": ["api-framework-hono"],
7659
+ "api-database": ["api-database-drizzle"],
7660
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7661
+ "api-ai": ["api-ai-vercel-ai-sdk", "api-ai-anthropic-sdk", "api-ai-tool-use-patterns"],
7662
+ "api-vector-db": ["api-vector-db-pinecone"],
7663
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7664
+ "api-email": ["api-email-resend-react-email"],
7665
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7666
+ "cli-framework": ["cli-framework-cli-commander"]
7667
+ },
7668
+ "web-architecture": {
7669
+ "api-api": ["api-framework-hono"],
7670
+ "api-database": ["api-database-drizzle"],
7671
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7672
+ "api-ai": ["api-ai-vercel-ai-sdk", "api-ai-anthropic-sdk", "api-ai-tool-use-patterns"],
7673
+ "api-vector-db": ["api-vector-db-pinecone"],
7674
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7675
+ "api-email": ["api-email-resend-react-email"],
7676
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7677
+ "cli-framework": ["cli-framework-cli-commander"]
7678
+ },
7679
+ "web-researcher": {
7680
+ "web-framework": ["web-framework-react"],
7681
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7682
+ "web-styling": ["web-styling-tailwind"],
7683
+ "web-client-state": ["web-state-zustand"],
7684
+ "web-server-state": ["web-server-state-react-query"],
7685
+ "web-testing": ["web-testing-vitest"],
7686
+ "web-mocking": ["web-mocks-msw"],
7687
+ "web-accessibility": ["web-accessibility-web-accessibility"]
7688
+ },
7689
+ "api-researcher": {
7690
+ "api-api": ["api-framework-hono"],
7691
+ "api-database": ["api-database-drizzle"],
7692
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7693
+ "api-ai": ["api-ai-vercel-ai-sdk", "api-ai-anthropic-sdk", "api-ai-tool-use-patterns"],
7694
+ "api-vector-db": ["api-vector-db-pinecone"],
7695
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7696
+ "api-email": ["api-email-resend-react-email"],
7697
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7698
+ "cli-framework": ["cli-framework-cli-commander"]
7699
+ },
7700
+ "pattern-scout": {
7701
+ "web-framework": ["web-framework-react"],
7702
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7703
+ "web-styling": ["web-styling-tailwind"],
7704
+ "web-client-state": ["web-state-zustand"],
7705
+ "web-server-state": ["web-server-state-react-query"],
7706
+ "web-testing": ["web-testing-vitest"],
7707
+ "web-mocking": ["web-mocks-msw"],
7708
+ "web-accessibility": ["web-accessibility-web-accessibility"],
7709
+ "api-api": ["api-framework-hono"],
7710
+ "api-database": ["api-database-drizzle"],
7711
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7712
+ "api-ai": ["api-ai-vercel-ai-sdk", "api-ai-anthropic-sdk", "api-ai-tool-use-patterns"],
7713
+ "api-vector-db": ["api-vector-db-pinecone"],
7714
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7715
+ "api-email": ["api-email-resend-react-email"],
7716
+ "shared-ci-cd": ["shared-ci-cd-github-actions"]
7717
+ },
7718
+ "web-pattern-critique": {
7719
+ "web-framework": ["web-framework-react"],
7720
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7721
+ "web-styling": ["web-styling-tailwind"],
7722
+ "web-client-state": ["web-state-zustand"],
7723
+ "web-server-state": ["web-server-state-react-query"],
7724
+ "web-testing": ["web-testing-vitest"],
7725
+ "web-mocking": ["web-mocks-msw"],
7726
+ "web-accessibility": ["web-accessibility-web-accessibility"],
7727
+ "api-api": ["api-framework-hono"],
7728
+ "api-database": ["api-database-drizzle"],
7729
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7730
+ "api-ai": ["api-ai-vercel-ai-sdk", "api-ai-anthropic-sdk", "api-ai-tool-use-patterns"],
7731
+ "api-vector-db": ["api-vector-db-pinecone"],
7732
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7733
+ "api-email": ["api-email-resend-react-email"],
7734
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7735
+ "shared-meta": ["shared-meta-reviewing"]
7736
+ },
7737
+ "agent-summoner": {
7738
+ "web-framework": ["web-framework-react"],
7739
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7740
+ "web-styling": ["web-styling-tailwind"],
7741
+ "web-client-state": ["web-state-zustand"],
7742
+ "web-server-state": ["web-server-state-react-query"],
7743
+ "web-testing": ["web-testing-vitest"],
7744
+ "web-mocking": ["web-mocks-msw"],
7745
+ "web-accessibility": ["web-accessibility-web-accessibility"],
7746
+ "api-api": ["api-framework-hono"],
7747
+ "api-database": ["api-database-drizzle"],
7748
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7749
+ "api-ai": ["api-ai-vercel-ai-sdk", "api-ai-anthropic-sdk", "api-ai-tool-use-patterns"],
7750
+ "api-vector-db": ["api-vector-db-pinecone"],
7751
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7752
+ "api-email": ["api-email-resend-react-email"],
7753
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7754
+ "cli-framework": ["cli-framework-cli-commander"],
7755
+ "shared-meta": ["shared-meta-reviewing"]
7756
+ },
7757
+ "skill-summoner": {
7758
+ "web-framework": ["web-framework-react"],
7759
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7760
+ "web-styling": ["web-styling-tailwind"],
7761
+ "web-client-state": ["web-state-zustand"],
7762
+ "web-server-state": ["web-server-state-react-query"],
7763
+ "web-testing": ["web-testing-vitest"],
7764
+ "web-mocking": ["web-mocks-msw"],
7765
+ "web-accessibility": ["web-accessibility-web-accessibility"],
7766
+ "api-api": ["api-framework-hono"],
7767
+ "api-database": ["api-database-drizzle"],
7768
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7769
+ "api-ai": ["api-ai-vercel-ai-sdk", "api-ai-anthropic-sdk", "api-ai-tool-use-patterns"],
7770
+ "api-vector-db": ["api-vector-db-pinecone"],
7771
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7772
+ "api-email": ["api-email-resend-react-email"],
7773
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7774
+ "cli-framework": ["cli-framework-cli-commander"],
7775
+ "shared-meta": ["shared-meta-reviewing"]
7776
+ },
7777
+ scribe: {
7778
+ "web-framework": ["web-framework-react"],
7779
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7780
+ "web-styling": ["web-styling-tailwind"],
7781
+ "web-client-state": ["web-state-zustand"],
7782
+ "web-server-state": ["web-server-state-react-query"],
7783
+ "web-testing": ["web-testing-vitest"],
7784
+ "web-mocking": ["web-mocks-msw"],
7785
+ "web-accessibility": ["web-accessibility-web-accessibility"],
7786
+ "api-api": ["api-framework-hono"],
7787
+ "api-database": ["api-database-drizzle"],
7788
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7789
+ "api-ai": ["api-ai-vercel-ai-sdk", "api-ai-anthropic-sdk", "api-ai-tool-use-patterns"],
7790
+ "api-vector-db": ["api-vector-db-pinecone"],
7791
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7792
+ "api-email": ["api-email-resend-react-email"],
7793
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7794
+ "cli-framework": ["cli-framework-cli-commander"],
7795
+ "shared-meta": ["shared-meta-reviewing"]
7796
+ },
7797
+ "cli-tester": {}
7798
+ },
7799
+ allSkillIds: [
7800
+ "web-framework-react",
7801
+ "web-meta-framework-nextjs",
7802
+ "web-styling-tailwind",
7803
+ "web-state-zustand",
7804
+ "web-server-state-react-query",
7805
+ "web-testing-vitest",
7806
+ "web-mocks-msw",
7807
+ "web-accessibility-web-accessibility",
7808
+ "shared-tooling-eslint-prettier",
7809
+ "shared-tooling-typescript-config",
7810
+ "shared-tooling-git-hooks",
7811
+ "web-tooling-vite",
7812
+ "api-framework-hono",
7813
+ "api-database-drizzle",
7814
+ "api-auth-better-auth-drizzle-hono",
7815
+ "api-ai-vercel-ai-sdk",
7816
+ "api-ai-anthropic-sdk",
7817
+ "api-ai-tool-use-patterns",
7818
+ "api-vector-db-pinecone",
7819
+ "api-observability-axiom-pino-sentry",
7820
+ "api-email-resend-react-email",
7821
+ "shared-ci-cd-github-actions",
7822
+ "cli-framework-cli-commander",
7823
+ "shared-meta-reviewing",
7824
+ "shared-meta-cli-reviewing",
7825
+ "web-testing-playwright-e2e"
7826
+ ],
7827
+ philosophy: "AI-first full-stack with streaming and tool use"
7828
+ },
7829
+ {
7830
+ id: "nextjs-saas-starter",
7831
+ name: "Next.js SaaS Starter",
7832
+ description: "Next.js, Better Auth, Stripe, Drizzle, Resend, PostHog",
7833
+ skills: {
7834
+ "web-developer": {
7835
+ "web-framework": ["web-framework-react"],
7836
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7837
+ "web-styling": ["web-styling-tailwind"],
7838
+ "web-client-state": ["web-state-zustand"],
7839
+ "web-server-state": ["web-server-state-react-query"],
7840
+ "web-testing": ["web-testing-vitest"],
7841
+ "web-mocking": ["web-mocks-msw"],
7842
+ "web-accessibility": ["web-accessibility-web-accessibility"],
7843
+ "shared-tooling": [
7844
+ "shared-tooling-eslint-prettier",
7845
+ "shared-tooling-typescript-config",
7846
+ "shared-tooling-git-hooks"
7847
+ ],
7848
+ "web-tooling": ["web-tooling-vite"]
7849
+ },
7850
+ "api-developer": {
7851
+ "api-api": ["api-framework-hono"],
7852
+ "api-database": ["api-database-drizzle"],
7853
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7854
+ "api-commerce": ["api-commerce-stripe"],
7855
+ "api-flags": ["api-flags-posthog-flags"],
7856
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7857
+ "api-analytics": ["api-analytics-posthog-analytics"],
7858
+ "api-email": ["api-email-resend-react-email"],
7859
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7860
+ "shared-tooling": [
7861
+ "shared-tooling-eslint-prettier",
7862
+ "shared-tooling-typescript-config",
7863
+ "shared-tooling-git-hooks"
7864
+ ]
7865
+ },
7866
+ "cli-developer": {
7867
+ "cli-framework": ["cli-framework-cli-commander"],
7868
+ "shared-tooling": [
7869
+ "shared-tooling-eslint-prettier",
7870
+ "shared-tooling-typescript-config",
7871
+ "shared-tooling-git-hooks"
7872
+ ]
7873
+ },
7874
+ "web-reviewer": {
7875
+ "shared-meta": ["shared-meta-reviewing"],
7876
+ "web-framework": ["web-framework-react"],
7877
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7878
+ "web-styling": ["web-styling-tailwind"],
7879
+ "web-client-state": ["web-state-zustand"],
7880
+ "web-server-state": ["web-server-state-react-query"],
7881
+ "web-testing": ["web-testing-vitest"],
7882
+ "web-mocking": ["web-mocks-msw"]
7883
+ },
7884
+ "api-reviewer": {
7885
+ "shared-meta": ["shared-meta-reviewing"],
7886
+ "api-api": ["api-framework-hono"],
7887
+ "api-database": ["api-database-drizzle"],
7888
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7889
+ "api-commerce": ["api-commerce-stripe"],
7890
+ "api-observability": ["api-observability-axiom-pino-sentry"]
7891
+ },
7892
+ "cli-reviewer": {
7893
+ "shared-meta": ["shared-meta-cli-reviewing"],
7894
+ "cli-framework": ["cli-framework-cli-commander"]
7895
+ },
7896
+ "web-tester": {
7897
+ "web-testing": ["web-testing-playwright-e2e", "web-testing-vitest"],
7898
+ "web-mocking": ["web-mocks-msw"]
7899
+ },
7900
+ "web-pm": {
7901
+ "web-framework": ["web-framework-react"],
7902
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7903
+ "web-styling": ["web-styling-tailwind"],
7904
+ "web-client-state": ["web-state-zustand"],
7905
+ "web-server-state": ["web-server-state-react-query"],
7906
+ "web-testing": ["web-testing-vitest"],
7907
+ "web-mocking": ["web-mocks-msw"],
7908
+ "web-accessibility": ["web-accessibility-web-accessibility"],
7909
+ "api-api": ["api-framework-hono"],
7910
+ "api-database": ["api-database-drizzle"],
7911
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7912
+ "api-commerce": ["api-commerce-stripe"],
7913
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7914
+ "api-analytics": ["api-analytics-posthog-analytics"],
7915
+ "api-email": ["api-email-resend-react-email"],
7916
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7917
+ "cli-framework": ["cli-framework-cli-commander"]
7918
+ },
7919
+ "web-architecture": {
7920
+ "api-api": ["api-framework-hono"],
7921
+ "api-database": ["api-database-drizzle"],
7922
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7923
+ "api-commerce": ["api-commerce-stripe"],
7924
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7925
+ "api-analytics": ["api-analytics-posthog-analytics"],
7926
+ "api-email": ["api-email-resend-react-email"],
7927
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7928
+ "cli-framework": ["cli-framework-cli-commander"]
7929
+ },
7930
+ "web-researcher": {
7931
+ "web-framework": ["web-framework-react"],
7932
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7933
+ "web-styling": ["web-styling-tailwind"],
7934
+ "web-client-state": ["web-state-zustand"],
7935
+ "web-server-state": ["web-server-state-react-query"],
7936
+ "web-testing": ["web-testing-vitest"],
7937
+ "web-mocking": ["web-mocks-msw"],
7938
+ "web-accessibility": ["web-accessibility-web-accessibility"]
7939
+ },
7940
+ "api-researcher": {
7941
+ "api-api": ["api-framework-hono"],
7942
+ "api-database": ["api-database-drizzle"],
7943
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7944
+ "api-commerce": ["api-commerce-stripe"],
7945
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7946
+ "api-analytics": ["api-analytics-posthog-analytics"],
7947
+ "api-email": ["api-email-resend-react-email"],
7948
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7949
+ "cli-framework": ["cli-framework-cli-commander"]
7950
+ },
7951
+ "pattern-scout": {
7952
+ "web-framework": ["web-framework-react"],
7953
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7954
+ "web-styling": ["web-styling-tailwind"],
7955
+ "web-client-state": ["web-state-zustand"],
7956
+ "web-server-state": ["web-server-state-react-query"],
7957
+ "web-testing": ["web-testing-vitest"],
7958
+ "web-mocking": ["web-mocks-msw"],
7959
+ "web-accessibility": ["web-accessibility-web-accessibility"],
7960
+ "api-api": ["api-framework-hono"],
7961
+ "api-database": ["api-database-drizzle"],
7962
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7963
+ "api-commerce": ["api-commerce-stripe"],
7964
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7965
+ "api-analytics": ["api-analytics-posthog-analytics"],
7966
+ "api-email": ["api-email-resend-react-email"],
7967
+ "shared-ci-cd": ["shared-ci-cd-github-actions"]
7968
+ },
7969
+ "web-pattern-critique": {
7970
+ "web-framework": ["web-framework-react"],
7971
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7972
+ "web-styling": ["web-styling-tailwind"],
7973
+ "web-client-state": ["web-state-zustand"],
7974
+ "web-server-state": ["web-server-state-react-query"],
7975
+ "web-testing": ["web-testing-vitest"],
7976
+ "web-mocking": ["web-mocks-msw"],
7977
+ "web-accessibility": ["web-accessibility-web-accessibility"],
7978
+ "api-api": ["api-framework-hono"],
7979
+ "api-database": ["api-database-drizzle"],
7980
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
7981
+ "api-commerce": ["api-commerce-stripe"],
7982
+ "api-observability": ["api-observability-axiom-pino-sentry"],
7983
+ "api-analytics": ["api-analytics-posthog-analytics"],
7984
+ "api-email": ["api-email-resend-react-email"],
7985
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
7986
+ "shared-meta": ["shared-meta-reviewing"]
7987
+ },
7988
+ "agent-summoner": {
7989
+ "web-framework": ["web-framework-react"],
7990
+ "web-meta-framework": ["web-meta-framework-nextjs"],
7991
+ "web-styling": ["web-styling-tailwind"],
7992
+ "web-client-state": ["web-state-zustand"],
7993
+ "web-server-state": ["web-server-state-react-query"],
7994
+ "web-testing": ["web-testing-vitest"],
7995
+ "web-mocking": ["web-mocks-msw"],
7996
+ "web-accessibility": ["web-accessibility-web-accessibility"],
7997
+ "api-api": ["api-framework-hono"],
7998
+ "api-database": ["api-database-drizzle"],
7999
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8000
+ "api-commerce": ["api-commerce-stripe"],
8001
+ "api-observability": ["api-observability-axiom-pino-sentry"],
8002
+ "api-analytics": ["api-analytics-posthog-analytics"],
8003
+ "api-email": ["api-email-resend-react-email"],
8004
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
8005
+ "cli-framework": ["cli-framework-cli-commander"],
8006
+ "shared-meta": ["shared-meta-reviewing"]
8007
+ },
8008
+ "skill-summoner": {
8009
+ "web-framework": ["web-framework-react"],
8010
+ "web-meta-framework": ["web-meta-framework-nextjs"],
8011
+ "web-styling": ["web-styling-tailwind"],
8012
+ "web-client-state": ["web-state-zustand"],
8013
+ "web-server-state": ["web-server-state-react-query"],
8014
+ "web-testing": ["web-testing-vitest"],
8015
+ "web-mocking": ["web-mocks-msw"],
8016
+ "web-accessibility": ["web-accessibility-web-accessibility"],
8017
+ "api-api": ["api-framework-hono"],
8018
+ "api-database": ["api-database-drizzle"],
8019
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8020
+ "api-commerce": ["api-commerce-stripe"],
8021
+ "api-observability": ["api-observability-axiom-pino-sentry"],
8022
+ "api-analytics": ["api-analytics-posthog-analytics"],
8023
+ "api-email": ["api-email-resend-react-email"],
8024
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
8025
+ "cli-framework": ["cli-framework-cli-commander"],
8026
+ "shared-meta": ["shared-meta-reviewing"]
8027
+ },
8028
+ scribe: {
8029
+ "web-framework": ["web-framework-react"],
8030
+ "web-meta-framework": ["web-meta-framework-nextjs"],
8031
+ "web-styling": ["web-styling-tailwind"],
8032
+ "web-client-state": ["web-state-zustand"],
8033
+ "web-server-state": ["web-server-state-react-query"],
8034
+ "web-testing": ["web-testing-vitest"],
8035
+ "web-mocking": ["web-mocks-msw"],
8036
+ "web-accessibility": ["web-accessibility-web-accessibility"],
8037
+ "api-api": ["api-framework-hono"],
8038
+ "api-database": ["api-database-drizzle"],
8039
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8040
+ "api-commerce": ["api-commerce-stripe"],
8041
+ "api-observability": ["api-observability-axiom-pino-sentry"],
8042
+ "api-analytics": ["api-analytics-posthog-analytics"],
8043
+ "api-email": ["api-email-resend-react-email"],
8044
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
8045
+ "cli-framework": ["cli-framework-cli-commander"],
8046
+ "shared-meta": ["shared-meta-reviewing"]
8047
+ },
8048
+ "cli-tester": {}
8049
+ },
8050
+ allSkillIds: [
8051
+ "web-framework-react",
8052
+ "web-meta-framework-nextjs",
8053
+ "web-styling-tailwind",
8054
+ "web-state-zustand",
8055
+ "web-server-state-react-query",
8056
+ "web-testing-vitest",
8057
+ "web-mocks-msw",
8058
+ "web-accessibility-web-accessibility",
8059
+ "shared-tooling-eslint-prettier",
8060
+ "shared-tooling-typescript-config",
8061
+ "shared-tooling-git-hooks",
8062
+ "web-tooling-vite",
8063
+ "api-framework-hono",
8064
+ "api-database-drizzle",
8065
+ "api-auth-better-auth-drizzle-hono",
8066
+ "api-commerce-stripe",
8067
+ "api-flags-posthog-flags",
8068
+ "api-observability-axiom-pino-sentry",
8069
+ "api-analytics-posthog-analytics",
8070
+ "api-email-resend-react-email",
8071
+ "shared-ci-cd-github-actions",
8072
+ "cli-framework-cli-commander",
8073
+ "shared-meta-reviewing",
8074
+ "shared-meta-cli-reviewing",
8075
+ "web-testing-playwright-e2e"
8076
+ ],
8077
+ philosophy: "Ship your SaaS fast with auth, payments, and analytics"
8078
+ },
8079
+ {
8080
+ id: "expo-mobile-fullstack",
8081
+ name: "Expo Mobile Full-Stack",
8082
+ description: "Expo, React Native, Zustand, React Query, Hono, Drizzle",
8083
+ skills: {
8084
+ "web-developer": {
8085
+ "web-framework": ["web-framework-react"],
8086
+ "mobile-framework": ["mobile-framework-expo", "mobile-framework-react-native"],
8087
+ "web-client-state": ["web-state-zustand"],
8088
+ "web-server-state": ["web-server-state-react-query"],
8089
+ "web-testing": ["web-testing-vitest"],
8090
+ "web-mocking": ["web-mocks-msw"],
8091
+ "shared-tooling": [
8092
+ "shared-tooling-eslint-prettier",
8093
+ "shared-tooling-typescript-config",
8094
+ "shared-tooling-git-hooks"
8095
+ ]
8096
+ },
8097
+ "api-developer": {
8098
+ "api-api": ["api-framework-hono"],
8099
+ "api-database": ["api-database-drizzle"],
8100
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8101
+ "api-observability": ["api-observability-axiom-pino-sentry"],
8102
+ "api-email": ["api-email-resend-react-email"],
8103
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
8104
+ "shared-tooling": [
8105
+ "shared-tooling-eslint-prettier",
8106
+ "shared-tooling-typescript-config",
8107
+ "shared-tooling-git-hooks"
8108
+ ]
8109
+ },
8110
+ "cli-developer": {
8111
+ "cli-framework": ["cli-framework-cli-commander"],
8112
+ "shared-tooling": [
8113
+ "shared-tooling-eslint-prettier",
8114
+ "shared-tooling-typescript-config",
8115
+ "shared-tooling-git-hooks"
8116
+ ]
8117
+ },
8118
+ "web-reviewer": {
8119
+ "shared-meta": ["shared-meta-reviewing"],
8120
+ "web-framework": ["web-framework-react"],
8121
+ "mobile-framework": ["mobile-framework-expo", "mobile-framework-react-native"],
8122
+ "web-client-state": ["web-state-zustand"],
8123
+ "web-server-state": ["web-server-state-react-query"],
8124
+ "web-testing": ["web-testing-vitest"],
8125
+ "web-mocking": ["web-mocks-msw"]
8126
+ },
8127
+ "api-reviewer": {
8128
+ "shared-meta": ["shared-meta-reviewing"],
8129
+ "api-api": ["api-framework-hono"],
8130
+ "api-database": ["api-database-drizzle"],
8131
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8132
+ "api-observability": ["api-observability-axiom-pino-sentry"]
8133
+ },
8134
+ "cli-reviewer": {
8135
+ "shared-meta": ["shared-meta-cli-reviewing"],
8136
+ "cli-framework": ["cli-framework-cli-commander"]
8137
+ },
8138
+ "web-tester": {
8139
+ "web-testing": ["web-testing-vitest"],
8140
+ "web-mocking": ["web-mocks-msw"]
8141
+ },
8142
+ "web-pm": {
8143
+ "web-framework": ["web-framework-react"],
8144
+ "mobile-framework": ["mobile-framework-expo", "mobile-framework-react-native"],
8145
+ "web-client-state": ["web-state-zustand"],
8146
+ "web-server-state": ["web-server-state-react-query"],
8147
+ "web-testing": ["web-testing-vitest"],
8148
+ "web-mocking": ["web-mocks-msw"],
8149
+ "api-api": ["api-framework-hono"],
8150
+ "api-database": ["api-database-drizzle"],
8151
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8152
+ "api-observability": ["api-observability-axiom-pino-sentry"],
8153
+ "api-email": ["api-email-resend-react-email"],
8154
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
8155
+ "cli-framework": ["cli-framework-cli-commander"]
8156
+ },
8157
+ "web-architecture": {
8158
+ "api-api": ["api-framework-hono"],
8159
+ "api-database": ["api-database-drizzle"],
8160
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8161
+ "api-observability": ["api-observability-axiom-pino-sentry"],
8162
+ "api-email": ["api-email-resend-react-email"],
8163
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
8164
+ "cli-framework": ["cli-framework-cli-commander"]
8165
+ },
8166
+ "web-researcher": {
8167
+ "web-framework": ["web-framework-react"],
8168
+ "mobile-framework": ["mobile-framework-expo", "mobile-framework-react-native"],
8169
+ "web-client-state": ["web-state-zustand"],
8170
+ "web-server-state": ["web-server-state-react-query"],
8171
+ "web-testing": ["web-testing-vitest"],
8172
+ "web-mocking": ["web-mocks-msw"]
8173
+ },
8174
+ "api-researcher": {
8175
+ "api-api": ["api-framework-hono"],
8176
+ "api-database": ["api-database-drizzle"],
8177
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8178
+ "api-observability": ["api-observability-axiom-pino-sentry"],
8179
+ "api-email": ["api-email-resend-react-email"],
8180
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
8181
+ "cli-framework": ["cli-framework-cli-commander"]
8182
+ },
8183
+ "pattern-scout": {
8184
+ "web-framework": ["web-framework-react"],
8185
+ "mobile-framework": ["mobile-framework-expo", "mobile-framework-react-native"],
8186
+ "web-client-state": ["web-state-zustand"],
8187
+ "web-server-state": ["web-server-state-react-query"],
8188
+ "web-testing": ["web-testing-vitest"],
8189
+ "web-mocking": ["web-mocks-msw"],
8190
+ "api-api": ["api-framework-hono"],
8191
+ "api-database": ["api-database-drizzle"],
8192
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8193
+ "api-observability": ["api-observability-axiom-pino-sentry"],
8194
+ "api-email": ["api-email-resend-react-email"],
8195
+ "shared-ci-cd": ["shared-ci-cd-github-actions"]
8196
+ },
8197
+ "web-pattern-critique": {
8198
+ "web-framework": ["web-framework-react"],
8199
+ "mobile-framework": ["mobile-framework-expo", "mobile-framework-react-native"],
8200
+ "web-client-state": ["web-state-zustand"],
8201
+ "web-server-state": ["web-server-state-react-query"],
8202
+ "web-testing": ["web-testing-vitest"],
8203
+ "web-mocking": ["web-mocks-msw"],
8204
+ "api-api": ["api-framework-hono"],
8205
+ "api-database": ["api-database-drizzle"],
8206
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8207
+ "api-observability": ["api-observability-axiom-pino-sentry"],
8208
+ "api-email": ["api-email-resend-react-email"],
8209
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
8210
+ "shared-meta": ["shared-meta-reviewing"]
8211
+ },
8212
+ "agent-summoner": {
8213
+ "web-framework": ["web-framework-react"],
8214
+ "mobile-framework": ["mobile-framework-expo", "mobile-framework-react-native"],
8215
+ "web-client-state": ["web-state-zustand"],
8216
+ "web-server-state": ["web-server-state-react-query"],
8217
+ "web-testing": ["web-testing-vitest"],
8218
+ "web-mocking": ["web-mocks-msw"],
8219
+ "api-api": ["api-framework-hono"],
8220
+ "api-database": ["api-database-drizzle"],
8221
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8222
+ "api-observability": ["api-observability-axiom-pino-sentry"],
8223
+ "api-email": ["api-email-resend-react-email"],
8224
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
8225
+ "cli-framework": ["cli-framework-cli-commander"],
8226
+ "shared-meta": ["shared-meta-reviewing"]
8227
+ },
8228
+ "skill-summoner": {
8229
+ "web-framework": ["web-framework-react"],
8230
+ "mobile-framework": ["mobile-framework-expo", "mobile-framework-react-native"],
8231
+ "web-client-state": ["web-state-zustand"],
8232
+ "web-server-state": ["web-server-state-react-query"],
8233
+ "web-testing": ["web-testing-vitest"],
8234
+ "web-mocking": ["web-mocks-msw"],
8235
+ "api-api": ["api-framework-hono"],
8236
+ "api-database": ["api-database-drizzle"],
8237
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8238
+ "api-observability": ["api-observability-axiom-pino-sentry"],
8239
+ "api-email": ["api-email-resend-react-email"],
8240
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
8241
+ "cli-framework": ["cli-framework-cli-commander"],
8242
+ "shared-meta": ["shared-meta-reviewing"]
8243
+ },
8244
+ scribe: {
8245
+ "web-framework": ["web-framework-react"],
8246
+ "mobile-framework": ["mobile-framework-expo", "mobile-framework-react-native"],
8247
+ "web-client-state": ["web-state-zustand"],
8248
+ "web-server-state": ["web-server-state-react-query"],
8249
+ "web-testing": ["web-testing-vitest"],
8250
+ "web-mocking": ["web-mocks-msw"],
8251
+ "api-api": ["api-framework-hono"],
8252
+ "api-database": ["api-database-drizzle"],
8253
+ "api-auth": ["api-auth-better-auth-drizzle-hono"],
8254
+ "api-observability": ["api-observability-axiom-pino-sentry"],
8255
+ "api-email": ["api-email-resend-react-email"],
8256
+ "shared-ci-cd": ["shared-ci-cd-github-actions"],
8257
+ "cli-framework": ["cli-framework-cli-commander"],
8258
+ "shared-meta": ["shared-meta-reviewing"]
8259
+ },
8260
+ "cli-tester": {}
8261
+ },
8262
+ allSkillIds: [
8263
+ "web-framework-react",
8264
+ "mobile-framework-expo",
8265
+ "mobile-framework-react-native",
8266
+ "web-state-zustand",
8267
+ "web-server-state-react-query",
8268
+ "web-testing-vitest",
8269
+ "web-mocks-msw",
8270
+ "shared-tooling-eslint-prettier",
8271
+ "shared-tooling-typescript-config",
8272
+ "shared-tooling-git-hooks",
8273
+ "api-framework-hono",
8274
+ "api-database-drizzle",
8275
+ "api-auth-better-auth-drizzle-hono",
8276
+ "api-observability-axiom-pino-sentry",
8277
+ "api-email-resend-react-email",
8278
+ "shared-ci-cd-github-actions",
8279
+ "cli-framework-cli-commander",
8280
+ "shared-meta-reviewing",
8281
+ "shared-meta-cli-reviewing"
8282
+ ],
8283
+ philosophy: "Cross-platform mobile with shared React patterns"
5295
8284
  }
5296
8285
  ],
5297
8286
  slugMap: {
@@ -5302,36 +8291,58 @@ var BUILT_IN_MATRIX = {
5302
8291
  mongodb: "api-database-mongodb",
5303
8292
  "setup-posthog": "api-analytics-setup-posthog",
5304
8293
  react: "web-framework-react",
8294
+ typeorm: "api-database-typeorm",
8295
+ replicate: "api-ai-replicate",
5305
8296
  prisma: "api-database-prisma",
8297
+ "anthropic-sdk": "api-ai-anthropic-sdk",
5306
8298
  "github-actions": "shared-ci-cd-github-actions",
5307
8299
  "file-upload-patterns": "web-files-file-upload-patterns",
5308
8300
  "zod-validation": "web-forms-zod-validation",
8301
+ rxjs: "web-utilities-rxjs",
5309
8302
  "headless-ui": "web-ui-headless-ui",
8303
+ payload: "api-cms-payload",
8304
+ mysql: "api-database-mysql",
8305
+ "cohere-sdk": "api-ai-cohere-sdk",
5310
8306
  "cli-commander": "cli-framework-cli-commander",
5311
8307
  "angular-standalone": "web-framework-angular-standalone",
5312
8308
  "git-hooks": "shared-tooling-git-hooks",
5313
8309
  "offline-first": "web-pwa-offline-first",
5314
8310
  "axiom-pino-sentry": "api-observability-axiom-pino-sentry",
5315
8311
  expo: "mobile-framework-expo",
8312
+ "react-router": "web-routing-react-router",
5316
8313
  jotai: "web-state-jotai",
8314
+ "huggingface-inference": "api-ai-huggingface-inference",
8315
+ sanity: "api-cms-sanity",
5317
8316
  "setup-axiom-pino-sentry": "api-observability-setup-axiom-pino-sentry",
8317
+ "mistral-sdk": "api-ai-mistral-sdk",
5318
8318
  "research-methodology": "shared-meta-research-methodology",
5319
8319
  websockets: "web-realtime-websockets",
5320
8320
  "graphql-apollo": "web-data-fetching-graphql-apollo",
5321
8321
  "redux-toolkit": "web-state-redux-toolkit",
8322
+ turso: "api-baas-turso",
5322
8323
  pinia: "web-state-pinia",
8324
+ promptfoo: "api-ai-promptfoo",
8325
+ ollama: "api-ai-ollama",
5323
8326
  clerk: "api-auth-clerk",
8327
+ elysia: "api-framework-elysia",
5324
8328
  vite: "web-tooling-vite",
8329
+ meilisearch: "api-search-meilisearch",
5325
8330
  "cli-reviewing": "shared-meta-cli-reviewing",
8331
+ elasticsearch: "api-search-elasticsearch",
5326
8332
  "date-fns": "web-utilities-date-fns",
8333
+ upstash: "api-baas-upstash",
5327
8334
  storybook: "web-tooling-storybook",
8335
+ "tool-use-patterns": "api-ai-tool-use-patterns",
8336
+ planetscale: "api-baas-planetscale",
5328
8337
  "shadcn-ui": "web-ui-shadcn-ui",
5329
8338
  nextauth: "api-auth-nextauth",
5330
8339
  "react-native": "mobile-framework-react-native",
5331
8340
  sse: "web-realtime-sse",
5332
8341
  "vue-composition-api": "web-framework-vue-composition-api",
8342
+ chroma: "api-vector-db-chroma",
5333
8343
  "vee-validate": "web-forms-vee-validate",
5334
8344
  "vue-test-utils": "web-testing-vue-test-utils",
8345
+ "chakra-ui": "web-ui-chakra-ui",
5335
8346
  zustand: "web-state-zustand",
5336
8347
  "radix-ui": "web-ui-radix-ui",
5337
8348
  "ngrx-signalstore": "web-state-ngrx-signalstore",
@@ -5345,59 +8356,88 @@ var BUILT_IN_MATRIX = {
5345
8356
  "next-intl": "web-i18n-next-intl",
5346
8357
  solidjs: "web-framework-solidjs",
5347
8358
  astro: "web-meta-framework-astro",
8359
+ neon: "api-baas-neon",
5348
8360
  reviewing: "shared-meta-reviewing",
8361
+ edgedb: "api-database-edgedb",
8362
+ weaviate: "api-vector-db-weaviate",
5349
8363
  "service-workers": "web-pwa-service-workers",
5350
8364
  "setup-env": "shared-infra-setup-env",
5351
8365
  "react-testing-library": "web-testing-react-testing-library",
8366
+ knex: "api-database-knex",
5352
8367
  cva: "web-styling-cva",
5353
8368
  msw: "web-mocks-msw",
5354
8369
  turborepo: "shared-monorepo-turborepo",
5355
8370
  "vue-i18n": "web-i18n-vue-i18n",
5356
8371
  "tanstack-router": "web-routing-tanstack-router",
8372
+ qdrant: "api-vector-db-qdrant",
5357
8373
  "image-handling": "web-files-image-handling",
5358
8374
  "setup-resend": "api-email-setup-resend",
8375
+ "claude-vision": "api-ai-claude-vision",
5359
8376
  "react-query": "web-server-state-react-query",
8377
+ llamaindex: "api-ai-llamaindex",
5360
8378
  svelte: "web-framework-svelte",
8379
+ elevenlabs: "api-ai-elevenlabs",
5361
8380
  "api-performance": "api-performance-api-performance",
5362
8381
  "graphql-urql": "web-data-fetching-graphql-urql",
5363
8382
  "ant-design": "web-ui-ant-design",
5364
8383
  nuxt: "web-meta-framework-nuxt",
5365
8384
  supabase: "api-baas-supabase",
8385
+ mongoose: "api-database-mongoose",
5366
8386
  mobx: "web-state-mobx",
5367
8387
  "css-animations": "web-animation-css-animations",
5368
8388
  "better-auth-drizzle-hono": "api-auth-better-auth-drizzle-hono",
5369
8389
  nx: "shared-monorepo-nx",
8390
+ appwrite: "api-baas-appwrite",
5370
8391
  "oclif-ink": "cli-framework-oclif-ink",
8392
+ strapi: "api-cms-strapi",
8393
+ vueuse: "web-utilities-vueuse",
5371
8394
  firebase: "api-baas-firebase",
5372
8395
  "openai-sdk": "api-ai-openai-sdk",
8396
+ langfuse: "api-ai-langfuse",
8397
+ "openai-whisper": "api-ai-openai-whisper",
5373
8398
  redis: "api-database-redis",
5374
8399
  "pnpm-workspaces": "shared-monorepo-pnpm-workspaces",
8400
+ litellm: "api-ai-litellm",
5375
8401
  mui: "web-ui-mui",
5376
8402
  drizzle: "api-database-drizzle",
8403
+ surrealdb: "api-database-surrealdb",
5377
8404
  vitest: "web-testing-vitest",
5378
8405
  nextjs: "web-meta-framework-nextjs",
8406
+ cockroachdb: "api-database-cockroachdb",
5379
8407
  "view-transitions": "web-animation-view-transitions",
5380
8408
  nestjs: "api-framework-nestjs",
5381
8409
  "resend-react-email": "api-email-resend-react-email",
8410
+ "vercel-kv": "api-baas-vercel-kv",
8411
+ "vercel-postgres": "api-baas-vercel-postgres",
5382
8412
  express: "api-framework-express",
8413
+ modal: "api-ai-modal",
5383
8414
  "tanstack-table": "web-ui-tanstack-table",
5384
8415
  remix: "web-meta-framework-remix",
5385
8416
  "vercel-ai-sdk": "api-ai-vercel-ai-sdk",
8417
+ langchain: "api-ai-langchain",
5386
8418
  "result-types": "web-error-handling-result-types",
5387
8419
  "web-performance": "web-performance-web-performance",
5388
8420
  "typescript-config": "shared-tooling-typescript-config",
5389
8421
  tailwind: "web-styling-tailwind",
5390
8422
  "react-hook-form": "web-forms-react-hook-form",
8423
+ "google-gemini-sdk": "api-ai-google-gemini-sdk",
8424
+ postgresql: "api-database-postgresql",
5391
8425
  sveltekit: "web-meta-framework-sveltekit",
5392
8426
  "socket-io": "web-realtime-socket-io",
8427
+ pinecone: "api-vector-db-pinecone",
5393
8428
  "web-accessibility": "web-accessibility-web-accessibility",
8429
+ "together-ai": "api-ai-together-ai",
5394
8430
  "scss-modules": "web-styling-scss-modules",
8431
+ mantine: "web-ui-mantine",
5395
8432
  "auth-security": "shared-security-auth-security",
5396
8433
  "native-js": "web-utilities-native-js",
8434
+ stripe: "api-commerce-stripe",
5397
8435
  fastify: "api-framework-fastify",
5398
8436
  "cypress-e2e": "web-testing-cypress-e2e",
5399
8437
  "posthog-analytics": "api-analytics-posthog-analytics",
8438
+ qwik: "web-meta-framework-qwik",
5400
8439
  swr: "web-data-fetching-swr",
8440
+ sequelize: "api-database-sequelize",
5401
8441
  "react-intl": "web-i18n-react-intl"
5402
8442
  },
5403
8443
  idToSlug: {
@@ -5407,36 +8447,58 @@ var BUILT_IN_MATRIX = {
5407
8447
  "api-database-mongodb": "mongodb",
5408
8448
  "api-analytics-setup-posthog": "setup-posthog",
5409
8449
  "web-framework-react": "react",
8450
+ "api-database-typeorm": "typeorm",
8451
+ "api-ai-replicate": "replicate",
5410
8452
  "api-database-prisma": "prisma",
8453
+ "api-ai-anthropic-sdk": "anthropic-sdk",
5411
8454
  "shared-ci-cd-github-actions": "github-actions",
5412
8455
  "web-files-file-upload-patterns": "file-upload-patterns",
5413
8456
  "web-forms-zod-validation": "zod-validation",
8457
+ "web-utilities-rxjs": "rxjs",
5414
8458
  "web-ui-headless-ui": "headless-ui",
8459
+ "api-cms-payload": "payload",
8460
+ "api-database-mysql": "mysql",
8461
+ "api-ai-cohere-sdk": "cohere-sdk",
5415
8462
  "cli-framework-cli-commander": "cli-commander",
5416
8463
  "web-framework-angular-standalone": "angular-standalone",
5417
8464
  "shared-tooling-git-hooks": "git-hooks",
5418
8465
  "web-pwa-offline-first": "offline-first",
5419
8466
  "api-observability-axiom-pino-sentry": "axiom-pino-sentry",
5420
8467
  "mobile-framework-expo": "expo",
8468
+ "web-routing-react-router": "react-router",
5421
8469
  "web-state-jotai": "jotai",
8470
+ "api-ai-huggingface-inference": "huggingface-inference",
8471
+ "api-cms-sanity": "sanity",
5422
8472
  "api-observability-setup-axiom-pino-sentry": "setup-axiom-pino-sentry",
8473
+ "api-ai-mistral-sdk": "mistral-sdk",
5423
8474
  "shared-meta-research-methodology": "research-methodology",
5424
8475
  "web-realtime-websockets": "websockets",
5425
8476
  "web-data-fetching-graphql-apollo": "graphql-apollo",
5426
8477
  "web-state-redux-toolkit": "redux-toolkit",
8478
+ "api-baas-turso": "turso",
5427
8479
  "web-state-pinia": "pinia",
8480
+ "api-ai-promptfoo": "promptfoo",
8481
+ "api-ai-ollama": "ollama",
5428
8482
  "api-auth-clerk": "clerk",
8483
+ "api-framework-elysia": "elysia",
5429
8484
  "web-tooling-vite": "vite",
8485
+ "api-search-meilisearch": "meilisearch",
5430
8486
  "shared-meta-cli-reviewing": "cli-reviewing",
8487
+ "api-search-elasticsearch": "elasticsearch",
5431
8488
  "web-utilities-date-fns": "date-fns",
8489
+ "api-baas-upstash": "upstash",
5432
8490
  "web-tooling-storybook": "storybook",
8491
+ "api-ai-tool-use-patterns": "tool-use-patterns",
8492
+ "api-baas-planetscale": "planetscale",
5433
8493
  "web-ui-shadcn-ui": "shadcn-ui",
5434
8494
  "api-auth-nextauth": "nextauth",
5435
8495
  "mobile-framework-react-native": "react-native",
5436
8496
  "web-realtime-sse": "sse",
5437
8497
  "web-framework-vue-composition-api": "vue-composition-api",
8498
+ "api-vector-db-chroma": "chroma",
5438
8499
  "web-forms-vee-validate": "vee-validate",
5439
8500
  "web-testing-vue-test-utils": "vue-test-utils",
8501
+ "web-ui-chakra-ui": "chakra-ui",
5440
8502
  "web-state-zustand": "zustand",
5441
8503
  "web-ui-radix-ui": "radix-ui",
5442
8504
  "web-state-ngrx-signalstore": "ngrx-signalstore",
@@ -5450,59 +8512,88 @@ var BUILT_IN_MATRIX = {
5450
8512
  "web-i18n-next-intl": "next-intl",
5451
8513
  "web-framework-solidjs": "solidjs",
5452
8514
  "web-meta-framework-astro": "astro",
8515
+ "api-baas-neon": "neon",
5453
8516
  "shared-meta-reviewing": "reviewing",
8517
+ "api-database-edgedb": "edgedb",
8518
+ "api-vector-db-weaviate": "weaviate",
5454
8519
  "web-pwa-service-workers": "service-workers",
5455
8520
  "shared-infra-setup-env": "setup-env",
5456
8521
  "web-testing-react-testing-library": "react-testing-library",
8522
+ "api-database-knex": "knex",
5457
8523
  "web-styling-cva": "cva",
5458
8524
  "web-mocks-msw": "msw",
5459
8525
  "shared-monorepo-turborepo": "turborepo",
5460
8526
  "web-i18n-vue-i18n": "vue-i18n",
5461
8527
  "web-routing-tanstack-router": "tanstack-router",
8528
+ "api-vector-db-qdrant": "qdrant",
5462
8529
  "web-files-image-handling": "image-handling",
5463
8530
  "api-email-setup-resend": "setup-resend",
8531
+ "api-ai-claude-vision": "claude-vision",
5464
8532
  "web-server-state-react-query": "react-query",
8533
+ "api-ai-llamaindex": "llamaindex",
5465
8534
  "web-framework-svelte": "svelte",
8535
+ "api-ai-elevenlabs": "elevenlabs",
5466
8536
  "api-performance-api-performance": "api-performance",
5467
8537
  "web-data-fetching-graphql-urql": "graphql-urql",
5468
8538
  "web-ui-ant-design": "ant-design",
5469
8539
  "web-meta-framework-nuxt": "nuxt",
5470
8540
  "api-baas-supabase": "supabase",
8541
+ "api-database-mongoose": "mongoose",
5471
8542
  "web-state-mobx": "mobx",
5472
8543
  "web-animation-css-animations": "css-animations",
5473
8544
  "api-auth-better-auth-drizzle-hono": "better-auth-drizzle-hono",
5474
8545
  "shared-monorepo-nx": "nx",
8546
+ "api-baas-appwrite": "appwrite",
5475
8547
  "cli-framework-oclif-ink": "oclif-ink",
8548
+ "api-cms-strapi": "strapi",
8549
+ "web-utilities-vueuse": "vueuse",
5476
8550
  "api-baas-firebase": "firebase",
5477
8551
  "api-ai-openai-sdk": "openai-sdk",
8552
+ "api-ai-langfuse": "langfuse",
8553
+ "api-ai-openai-whisper": "openai-whisper",
5478
8554
  "api-database-redis": "redis",
5479
8555
  "shared-monorepo-pnpm-workspaces": "pnpm-workspaces",
8556
+ "api-ai-litellm": "litellm",
5480
8557
  "web-ui-mui": "mui",
5481
8558
  "api-database-drizzle": "drizzle",
8559
+ "api-database-surrealdb": "surrealdb",
5482
8560
  "web-testing-vitest": "vitest",
5483
8561
  "web-meta-framework-nextjs": "nextjs",
8562
+ "api-database-cockroachdb": "cockroachdb",
5484
8563
  "web-animation-view-transitions": "view-transitions",
5485
8564
  "api-framework-nestjs": "nestjs",
5486
8565
  "api-email-resend-react-email": "resend-react-email",
8566
+ "api-baas-vercel-kv": "vercel-kv",
8567
+ "api-baas-vercel-postgres": "vercel-postgres",
5487
8568
  "api-framework-express": "express",
8569
+ "api-ai-modal": "modal",
5488
8570
  "web-ui-tanstack-table": "tanstack-table",
5489
8571
  "web-meta-framework-remix": "remix",
5490
8572
  "api-ai-vercel-ai-sdk": "vercel-ai-sdk",
8573
+ "api-ai-langchain": "langchain",
5491
8574
  "web-error-handling-result-types": "result-types",
5492
8575
  "web-performance-web-performance": "web-performance",
5493
8576
  "shared-tooling-typescript-config": "typescript-config",
5494
8577
  "web-styling-tailwind": "tailwind",
5495
8578
  "web-forms-react-hook-form": "react-hook-form",
8579
+ "api-ai-google-gemini-sdk": "google-gemini-sdk",
8580
+ "api-database-postgresql": "postgresql",
5496
8581
  "web-meta-framework-sveltekit": "sveltekit",
5497
8582
  "web-realtime-socket-io": "socket-io",
8583
+ "api-vector-db-pinecone": "pinecone",
5498
8584
  "web-accessibility-web-accessibility": "web-accessibility",
8585
+ "api-ai-together-ai": "together-ai",
5499
8586
  "web-styling-scss-modules": "scss-modules",
8587
+ "web-ui-mantine": "mantine",
5500
8588
  "shared-security-auth-security": "auth-security",
5501
8589
  "web-utilities-native-js": "native-js",
8590
+ "api-commerce-stripe": "stripe",
5502
8591
  "api-framework-fastify": "fastify",
5503
8592
  "web-testing-cypress-e2e": "cypress-e2e",
5504
8593
  "api-analytics-posthog-analytics": "posthog-analytics",
8594
+ "web-meta-framework-qwik": "qwik",
5505
8595
  "web-data-fetching-swr": "swr",
8596
+ "api-database-sequelize": "sequelize",
5506
8597
  "web-i18n-react-intl": "react-intl"
5507
8598
  }
5508
8599
  },
@@ -5552,4 +8643,4 @@ export {
5552
8643
  getCategoryDomain,
5553
8644
  findStack
5554
8645
  };
5555
- //# sourceMappingURL=chunk-FSK4TQX7.js.map
8646
+ //# sourceMappingURL=chunk-4R6I6A3U.js.map