@agents-inc/cli 0.38.0 → 0.41.1

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 (182) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/config/skills-matrix.yaml +115 -123
  3. package/config/stacks.yaml +687 -687
  4. package/dist/{chunk-YHQNTBBN.js → chunk-2D6LKRHW.js} +2 -2
  5. package/dist/{chunk-CYFU3ARY.js → chunk-342YB6TQ.js} +15 -17
  6. package/dist/chunk-342YB6TQ.js.map +1 -0
  7. package/dist/{chunk-HRMQ2RGY.js → chunk-423MJ6DT.js} +31 -56
  8. package/dist/chunk-423MJ6DT.js.map +1 -0
  9. package/dist/{chunk-NFV4SKH5.js → chunk-4LT6RXMY.js} +4 -4
  10. package/dist/{chunk-IVIK776Y.js → chunk-4SYXPG7L.js} +2 -2
  11. package/dist/{chunk-DUQFF45G.js → chunk-4UTPJXUX.js} +8 -8
  12. package/dist/{chunk-3E2V5YL3.js → chunk-5TMB53BV.js} +3 -3
  13. package/dist/{chunk-NI2RSNWB.js → chunk-7FBM7V3E.js} +10 -22
  14. package/dist/chunk-7FBM7V3E.js.map +1 -0
  15. package/dist/chunk-ACVJVYMC.js +111 -0
  16. package/dist/chunk-ACVJVYMC.js.map +1 -0
  17. package/dist/{chunk-FWQK3HWB.js → chunk-AH7XHAKN.js} +11 -11
  18. package/dist/chunk-AH7XHAKN.js.map +1 -0
  19. package/dist/{chunk-VAHVSQIG.js → chunk-AVVYFEMF.js} +2 -2
  20. package/dist/{chunk-EISBUEBL.js → chunk-BFISETQG.js} +3 -3
  21. package/dist/{chunk-ZBJQXDQN.js → chunk-BK7TANUV.js} +4 -2
  22. package/dist/chunk-BK7TANUV.js.map +1 -0
  23. package/dist/{chunk-VAK5PX72.js → chunk-DV4ALU5I.js} +6 -6
  24. package/dist/{chunk-OEX5JDQD.js → chunk-FHBICUXB.js} +4 -4
  25. package/dist/{chunk-TA6IIQI4.js → chunk-GEDWVX6Y.js} +3 -3
  26. package/dist/chunk-GEDWVX6Y.js.map +1 -0
  27. package/dist/{chunk-M6PGIZNS.js → chunk-H6H3COI5.js} +5 -5
  28. package/dist/{chunk-54ZZCWN4.js → chunk-KC2SIUIA.js} +3 -8
  29. package/dist/chunk-KC2SIUIA.js.map +1 -0
  30. package/dist/{chunk-2XX4TMCI.js → chunk-KXM7KOPE.js} +2 -2
  31. package/dist/{chunk-HKDE4LJW.js → chunk-LJRP4SWY.js} +6 -5
  32. package/dist/chunk-LJRP4SWY.js.map +1 -0
  33. package/dist/{chunk-TBDIR6LY.js → chunk-MNPPGIZQ.js} +5 -5
  34. package/dist/{chunk-3NQJOJZL.js → chunk-NYP5SB2V.js} +2 -2
  35. package/dist/{chunk-UOMMQ5M6.js → chunk-NZYKDVRL.js} +2 -2
  36. package/dist/{chunk-UV6JUGIY.js → chunk-PURJZ72D.js} +2 -2
  37. package/dist/{chunk-ATLRUR3B.js → chunk-R52N7DBG.js} +2 -2
  38. package/dist/{chunk-WSGGJKD5.js → chunk-SILUTTV7.js} +6 -6
  39. package/dist/chunk-SILUTTV7.js.map +1 -0
  40. package/dist/{chunk-IZRVFC2Z.js → chunk-TJAZ7QCF.js} +4 -4
  41. package/dist/{chunk-U5OB5ADP.js → chunk-TTXV55NQ.js} +57 -16
  42. package/dist/chunk-TTXV55NQ.js.map +1 -0
  43. package/dist/{chunk-TY5GELDB.js → chunk-UKTYDNWJ.js} +2 -2
  44. package/dist/{chunk-HRW7BIDE.js → chunk-WS6OQIEN.js} +2 -2
  45. package/dist/{chunk-YJIJTBSX.js → chunk-XJXJZ2MJ.js} +42 -54
  46. package/dist/chunk-XJXJZ2MJ.js.map +1 -0
  47. package/dist/chunk-YLJYAQSG.js +210 -0
  48. package/dist/chunk-YLJYAQSG.js.map +1 -0
  49. package/dist/{chunk-MZB3GGOH.js → chunk-YRVTXSXP.js} +1 -2
  50. package/dist/chunk-YRVTXSXP.js.map +1 -0
  51. package/dist/{chunk-TNFACSWF.js → chunk-ZLHGJSRK.js} +3 -3
  52. package/dist/cli/defaults/agent-mappings.yaml +14 -70
  53. package/dist/commands/build/marketplace.js +3 -3
  54. package/dist/commands/build/plugins.js +5 -5
  55. package/dist/commands/build/stack.js +5 -5
  56. package/dist/commands/compile.js +8 -7
  57. package/dist/commands/compile.js.map +1 -1
  58. package/dist/commands/config/get.js +4 -4
  59. package/dist/commands/config/index.js +5 -5
  60. package/dist/commands/config/path.js +4 -4
  61. package/dist/commands/config/set-project.js +4 -4
  62. package/dist/commands/config/show.js +5 -5
  63. package/dist/commands/config/unset-project.js +4 -4
  64. package/dist/commands/diff.js +8 -5
  65. package/dist/commands/diff.js.map +1 -1
  66. package/dist/commands/doctor.js +8 -7
  67. package/dist/commands/doctor.js.map +1 -1
  68. package/dist/commands/edit.js +33 -30
  69. package/dist/commands/edit.js.map +1 -1
  70. package/dist/commands/eject.js +4 -4
  71. package/dist/commands/import/skill.js +5 -5
  72. package/dist/commands/info.js +7 -6
  73. package/dist/commands/info.js.map +1 -1
  74. package/dist/commands/init.js +40 -32
  75. package/dist/commands/init.js.map +1 -1
  76. package/dist/commands/list.js +6 -5
  77. package/dist/commands/list.js.map +1 -1
  78. package/dist/commands/new/agent.js +5 -5
  79. package/dist/commands/new/skill.js +8 -5
  80. package/dist/commands/new/skill.js.map +1 -1
  81. package/dist/commands/outdated.js +8 -5
  82. package/dist/commands/outdated.js.map +1 -1
  83. package/dist/commands/search.js +7 -7
  84. package/dist/commands/uninstall.js +19 -7
  85. package/dist/commands/uninstall.js.map +1 -1
  86. package/dist/commands/update.js +8 -7
  87. package/dist/commands/update.js.map +1 -1
  88. package/dist/commands/validate.js +5 -5
  89. package/dist/commands/version/bump.js +4 -4
  90. package/dist/commands/version/index.js +4 -4
  91. package/dist/commands/version/set.js +4 -4
  92. package/dist/commands/version/show.js +4 -4
  93. package/dist/components/skill-search/skill-search.js +3 -3
  94. package/dist/components/wizard/category-grid.js +2 -2
  95. package/dist/components/wizard/category-grid.test.js +40 -40
  96. package/dist/components/wizard/category-grid.test.js.map +1 -1
  97. package/dist/components/wizard/checkbox-grid.js +2 -2
  98. package/dist/components/wizard/checkbox-grid.test.js +16 -6
  99. package/dist/components/wizard/checkbox-grid.test.js.map +1 -1
  100. package/dist/components/wizard/domain-selection.js +7 -7
  101. package/dist/components/wizard/help-modal.js +2 -2
  102. package/dist/components/wizard/menu-item.js +2 -2
  103. package/dist/components/wizard/search-modal.js +2 -2
  104. package/dist/components/wizard/search-modal.test.js +2 -2
  105. package/dist/components/wizard/section-progress.js +2 -2
  106. package/dist/components/wizard/section-progress.test.js +2 -2
  107. package/dist/components/wizard/source-grid.js +3 -3
  108. package/dist/components/wizard/source-grid.test.js +3 -3
  109. package/dist/components/wizard/stack-selection.js +9 -9
  110. package/dist/components/wizard/step-agents.js +7 -7
  111. package/dist/components/wizard/step-agents.test.js +24 -19
  112. package/dist/components/wizard/step-agents.test.js.map +1 -1
  113. package/dist/components/wizard/step-build.js +8 -8
  114. package/dist/components/wizard/step-build.test.js +40 -39
  115. package/dist/components/wizard/step-build.test.js.map +1 -1
  116. package/dist/components/wizard/step-confirm.js +3 -3
  117. package/dist/components/wizard/step-confirm.test.js +19 -13
  118. package/dist/components/wizard/step-confirm.test.js.map +1 -1
  119. package/dist/components/wizard/step-refine.js +2 -2
  120. package/dist/components/wizard/step-refine.test.js +2 -2
  121. package/dist/components/wizard/step-settings.js +5 -5
  122. package/dist/components/wizard/step-settings.test.js +8 -8
  123. package/dist/components/wizard/step-sources.js +9 -9
  124. package/dist/components/wizard/step-sources.test.js +13 -13
  125. package/dist/components/wizard/step-sources.test.js.map +1 -1
  126. package/dist/components/wizard/step-stack.js +12 -12
  127. package/dist/components/wizard/step-stack.test.js +19 -21
  128. package/dist/components/wizard/step-stack.test.js.map +1 -1
  129. package/dist/components/wizard/view-title.js +2 -2
  130. package/dist/components/wizard/wizard-layout.js +8 -8
  131. package/dist/components/wizard/wizard-tabs.js +2 -2
  132. package/dist/components/wizard/wizard-tabs.test.js +2 -2
  133. package/dist/components/wizard/wizard.js +25 -25
  134. package/dist/config/skills-matrix.yaml +115 -123
  135. package/dist/config/stacks.yaml +687 -687
  136. package/dist/hooks/init.js +3 -3
  137. package/dist/{source-manager-FEGVYDFZ.js → source-manager-PPABS6BC.js} +4 -4
  138. package/dist/stores/wizard-store.js +5 -5
  139. package/dist/stores/wizard-store.test.js +115 -187
  140. package/dist/stores/wizard-store.test.js.map +1 -1
  141. package/package.json +1 -1
  142. package/src/schemas/metadata.schema.json +41 -1
  143. package/src/schemas/project-config.schema.json +34 -35
  144. package/src/schemas/skills-matrix.schema.json +100 -101
  145. package/src/schemas/stacks.schema.json +34 -35
  146. package/dist/chunk-54ZZCWN4.js.map +0 -1
  147. package/dist/chunk-CYFU3ARY.js.map +0 -1
  148. package/dist/chunk-EXFVAEPY.js +0 -80
  149. package/dist/chunk-EXFVAEPY.js.map +0 -1
  150. package/dist/chunk-FWQK3HWB.js.map +0 -1
  151. package/dist/chunk-HKDE4LJW.js.map +0 -1
  152. package/dist/chunk-HRMQ2RGY.js.map +0 -1
  153. package/dist/chunk-IWNPFIGY.js +0 -110
  154. package/dist/chunk-IWNPFIGY.js.map +0 -1
  155. package/dist/chunk-MZB3GGOH.js.map +0 -1
  156. package/dist/chunk-NI2RSNWB.js.map +0 -1
  157. package/dist/chunk-TA6IIQI4.js.map +0 -1
  158. package/dist/chunk-U5OB5ADP.js.map +0 -1
  159. package/dist/chunk-WSGGJKD5.js.map +0 -1
  160. package/dist/chunk-YJIJTBSX.js.map +0 -1
  161. package/dist/chunk-ZBJQXDQN.js.map +0 -1
  162. /package/dist/{chunk-YHQNTBBN.js.map → chunk-2D6LKRHW.js.map} +0 -0
  163. /package/dist/{chunk-NFV4SKH5.js.map → chunk-4LT6RXMY.js.map} +0 -0
  164. /package/dist/{chunk-IVIK776Y.js.map → chunk-4SYXPG7L.js.map} +0 -0
  165. /package/dist/{chunk-DUQFF45G.js.map → chunk-4UTPJXUX.js.map} +0 -0
  166. /package/dist/{chunk-3E2V5YL3.js.map → chunk-5TMB53BV.js.map} +0 -0
  167. /package/dist/{chunk-VAHVSQIG.js.map → chunk-AVVYFEMF.js.map} +0 -0
  168. /package/dist/{chunk-EISBUEBL.js.map → chunk-BFISETQG.js.map} +0 -0
  169. /package/dist/{chunk-VAK5PX72.js.map → chunk-DV4ALU5I.js.map} +0 -0
  170. /package/dist/{chunk-OEX5JDQD.js.map → chunk-FHBICUXB.js.map} +0 -0
  171. /package/dist/{chunk-M6PGIZNS.js.map → chunk-H6H3COI5.js.map} +0 -0
  172. /package/dist/{chunk-2XX4TMCI.js.map → chunk-KXM7KOPE.js.map} +0 -0
  173. /package/dist/{chunk-TBDIR6LY.js.map → chunk-MNPPGIZQ.js.map} +0 -0
  174. /package/dist/{chunk-3NQJOJZL.js.map → chunk-NYP5SB2V.js.map} +0 -0
  175. /package/dist/{chunk-UOMMQ5M6.js.map → chunk-NZYKDVRL.js.map} +0 -0
  176. /package/dist/{chunk-UV6JUGIY.js.map → chunk-PURJZ72D.js.map} +0 -0
  177. /package/dist/{chunk-ATLRUR3B.js.map → chunk-R52N7DBG.js.map} +0 -0
  178. /package/dist/{chunk-IZRVFC2Z.js.map → chunk-TJAZ7QCF.js.map} +0 -0
  179. /package/dist/{chunk-TY5GELDB.js.map → chunk-UKTYDNWJ.js.map} +0 -0
  180. /package/dist/{chunk-HRW7BIDE.js.map → chunk-WS6OQIEN.js.map} +0 -0
  181. /package/dist/{chunk-TNFACSWF.js.map → chunk-ZLHGJSRK.js.map} +0 -0
  182. /package/dist/{source-manager-FEGVYDFZ.js.map → source-manager-PPABS6BC.js.map} +0 -0
