@agents-inc/cli 0.46.0 → 0.48.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 (169) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +114 -118
  3. package/config/skill-categories.yaml +344 -0
  4. package/config/skill-rules.yaml +740 -0
  5. package/dist/{chunk-LFZXMQOH.js → chunk-2BVZOYJP.js} +2 -2
  6. package/dist/{chunk-4C7PDDLY.js → chunk-2DNDAXF6.js} +5 -5
  7. package/dist/{chunk-C7BO2ASM.js → chunk-34BP5BC4.js} +2 -2
  8. package/dist/{chunk-TOWP4T5L.js → chunk-37QYD33C.js} +2 -2
  9. package/dist/{chunk-YT7UHV67.js → chunk-5MN5S3DV.js} +11 -9
  10. package/dist/chunk-5MN5S3DV.js.map +1 -0
  11. package/dist/{chunk-72GS6PIH.js → chunk-5O6GKXAN.js} +7 -7
  12. package/dist/{chunk-KWQ2BQXF.js → chunk-7IAKVZL5.js} +3 -3
  13. package/dist/{chunk-CTQHZELA.js → chunk-AMNCCZSG.js} +14 -14
  14. package/dist/{chunk-PZLUO4OY.js → chunk-AXV7NFFJ.js} +4 -4
  15. package/dist/{chunk-ODQ2BKWU.js → chunk-AXZNJ5PN.js} +3 -3
  16. package/dist/{chunk-J64CA4V6.js → chunk-C7DLY64D.js} +2 -2
  17. package/dist/{chunk-G2WNOT3R.js → chunk-DG2U2WY3.js} +2 -2
  18. package/dist/{chunk-3WKFSTG6.js → chunk-F7KTUFGU.js} +2 -2
  19. package/dist/{chunk-5M6JI76P.js → chunk-FHKNG3UA.js} +2 -2
  20. package/dist/{chunk-I26YP2Q3.js → chunk-FPTUCWBY.js} +5 -5
  21. package/dist/{chunk-VH3PI43B.js → chunk-G5OZQ376.js} +4 -4
  22. package/dist/{chunk-RWR56UVK.js → chunk-GSPPOXMG.js} +11 -2
  23. package/dist/chunk-GSPPOXMG.js.map +1 -0
  24. package/dist/{chunk-YVMYQSED.js → chunk-I52THVF6.js} +2 -2
  25. package/dist/{chunk-FKBCYT7B.js → chunk-IS7GP6XC.js} +5 -5
  26. package/dist/{chunk-UK3AMBR7.js → chunk-KPJJOLAQ.js} +13 -6
  27. package/dist/{chunk-UK3AMBR7.js.map → chunk-KPJJOLAQ.js.map} +1 -1
  28. package/dist/{chunk-74HSA7C4.js → chunk-LESHL6SM.js} +9 -5
  29. package/dist/chunk-LESHL6SM.js.map +1 -0
  30. package/dist/{chunk-NMXNHRAK.js → chunk-NJVJ7VO5.js} +3 -3
  31. package/dist/{chunk-GVLYNP2I.js → chunk-OHDEJEYB.js} +4 -4
  32. package/dist/{chunk-CD64ZNYI.js → chunk-OTTITQ7C.js} +11 -3
  33. package/dist/chunk-OTTITQ7C.js.map +1 -0
  34. package/dist/{chunk-RT6IBH37.js → chunk-P2SFRDWI.js} +191 -109
  35. package/dist/chunk-P2SFRDWI.js.map +1 -0
  36. package/dist/{chunk-FUEZQ2H6.js → chunk-PY2XZUBF.js} +4 -4
  37. package/dist/{chunk-CDGHSTB6.js → chunk-SPVSWDFM.js} +7 -5
  38. package/dist/chunk-SPVSWDFM.js.map +1 -0
  39. package/dist/{chunk-DO5OZHSS.js → chunk-U2AEK4ZL.js} +2 -2
  40. package/dist/{chunk-HM3DHMW7.js → chunk-VBAAATPU.js} +8 -8
  41. package/dist/chunk-VBAAATPU.js.map +1 -0
  42. package/dist/{chunk-7LDSHHKN.js → chunk-W62XVWXB.js} +3 -3
  43. package/dist/{chunk-D7JTL3DJ.js → chunk-WSGKCBY5.js} +2 -2
  44. package/dist/{chunk-XE6RTHUD.js → chunk-X3SZIBVW.js} +34 -4
  45. package/dist/chunk-X3SZIBVW.js.map +1 -0
  46. package/dist/{chunk-QBUOZVNZ.js → chunk-YDASDMTH.js} +2 -2
  47. package/dist/{chunk-5QRJUBK7.js → chunk-YMUWTPOM.js} +41 -29
  48. package/dist/chunk-YMUWTPOM.js.map +1 -0
  49. package/dist/{chunk-SGXUMZWL.js → chunk-ZML3OCYA.js} +2 -2
  50. package/dist/commands/build/marketplace.js +4 -4
  51. package/dist/commands/build/plugins.js +5 -5
  52. package/dist/commands/build/stack.js +5 -5
  53. package/dist/commands/compile.js +6 -6
  54. package/dist/commands/config/get.js +4 -4
  55. package/dist/commands/config/index.js +5 -5
  56. package/dist/commands/config/path.js +4 -4
  57. package/dist/commands/config/set-project.js +4 -4
  58. package/dist/commands/config/show.js +5 -5
  59. package/dist/commands/config/unset-project.js +4 -4
  60. package/dist/commands/diff.js +4 -4
  61. package/dist/commands/doctor.js +4 -4
  62. package/dist/commands/edit.js +29 -29
  63. package/dist/commands/eject.js +4 -4
  64. package/dist/commands/import/skill.js +7 -8
  65. package/dist/commands/import/skill.js.map +1 -1
  66. package/dist/commands/info.js +5 -5
  67. package/dist/commands/init.js +28 -28
  68. package/dist/commands/list.js +4 -4
  69. package/dist/commands/new/agent.js +6 -6
  70. package/dist/commands/new/marketplace.js +5 -5
  71. package/dist/commands/new/skill.js +10 -8
  72. package/dist/commands/new/skill.js.map +1 -1
  73. package/dist/commands/outdated.js +4 -4
  74. package/dist/commands/search.js +7 -8
  75. package/dist/commands/search.js.map +1 -1
  76. package/dist/commands/uninstall.js +6 -6
  77. package/dist/commands/update.js +6 -6
  78. package/dist/commands/validate.js +267 -24
  79. package/dist/commands/validate.js.map +1 -1
  80. package/dist/components/skill-search/skill-search.js +3 -3
  81. package/dist/components/wizard/category-grid.js +2 -2
  82. package/dist/components/wizard/category-grid.test.js +122 -2
  83. package/dist/components/wizard/category-grid.test.js.map +1 -1
  84. package/dist/components/wizard/checkbox-grid.js +3 -3
  85. package/dist/components/wizard/checkbox-grid.test.js +3 -3
  86. package/dist/components/wizard/domain-selection.js +9 -9
  87. package/dist/components/wizard/help-modal.js +2 -2
  88. package/dist/components/wizard/menu-item.js +1 -1
  89. package/dist/components/wizard/search-modal.js +2 -2
  90. package/dist/components/wizard/search-modal.test.js +2 -2
  91. package/dist/components/wizard/section-progress.js +2 -2
  92. package/dist/components/wizard/section-progress.test.js +2 -2
  93. package/dist/components/wizard/selection-card.js +2 -2
  94. package/dist/components/wizard/source-grid.js +3 -3
  95. package/dist/components/wizard/source-grid.test.js +3 -3
  96. package/dist/components/wizard/stack-selection.js +8 -8
  97. package/dist/components/wizard/step-agents.js +8 -8
  98. package/dist/components/wizard/step-agents.test.js +9 -9
  99. package/dist/components/wizard/step-build.js +8 -8
  100. package/dist/components/wizard/step-build.test.js +74 -46
  101. package/dist/components/wizard/step-build.test.js.map +1 -1
  102. package/dist/components/wizard/step-confirm.js +4 -4
  103. package/dist/components/wizard/step-confirm.test.js +8 -8
  104. package/dist/components/wizard/step-refine.js +2 -2
  105. package/dist/components/wizard/step-refine.test.js +2 -2
  106. package/dist/components/wizard/step-settings.js +5 -5
  107. package/dist/components/wizard/step-settings.test.js +8 -8
  108. package/dist/components/wizard/step-sources.js +10 -10
  109. package/dist/components/wizard/step-sources.test.js +11 -11
  110. package/dist/components/wizard/step-stack.js +12 -12
  111. package/dist/components/wizard/step-stack.test.js +13 -13
  112. package/dist/components/wizard/view-title.js +2 -2
  113. package/dist/components/wizard/wizard-layout.js +8 -8
  114. package/dist/components/wizard/wizard-tabs.js +2 -2
  115. package/dist/components/wizard/wizard-tabs.test.js +2 -2
  116. package/dist/components/wizard/wizard.js +25 -25
  117. package/dist/config/skill-categories.yaml +344 -0
  118. package/dist/config/skill-rules.yaml +740 -0
  119. package/dist/hooks/init.js +3 -3
  120. package/dist/{source-manager-6QZ2GDUA.js → source-manager-Y7R6WPOW.js} +4 -4
  121. package/dist/src/agents/meta/documentor/examples.md +35 -36
  122. package/dist/src/agents/meta/documentor/workflow.md +91 -105
  123. package/dist/stores/wizard-store.js +5 -5
  124. package/dist/stores/wizard-store.test.js +48 -6
  125. package/dist/stores/wizard-store.test.js.map +1 -1
  126. package/package.json +5 -1
  127. package/src/agents/meta/documentor/examples.md +35 -36
  128. package/src/agents/meta/documentor/workflow.md +91 -105
  129. package/src/schemas/agent.schema.json +3 -0
  130. package/src/schemas/metadata.schema.json +5 -5
  131. package/src/schemas/project-source-config.schema.json +4 -1
  132. package/config/skills-matrix.yaml +0 -918
  133. package/dist/chunk-5QRJUBK7.js.map +0 -1
  134. package/dist/chunk-74HSA7C4.js.map +0 -1
  135. package/dist/chunk-CD64ZNYI.js.map +0 -1
  136. package/dist/chunk-CDGHSTB6.js.map +0 -1
  137. package/dist/chunk-HM3DHMW7.js.map +0 -1
  138. package/dist/chunk-RT6IBH37.js.map +0 -1
  139. package/dist/chunk-RWR56UVK.js.map +0 -1
  140. package/dist/chunk-XE6RTHUD.js.map +0 -1
  141. package/dist/chunk-YT7UHV67.js.map +0 -1
  142. package/dist/config/skills-matrix.yaml +0 -918
  143. package/src/schemas/skills-matrix.schema.json +0 -179
  144. /package/dist/{chunk-LFZXMQOH.js.map → chunk-2BVZOYJP.js.map} +0 -0
  145. /package/dist/{chunk-4C7PDDLY.js.map → chunk-2DNDAXF6.js.map} +0 -0
  146. /package/dist/{chunk-C7BO2ASM.js.map → chunk-34BP5BC4.js.map} +0 -0
  147. /package/dist/{chunk-TOWP4T5L.js.map → chunk-37QYD33C.js.map} +0 -0
  148. /package/dist/{chunk-72GS6PIH.js.map → chunk-5O6GKXAN.js.map} +0 -0
  149. /package/dist/{chunk-KWQ2BQXF.js.map → chunk-7IAKVZL5.js.map} +0 -0
  150. /package/dist/{chunk-CTQHZELA.js.map → chunk-AMNCCZSG.js.map} +0 -0
  151. /package/dist/{chunk-PZLUO4OY.js.map → chunk-AXV7NFFJ.js.map} +0 -0
  152. /package/dist/{chunk-ODQ2BKWU.js.map → chunk-AXZNJ5PN.js.map} +0 -0
  153. /package/dist/{chunk-J64CA4V6.js.map → chunk-C7DLY64D.js.map} +0 -0
  154. /package/dist/{chunk-G2WNOT3R.js.map → chunk-DG2U2WY3.js.map} +0 -0
  155. /package/dist/{chunk-3WKFSTG6.js.map → chunk-F7KTUFGU.js.map} +0 -0
  156. /package/dist/{chunk-5M6JI76P.js.map → chunk-FHKNG3UA.js.map} +0 -0
  157. /package/dist/{chunk-I26YP2Q3.js.map → chunk-FPTUCWBY.js.map} +0 -0
  158. /package/dist/{chunk-VH3PI43B.js.map → chunk-G5OZQ376.js.map} +0 -0
  159. /package/dist/{chunk-YVMYQSED.js.map → chunk-I52THVF6.js.map} +0 -0
  160. /package/dist/{chunk-FKBCYT7B.js.map → chunk-IS7GP6XC.js.map} +0 -0
  161. /package/dist/{chunk-NMXNHRAK.js.map → chunk-NJVJ7VO5.js.map} +0 -0
  162. /package/dist/{chunk-GVLYNP2I.js.map → chunk-OHDEJEYB.js.map} +0 -0
  163. /package/dist/{chunk-FUEZQ2H6.js.map → chunk-PY2XZUBF.js.map} +0 -0
  164. /package/dist/{chunk-DO5OZHSS.js.map → chunk-U2AEK4ZL.js.map} +0 -0
  165. /package/dist/{chunk-7LDSHHKN.js.map → chunk-W62XVWXB.js.map} +0 -0
  166. /package/dist/{chunk-D7JTL3DJ.js.map → chunk-WSGKCBY5.js.map} +0 -0
  167. /package/dist/{chunk-QBUOZVNZ.js.map → chunk-YDASDMTH.js.map} +0 -0
  168. /package/dist/{chunk-SGXUMZWL.js.map → chunk-ZML3OCYA.js.map} +0 -0
  169. /package/dist/{source-manager-6QZ2GDUA.js.map → source-manager-Y7R6WPOW.js.map} +0 -0
