codymaster 4.6.0 → 5.2.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 (161) hide show
  1. package/CHANGELOG.md +74 -8
  2. package/README.md +192 -95
  3. package/dist/advisory-handoff.js +89 -0
  4. package/dist/advisory-report.js +105 -0
  5. package/dist/browse-server.js +251 -0
  6. package/dist/cli/command-registry.js +34 -0
  7. package/dist/cli/commands/agent.js +120 -0
  8. package/dist/cli/commands/bench.js +69 -0
  9. package/dist/cli/commands/brain.js +108 -0
  10. package/dist/cli/commands/dashboard.js +93 -0
  11. package/dist/cli/commands/design-studio.js +111 -0
  12. package/dist/cli/commands/distro.js +25 -0
  13. package/dist/cli/commands/engineering.js +596 -0
  14. package/dist/cli/commands/evolve.js +123 -0
  15. package/dist/cli/commands/mcp-serve.js +104 -0
  16. package/dist/cli/commands/project.js +324 -0
  17. package/dist/cli/commands/skill-chain.js +269 -0
  18. package/dist/cli/commands/system.js +89 -0
  19. package/dist/cli/commands/task.js +254 -0
  20. package/dist/cli/update-check.js +83 -0
  21. package/dist/cm-config.js +92 -0
  22. package/dist/cm-suggest.js +77 -0
  23. package/dist/codybench/judges/automated.js +31 -0
  24. package/dist/codybench/runners/claude-code.js +32 -0
  25. package/dist/codybench/suites/memory-retention.js +85 -0
  26. package/dist/codybench/suites/tdd-regression.js +35 -0
  27. package/dist/codybench/suites/token-efficiency.js +55 -0
  28. package/dist/codybench/types.js +2 -0
  29. package/dist/context-db.js +157 -0
  30. package/dist/continuity.js +2 -6
  31. package/dist/distro-validate.js +54 -0
  32. package/dist/execution-analyzer.js +138 -0
  33. package/dist/guardian-core.js +74 -0
  34. package/dist/index.js +36 -2759
  35. package/dist/indexer/skills-lib.js +533 -0
  36. package/dist/indexer/skills-map.js +1374 -0
  37. package/dist/indexer/skills.js +16 -0
  38. package/dist/learning-promoter.js +246 -0
  39. package/dist/mcp-context-server.js +289 -1
  40. package/dist/mcp-skills-tools.js +81 -0
  41. package/dist/retro-summary.js +70 -0
  42. package/dist/second-opinion-providers.js +79 -0
  43. package/dist/skill-chain.js +63 -1
  44. package/dist/skill-evolver.js +456 -0
  45. package/dist/skill-execution-cache.js +254 -0
  46. package/dist/smart-brain-router.js +184 -0
  47. package/dist/sprint-pipeline.js +228 -0
  48. package/dist/storage-backend.js +14 -67
  49. package/dist/token-budget.js +88 -0
  50. package/dist/utils/cli-utils.js +76 -0
  51. package/dist/utils/skill-utils.js +32 -0
  52. package/package.json +17 -7
  53. package/scripts/build-skills.mjs +51 -0
  54. package/scripts/gate-0-repo-hygiene.js +75 -0
  55. package/scripts/postinstall.js +34 -28
  56. package/scripts/security-scan.js +1 -1
  57. package/scripts/validate-skills.mjs +42 -0
  58. package/skills/CLAUDE.md +2 -7
  59. package/skills/_shared/helpers.md +2 -8
  60. package/skills/cm-ads-tracker/SKILL.md +3 -6
  61. package/skills/cm-browse/SKILL.md +34 -0
  62. package/skills/cm-conductor-worktrees/SKILL.md +28 -0
  63. package/skills/cm-content-factory/SKILL.md +1 -1
  64. package/skills/cm-content-factory/landing/docs/content/changelog.md +36 -0
  65. package/skills/cm-content-factory/landing/docs/content/deployment.md +46 -0
  66. package/skills/cm-content-factory/landing/docs/content/execution-flow.md +67 -0
  67. package/skills/cm-content-factory/landing/docs/content/memory-system.md +38 -0
  68. package/skills/cm-content-factory/landing/docs/content/openspace.md +27 -0
  69. package/skills/cm-content-factory/landing/docs/content/use-cases.md +26 -0
  70. package/skills/cm-content-factory/landing/docs/content/v5-intro.md +28 -0
  71. package/skills/cm-content-factory/landing/docs/index.html +240 -0
  72. package/skills/cm-content-factory/landing/index.html +100 -100
  73. package/skills/cm-content-factory/landing/script.js +42 -0
  74. package/skills/cm-content-factory/landing/translations.js +400 -400
  75. package/skills/cm-continuity/SKILL.md +32 -33
  76. package/skills/cm-design-studio/SKILL.md +34 -0
  77. package/skills/cm-ecosystem-roadmap/SKILL.md +15 -0
  78. package/skills/cm-engineering-meta/SKILL.md +73 -0
  79. package/skills/cm-growth-hacking/SKILL.md +1 -12
  80. package/skills/cm-guardian-runtime/SKILL.md +26 -0
  81. package/skills/cm-mcp-engineering/SKILL.md +22 -0
  82. package/skills/cm-notebooklm/SKILL.md +1 -17
  83. package/skills/cm-post-deploy-canary/SKILL.md +22 -0
  84. package/skills/cm-project-bootstrap/SKILL.md +11 -0
  85. package/skills/cm-qa-visual-cli/SKILL.md +22 -0
  86. package/skills/cm-retro-cli/SKILL.md +23 -0
  87. package/skills/cm-second-opinion-cli/SKILL.md +23 -0
  88. package/skills/cm-secret-shield/SKILL.md +2 -2
  89. package/skills/cm-security-gate/SKILL.md +1 -0
  90. package/skills/cm-skill-chain/SKILL.md +25 -4
  91. package/skills/cm-skill-evolution/SKILL.md +83 -0
  92. package/skills/cm-skill-health/SKILL.md +83 -0
  93. package/skills/cm-skill-index/SKILL.md +11 -3
  94. package/skills/cm-skill-search/SKILL.md +49 -0
  95. package/skills/cm-skill-share/SKILL.md +58 -0
  96. package/skills/cm-sprint-bus/SKILL.md +33 -0
  97. package/skills/cm-start/SKILL.md +0 -10
  98. package/skills/cm-tdd/SKILL.md +59 -72
  99. package/skills/profiles/README.md +21 -0
  100. package/skills/profiles/core.txt +23 -0
  101. package/skills/profiles/design.txt +6 -0
  102. package/skills/profiles/full.txt +62 -0
  103. package/skills/profiles/growth.txt +10 -0
  104. package/skills/profiles/knowledge.txt +7 -0
  105. package/install.sh +0 -901
  106. package/scripts/test-gemini.js +0 -13
  107. package/skills/cm-frappe-agent/SKILL.md +0 -134
  108. package/skills/cm-frappe-agent/agents/doctype-architect.md +0 -596
  109. package/skills/cm-frappe-agent/agents/erpnext-customizer.md +0 -643
  110. package/skills/cm-frappe-agent/agents/frappe-backend.md +0 -814
  111. package/skills/cm-frappe-agent/agents/frappe-custom-frontend.md +0 -557
  112. package/skills/cm-frappe-agent/agents/frappe-debugger.md +0 -625
  113. package/skills/cm-frappe-agent/agents/frappe-fixer.md +0 -275
  114. package/skills/cm-frappe-agent/agents/frappe-frontend.md +0 -660
  115. package/skills/cm-frappe-agent/agents/frappe-installer.md +0 -158
  116. package/skills/cm-frappe-agent/agents/frappe-performance.md +0 -307
  117. package/skills/cm-frappe-agent/agents/frappe-planner.md +0 -419
  118. package/skills/cm-frappe-agent/agents/frappe-remote-ops.md +0 -153
  119. package/skills/cm-frappe-agent/agents/github-workflow.md +0 -286
  120. package/skills/cm-frappe-agent/commands/frappe-app.md +0 -351
  121. package/skills/cm-frappe-agent/commands/frappe-backend.md +0 -162
  122. package/skills/cm-frappe-agent/commands/frappe-bench.md +0 -254
  123. package/skills/cm-frappe-agent/commands/frappe-debug.md +0 -263
  124. package/skills/cm-frappe-agent/commands/frappe-doctype-create.md +0 -272
  125. package/skills/cm-frappe-agent/commands/frappe-doctype-field.md +0 -310
  126. package/skills/cm-frappe-agent/commands/frappe-erpnext.md +0 -210
  127. package/skills/cm-frappe-agent/commands/frappe-fix.md +0 -59
  128. package/skills/cm-frappe-agent/commands/frappe-frontend.md +0 -210
  129. package/skills/cm-frappe-agent/commands/frappe-fullstack.md +0 -243
  130. package/skills/cm-frappe-agent/commands/frappe-github.md +0 -57
  131. package/skills/cm-frappe-agent/commands/frappe-install.md +0 -52
  132. package/skills/cm-frappe-agent/commands/frappe-plan.md +0 -442
  133. package/skills/cm-frappe-agent/commands/frappe-remote.md +0 -58
  134. package/skills/cm-frappe-agent/commands/frappe-test.md +0 -356
  135. package/skills/cm-frappe-agent/docs/README.md +0 -51
  136. package/skills/cm-frappe-agent/docs/agents-catalog.md +0 -113
  137. package/skills/cm-frappe-agent/docs/architecture.md +0 -149
  138. package/skills/cm-frappe-agent/docs/commands-catalog.md +0 -82
  139. package/skills/cm-frappe-agent/docs/resources-catalog.md +0 -66
  140. package/skills/cm-frappe-agent/docs/sitemap-urls.txt +0 -52
  141. package/skills/cm-frappe-agent/docs/sitemap.md +0 -81
  142. package/skills/cm-frappe-agent/docs/sop/user-guide.md +0 -178
  143. package/skills/cm-frappe-agent/docs/sop/vibe-coding-guide.md +0 -122
  144. package/skills/cm-frappe-agent/resources/7-layer-architecture.md +0 -985
  145. package/skills/cm-frappe-agent/resources/bench_commands.md +0 -73
  146. package/skills/cm-frappe-agent/resources/code-patterns-guide.md +0 -948
  147. package/skills/cm-frappe-agent/resources/common_pitfalls.md +0 -266
  148. package/skills/cm-frappe-agent/resources/doctype-registry.md +0 -158
  149. package/skills/cm-frappe-agent/resources/installation-guide.md +0 -289
  150. package/skills/cm-frappe-agent/resources/rest-api-patterns.md +0 -182
  151. package/skills/cm-frappe-agent/resources/scaffold_checklist.md +0 -82
  152. package/skills/cm-frappe-agent/resources/upgrade_patterns.md +0 -113
  153. package/skills/cm-frappe-agent/resources/web-form-patterns.md +0 -252
  154. package/skills/cm-frappe-agent/skills/bench-commands/SKILL.md +0 -621
  155. package/skills/cm-frappe-agent/skills/client-scripts/SKILL.md +0 -642
  156. package/skills/cm-frappe-agent/skills/doctype-patterns/SKILL.md +0 -576
  157. package/skills/cm-frappe-agent/skills/frappe-api/SKILL.md +0 -740
  158. package/skills/cm-frappe-agent/skills/remote-operations/SKILL.md +0 -47
  159. package/skills/cm-frappe-agent/skills/server-scripts/SKILL.md +0 -608
  160. package/skills/cm-frappe-agent/skills/web-forms/SKILL.md +0 -46
  161. package/skills/frappe-app-builder.zip +0 -0