@@ -17,26 +17,17 @@ categories:
17
17
  # ─────────────────────────────────────────────────────────────────
18
18
  # Web categories
19
19
  # ─────────────────────────────────────────────────────────────────
20
- framework:
21
- id: framework
20
+ web-framework:
21
+ id: web-framework
22
22
  displayName: Framework
23
- description: Core UI framework (React, Vue, Angular, SolidJS)
23
+ description: UI framework (React, Vue, Angular, SolidJS, Next.js, Remix, Nuxt)
24
24
  domain: web
25
25
  exclusive: true
26
26
  required: true
27
27
  order: 1
28
28
 
29
- meta-framework:
30
- id: meta-framework
31
- displayName: Meta-Framework
32
- description: Full-stack framework (Next.js, Remix, Nuxt)
33
- domain: web
34
- exclusive: true
35
- required: false
36
- order: 2
37
-
38
- styling:
39
- id: styling
29
+ web-styling:
30
+ id: web-styling
40
31
  displayName: Styling
41
32
  description: CSS approach (SCSS Modules, Tailwind, CVA)
42
33
  domain: web
@@ -44,8 +35,8 @@ categories:
44
35
  required: true
45
36
  order: 3
46
37
 
47
- client-state:
48
- id: client-state
38
+ web-client-state:
39
+ id: web-client-state
49
40
  displayName: Client State Management