@@ -0,0 +1,740 @@
1
+ version: "1.0.0"
2
+
3
+ aliases:
4
+ # Frameworks
5
+ react: "web-framework-react"
6
+ vue: "web-framework-vue-composition-api"
7
+ angular: "web-framework-angular-standalone"
8
+ solidjs: "web-framework-solidjs"
9
+ nextjs-app-router: "web-framework-nextjs-app-router"
10
+ nextjs-server-actions: "web-framework-nextjs-server-actions"
11
+ remix: "web-framework-remix"
12
+ nuxt: "web-framework-nuxt"
13
+
14
+ # Styling
15
+ scss-modules: "web-styling-scss-modules"
16
+ cva: "web-styling-cva"
17
+ tailwind: "web-styling-tailwind"
18
+
19
+ # Client State
20
+ zustand: "web-state-zustand"
21
+ redux-toolkit: "web-state-redux-toolkit"
22
+ pinia: "web-state-pinia"
23
+ ngrx-signalstore: "web-state-ngrx-signalstore"
24
+ jotai: "web-state-jotai"
25
+ mobx: "web-state-mobx"
26
+
27
+ # Server State
28
+ react-query: "web-server-state-react-query"
29
+ swr: "web-data-fetching-swr"
30
+ graphql-apollo: "web-data-fetching-graphql-apollo"
31
+ graphql-urql: "web-data-fetching-graphql-urql"
32
+ trpc: "web-data-fetching-trpc"
33
+
34
+ # Forms
35
+ react-hook-form: "web-forms-react-hook-form"
36
+ vee-validate: "web-forms-vee-validate"
37
+ zod-validation: "web-forms-zod-validation"
38
+
39
+ # Testing
40
+ vitest: "web-testing-vitest"
41
+ playwright-e2e: "web-testing-playwright-e2e"
42
+ cypress-e2e: "web-testing-cypress-e2e"
43
+ react-testing-library: "web-testing-react-testing-library"
44
+ vue-test-utils: "web-testing-vue-test-utils"
45
+ msw: "web-mocks-msw"
46
+
47
+ # UI Components
48
+ shadcn-ui: "web-ui-shadcn-ui"
49
+ tanstack-table: "web-ui-tanstack-table"
50
+ radix-ui: "web-ui-radix-ui"
51
+
52
+ # Backend
53
+ hono: "api-framework-hono"
54
+ express: "api-framework-express"
55
+ fastify: "api-framework-fastify"
56
+ drizzle: "api-database-drizzle"
57
+ prisma: "api-database-prisma"
58
+ better-auth: "api-auth-better-auth-drizzle-hono"
59
+ axiom-pino-sentry: "api-observability-axiom-pino-sentry"
60
+ posthog: "api-analytics-posthog-analytics"
61
+ posthog-flags: "api-flags-posthog-flags"
62
+ resend: "api-email-resend-react-email"
63
+ github-actions: "api-ci-cd-github-actions"
64
+
65
+ # Mobile
66
+ react-native: "mobile-framework-react-native"
67
+ expo: "mobile-framework-expo"
68
+
69
+ # Infrastructure
70
+ turborepo: "infra-monorepo-turborepo"
71
+ tooling: "infra-tooling-setup-tooling"
72
+ posthog-setup: "api-analytics-setup-posthog"
73
+ env: "infra-env-setup-env"
74
+ observability-setup: "api-observability-setup-axiom-pino-sentry"
75
+ email-setup: "api-email-setup-resend"
76
+
77
+ # Animation, PWA, Realtime, etc.
78
+ framer-motion: "web-animation-framer-motion"
79
+ css-animations: "web-animation-css-animations"
80
+ view-transitions: "web-animation-view-transitions"
81
+ storybook: "web-tooling-storybook"
82
+ error-boundaries: "web-error-handling-error-boundaries"
83
+ result-types: "web-error-handling-result-types"
84
+ accessibility: "web-accessibility-web-accessibility"
85
+ websockets: "web-realtime-websockets"
86
+ sse: "web-realtime-sse"
87
+ socket-io: "web-realtime-socket-io"
88
+ service-workers: "web-pwa-service-workers"
89
+ offline-first: "web-pwa-offline-first"
90
+ file-upload: "web-files-file-upload-patterns"
91
+ image-handling: "web-files-image-handling"
92
+ date-fns: "web-utilities-date-fns"
93
+
94
+ # Backend-specific
95
+ api-testing: "api-testing-api-testing"
96
+ api-performance: "api-performance-api-performance"
97
+ web-performance: "web-performance-web-performance"
98
+ security: "security-auth-security"
99
+
100
+ # CLI
101
+ commander: "cli-framework-cli-commander"
102
+ cli-commander: "cli-framework-cli-commander"
103
+ oclif: "cli-framework-oclif-ink"
104
+
105
+ # Reviewing / Meta
106
+ reviewing: "meta-reviewing-reviewing"
107
+ cli-reviewing: "meta-reviewing-cli-reviewing"
108
+ research-methodology: "meta-research-research-methodology"
109
+
110
+ # Methodology
111
+ investigation-requirements: "meta-methodology-investigation-requirements"
112
+ anti-over-engineering: "meta-methodology-anti-over-engineering"
113
+ success-criteria: "meta-methodology-success-criteria"
114
+ write-verification: "meta-methodology-write-verification"
115
+ improvement-protocol: "meta-methodology-improvement-protocol"
116
+ context-management: "meta-methodology-context-management"
117
+
118
+ relationships:
119
+ conflicts:
120
+ - skills: [react, vue, angular, solidjs, nextjs-app-router, remix, nuxt]
121
+ reason: "Frameworks are mutually exclusive"
122
+
123
+ - skills: [pinia, zustand, redux-toolkit, mobx]
124
+ reason: "Pinia is Vue-only; zustand/redux-toolkit/mobx skills teach React patterns"
125
+
126
+ - skills: [ngrx-signalstore, zustand, pinia, redux-toolkit, mobx]
127
+ reason: "NgRx SignalStore is Angular-only"
128
+
129
+ - skills: [react-query, swr]
130
+ reason: "Both solve server state caching"
131
+
132
+ - skills: [graphql-apollo, graphql-urql]
133
+ reason: "Both are GraphQL clients"
134
+
135
+ - skills: [playwright-e2e, cypress-e2e]
136
+ reason: "Both are E2E frameworks"
137
+
138
+ - skills: [react-hook-form, vee-validate]
139
+ reason: "react-hook-form is React-only, vee-validate is Vue-only"
140
+
141
+ - skills: [react-testing-library, vue-test-utils]
142
+ reason: "Framework-specific testing libraries"
143
+
144
+ - skills: [hono, express, fastify]
145
+ reason: "API frameworks are mutually exclusive within a single service"
146
+
147
+ - skills: [drizzle, prisma]
148
+ reason: "Both are ORMs serving similar purposes"
149
+
150
+ - skills: [commander, oclif]
151
+ reason: "CLI frameworks are mutually exclusive"
152
+
153
+ discourages:
154
+ - skills: [zustand, redux-toolkit, mobx]
155
+ reason: "Using multiple React state libraries adds complexity"
156
+
157
+ - skills: [redux-toolkit, zustand]
158
+ reason: "Redux Toolkit adds more boilerplate than Zustand"
159
+
160
+ - skills: [swr, react-query]
161
+ reason: "SWR is simpler but React Query has more features"
162
+
163
+ - skills: [express, hono]
164
+ reason: "Express is mature but Hono offers better performance and edge support"
165
+
166
+ - skills: [express, fastify]
167
+ reason: "Express is mature but Fastify offers better performance"
168
+
169
+ - skills: [cypress-e2e, playwright-e2e]
170
+ reason: "Cypress excels at interactive debugging; Playwright has better cross-browser support and CI performance"
171
+
172
+ recommends:
173
+ - when: react
174
+ suggest: [zustand, react-query, vitest, react-hook-form, react-testing-library]
175
+ reason: "Best-in-class React libraries"
176
+
177
+ - when: nextjs-app-router
178
+ suggest: [react-query, zustand, shadcn-ui]
179
+ reason: "Next.js App Router ecosystem"
180
+
181
+ - when: remix
182
+ suggest: [zustand, vitest, zod-validation]
183
+ reason: "Remix-compatible libraries"
184
+
185
+ - when: vue
186
+ suggest: [pinia, vee-validate, vue-test-utils]
187
+ reason: "Vue community standard libraries"
188
+
189
+ - when: angular
190
+ suggest: [ngrx-signalstore]
191
+ reason: "Angular Signals-based state management"
192
+
193
+ - when: solidjs
194
+ suggest: [vitest, tailwind]
195
+ reason: "SolidJS-compatible libraries"
196
+
197
+ - when: hono
198
+ suggest: [drizzle, better-auth, zod-validation]
199
+ reason: "Hono + Drizzle + Better Auth is a powerful combo"
200
+
201
+ - when: drizzle
202
+ suggest: [zod-validation]
203
+ reason: "Drizzle types work great with Zod"
204
+
205
+ - when: scss-modules
206
+ suggest: [radix-ui]
207
+ reason: "Radix primitives work well with any CSS approach"
208
+
209
+ - when: tailwind
210
+ suggest: [shadcn-ui, cva]
211
+ reason: "shadcn/ui is built for Tailwind; CVA provides type-safe variant management"
212
+
213
+ - when: cva
214
+ suggest: [tailwind]
215
+ reason: "CVA is designed for Tailwind utility classes"
216
+
217
+ - when: shadcn-ui
218
+ suggest: [radix-ui, tailwind]
219
+ reason: "shadcn/ui uses Radix primitives and Tailwind"
220
+
221
+ - when: react-hook-form
222
+ suggest: [zod-validation]
223
+ reason: "react-hook-form + Zod is the standard pattern"
224
+
225
+ - when: vee-validate
226
+ suggest: [zod-validation]
227
+ reason: "vee-validate supports Zod schemas"
228
+
229
+ - when: vitest
230
+ suggest: [react-testing-library, msw]
231
+ reason: "Vitest + RTL + MSW is the modern testing stack"
232
+
233
+ - when: playwright-e2e
234
+ suggest: [vitest]
235
+ reason: "Playwright for E2E, Vitest for unit/integration"
236
+
237
+ - when: react-query
238
+ suggest: [zod-validation]
239
+ reason: "Type-safe API responses with Zod"
240
+
241
+ - when: react-native
242
+ suggest: [zustand, react-query, react-hook-form, zod-validation]
243
+ reason: "React Native shares React ecosystem"
244
+
245
+ - when: axiom-pino-sentry
246
+ suggest: [posthog]
247
+ reason: "Complete observability with analytics"
248
+
249
+ - when: fastify
250
+ suggest: [drizzle, zod-validation]
251
+ reason: "Fastify + Drizzle + Zod is a solid backend stack"
252
+
253
+ - when: express
254
+ suggest: [prisma]
255
+ reason: "Express + Prisma is a classic combination"
256
+
257
+ - when: nuxt
258
+ suggest: [pinia, tailwind, playwright-e2e]
259
+ reason: "Nuxt ecosystem libraries"
260
+
261
+ - when: msw
262
+ suggest: [vitest, react-testing-library]
263
+ reason: "MSW + Vitest + RTL is the modern testing stack"
264
+
265
+ - when: cypress-e2e
266
+ suggest: [vitest]
267
+ reason: "Cypress for E2E, Vitest for unit tests"
268
+
269
+ - when: oclif
270
+ suggest: [vitest]
271
+ reason: "oclif pairs well with Vitest for CLI testing"
272
+
273
+ - when: commander
274
+ suggest: [vitest]
275
+ reason: "Commander pairs well with Vitest for CLI testing"
276
+
277
+ requires:
278
+ - skill: zustand
279
+ needs: [react, nextjs-app-router, remix, react-native]
280
+ needsAny: true
281
+ reason: "Our Zustand skill covers React/React Native patterns"
282
+
283
+ - skill: redux-toolkit
284
+ needs: [react, nextjs-app-router, remix, react-native]
285
+ needsAny: true
286
+ reason: "Our Redux Toolkit skill covers React/React Native patterns"
287
+
288
+ - skill: mobx
289
+ needs: [react, nextjs-app-router, remix]
290
+ needsAny: true
291
+ reason: "Our MobX skill teaches React patterns"
292
+
293
+ - skill: react-query
294
+ needs: [react, nextjs-app-router, remix, react-native]
295
+ needsAny: true
296
+ reason: "TanStack Query's React adapter"
297
+
298
+ - skill: swr
299
+ needs: [react, nextjs-app-router, remix, react-native]
300
+ needsAny: true
301
+ reason: "SWR is a React Hooks library"
302
+
303
+ - skill: react-hook-form
304
+ needs: [react, nextjs-app-router, remix, react-native]
305
+ needsAny: true
306
+ reason: "React Hook Form is React only"
307
+
308
+ - skill: react-testing-library
309
+ needs: [react, nextjs-app-router, remix]
310
+ needsAny: true
311
+ reason: "React Testing Library is React only"
312
+
313
+ - skill: pinia
314
+ needs: [vue, nuxt]
315
+ needsAny: true
316
+ reason: "Pinia is Vue only"
317
+
318
+ - skill: vee-validate
319
+ needs: [vue, nuxt]
320
+ needsAny: true
321
+ reason: "VeeValidate is Vue only"
322
+
323
+ - skill: vue-test-utils
324
+ needs: [vue, nuxt]
325
+ needsAny: true
326
+ reason: "Vue Test Utils is Vue only"
327
+
328
+ - skill: ngrx-signalstore
329
+ needs: [angular]
330
+ reason: "NgRx SignalStore is Angular only"
331
+
332
+ - skill: better-auth
333
+ needs: [drizzle, prisma]
334
+ needsAny: true
335
+ reason: "Better Auth requires a database adapter"
336
+
337
+ - skill: shadcn-ui
338
+ needs: [react, nextjs-app-router, remix]
339
+ needsAny: true
340
+ reason: "shadcn/ui requires a React-based framework"
341
+
342
+ - skill: shadcn-ui
343
+ needs: [tailwind]
344
+ reason: "shadcn/ui requires Tailwind CSS"
345
+
346
+ - skill: graphql-apollo
347
+ needs: [react, vue, angular, nextjs-app-router, remix, nuxt]
348
+ needsAny: true
349
+ reason: "Apollo Client requires a UI framework"
350
+
351
+ - skill: graphql-urql
352
+ needs: [react, vue, solidjs, nextjs-app-router, remix, nuxt]
353
+ needsAny: true
354
+ reason: "URQL supports React, Vue, and Solid"
355
+
356
+ alternatives:
357
+ - purpose: "Frontend Framework"
358
+ skills: [react, vue, angular, solidjs, nextjs-app-router, remix, nuxt]
359
+
360
+ - purpose: "Styling"
361
+ skills: [scss-modules, tailwind, cva]
362
+
363
+ - purpose: "Client State (React)"
364
+ skills: [zustand, redux-toolkit, mobx, jotai]
365
+
366
+ - purpose: "Client State (Vue)"
367
+ skills: [pinia]
368
+
369
+ - purpose: "Client State (Angular)"
370
+ skills: [ngrx-signalstore]
371
+
372
+ - purpose: "Server State / Data Fetching"
373
+ skills: [react-query, swr]
374
+
375
+ - purpose: "GraphQL Client"
376
+ skills: [graphql-apollo, graphql-urql]
377
+
378
+ - purpose: "API Framework"
379
+ skills: [hono, express, fastify]
380
+
381
+ - purpose: "Database ORM"
382
+ skills: [drizzle, prisma]
383
+
384
+ - purpose: "Forms (React)"
385
+ skills: [react-hook-form]
386
+
387
+ - purpose: "Forms (Vue)"
388
+ skills: [vee-validate]
389
+
390
+ - purpose: "Validation"
391
+ skills: [zod-validation]
392
+
393
+ - purpose: "Unit Testing"
394
+ skills: [vitest]
395
+
396
+ - purpose: "Component Testing (React)"
397
+ skills: [react-testing-library]
398
+
399
+ - purpose: "Component Testing (Vue)"
400
+ skills: [vue-test-utils]
401
+
402
+ - purpose: "E2E Testing"
403
+ skills: [playwright-e2e, cypress-e2e]
404
+
405
+ - purpose: "API Mocking"
406
+ skills: [msw]
407
+
408
+ - purpose: "UI Components (React + Tailwind)"
409
+ skills: [shadcn-ui]
410
+
411
+ - purpose: "Mobile"
412
+ skills: [react-native]
413
+
414
+ - purpose: "CLI Framework"
415
+ skills: [commander, oclif]
416
+
417
+ per-skill:
418
+ posthog:
419
+ compatibleWith: [api-flags-posthog-flags]
420
+ requiresSetup: [api-analytics-setup-posthog]
421
+ posthog-setup:
422
+ compatibleWith: [api-analytics-posthog-analytics, api-flags-posthog-flags, infra-env-setup-env]
423
+ providesSetupFor: [api-analytics-posthog-analytics, api-flags-posthog-flags]
424
+ posthog-flags:
425
+ compatibleWith: [api-analytics-posthog-analytics]
426
+ requiresSetup: [api-analytics-setup-posthog]
427
+
428
+ better-auth:
429
+ compatibleWith:
430
+ [api-framework-hono, api-framework-express, api-framework-fastify, security-auth-security]
431
+ requires: [api-database-drizzle]
432
+
433
+ github-actions:
434
+ compatibleWith: [infra-monorepo-turborepo, infra-tooling-setup-tooling]
435
+
436
+ drizzle:
437
+ compatibleWith:
438
+ [
439
+ api-framework-hono,
440
+ api-framework-express,
441
+ api-framework-fastify,
442
+ api-auth-better-auth-drizzle-hono,
443
+ ]
444
+ prisma:
445
+ compatibleWith:
446
+ [
447
+ api-framework-hono,
448
+ api-framework-express,
449
+ api-framework-fastify,
450
+ api-auth-better-auth-drizzle-hono,
451
+ ]
452
+
453
+ resend:
454
+ requiresSetup: [api-email-setup-resend]
455
+ email-setup:
456
+ compatibleWith: [api-email-resend-react-email, infra-env-setup-env]
457
+ providesSetupFor: [api-email-resend-react-email]
458
+
459
+ express:
460
+ compatibleWith:
461
+ [
462
+ api-auth-better-auth-drizzle-hono,
463
+ api-database-drizzle,
464
+ api-database-prisma,
465
+ security-auth-security,
466
+ api-observability-axiom-pino-sentry,
467
+ ]
468
+ fastify:
469
+ compatibleWith:
470
+ [
471
+ api-auth-better-auth-drizzle-hono,
472
+ api-database-drizzle,
473
+ api-database-prisma,
474
+ api-observability-axiom-pino-sentry,
475
+ security-auth-security,
476
+ ]
477
+ hono:
478
+ compatibleWith:
479
+ [
480
+ api-auth-better-auth-drizzle-hono,
481
+ api-database-drizzle,
482
+ api-database-prisma,
483
+ security-auth-security,
484
+ ]
485
+
486
+ axiom-pino-sentry:
487
+ requiresSetup: [api-observability-setup-axiom-pino-sentry]
488
+ observability-setup:
489
+ compatibleWith: [api-observability-axiom-pino-sentry, infra-env-setup-env]
490
+ providesSetupFor: [api-observability-axiom-pino-sentry]
491
+
492
+ api-performance:
493
+ compatibleWith:
494
+ [
495
+ api-database-drizzle,
496
+ api-database-prisma,
497
+ api-framework-hono,
498
+ api-framework-express,
499
+ api-framework-fastify,
500
+ ]
501
+
502
+ commander:
503
+ compatibleWith: [infra-tooling-setup-tooling, web-testing-vitest]
504
+ oclif:
505
+ compatibleWith: [web-framework-react, web-state-zustand, web-testing-vitest]
506
+ conflictsWith: [cli-framework-cli-commander]
507
+
508
+ env:
509
+ compatibleWith: [security-auth-security, infra-monorepo-turborepo]
510
+ turborepo:
511
+ compatibleWith: [infra-tooling-setup-tooling, api-ci-cd-github-actions]
512
+ tooling:
513
+ compatibleWith: [infra-monorepo-turborepo]
514
+
515
+ cli-reviewing:
516
+ compatibleWith: [meta-reviewing-reviewing, web-testing-vitest]
517
+ requires: [cli-framework-cli-commander]
518
+
519
+ react-native:
520
+ compatibleWith:
521
+ [
522
+ web-state-zustand,
523
+ web-server-state-react-query,
524
+ web-forms-react-hook-form,
525
+ web-forms-zod-validation,
526
+ ]
527
+
528
+ security:
529
+ compatibleWith:
530
+ [
531
+ api-auth-better-auth-drizzle-hono,
532
+ api-framework-hono,
533
+ api-framework-express,
534
+ api-framework-fastify,
535
+ infra-env-setup-env,
536
+ ]
537
+
538
+ accessibility:
539
+ compatibleWith:
540
+ [
541
+ web-framework-react,
542
+ web-framework-vue-composition-api,
543
+ web-framework-angular-standalone,
544
+ web-framework-solidjs,
545
+ ]
546
+
547
+ css-animations:
548
+ compatibleWith:
549
+ [
550
+ web-styling-scss-modules,
551
+ web-styling-tailwind,
552
+ web-accessibility-web-accessibility,
553
+ web-performance-web-performance,
554
+ ]
555
+ framer-motion:
556
+ compatibleWith:
557
+ [web-styling-scss-modules, web-styling-tailwind, web-accessibility-web-accessibility]
558
+ requires: [web-framework-react]
559
+
560
+ graphql-apollo:
561
+ compatibleWith:
562
+ [web-framework-react, web-state-zustand, web-state-jotai, web-state-redux-toolkit]
563
+ graphql-urql:
564
+ compatibleWith:
565
+ [web-framework-react, web-state-zustand, web-state-jotai, web-state-redux-toolkit]
566
+ swr:
567
+ compatibleWith:
568
+ [web-framework-react, web-framework-nextjs-app-router, web-framework-nextjs-server-actions]
569
+ trpc:
570
+ compatibleWith:
571
+ [web-framework-react, web-state-zustand, web-state-jotai, web-state-redux-toolkit]
572
+
573
+ error-boundaries:
574
+ compatibleWith: [web-framework-react]
575
+ result-types:
576
+ compatibleWith:
577
+ [web-framework-react, api-framework-hono, api-framework-express, api-framework-fastify]
578
+
579
+ file-upload:
580
+ compatibleWith:
581
+ [web-framework-react, web-forms-react-hook-form, web-forms-vee-validate, api-framework-hono]
582
+ image-handling:
583
+ compatibleWith: [web-framework-react, web-forms-react-hook-form, web-forms-vee-validate]
584
+
585
+ nextjs-app-router:
586
+ compatibleWith:
587
+ [
588
+ web-styling-scss-modules,
589
+ web-styling-tailwind,
590
+ web-server-state-react-query,
591
+ web-state-zustand,
592
+ ]
593
+ nextjs-server-actions:
594
+ compatibleWith:
595
+ [
596
+ web-forms-react-hook-form,
597
+ web-forms-zod-validation,
598
+ api-database-drizzle,
599
+ api-database-prisma,
600
+ api-auth-better-auth-drizzle-hono,
601
+ ]
602
+ requires: [web-framework-nextjs-app-router]
603
+ nuxt:
604
+ compatibleWith: [web-forms-zod-validation, web-testing-playwright-e2e]
605
+ remix:
606
+ compatibleWith:
607
+ [
608
+ web-styling-scss-modules,
609
+ web-styling-tailwind,
610
+ web-testing-vitest,
611
+ web-testing-playwright-e2e,
612
+ web-testing-cypress-e2e,
613
+ ]
614
+ solidjs:
615
+ compatibleWith:
616
+ [
617
+ web-styling-scss-modules,
618
+ web-styling-tailwind,
619
+ web-testing-vitest,
620
+ web-testing-playwright-e2e,
621
+ web-testing-cypress-e2e,
622
+ ]
623
+ vue:
624
+ compatibleWith:
625
+ [
626
+ web-styling-scss-modules,
627
+ web-styling-tailwind,
628
+ web-testing-vitest,
629
+ web-testing-playwright-e2e,
630
+ web-testing-cypress-e2e,
631
+ ]
632
+
633
+ msw:
634
+ compatibleWith:
635
+ [
636
+ web-testing-vitest,
637
+ web-testing-playwright-e2e,
638
+ web-testing-cypress-e2e,
639
+ web-server-state-react-query,
640
+ web-data-fetching-swr,
641
+ ]
642
+
643
+ web-performance:
644
+ compatibleWith:
645
+ [
646
+ web-framework-react,
647
+ web-framework-vue-composition-api,
648
+ web-framework-angular-standalone,
649
+ web-framework-solidjs,
650
+ ]
651
+
652
+ offline-first:
653
+ compatibleWith:
654
+ [web-framework-react, web-state-zustand, web-state-jotai, web-state-redux-toolkit]
655
+
656
+ socket-io:
657
+ compatibleWith:
658
+ [web-framework-react, web-state-zustand, web-state-jotai, web-state-redux-toolkit]
659
+ websockets:
660
+ compatibleWith:
661
+ [web-framework-react, web-state-zustand, web-state-jotai, web-state-redux-toolkit]
662
+
663
+ react-query:
664
+ compatibleWith:
665
+ [web-framework-react, web-state-zustand, web-state-jotai, web-state-redux-toolkit]
666
+
667
+ jotai:
668
+ compatibleWith: [web-framework-react, web-server-state-react-query, web-data-fetching-swr]
669
+ mobx:
670
+ compatibleWith: [web-framework-react]
671
+ conflictsWith: [web-state-zustand, web-state-redux-toolkit]
672
+ ngrx-signalstore:
673
+ compatibleWith:
674
+ [web-framework-angular-standalone, web-server-state-react-query, web-data-fetching-swr]
675
+ pinia:
676
+ compatibleWith:
677
+ [web-framework-vue-composition-api, web-server-state-react-query, web-data-fetching-swr]
678
+ redux-toolkit:
679
+ compatibleWith: [web-framework-react, web-server-state-react-query, web-data-fetching-swr]
680
+ zustand:
681
+ compatibleWith: [web-framework-react, web-server-state-react-query, web-data-fetching-swr]
682
+
683
+ cva:
684
+ compatibleWith: [web-styling-scss-modules, web-styling-tailwind]
685
+ scss-modules:
686
+ compatibleWith:
687
+ [
688
+ web-framework-react,
689
+ web-framework-vue-composition-api,
690
+ web-framework-angular-standalone,
691
+ web-framework-solidjs,
692
+ ]
693
+ tailwind:
694
+ compatibleWith: [web-framework-react, web-styling-cva]
695
+ conflictsWith: [web-styling-scss-modules]
696
+
697
+ cypress-e2e:
698
+ compatibleWith:
699
+ [
700
+ web-framework-react,
701
+ web-framework-vue-composition-api,
702
+ web-framework-angular-standalone,
703
+ web-framework-solidjs,
704
+ ]
705
+ playwright-e2e:
706
+ compatibleWith:
707
+ [
708
+ web-framework-react,
709
+ web-framework-vue-composition-api,
710
+ web-framework-angular-standalone,
711
+ web-framework-solidjs,
712
+ ]
713
+ react-testing-library:
714
+ compatibleWith: [web-framework-react, web-testing-vitest]
715
+ vitest:
716
+ compatibleWith:
717
+ [
718
+ web-framework-react,
719
+ web-framework-vue-composition-api,
720
+ web-framework-angular-standalone,
721
+ web-framework-solidjs,
722
+ web-mocks-msw,
723
+ ]
724
+ vue-test-utils:
725
+ compatibleWith: [web-framework-vue-composition-api, web-state-pinia]
726
+
727
+ storybook:
728
+ compatibleWith:
729
+ [
730
+ web-framework-react,
731
+ web-framework-vue-composition-api,
732
+ web-framework-angular-standalone,
733
+ web-testing-vitest,
734
+ web-testing-playwright-e2e,
735
+ ]
736
+
737
+ shadcn-ui:
738
+ compatibleWith: [web-framework-react, web-styling-tailwind]
739
+ tanstack-table:
740
+ compatibleWith: [web-framework-react, web-framework-vue-composition-api, web-framework-solidjs]