@@ -0,0 +1,1374 @@
1
+ "use strict";
2
+ // ── Types ─────────────────────────────────────────────────────
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.WEB_FRONTEND_EXTENSIONS = exports.AGENT_FOLDER_MAP = exports.FRONTEND_BONUS_SKILLS = exports.FRONTEND_PACKAGES = exports.COMBO_SKILLS_MAP = exports.SKILLS_MAP = void 0;
5
+ // ── Skills Map ────────────────────────────────────────────────
6
+ exports.SKILLS_MAP = [
7
+ {
8
+ id: "react",
9
+ name: "React",
10
+ detect: {
11
+ packages: ["react", "react-dom"],
12
+ },
13
+ skills: [
14
+ "vercel-labs/agent-skills/vercel-react-best-practices",
15
+ "vercel-labs/agent-skills/vercel-composition-patterns",
16
+ ],
17
+ },
18
+ {
19
+ id: "nextjs",
20
+ name: "Next.js",
21
+ detect: {
22
+ packages: ["next"],
23
+ configFiles: ["next.config.js", "next.config.mjs", "next.config.ts"],
24
+ },
25
+ skills: [
26
+ "vercel-labs/next-skills/next-best-practices",
27
+ "vercel-labs/next-skills/next-cache-components",
28
+ "vercel-labs/next-skills/next-upgrade",
29
+ ],
30
+ },
31
+ {
32
+ id: "vue",
33
+ name: "Vue",
34
+ detect: {
35
+ packages: ["vue"],
36
+ },
37
+ skills: [
38
+ "hyf0/vue-skills/vue-best-practices",
39
+ "hyf0/vue-skills/vue-debug-guides",
40
+ "antfu/skills/vue",
41
+ "antfu/skills/vue-best-practices",
42
+ ],
43
+ },
44
+ {
45
+ id: "nuxt",
46
+ name: "Nuxt",
47
+ detect: {
48
+ packages: ["nuxt"],
49
+ configFiles: ["nuxt.config.js", "nuxt.config.ts"],
50
+ },
51
+ skills: ["antfu/skills/nuxt"],
52
+ },
53
+ {
54
+ id: "pinia",
55
+ name: "Pinia",
56
+ detect: {
57
+ packages: ["pinia"],
58
+ },
59
+ skills: ["vuejs-ai/skills/vue-pinia-best-practices"],
60
+ },
61
+ {
62
+ id: "svelte",
63
+ name: "Svelte",
64
+ detect: {
65
+ packages: ["svelte", "@sveltejs/kit"],
66
+ configFiles: ["svelte.config.js"],
67
+ },
68
+ skills: [
69
+ "ejirocodes/agent-skills/svelte5-best-practices",
70
+ "sveltejs/ai-tools/svelte-code-writer",
71
+ ],
72
+ },
73
+ {
74
+ id: "angular",
75
+ name: "Angular",
76
+ detect: {
77
+ packages: ["@angular/core"],
78
+ configFiles: ["angular.json"],
79
+ },
80
+ skills: [
81
+ "angular/skills/angular-developer",
82
+ "angular/angular/reference-core",
83
+ "angular/angular/reference-signal-forms",
84
+ "angular/angular/reference-compiler-cli",
85
+ "angular/angular/adev-writing-guide",
86
+ "angular/angular/PR Review",
87
+ ],
88
+ },
89
+ {
90
+ id: "astro",
91
+ name: "Astro",
92
+ detect: {
93
+ packages: ["astro"],
94
+ configFiles: ["astro.config.mjs", "astro.config.js", "astro.config.ts"],
95
+ },
96
+ skills: ["astrolicious/agent-skills/astro"],
97
+ },
98
+ {
99
+ id: "tailwind",
100
+ name: "Tailwind CSS",
101
+ detect: {
102
+ packages: ["tailwindcss", "@tailwindcss/vite"],
103
+ configFiles: ["tailwind.config.js", "tailwind.config.ts", "tailwind.config.cjs"],
104
+ },
105
+ skills: ["giuseppe-trisciuoglio/developer-kit/tailwind-css-patterns"],
106
+ },
107
+ {
108
+ id: "shadcn",
109
+ name: "shadcn/ui",
110
+ detect: {
111
+ configFiles: ["components.json"],
112
+ },
113
+ skills: ["shadcn/ui/shadcn"],
114
+ },
115
+ {
116
+ id: "typescript",
117
+ name: "TypeScript",
118
+ detect: {
119
+ packages: ["typescript"],
120
+ configFiles: ["tsconfig.json"],
121
+ },
122
+ skills: ["wshobson/agents/typescript-advanced-types"],
123
+ },
124
+ {
125
+ id: "react-hook-form",
126
+ name: "React Hook Form",
127
+ detect: {
128
+ packages: ["react-hook-form"],
129
+ },
130
+ skills: ["pproenca/dot-skills/react-hook-form"],
131
+ },
132
+ {
133
+ id: "zod",
134
+ name: "Zod",
135
+ detect: {
136
+ packages: ["zod"],
137
+ },
138
+ skills: ["pproenca/dot-skills/zod"],
139
+ },
140
+ {
141
+ id: "supabase",
142
+ name: "Supabase",
143
+ detect: {
144
+ packages: ["@supabase/supabase-js", "@supabase/ssr"],
145
+ },
146
+ skills: ["supabase/agent-skills/supabase-postgres-best-practices"],
147
+ },
148
+ {
149
+ id: "neon",
150
+ name: "Neon Postgres",
151
+ detect: {
152
+ packages: ["@neondatabase/serverless"],
153
+ },
154
+ skills: ["neondatabase/agent-skills/neon-postgres"],
155
+ },
156
+ {
157
+ id: "playwright",
158
+ name: "Playwright",
159
+ detect: {
160
+ packages: ["@playwright/test", "playwright"],
161
+ configFiles: ["playwright.config.ts", "playwright.config.js"],
162
+ },
163
+ skills: ["currents-dev/playwright-best-practices-skill/playwright-best-practices"],
164
+ },
165
+ {
166
+ id: "expo",
167
+ name: "Expo",
168
+ detect: {
169
+ packages: ["expo"],
170
+ },
171
+ skills: [
172
+ "expo/skills/building-native-ui",
173
+ "expo/skills/native-data-fetching",
174
+ "expo/skills/upgrading-expo",
175
+ "expo/skills/expo-tailwind-setup",
176
+ "expo/skills/expo-dev-client",
177
+ "expo/skills/expo-deployment",
178
+ "expo/skills/expo-cicd-workflows",
179
+ "expo/skills/expo-api-routes",
180
+ "expo/skills/use-dom",
181
+ ],
182
+ },
183
+ {
184
+ id: "react-native",
185
+ name: "React Native",
186
+ detect: {
187
+ packages: ["react-native"],
188
+ },
189
+ skills: ["sleekdotdesign/agent-skills/sleek-design-mobile-apps"],
190
+ },
191
+ {
192
+ id: "dart",
193
+ name: "Dart",
194
+ detect: {
195
+ configFiles: ["pubspec.yaml"],
196
+ },
197
+ skills: ["kevmoo/dash_skills/dart-best-practices"],
198
+ },
199
+ {
200
+ id: "flutter",
201
+ name: "Flutter",
202
+ detect: {
203
+ configFileContent: {
204
+ patterns: ["flutter:"],
205
+ files: ["pubspec.yaml"],
206
+ },
207
+ },
208
+ skills: [
209
+ "jeffallan/claude-skills/flutter-expert",
210
+ "madteacher/mad-agents-skills/flutter-animations",
211
+ "madteacher/mad-agents-skills/flutter-testing",
212
+ ],
213
+ },
214
+ {
215
+ id: "kotlin-multiplatform",
216
+ name: "Kotlin Multiplatform",
217
+ detect: {
218
+ configFileContent: {
219
+ scanGradleLayout: true,
220
+ patterns: [
221
+ 'kotlin("multiplatform")',
222
+ "org.jetbrains.kotlin.multiplatform",
223
+ 'id("org.jetbrains.kotlin.multiplatform")',
224
+ "kotlin-multiplatform",
225
+ ],
226
+ },
227
+ },
228
+ skills: [
229
+ "Kotlin/kotlin-agent-skills/kotlin-tooling-cocoapods-spm-migration",
230
+ "Kotlin/kotlin-agent-skills/kotlin-tooling-agp9-migration",
231
+ ],
232
+ },
233
+ {
234
+ id: "android",
235
+ name: "Android",
236
+ detect: {
237
+ configFileContent: {
238
+ scanGradleLayout: true,
239
+ patterns: [
240
+ "com.android.application",
241
+ "com.android.library",
242
+ 'id("com.android.application")',
243
+ 'id("com.android.library")',
244
+ "com.android.kotlin.multiplatform.library",
245
+ ],
246
+ },
247
+ },
248
+ skills: [
249
+ "krutikJain/android-agent-skills/android-kotlin-core",
250
+ "krutikJain/android-agent-skills/android-compose-foundations",
251
+ "krutikJain/android-agent-skills/android-architecture-clean",
252
+ "krutikJain/android-agent-skills/android-di-hilt",
253
+ "krutikJain/android-agent-skills/android-gradle-build-logic",
254
+ "krutikJain/android-agent-skills/android-coroutines-flow",
255
+ "krutikJain/android-agent-skills/android-networking-retrofit-okhttp",
256
+ "krutikJain/android-agent-skills/android-testing-unit",
257
+ ],
258
+ },
259
+ {
260
+ id: "remotion",
261
+ name: "Remotion",
262
+ detect: {
263
+ packages: ["remotion", "@remotion/cli"],
264
+ },
265
+ skills: ["remotion-dev/skills/remotion-best-practices"],
266
+ },
267
+ {
268
+ id: "react-router",
269
+ name: "React Router",
270
+ detect: {
271
+ packages: ["react-router", "@react-router/node", "@react-router/dev", "@react-router/serve"],
272
+ },
273
+ skills: [],
274
+ },
275
+ {
276
+ id: "tanstack-start",
277
+ name: "TanStack Start",
278
+ detect: {
279
+ packages: ["@tanstack/react-start", "@tanstack/start"],
280
+ },
281
+ skills: ["tanstack-skills/tanstack-skills/tanstack-start"],
282
+ },
283
+ {
284
+ id: "chrome-extension",
285
+ name: "Chrome Extension",
286
+ detect: {
287
+ configFileContent: {
288
+ files: ["manifest.json"],
289
+ patterns: ["manifest_version"],
290
+ },
291
+ },
292
+ skills: ["mindrally/skills/chrome-extension-development"],
293
+ },
294
+ {
295
+ id: "clerk",
296
+ name: "Clerk",
297
+ detect: {
298
+ packages: [
299
+ "@clerk/nextjs",
300
+ "@clerk/remix",
301
+ "@clerk/astro",
302
+ "@clerk/express",
303
+ "@clerk/fastify",
304
+ "@clerk/nuxt",
305
+ "@clerk/vue",
306
+ "@clerk/react",
307
+ "@clerk/expo",
308
+ "@clerk/tanstack-react-start",
309
+ "@clerk/react-router",
310
+ "@clerk/chrome-extension",
311
+ "@clerk/backend",
312
+ ],
313
+ packagePatterns: [/^@clerk\//],
314
+ configFileContent: [
315
+ {
316
+ files: ["Package.swift"],
317
+ patterns: ["clerk/clerk-ios", "ClerkSDK"],
318
+ },
319
+ {
320
+ scanGradleLayout: true,
321
+ patterns: ["com.clerk"],
322
+ },
323
+ ],
324
+ },
325
+ skills: [
326
+ "clerk/skills/clerk",
327
+ "clerk/skills/clerk-setup",
328
+ "clerk/skills/clerk-custom-ui",
329
+ "clerk/skills/clerk-backend-api",
330
+ "clerk/skills/clerk-orgs",
331
+ "clerk/skills/clerk-webhooks",
332
+ "clerk/skills/clerk-testing",
333
+ ],
334
+ },
335
+ {
336
+ id: "better-auth",
337
+ name: "Better Auth",
338
+ detect: {
339
+ packages: ["better-auth"],
340
+ },
341
+ skills: [
342
+ "better-auth/skills/better-auth-best-practices",
343
+ "better-auth/skills/email-and-password-best-practices",
344
+ "better-auth/skills/organization-best-practices",
345
+ "better-auth/skills/two-factor-authentication-best-practices",
346
+ ],
347
+ },
348
+ {
349
+ id: "turborepo",
350
+ name: "Turborepo",
351
+ detect: {
352
+ packages: ["turbo"],
353
+ configFiles: ["turbo.json"],
354
+ },
355
+ skills: ["vercel/turborepo/turborepo"],
356
+ },
357
+ {
358
+ id: "vite",
359
+ name: "Vite",
360
+ detect: {
361
+ packages: ["vite"],
362
+ configFiles: ["vite.config.js", "vite.config.ts", "vite.config.mjs"],
363
+ },
364
+ skills: ["antfu/skills/vite"],
365
+ },
366
+ {
367
+ id: "azure",
368
+ name: "Azure",
369
+ detect: {
370
+ packagePatterns: [/^@azure\//],
371
+ },
372
+ skills: [
373
+ "microsoft/github-copilot-for-azure/azure-deploy",
374
+ "microsoft/github-copilot-for-azure/azure-ai",
375
+ "microsoft/github-copilot-for-azure/azure-cost-optimization",
376
+ "microsoft/github-copilot-for-azure/azure-diagnostics",
377
+ ],
378
+ },
379
+ {
380
+ id: "vercel-ai",
381
+ name: "Vercel AI SDK",
382
+ detect: {
383
+ packages: ["ai", "@ai-sdk/openai", "@ai-sdk/anthropic", "@ai-sdk/google"],
384
+ },
385
+ skills: ["vercel/ai/ai-sdk"],
386
+ },
387
+ {
388
+ id: "elevenlabs",
389
+ name: "ElevenLabs",
390
+ detect: {
391
+ packages: ["elevenlabs"],
392
+ },
393
+ skills: ["inferen-sh/skills/elevenlabs-tts", "inferen-sh/skills/elevenlabs-music"],
394
+ },
395
+ {
396
+ id: "vercel-deploy",
397
+ name: "Vercel",
398
+ detect: {
399
+ configFiles: ["vercel.json", ".vercel"],
400
+ packages: ["vercel", "@astrojs/vercel"],
401
+ },
402
+ skills: ["vercel-labs/agent-skills/deploy-to-vercel"],
403
+ },
404
+ {
405
+ id: "cloudflare",
406
+ name: "Cloudflare",
407
+ detect: {
408
+ packages: ["wrangler", "@cloudflare/workers-types", "@astrojs/cloudflare"],
409
+ configFiles: ["wrangler.toml", "wrangler.json", "wrangler.jsonc"],
410
+ },
411
+ skills: [
412
+ "cloudflare/skills/cloudflare",
413
+ "cloudflare/skills/wrangler",
414
+ "cloudflare/skills/workers-best-practices",
415
+ "cloudflare/skills/web-perf",
416
+ "openai/skills/cloudflare-deploy",
417
+ ],
418
+ },
419
+ {
420
+ id: "cloudflare-durable-objects",
421
+ name: "Durable Objects",
422
+ detect: {
423
+ configFileContent: {
424
+ files: ["wrangler.json", "wrangler.jsonc", "wrangler.toml"],
425
+ patterns: ["durable_objects"],
426
+ },
427
+ },
428
+ skills: ["cloudflare/skills/durable-objects"],
429
+ },
430
+ {
431
+ id: "cloudflare-agents",
432
+ name: "Cloudflare Agents",
433
+ detect: {
434
+ packages: ["agents"],
435
+ },
436
+ skills: [
437
+ "cloudflare/skills/agents-sdk",
438
+ "cloudflare/skills/building-mcp-server-on-cloudflare",
439
+ "cloudflare/skills/sandbox-sdk",
440
+ ],
441
+ },
442
+ {
443
+ id: "cloudflare-ai",
444
+ name: "Cloudflare AI",
445
+ detect: {
446
+ packages: ["@cloudflare/ai"],
447
+ configFileContent: {
448
+ files: ["wrangler.json", "wrangler.jsonc"],
449
+ patterns: ['"ai"'],
450
+ },
451
+ },
452
+ skills: ["cloudflare/skills/building-ai-agent-on-cloudflare"],
453
+ },
454
+ {
455
+ id: "terraform",
456
+ name: "Terraform",
457
+ detect: {
458
+ configFiles: [
459
+ ".terraform.lock.hcl",
460
+ "terraform.tfvars",
461
+ "main.tf",
462
+ "variables.tf",
463
+ "outputs.tf",
464
+ ],
465
+ },
466
+ skills: [
467
+ "hashicorp/agent-skills/terraform-style-guide",
468
+ "hashicorp/agent-skills/refactor-module",
469
+ "hashicorp/agent-skills/terraform-stacks",
470
+ "wshobson/agents/terraform-module-library",
471
+ ],
472
+ },
473
+ {
474
+ id: "aws",
475
+ name: "AWS",
476
+ detect: {
477
+ packagePatterns: [/^@aws-sdk\//, /^aws-cdk/],
478
+ },
479
+ skills: [],
480
+ },
481
+ {
482
+ id: "swiftui",
483
+ name: "SwiftUI",
484
+ detect: {
485
+ configFiles: ["Package.swift"],
486
+ },
487
+ skills: [
488
+ "avdlee/swiftui-agent-skill/swiftui-expert-skill",
489
+ "avdlee/swift-concurrency-agent-skill",
490
+ "avdlee/xcode-build-optimization-agent-skill",
491
+ "avdlee/swift-testing-agent-skill",
492
+ "avdlee/core-data-agent-skill",
493
+ ],
494
+ },
495
+ {
496
+ id: "oxlint",
497
+ name: "oxlint",
498
+ detect: {
499
+ packages: ["oxlint"],
500
+ configFiles: [".oxlintrc.json", "oxlint.config.ts"],
501
+ },
502
+ skills: ["delexw/claude-code-misc/oxlint"],
503
+ },
504
+ {
505
+ id: "gsap",
506
+ name: "GSAP",
507
+ detect: {
508
+ packages: ["gsap"],
509
+ },
510
+ skills: [
511
+ "greensock/gsap-skills/gsap-core",
512
+ "greensock/gsap-skills/gsap-scrolltrigger",
513
+ "greensock/gsap-skills/gsap-performance",
514
+ "greensock/gsap-skills/gsap-plugins",
515
+ "greensock/gsap-skills/gsap-timeline",
516
+ "greensock/gsap-skills/gsap-utils",
517
+ "greensock/gsap-skills/gsap-frameworks",
518
+ ],
519
+ },
520
+ {
521
+ id: "threejs",
522
+ name: "Three.js",
523
+ detect: {
524
+ packages: ["three"],
525
+ },
526
+ skills: [
527
+ "cloudai-x/threejs-skills/threejs-animation",
528
+ "cloudai-x/threejs-skills/threejs-fundamentals",
529
+ "cloudai-x/threejs-skills/threejs-shaders",
530
+ "cloudai-x/threejs-skills/threejs-geometry",
531
+ "cloudai-x/threejs-skills/threejs-interaction",
532
+ "cloudai-x/threejs-skills/threejs-materials",
533
+ "cloudai-x/threejs-skills/threejs-postprocessing",
534
+ "cloudai-x/threejs-skills/threejs-lighting",
535
+ "cloudai-x/threejs-skills/threejs-textures",
536
+ "cloudai-x/threejs-skills/threejs-loaders",
537
+ ],
538
+ },
539
+ {
540
+ id: "@react-three/fiber",
541
+ name: "React Three Fiber",
542
+ detect: {
543
+ packages: ["@react-three/fiber"],
544
+ },
545
+ skills: [],
546
+ },
547
+ {
548
+ id: "bun",
549
+ name: "Bun",
550
+ detect: {
551
+ configFiles: ["bun.lockb", "bun.lock", "bunfig.toml"],
552
+ },
553
+ skills: ["https://bun.sh/docs"],
554
+ },
555
+ {
556
+ id: "node",
557
+ name: "Node.js",
558
+ detect: {
559
+ configFiles: ["package-lock.json", "yarn.lock", "pnpm-lock.yaml", ".nvmrc", ".node-version"],
560
+ },
561
+ skills: [
562
+ "wshobson/agents/nodejs-backend-patterns",
563
+ "sickn33/antigravity-awesome-skills/nodejs-best-practices",
564
+ ],
565
+ },
566
+ {
567
+ id: "express",
568
+ name: "Express",
569
+ detect: {
570
+ packages: ["express"],
571
+ },
572
+ skills: [],
573
+ },
574
+ {
575
+ id: "go",
576
+ name: "Go",
577
+ detect: {
578
+ configFiles: ["go.mod", "go.work"],
579
+ },
580
+ skills: [
581
+ "affaan-m/everything-claude-code/golang-patterns",
582
+ "affaan-m/everything-claude-code/golang-testing",
583
+ ],
584
+ },
585
+ {
586
+ id: "deno",
587
+ name: "Deno",
588
+ detect: {
589
+ configFiles: ["deno.json", "deno.jsonc", "deno.lock"],
590
+ },
591
+ skills: [
592
+ "denoland/skills/deno-expert",
593
+ "denoland/skills/deno-guidance",
594
+ "denoland/skills/deno-frontend",
595
+ "denoland/skills/deno-deploy",
596
+ "denoland/skills/deno-sandbox",
597
+ "mindrally/skills/deno-typescript",
598
+ ],
599
+ },
600
+ {
601
+ id: "wordpress",
602
+ name: "WordPress",
603
+ detect: {
604
+ configFiles: ["wp-config.php", "wp-login.php"],
605
+ packagePatterns: [/^@wordpress\//],
606
+ configFileContent: {
607
+ files: ["composer.json", "style.css"],
608
+ patterns: ["johnpbloch/wordpress", "wpackagist", "Theme Name:"],
609
+ },
610
+ },
611
+ skills: [
612
+ "wordpress/agent-skills/wp-plugin-development",
613
+ "wordpress/agent-skills/wp-rest-api",
614
+ "wordpress/agent-skills/wp-block-themes",
615
+ "wordpress/agent-skills/wp-block-development",
616
+ "wordpress/agent-skills/wp-performance",
617
+ "wordpress/agent-skills/wordpress-router",
618
+ "wordpress/agent-skills/wp-project-triage",
619
+ "wordpress/agent-skills/wp-wpcli-and-ops",
620
+ ],
621
+ },
622
+ {
623
+ id: "java",
624
+ name: "Java",
625
+ detect: {
626
+ configFiles: ["pom.xml"],
627
+ configFileContent: {
628
+ scanGradleLayout: true,
629
+ patterns: [
630
+ "sourceCompatibility",
631
+ "targetCompatibility",
632
+ "JavaVersion",
633
+ 'id("java")',
634
+ "id 'java'",
635
+ 'id("java-library")',
636
+ "id 'java-library'",
637
+ ],
638
+ },
639
+ },
640
+ skills: [
641
+ "github/awesome-copilot/java-docs",
642
+ "affaan-m/everything-claude-code/java-coding-standards",
643
+ ],
644
+ },
645
+ {
646
+ id: "springboot",
647
+ name: "Spring Boot",
648
+ detect: {
649
+ configFiles: [
650
+ "src/main/resources/application.properties",
651
+ "src/main/resources/application.yml",
652
+ "src/main/resources/application.yaml",
653
+ ],
654
+ configFileContent: {
655
+ files: ["pom.xml"],
656
+ patterns: ["spring-boot-starter", "org.springframework.boot"],
657
+ },
658
+ },
659
+ skills: ["github/awesome-copilot/java-springboot"],
660
+ },
661
+ {
662
+ id: "prisma",
663
+ name: "Prisma",
664
+ detect: {
665
+ packages: ["prisma", "@prisma/client"],
666
+ },
667
+ skills: [
668
+ "prisma/skills/prisma-database-setup",
669
+ "prisma/skills/prisma-client-api",
670
+ "prisma/skills/prisma-cli",
671
+ "prisma/skills/prisma-postgres",
672
+ ],
673
+ },
674
+ {
675
+ id: "stripe",
676
+ name: "Stripe",
677
+ detect: {
678
+ packages: ["stripe", "@stripe/stripe-js", "@stripe/react-stripe-js"],
679
+ },
680
+ skills: ["stripe/ai/stripe-best-practices", "stripe/ai/upgrade-stripe"],
681
+ },
682
+ {
683
+ id: "hono",
684
+ name: "Hono",
685
+ detect: {
686
+ packages: ["hono"],
687
+ },
688
+ skills: ["yusukebe/hono-skill/hono"],
689
+ },
690
+ {
691
+ id: "vitest",
692
+ name: "Vitest",
693
+ detect: {
694
+ packages: ["vitest"],
695
+ configFiles: ["vitest.config.ts", "vitest.config.js", "vitest.config.mts"],
696
+ },
697
+ skills: ["antfu/skills/vitest"],
698
+ },
699
+ {
700
+ id: "drizzle",
701
+ name: "Drizzle ORM",
702
+ detect: {
703
+ packages: ["drizzle-orm", "drizzle-kit"],
704
+ },
705
+ skills: ["bobmatnyc/claude-mpm-skills/drizzle-orm"],
706
+ },
707
+ {
708
+ id: "nestjs",
709
+ name: "NestJS",
710
+ detect: {
711
+ packages: ["@nestjs/core"],
712
+ },
713
+ skills: ["kadajett/agent-nestjs-skills/nestjs-best-practices"],
714
+ },
715
+ {
716
+ id: "tauri",
717
+ name: "Tauri",
718
+ detect: {
719
+ packages: ["@tauri-apps/api", "@tauri-apps/cli"],
720
+ configFiles: ["src-tauri/tauri.conf.json"],
721
+ },
722
+ skills: ["nodnarbnitram/claude-code-extensions/tauri-v2"],
723
+ },
724
+ {
725
+ id: "electron",
726
+ name: "Electron",
727
+ detect: {
728
+ packages: ["electron"],
729
+ configFiles: [
730
+ "electron-builder.yml",
731
+ "electron-builder.json",
732
+ "electron-builder.js",
733
+ "forge.config.js",
734
+ "forge.config.cjs",
735
+ "forge.config.mjs",
736
+ "forge.config.ts",
737
+ "electron-vite.config.ts",
738
+ "electron-vite.config.js",
739
+ "electron-vite.config.mjs",
740
+ "electron-vite.config.cjs",
741
+ ],
742
+ },
743
+ skills: ["vercel-labs/agent-skills/electron-best-practices"],
744
+ },
745
+ {
746
+ id: "dotnet",
747
+ name: ".NET",
748
+ detect: {
749
+ configFiles: [
750
+ "global.json",
751
+ "NuGet.Config",
752
+ "Directory.Build.props",
753
+ "Directory.Packages.props",
754
+ ],
755
+ configFileContent: {
756
+ scanDotNetLayout: true,
757
+ patterns: ['<Project Sdk="Microsoft.NET.Sdk'],
758
+ },
759
+ },
760
+ skills: [
761
+ "github/awesome-copilot/dotnet-best-practices",
762
+ "github/awesome-copilot/dotnet-design-pattern-review",
763
+ "github/awesome-copilot/dotnet-upgrade"
764
+ ],
765
+ },
766
+ {
767
+ id: "csharp",
768
+ name: "C#",
769
+ detect: {
770
+ configFileContent: {
771
+ scanDotNetLayout: true,
772
+ patterns: ["<Project", "Microsoft.NET.Sdk"],
773
+ },
774
+ },
775
+ skills: [
776
+ "github/awesome-copilot/csharp-xunit",
777
+ "github/awesome-copilot/csharp-async",
778
+ "github/awesome-copilot/csharp-docs",
779
+ "github/awesome-copilot/csharp-nunit",
780
+ "github/awesome-copilot/csharp-mstest",
781
+ "github/awesome-copilot/csharp-tunit",
782
+ ],
783
+ },
784
+ {
785
+ id: "aspnetcore",
786
+ name: "ASP.NET Core",
787
+ detect: {
788
+ configFiles: ["appsettings.json", "appsettings.Development.json"],
789
+ configFileContent: {
790
+ scanDotNetLayout: true,
791
+ patterns: ["Microsoft.NET.Sdk.Web"],
792
+ },
793
+ },
794
+ skills: [
795
+ "github/awesome-copilot/containerize-aspnetcore",
796
+ "openai/skills/aspnet-core",
797
+ ],
798
+ },
799
+ {
800
+ id: "aspnet-blazor",
801
+ name: "Blazor",
802
+ detect: {
803
+ configFileContent: {
804
+ scanDotNetLayout: true,
805
+ patterns: ["Microsoft.NET.Sdk.BlazorWebAssembly", "Microsoft.AspNetCore.Components"],
806
+ },
807
+ },
808
+ skills: [
809
+ "github/awesome-copilot/fluentui-blazor"
810
+ ],
811
+ },
812
+ {
813
+ id: "aspnet-minimal-api",
814
+ name: "ASP.NET Minimal API",
815
+ detect: {
816
+ configFiles: ["appsettings.json"],
817
+ configFileContent: {
818
+ scanDotNetLayout: true,
819
+ patterns: ["Microsoft.AspNetCore.OpenApi", "Swashbuckle.AspNetCore"],
820
+ },
821
+ },
822
+ skills: [
823
+ "github/awesome-copilot/aspnet-minimal-api-openapi",
824
+ "dotnet/skills/minimal-api-file-upload"
825
+ ],
826
+ },
827
+ {
828
+ id: "rust",
829
+ name: "Rust",
830
+ detect: {
831
+ configFiles: ["Cargo.toml"],
832
+ },
833
+ skills: ["apollographql/skills/rust-best-practices"],
834
+ },
835
+ {
836
+ id: "ruby",
837
+ name: "Ruby",
838
+ detect: {
839
+ configFiles: ["Gemfile", "Gemfile.lock", ".ruby-version", ".ruby-gemset"],
840
+ },
841
+ skills: ["lucianghinda/superpowers-ruby/ruby"],
842
+ },
843
+ {
844
+ id: "rails",
845
+ name: "Ruby on Rails",
846
+ detect: {
847
+ gems: ["rails"],
848
+ configFiles: ["config/routes.rb", "config/application.rb", "bin/rails"],
849
+ },
850
+ skills: [
851
+ "sergiodxa/agent-skills/ruby-on-rails-best-practices",
852
+ "lucianghinda/superpowers-ruby/rails-guides",
853
+ "igmarin/rails-agent-skills/rails-stack-conventions",
854
+ "igmarin/rails-agent-skills/rails-code-review",
855
+ "igmarin/rails-agent-skills/rails-migration-safety",
856
+ "igmarin/rails-agent-skills/rails-security-review",
857
+ "ombulabs/claude-code_rails-upgrade-skill/rails-upgrade",
858
+ ],
859
+ },
860
+ {
861
+ id: "redis-ruby",
862
+ name: "Redis (Ruby)",
863
+ detect: {
864
+ gems: ["redis", "sidekiq", "resque", "redis-rails"],
865
+ },
866
+ skills: ["redis/agent-skills/redis-development"],
867
+ },
868
+ {
869
+ id: "postgres-ruby",
870
+ name: "PostgreSQL",
871
+ detect: {
872
+ gems: ["pg"],
873
+ },
874
+ skills: [],
875
+ },
876
+ {
877
+ id: "python",
878
+ name: "Python",
879
+ detect: {
880
+ configFiles: ["pyproject.toml", "requirements.txt", "setup.py", "setup.cfg", "Pipfile"],
881
+ },
882
+ skills: [],
883
+ },
884
+ {
885
+ id: "sorbet",
886
+ name: "Sorbet",
887
+ detect: {
888
+ gems: ["sorbet", "sorbet-runtime"],
889
+ configFiles: ["sorbet/config"],
890
+ },
891
+ skills: [
892
+ "DmitryPogrebnoy/ruby-agent-skills/generating-sorbet",
893
+ "DmitryPogrebnoy/ruby-agent-skills/generating-sorbet-inline",
894
+ ],
895
+ },
896
+ {
897
+ id: "activeadmin",
898
+ name: "ActiveAdmin",
899
+ detect: {
900
+ gems: ["activeadmin"],
901
+ },
902
+ skills: [],
903
+ },
904
+ {
905
+ id: "django",
906
+ name: "Django",
907
+ detect: {
908
+ configFiles: ["manage.py"],
909
+ configFileContent: {
910
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "setup.cfg", "Pipfile"],
911
+ patterns: ["django", "Django"],
912
+ },
913
+ },
914
+ skills: [],
915
+ },
916
+ {
917
+ id: "devise",
918
+ name: "Devise",
919
+ detect: {
920
+ gems: ["devise"],
921
+ },
922
+ skills: [],
923
+ },
924
+ {
925
+ id: "fastapi",
926
+ name: "FastAPI",
927
+ detect: {
928
+ configFileContent: {
929
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "setup.cfg", "Pipfile"],
930
+ patterns: ["fastapi", "FastAPI"],
931
+ },
932
+ },
933
+ skills: [],
934
+ },
935
+ {
936
+ id: "sidekiq",
937
+ name: "Sidekiq",
938
+ detect: {
939
+ gems: ["sidekiq"],
940
+ },
941
+ skills: ["igmarin/rails-agent-skills/rails-background-jobs"],
942
+ },
943
+ {
944
+ id: "rspec",
945
+ name: "RSpec",
946
+ detect: {
947
+ gems: ["rspec", "rspec-rails"],
948
+ configFiles: [".rspec"],
949
+ },
950
+ skills: [
951
+ "igmarin/rails-agent-skills/rspec-best-practices",
952
+ "igmarin/rails-agent-skills/rspec-service-testing",
953
+ "lucianghinda/superpowers-ruby/test-driven-development",
954
+ ],
955
+ },
956
+ {
957
+ id: "rubocop",
958
+ name: "RuboCop",
959
+ detect: {
960
+ gems: ["rubocop", "rubocop-rails"],
961
+ configFiles: [".rubocop.yml"],
962
+ },
963
+ skills: [],
964
+ },
965
+ {
966
+ id: "php",
967
+ name: "PHP",
968
+ detect: {
969
+ configFiles: ["composer.json", "composer.lock"],
970
+ },
971
+ skills: ["jeffallan/claude-skills/php-pro"],
972
+ },
973
+ {
974
+ id: "laravel",
975
+ name: "Laravel",
976
+ detect: {
977
+ configFiles: ["artisan", "bootstrap/app.php"],
978
+ configFileContent: {
979
+ files: ["composer.json"],
980
+ patterns: ['"laravel/framework"', '"illuminate/'],
981
+ },
982
+ },
983
+ skills: [
984
+ "jeffallan/claude-skills/laravel-specialist",
985
+ "affaan-m/everything-claude-code/laravel-patterns",
986
+ ],
987
+ },
988
+ {
989
+ id: "flask",
990
+ name: "Flask",
991
+ detect: {
992
+ configFileContent: {
993
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "setup.cfg", "Pipfile"],
994
+ patterns: ["flask", "Flask"],
995
+ },
996
+ },
997
+ skills: [],
998
+ },
999
+ {
1000
+ id: "python",
1001
+ name: "Python",
1002
+ detect: {
1003
+ configFiles: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"],
1004
+ },
1005
+ skills: ["inferen-sh/skills/python-executor", "wshobson/agents/python-testing-patterns"],
1006
+ },
1007
+ {
1008
+ id: "fastapi",
1009
+ name: "FastAPI",
1010
+ detect: {
1011
+ configFileContent: {
1012
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"],
1013
+ patterns: ["fastapi", "FastAPI"],
1014
+ },
1015
+ },
1016
+ skills: [
1017
+ "wshobson/agents/fastapi-templates",
1018
+ "mindrally/skills/fastapi-python",
1019
+ "jezweb/claude-skills/fastapi",
1020
+ ],
1021
+ },
1022
+ {
1023
+ id: "django",
1024
+ name: "Django",
1025
+ detect: {
1026
+ configFileContent: {
1027
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"],
1028
+ patterns: ["django", "Django"],
1029
+ },
1030
+ },
1031
+ skills: [
1032
+ "vintasoftware/django-ai-plugins/django-expert",
1033
+ "affaan-m/everything-claude-code/django-patterns",
1034
+ "affaan-m/everything-claude-code/django-security",
1035
+ ],
1036
+ },
1037
+ {
1038
+ id: "flask",
1039
+ name: "Flask",
1040
+ detect: {
1041
+ configFileContent: {
1042
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"],
1043
+ patterns: ["flask", "Flask"],
1044
+ },
1045
+ },
1046
+ skills: ["jezweb/claude-skills/flask", "aj-geddes/useful-ai-prompts/flask-api-development"],
1047
+ },
1048
+ {
1049
+ id: "pydantic",
1050
+ name: "Pydantic",
1051
+ detect: {
1052
+ configFileContent: {
1053
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"],
1054
+ patterns: ["pydantic", "Pydantic"],
1055
+ },
1056
+ },
1057
+ skills: ["bobmatnyc/claude-mpm-skills/pydantic"],
1058
+ },
1059
+ {
1060
+ id: "sqlalchemy",
1061
+ name: "SQLAlchemy",
1062
+ detect: {
1063
+ configFileContent: {
1064
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"],
1065
+ patterns: ["sqlalchemy", "SQLAlchemy"],
1066
+ },
1067
+ },
1068
+ skills: [
1069
+ "bobmatnyc/claude-mpm-skills/sqlalchemy-orm",
1070
+ "wispbit-ai/skills/sqlalchemy-alembic-expert-best-practices-code-review",
1071
+ ],
1072
+ },
1073
+ {
1074
+ id: "pytest",
1075
+ name: "Pytest",
1076
+ detect: {
1077
+ configFileContent: {
1078
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"],
1079
+ patterns: ["pytest", "Pytest"],
1080
+ },
1081
+ },
1082
+ skills: ["wshobson/agents/python-testing-patterns"],
1083
+ },
1084
+ {
1085
+ id: "pandas",
1086
+ name: "Pandas",
1087
+ detect: {
1088
+ configFileContent: {
1089
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"],
1090
+ patterns: ["pandas", "Pandas"],
1091
+ },
1092
+ },
1093
+ skills: [
1094
+ "jeffallan/claude-skills/pandas-pro",
1095
+ "pluginagentmarketplace/custom-plugin-python/pandas-data-analysis",
1096
+ ],
1097
+ },
1098
+ {
1099
+ id: "numpy",
1100
+ name: "NumPy",
1101
+ detect: {
1102
+ configFileContent: {
1103
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"],
1104
+ patterns: ["numpy", "NumPy", "numpy"],
1105
+ },
1106
+ },
1107
+ skills: [
1108
+ "pluginagentmarketplace/custom-plugin-python/machine-learning",
1109
+ "pluginagentmarketplace/custom-plugin-python/pandas-data-analysis",
1110
+ ],
1111
+ },
1112
+ {
1113
+ id: "scikit-learn",
1114
+ name: "Scikit-Learn",
1115
+ detect: {
1116
+ configFileContent: {
1117
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"],
1118
+ patterns: ["scikit-learn", "scikit_learn", "sklearn"],
1119
+ },
1120
+ },
1121
+ skills: [
1122
+ "davila7/claude-code-templates/scikit-learn",
1123
+ "davila7/claude-code-templates/senior-data-scientist",
1124
+ ],
1125
+ },
1126
+ {
1127
+ id: "celery",
1128
+ name: "Celery",
1129
+ detect: {
1130
+ configFileContent: {
1131
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"],
1132
+ patterns: ["celery", "Celery"],
1133
+ },
1134
+ },
1135
+ skills: ["wshobson/agents/python-background-jobs"],
1136
+ },
1137
+ {
1138
+ id: "requests",
1139
+ name: "Requests",
1140
+ detect: {
1141
+ configFileContent: {
1142
+ files: ["pyproject.toml", "requirements.txt", "setup.py", "Pipfile"],
1143
+ patterns: ["requests", "Requests"],
1144
+ },
1145
+ },
1146
+ skills: ["affaan-m/everything-claude-code/python-patterns"],
1147
+ },
1148
+ ];
1149
+ // ── Combo Skills Map (cross-technology) ──────────────────────
1150
+ exports.COMBO_SKILLS_MAP = [
1151
+ {
1152
+ id: "expo-tailwind",
1153
+ name: "Expo + Tailwind CSS",
1154
+ requires: ["expo", "tailwind"],
1155
+ skills: ["expo/skills/expo-tailwind-setup"],
1156
+ },
1157
+ {
1158
+ id: "react-hook-form-zod",
1159
+ name: "React Hook Form + Zod",
1160
+ requires: ["react-hook-form", "zod"],
1161
+ skills: ["jezweb/claude-skills/react-hook-form-zod", "pproenca/dot-skills/zod"],
1162
+ },
1163
+ {
1164
+ id: "nextjs-supabase",
1165
+ name: "Next.js + Supabase",
1166
+ requires: ["nextjs", "supabase"],
1167
+ skills: ["supabase/agent-skills/supabase-postgres-best-practices"],
1168
+ },
1169
+ {
1170
+ id: "react-native-expo",
1171
+ name: "React Native + Expo",
1172
+ requires: ["react-native", "expo"],
1173
+ skills: [
1174
+ "expo/skills/building-native-ui",
1175
+ "sleekdotdesign/agent-skills/sleek-design-mobile-apps",
1176
+ ],
1177
+ },
1178
+ {
1179
+ id: "nextjs-vercel-ai",
1180
+ name: "Next.js + Vercel AI SDK",
1181
+ requires: ["nextjs", "vercel-ai"],
1182
+ skills: ["vercel/ai/ai-sdk", "vercel-labs/next-skills/next-best-practices"],
1183
+ },
1184
+ {
1185
+ id: "nextjs-playwright",
1186
+ name: "Next.js + Playwright",
1187
+ requires: ["nextjs", "playwright"],
1188
+ skills: ["currents-dev/playwright-best-practices-skill/playwright-best-practices"],
1189
+ },
1190
+ {
1191
+ id: "react-shadcn",
1192
+ name: "React + shadcn/ui",
1193
+ requires: ["react", "shadcn"],
1194
+ skills: ["shadcn/ui/shadcn", "vercel-labs/agent-skills/vercel-react-best-practices"],
1195
+ },
1196
+ {
1197
+ id: "tailwind-shadcn",
1198
+ name: "Tailwind CSS + shadcn/ui",
1199
+ requires: ["tailwind", "shadcn"],
1200
+ skills: ["secondsky/claude-skills/tailwind-v4-shadcn"],
1201
+ },
1202
+ {
1203
+ id: "gsap-react",
1204
+ name: "GSAP + React",
1205
+ requires: ["gsap", "react"],
1206
+ skills: ["greensock/gsap-skills/gsap-react"],
1207
+ },
1208
+ {
1209
+ id: "cloudflare-vite",
1210
+ name: "Cloudflare + Vite",
1211
+ requires: ["cloudflare", "vite"],
1212
+ skills: ["cloudflare/vinext/migrate-to-vinext"],
1213
+ },
1214
+ {
1215
+ id: "node-express",
1216
+ name: "Node.js + Express",
1217
+ requires: ["node", "express"],
1218
+ skills: ["aj-geddes/useful-ai-prompts/nodejs-express-server"],
1219
+ },
1220
+ {
1221
+ id: "nextjs-clerk",
1222
+ name: "Next.js + Clerk",
1223
+ requires: ["nextjs", "clerk"],
1224
+ skills: ["clerk/skills/clerk-nextjs-patterns"],
1225
+ },
1226
+ {
1227
+ id: "nuxt-clerk",
1228
+ name: "Nuxt + Clerk",
1229
+ requires: ["nuxt", "clerk"],
1230
+ skills: ["clerk/skills/clerk-nuxt-patterns"],
1231
+ },
1232
+ {
1233
+ id: "vue-clerk",
1234
+ name: "Vue + Clerk",
1235
+ requires: ["vue", "clerk"],
1236
+ skills: ["clerk/skills/clerk-vue-patterns"],
1237
+ },
1238
+ {
1239
+ id: "react-clerk",
1240
+ name: "React + Clerk",
1241
+ requires: ["react", "clerk"],
1242
+ skills: ["clerk/skills/clerk-react-patterns"],
1243
+ },
1244
+ {
1245
+ id: "astro-clerk",
1246
+ name: "Astro + Clerk",
1247
+ requires: ["astro", "clerk"],
1248
+ skills: ["clerk/skills/clerk-astro-patterns"],
1249
+ },
1250
+ {
1251
+ id: "expo-clerk",
1252
+ name: "Expo + Clerk",
1253
+ requires: ["expo", "clerk"],
1254
+ skills: ["clerk/skills/clerk-expo-patterns"],
1255
+ },
1256
+ {
1257
+ id: "react-react-three-fiber",
1258
+ name: "React + React Three Fiber",
1259
+ requires: ["threejs", "react", "@react-three/fiber"],
1260
+ skills: ["vercel-labs/json-render/react-three-fiber"],
1261
+ },
1262
+ {
1263
+ id: "react-router-clerk",
1264
+ name: "React Router + Clerk",
1265
+ requires: ["react-router", "clerk"],
1266
+ skills: [
1267
+ "clerk/skills/clerk-react-router-patterns",
1268
+ "clerk/skills/clerk-setup",
1269
+ "clerk/skills/clerk",
1270
+ ],
1271
+ },
1272
+ {
1273
+ id: "tanstack-clerk",
1274
+ name: "TanStack Start + Clerk",
1275
+ requires: ["tanstack-start", "clerk"],
1276
+ skills: [
1277
+ "clerk/skills/clerk-tanstack-patterns",
1278
+ "clerk/skills/clerk-setup",
1279
+ "clerk/skills/clerk",
1280
+ ],
1281
+ },
1282
+ {
1283
+ id: "chrome-extension-clerk",
1284
+ name: "Chrome Extension + Clerk",
1285
+ requires: ["chrome-extension", "clerk"],
1286
+ skills: [
1287
+ "clerk/skills/clerk-chrome-extension-patterns",
1288
+ "clerk/skills/clerk-setup",
1289
+ "clerk/skills/clerk",
1290
+ ],
1291
+ },
1292
+ {
1293
+ id: "swiftui-clerk",
1294
+ name: "SwiftUI + Clerk",
1295
+ requires: ["swiftui", "clerk"],
1296
+ skills: ["clerk/skills/clerk-swift", "clerk/skills/clerk-setup", "clerk/skills/clerk"],
1297
+ },
1298
+ {
1299
+ id: "android-clerk",
1300
+ name: "Android + Clerk",
1301
+ requires: ["android", "clerk"],
1302
+ skills: ["clerk/skills/clerk-android", "clerk/skills/clerk-setup", "clerk/skills/clerk"],
1303
+ },
1304
+ {
1305
+ id: "rails-rspec",
1306
+ name: "Ruby on Rails + RSpec",
1307
+ requires: ["rails", "rspec"],
1308
+ skills: [
1309
+ "igmarin/rails-agent-skills/rails-tdd-slices",
1310
+ "igmarin/rails-agent-skills/rails-bug-triage",
1311
+ ],
1312
+ },
1313
+ {
1314
+ id: "rails-sidekiq",
1315
+ name: "Ruby on Rails + Sidekiq",
1316
+ requires: ["rails", "sidekiq"],
1317
+ skills: [],
1318
+ },
1319
+ ];
1320
+ // ── Frontend Detection ────────────────────────────────────────
1321
+ exports.FRONTEND_PACKAGES = new Set([
1322
+ "react",
1323
+ "vue",
1324
+ "svelte",
1325
+ "astro",
1326
+ "next",
1327
+ "@angular/core",
1328
+ "solid-js",
1329
+ "lit",
1330
+ "preact",
1331
+ "nuxt",
1332
+ "@sveltejs/kit",
1333
+ ]);
1334
+ exports.FRONTEND_BONUS_SKILLS = [
1335
+ "anthropics/skills/frontend-design",
1336
+ "addyosmani/web-quality-skills/accessibility",
1337
+ "addyosmani/web-quality-skills/seo",
1338
+ ];
1339
+ // ── Agent Folder Map ─────────────────────────────────────────
1340
+ exports.AGENT_FOLDER_MAP = {
1341
+ ".claude": "claude-code",
1342
+ ".cursor": "cursor",
1343
+ ".cline": "cline",
1344
+ ".codex": "codex",
1345
+ ".opencode": "opencode",
1346
+ ".antigravity": "antigravity",
1347
+ ".augment": "augment",
1348
+ ".copilot": "github-copilot",
1349
+ ".gemini": "gemini-cli",
1350
+ ".junie": "junie",
1351
+ ".amp": "amp",
1352
+ ".supermaven": "supermaven",
1353
+ ".codebuddy": "codebuddy",
1354
+ ".continue": "continue",
1355
+ ".kiro": "kiro-cli",
1356
+ };
1357
+ exports.WEB_FRONTEND_EXTENSIONS = new Set([
1358
+ ".html",
1359
+ ".htm",
1360
+ ".css",
1361
+ ".scss",
1362
+ ".sass",
1363
+ ".less",
1364
+ ".vue",
1365
+ ".svelte",
1366
+ ".jsx",
1367
+ ".tsx",
1368
+ ".twig",
1369
+ ".tpl",
1370
+ ".ejs",
1371
+ ".hbs",
1372
+ ".pug",
1373
+ ".njk",
1374
+ ]);