50
41
  description: UI state, forms, local data (Zustand, Redux, MobX)
51
42
  domain: web
@@ -53,8 +44,8 @@ categories:
53
44
  required: false
54
45
  order: 4
55
46
 
56
- server-state:
57
- id: server-state
47
+ web-server-state:
48
+ id: web-server-state
58
49
  displayName: Server State / Data Fetching
59
50
  description: API data caching (React Query, SWR)
60
51
  domain: web
@@ -62,8 +53,8 @@ categories:
62
53
  required: false
63
54
  order: 5
64
55
 
65
- forms:
66
- id: forms
56
+ web-forms:
57
+ id: web-forms
67
58
  displayName: Forms & Validation
68
59
  description: Form handling and schema validation
69
60
  domain: web
@@ -71,8 +62,8 @@ categories:
71
62
  required: false
72
63
  order: 6
73
64
 
74
- testing:
75
- id: testing
65
+ web-testing:
66
+ id: web-testing
76
67
  displayName: Testing
77
68
  description: Unit, integration, and E2E testing
78
69
  domain: web
@@ -80,8 +71,8 @@ categories:
80
71
  required: false
81
72
  order: 7
82
73
 
83
- ui-components:
84
- id: ui-components
74
+ web-ui-components:
75
+ id: web-ui-components
85
76
  displayName: UI Component Library
86
77
  description: Pre-built component systems (Radix, shadcn)
87
78
  domain: web
@@ -89,8 +80,8 @@ categories:
89
80
  required: false
90
81
  order: 8
91
82
 
92
- mocking:
93
- id: mocking
83
+ web-mocking:
84
+ id: web-mocking
94
85
  displayName: API Mocking
95
86
  description: Mock Service Worker for development and testing
96
87
  domain: web
@@ -98,18 +89,17 @@ categories:
98
89
  required: false
99
90
  order: 10
100
91
 
101
- error-handling:
102
- id: error-handling
92
+ web-error-handling:
93
+ id: web-error-handling
103
94
  displayName: Error Handling
104
95
  description: Error boundaries, result types, and error patterns
105
- domain: web-extras
106
- parentDomain: web
96
+ domain: web
107
97
  exclusive: false
108
98
  required: false
109
99
  order: 11
110
100
 
111
- i18n:
112
- id: i18n
101
+ web-i18n:
102
+ id: web-i18n
113
103
  displayName: Internationalization
114
104
  description: i18n libraries (next-intl, react-intl, vue-i18n)
115
105
  domain: web
@@ -117,72 +107,65 @@ categories:
117
107
  required: false
118
108
  order: 12
119
109
 
120
- file-upload:
121
- id: file-upload
110
+ web-file-upload:
111
+ id: web-file-upload
122
112
  displayName: File Upload
123
113
  description: File upload patterns and handling
124
- domain: web-extras
125
- parentDomain: web
114
+ domain: web
126
115
  exclusive: false
127
116
  required: false
128
117
  order: 13
129
118
 
130
- files:
131
- id: files
119
+ web-files:
120
+ id: web-files
132
121
  displayName: Files & Images
133
122
  description: Image handling and file processing
134
- domain: web-extras
135
- parentDomain: web
123
+ domain: web
136
124
  exclusive: false
137
125
  required: false
138
126
  order: 14
139
127
 
140
- utilities:
141
- id: utilities
128
+ web-utilities:
129
+ id: web-utilities
142
130
  displayName: Utilities
143
131
  description: Utility libraries (date-fns, native JS patterns)
144
- domain: web-extras
145
- parentDomain: web
132
+ domain: web
146
133
  exclusive: false
147
134
  required: false
148
135
  order: 15
149
136
 
150
- realtime:
151
- id: realtime
137
+ web-realtime:
138
+ id: web-realtime
152
139
  displayName: Realtime
153
140
  description: WebSockets, SSE, and real-time communication
154
- domain: web-extras
155
- parentDomain: web
141
+ domain: web
156
142
  exclusive: true
157
143
  required: false
158
144
  order: 16
159
145
 
160
- animation:
161
- id: animation
146
+ web-animation:
147
+ id: web-animation
162
148
  displayName: Animation
163
149
  description: Animation libraries and CSS animations
164
- domain: web-extras
165
- parentDomain: web
150
+ domain: web
166
151
  exclusive: false
167
152
  required: false
168
153
  order: 17
169
154
 
170
- pwa:
171
- id: pwa
155
+ web-pwa:
156
+ id: web-pwa
172
157
  displayName: Progressive Web App
173
158
  description: Service workers, offline-first patterns, and PWA features
174
- domain: web-extras
175
- parentDomain: web
159
+ domain: web
176
160
  exclusive: false
177
161
  required: false
178
162
  order: 18
179
163
 
180
- accessibility:
181
- id: accessibility
164
+ web-accessibility:
165
+ id: web-accessibility
182
166
  displayName: Accessibility
183
167
  description: WCAG compliance, ARIA, and keyboard navigation
184
- domain: web-extras
185
- parentDomain: web
168
+ domain: web
186
169
  exclusive: false
187
170
  required: false
188
171
  order: 19
@@ -195,12 +178,20 @@ categories:
195
178
  exclusive: false
196
179
  required: false
197
180
  order: 20
181
+ web-base-framework:
182
+ id: web-base-framework
183
+ displayName: Base Framework
184
+ description: Base framework setup and configuration
185
+ domain: web
186
+ exclusive: false
187
+ required: false
188
+ order: 21
198
189
 
199
190
  # ─────────────────────────────────────────────────────────────────
200
191
  # API categories
201
192
  # ─────────────────────────────────────────────────────────────────
202
- api:
203
- id: api
193
+ api-api:
194
+ id: api-api
204
195
  displayName: API Framework
205
196
  description: Backend framework (Hono, Express, Fastify)
206
197
  domain: api
@@ -208,8 +199,8 @@ categories:
208
199
  required: true
209
200
  order: 1
210
201
 
211
- database:
212
- id: database
202
+ api-database:
203
+ id: api-database
213
204
  displayName: Database ORM
214
205
  description: Database access layer (Drizzle, Prisma)
215
206
  domain: api
@@ -217,8 +208,8 @@ categories:
217
208
  required: false
218
209
  order: 2
219
210
 
220
- auth:
221
- id: auth
211
+ api-auth:
212
+ id: api-auth
222
213
  displayName: Authentication
223
214
  description: Auth solution (Better Auth, Auth.js)
224
215
  domain: api
@@ -226,8 +217,8 @@ categories:
226
217
  required: false
227
218
  order: 3
228
219
 
229
- observability:
230
- id: observability
220
+ api-observability:
221
+ id: api-observability
231
222
  displayName: Observability
232
223
  description: Logging, monitoring, error tracking
233
224
  domain: api
@@ -235,8 +226,8 @@ categories:
235
226
  required: false
236
227
  order: 4
237
228
 
238
- analytics:
239
- id: analytics
229
+ api-analytics:
230
+ id: api-analytics
240
231
  displayName: Analytics
241
232
  description: Product analytics and tracking
242
233
  domain: api
@@ -244,8 +235,8 @@ categories:
244
235
  required: false
245
236
  order: 5
246
237
 
247
- email:
248
- id: email
238
+ api-email:
239
+ id: api-email
249
240
  displayName: Email
250
241
  description: Transactional email (Resend, Sendgrid)
251
242
  domain: api
@@ -253,8 +244,8 @@ categories:
253
244
  required: false
254
245
  order: 6
255
246
 
256
- performance:
257
- id: performance
247
+ api-performance:
248
+ id: api-performance
258
249
  displayName: Performance
259
250
  description: API performance patterns and optimization
260
251
  domain: api
@@ -273,12 +264,20 @@ categories:
273
264
  exclusive: true
274
265
  required: true
275
266
  order: 1
267
+ mobile-platform:
268
+ id: mobile-platform
269
+ displayName: Mobile Platform
270
+ description: Mobile platform tooling and configuration
271
+ domain: mobile
272
+ exclusive: false
273
+ required: false
274
+ order: 2
276
275
 
277
276
  # ─────────────────────────────────────────────────────────────────
278
277
  # Shared / Infrastructure categories
279
278
  # ─────────────────────────────────────────────────────────────────
280
- monorepo:
281
- id: monorepo
279
+ shared-monorepo:
280
+ id: shared-monorepo
282
281
  displayName: Monorepo
283
282
  description: Monorepo tooling (Turborepo, Nx)
284
283
  domain: shared
@@ -286,8 +285,8 @@ categories:
286
285
  required: false
287
286
  order: 1
288
287
 
289
- tooling:
290
- id: tooling
288
+ shared-tooling:
289
+ id: shared-tooling
291
290
  displayName: Build Tooling
292
291
  description: ESLint, Prettier, TypeScript, Vite
293
292
  domain: shared
@@ -295,8 +294,8 @@ categories:
295
294
  required: false
296
295
  order: 2
297
296
 
298
- security:
299
- id: security
297
+ shared-security:
298
+ id: shared-security
300
299
  displayName: Security
301
300
  description: Authentication security patterns and best practices
302
301
  domain: shared
@@ -304,8 +303,8 @@ categories:
304
303
  required: false
305
304
  order: 3
306
305
 
307
- methodology:
308
- id: methodology
306
+ shared-methodology:
307
+ id: shared-methodology
309
308
  displayName: Methodology
310
309
  description: Development methodology and engineering principles
311
310
  domain: shared
@@ -313,8 +312,8 @@ categories:
313
312
  required: false
314
313
  order: 4
315
314
 
316
- research:
317
- id: research
315
+ shared-research:
316
+ id: shared-research
318
317
  displayName: Research
319
318
  description: Codebase investigation and research methodology
320
319
  domain: shared
@@ -322,8 +321,8 @@ categories:
322
321
  required: false
323
322
  order: 5
324
323
 
325
- reviewing:
326
- id: reviewing
324
+ shared-reviewing:
325
+ id: shared-reviewing
327
326
  displayName: Code Review
328
327
  description: Code review patterns and guidance
329
328
  domain: shared
@@ -331,8 +330,8 @@ categories:
331
330
  required: false
332
331
  order: 6
333
332
 
334
- ci-cd:
335
- id: ci-cd
333
+ shared-ci-cd:
334
+ id: shared-ci-cd
336
335
  displayName: CI/CD
337
336
  description: Continuous integration and deployment pipelines
338
337
  domain: shared
@@ -379,13 +378,9 @@ relationships:
379
378
  # CONFLICTS (Mutually exclusive - selecting A disables B)
380
379
  # ─────────────────────────────────────────────────────────────────
381
380
  conflicts:
382
- # Framework conflicts (only one core framework)
383
- - skills: [react, vue, angular, solidjs]
384
- reason: "Core frameworks are mutually exclusive within a single application. Exception: micro-frontend architectures (Single-SPA, Module Federation) can combine frameworks in isolation."
385
-
386
- # Meta-framework conflicts
387
- - skills: [nextjs-app-router, remix, nuxt]
388
- reason: "Meta-frameworks are mutually exclusive - choose one"
381
+ # Framework conflicts (only one framework)
382
+ - skills: [react, vue, angular, solidjs, nextjs-app-router, remix, nuxt]
383
+ reason: "Frameworks are mutually exclusive choose one"
389
384
 
390
385
  # NOTE: scss-modules/tailwind moved to discourages - they're technically compatible
391
386
 
@@ -596,49 +591,54 @@ relationships:
596
591
  requires:
597
592
  # React-specific libraries (note: these libraries have vanilla/other-framework options, but our skills teach React patterns)
598
593
  - skill: zustand
599
- needs: [react, react-native]
594
+ needs: [react, nextjs-app-router, remix, react-native]
600
595
  needsAny: true
601
596
  reason: "Our Zustand skill covers React/React Native patterns (zustand/vanilla exists for other frameworks)"
602
597
 
603
598
  - skill: redux-toolkit
604
- needs: [react, react-native]
599
+ needs: [react, nextjs-app-router, remix, react-native]
605
600
  needsAny: true
606
601
  reason: "Our Redux Toolkit skill covers React/React Native patterns (RTK core is framework-agnostic)"
607
602
 
608
603
  - skill: mobx
609
- needs: [react]
604
+ needs: [react, nextjs-app-router, remix]
605
+ needsAny: true
610
606
  reason: "Our MobX skill teaches React patterns. Note: MobX core has official Vue (mobx-vue) and Angular (mobx-angular) bindings."
611
607
 
612
608
  - skill: react-query
613
- needs: [react, react-native]
609
+ needs: [react, nextjs-app-router, remix, react-native]
614
610
  needsAny: true
615
611
  reason: "TanStack Query's React adapter. Note: TanStack Query also supports Vue, Solid, Svelte via separate adapters."
616
612
 
617
613
  - skill: swr
618
- needs: [react, react-native]
614
+ needs: [react, nextjs-app-router, remix, react-native]
619
615
  needsAny: true
620
616
  reason: "SWR is a React Hooks library. For React Native, requires @nandorojo/swr-react-native wrapper."
621
617
 
622
618
  - skill: react-hook-form
623
- needs: [react, react-native]
619
+ needs: [react, nextjs-app-router, remix, react-native]
624
620
  needsAny: true
625
621
  reason: "React Hook Form is React only"
626
622
 
627
623
  - skill: react-testing-library
628
- needs: [react]
624
+ needs: [react, nextjs-app-router, remix]
625
+ needsAny: true
629
626
  reason: "React Testing Library is React only"
630
627
 
631
628
  # Vue-specific libraries
632
629
  - skill: pinia
633
- needs: [vue]
630
+ needs: [vue, nuxt]
631
+ needsAny: true
634
632
  reason: "Pinia is Vue only"
635
633
 
636
634
  - skill: vee-validate
637
- needs: [vue]
635
+ needs: [vue, nuxt]
636
+ needsAny: true
638
637
  reason: "VeeValidate is Vue only"
639
638
 
640
639
  - skill: vue-test-utils
641
- needs: [vue]
640
+ needs: [vue, nuxt]
641
+ needsAny: true
642
642
  reason: "Vue Test Utils is Vue only"
643
643
 
644
644
  # Angular-specific libraries
@@ -646,16 +646,6 @@ relationships:
646
646
  needs: [angular]
647
647
  reason: "NgRx SignalStore is Angular only"
648
648
 
649
- # Next.js specific
650
- - skill: nextjs-app-router
651
- needs: [react]
652
- reason: "Next.js is built on React"
653
-
654
- # Remix specific
655
- - skill: remix
656
- needs: [react]
657
- reason: "Remix is built on React"
658
-
659
649
  # Backend dependencies
660
650
  - skill: better-auth
661
651
  needs: [drizzle, prisma]
@@ -666,17 +656,22 @@ relationships:
666
656
 
667
657
  # UI component dependencies
668
658
  - skill: shadcn-ui
669
- needs: [react, tailwind]
670
- reason: "shadcn/ui requires React and Tailwind"
659
+ needs: [react, nextjs-app-router, remix]
660
+ needsAny: true
661
+ reason: "shadcn/ui requires a React-based framework"
662
+
663
+ - skill: shadcn-ui
664
+ needs: [tailwind]
665
+ reason: "shadcn/ui requires Tailwind CSS"
671
666
 
672
667
  # GraphQL clients need a framework
673
668
  - skill: graphql-apollo
674
- needs: [react, vue, angular]
669
+ needs: [react, vue, angular, nextjs-app-router, remix, nuxt]
675
670
  needsAny: true
676
671
  reason: "Apollo Client - first-party React support, community-maintained Vue/Angular integrations. Note: Svelte/Solid bindings exist but are stale (2020-2022)."
677
672
 
678
673
  - skill: graphql-urql
679
- needs: [react, vue, solidjs]
674
+ needs: [react, vue, solidjs, nextjs-app-router, remix, nuxt]
680
675
  needsAny: true
681
676
  reason: "URQL has first-party support for React, Vue, and Solid (no Angular support). Svelte support exists but skill not yet created."
682
677
 
@@ -685,10 +680,7 @@ relationships:
685
680
  # ─────────────────────────────────────────────────────────────────
686
681
  alternatives:
687
682
  - purpose: "Frontend Framework"
688
- skills: [react, vue, angular, solidjs]
689
-
690
- - purpose: "React Meta-Framework"
691
- skills: [nextjs-app-router, remix]
683
+ skills: [react, vue, angular, solidjs, nextjs-app-router, remix, nuxt]
692
684
 
693
685
  - purpose: "Styling"
694
686
  skills: [scss-modules, tailwind, cva]