@triedotdev/mcp 1.0.45 → 1.0.47

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.
package/README.md CHANGED
@@ -14,13 +14,15 @@ The last mile of shipping is where things break—not because your code doesn't
14
14
 
15
15
  ## What's New (latest updates)
16
16
 
17
+ - **Comprehensive Skills Library**: 150+ skills across 12 categories now auto-suggested based on your stack. Run `trie init` to see personalized suggestions, or browse with `trie skills list <category>`. Categories include: marketing (23), development (25), security (10), design (9), documents (5), productivity (17), and more.
18
+
17
19
  - **Bootstrap System**: Run `trie init` to auto-detect your stack (framework, language, database). Optionally customize `.trie/RULES.md` for coding standards. Works out of the box - no config required.
18
20
 
19
21
  - **Issue Memory & Cross-Project Learning**: Issues are now stored in `.trie/memory/` with BM25 search (same algorithm as Elasticsearch). Intelligent compaction summarizes old issues instead of deleting them, tracking trends and recurring patterns over time.
20
22
 
21
23
  - **Extended Skill Gating**: Skills can now declare requirements for npm dependencies, environment variables, binaries in PATH, and config files. Only skills whose requirements match your project environment are loaded.
22
24
 
23
- - **External Skills**: Install reusable capabilities from Vercel, Anthropic, Expo, Stripe, Supabase, or any GitHub repository. Skills are applied by the skill-review agent during scans and tracked in your project context.
25
+ - **External Skills**: Install reusable capabilities from Vercel, Anthropic, Expo, Stripe, Supabase, Trail of Bits, or any GitHub repository. Skills are applied by the skill-review agent during scans and tracked in your project context.
24
26
 
25
27
  - **Project Info Registry**: Store important project context in `.trie/PROJECT.md` that travels with you across Claude Code, Cursor, GitHub Actions, and CLI. Define your project description, tech stack, conventions, architecture, and custom AI instructions—all in one place.
26
28
 
@@ -490,11 +492,19 @@ trie-agent scan --format json --output report.json
490
492
  trie-agent agents
491
493
 
492
494
  # Install an external skill
493
- trie-agent skills add vercel-labs/agent-skills react-best-practices
495
+ trie-agent skills add vercel-labs/agent-skills vercel-react-best-practices
494
496
 
495
497
  # List installed skills
496
498
  trie-agent skills list
497
499
 
500
+ # Browse skill categories (150+ skills across 12 categories)
501
+ trie-agent skills list categories
502
+
503
+ # View skills in a category
504
+ trie-agent skills list marketing # 23 skills
505
+ trie-agent skills list development # 25 skills
506
+ trie-agent skills list security # 10 skills
507
+
498
508
  # Initialize bootstrap files
499
509
  trie-agent init
500
510
 
@@ -1031,10 +1041,10 @@ Both skill types are applied by the **skill-review agent** during scans and trav
1031
1041
  **CLI:**
1032
1042
  ```bash
1033
1043
  # From Vercel's skills repository
1034
- trie-agent skills add vercel-labs/agent-skills react-best-practices
1044
+ trie-agent skills add vercel-labs/agent-skills vercel-react-best-practices
1035
1045
 
1036
1046
  # From Anthropic's skills
1037
- trie-agent skills add anthropics/skills claude-code-review
1047
+ trie-agent skills add anthropics/skills frontend-design
1038
1048
 
1039
1049
  # From any GitHub repo with a SKILL.md
1040
1050
  trie-agent skills add myorg/internal-standards code-style
@@ -1042,7 +1052,24 @@ trie-agent skills add myorg/internal-standards code-style
1042
1052
 
1043
1053
  **Using MCP (Cursor/Claude Code):**
1044
1054
  ```
1045
- Install the react-best-practices skill from vercel-labs/agent-skills
1055
+ Install the vercel-react-best-practices skill from vercel-labs/agent-skills
1056
+ ```
1057
+
1058
+ ### Browse Available Skills
1059
+
1060
+ Trie includes 150+ skills organized into 12 categories:
1061
+
1062
+ ```bash
1063
+ # List all categories
1064
+ trie-agent skills list categories
1065
+
1066
+ # Browse skills by category
1067
+ trie-agent skills list marketing # 23 skills (SEO, copywriting, CRO, etc.)
1068
+ trie-agent skills list development # 25 skills (TDD, debugging, code review, etc.)
1069
+ trie-agent skills list security # 10 skills (semgrep, codeql, Trail of Bits, etc.)
1070
+ trie-agent skills list design # 9 skills (canvas, brand, UI/UX, etc.)
1071
+ trie-agent skills list documents # 5 skills (pdf, xlsx, pptx, docx, etc.)
1072
+ trie-agent skills list productivity # 17 skills (meetings, diagrams, READMEs, etc.)
1046
1073
  ```
1047
1074
 
1048
1075
  ### List Installed Skills
@@ -1055,7 +1082,7 @@ Output:
1055
1082
  ```
1056
1083
  Installed Skills (2):
1057
1084
 
1058
- react-best-practices (applied 12x)
1085
+ vercel-react-best-practices (applied 12x)
1059
1086
  React and Next.js performance optimization
1060
1087
  Source: vercel-labs/agent-skills
1061
1088
 
@@ -1064,6 +1091,8 @@ Installed Skills (2):
1064
1091
  Source: vercel-labs/agent-skills
1065
1092
 
1066
1093
  These skills are applied by the skill-review agent during scans.
1094
+
1095
+ Explore more: trie skills list categories
1067
1096
  ```
1068
1097
 
1069
1098
  ### How It Works
@@ -1120,19 +1149,41 @@ Skills can come from any GitHub repository with a SKILL.md file:
1120
1149
 
1121
1150
  | Source | Examples |
1122
1151
  |--------|----------|
1123
- | [Vercel](https://github.com/vercel-labs/agent-skills) | react-best-practices, web-design-guidelines |
1124
- | [Anthropic](https://github.com/anthropics/skills) | frontend-design, skill-creator, webapp-testing |
1125
- | [Expo](https://github.com/expo/skills) | building-native-ui, upgrading-expo, native-data-fetching |
1152
+ | [Vercel](https://github.com/vercel-labs/agent-skills) | vercel-react-best-practices, web-design-guidelines |
1153
+ | [Anthropic](https://github.com/anthropics/skills) | frontend-design, webapp-testing, mcp-builder, pdf, xlsx, docx |
1154
+ | [Expo](https://github.com/expo/skills) | building-native-ui, upgrading-expo, expo-deployment (9 skills) |
1126
1155
  | [Stripe](https://github.com/stripe/ai) | stripe-best-practices |
1127
- | [Better Auth](https://github.com/better-auth/skills) | better-auth-best-practices |
1156
+ | [Better Auth](https://github.com/better-auth/skills) | better-auth-best-practices, create-auth-skill |
1128
1157
  | [Remotion](https://github.com/remotion-dev/skills) | remotion-best-practices |
1129
1158
  | [Callstack](https://github.com/callstackincubator/agent-skills) | react-native-best-practices |
1130
1159
  | [Supabase](https://github.com/supabase/agent-skills) | supabase-postgres-best-practices |
1160
+ | [Trail of Bits](https://github.com/trailofbits/skills) | semgrep, codeql, secure-workflow-guide (10 skills) |
1161
+ | [Vue/Nuxt](https://github.com/hyf0/vue-skills) | vue-best-practices, pinia-best-practices |
1162
+ | [Three.js](https://github.com/cloudai-x/threejs-skills) | threejs-fundamentals, threejs-animation (10 skills) |
1163
+ | [obra/superpowers](https://github.com/obra/superpowers) | test-driven-development, systematic-debugging (14 skills) |
1164
+ | [Marketing](https://github.com/coreyhaines31/marketingskills) | seo-audit, copywriting, pricing-strategy (23 skills) |
1131
1165
  | Your org | Internal standards, style guides, compliance docs |
1132
- | Community | Any public repo following the SKILL.md format |
1133
1166
 
1134
1167
  Browse all available skills at [skills.sh](https://skills.sh)
1135
1168
 
1169
+ ### Auto-Suggested Skills
1170
+
1171
+ When you run `trie init`, Trie automatically detects your dependencies and suggests relevant skills:
1172
+
1173
+ | Dependency | Skills Suggested |
1174
+ |------------|------------------|
1175
+ | `next`, `react` | vercel-react-best-practices, web-design-guidelines, frontend-design |
1176
+ | `vue`, `nuxt` | vue-best-practices, pinia-best-practices, nuxt skills |
1177
+ | `expo` | 9 Expo skills (building-native-ui, upgrading-expo, etc.) |
1178
+ | `three` | 10 Three.js skills (fundamentals, animation, shaders, etc.) |
1179
+ | `@supabase/supabase-js` | supabase-postgres-best-practices |
1180
+ | `stripe` | stripe-best-practices |
1181
+ | `better-auth` | better-auth-best-practices |
1182
+ | `playwright` | webapp-testing, e2e-testing-patterns |
1183
+ | `tailwindcss` | tailwind-design-system, responsive-design |
1184
+ | `typescript` | typescript-advanced-types |
1185
+ | And 20+ more... | Run `trie init` to see suggestions for your stack |
1186
+
1136
1187
  ### Skill Gating
1137
1188
 
1138
1189
  Skills can declare requirements in their frontmatter. Only skills whose requirements are met are loaded.
@@ -1204,17 +1255,31 @@ trie init
1204
1255
  trie_init
1205
1256
  ```
1206
1257
 
1207
- This auto-detects your stack and creates optional templates:
1258
+ This auto-detects your stack and suggests relevant skills:
1208
1259
 
1209
1260
  ```
1210
1261
  Detected Stack:
1211
1262
  Framework: Next.js 14.0.0
1212
1263
  Language: TypeScript
1213
- Database: Prisma ORM
1214
- Auth: NextAuth.js
1215
-
1216
- Suggested Skills:
1217
- trie skills add vercel-labs/agent-skills react-best-practices
1264
+ Database: Supabase
1265
+ Auth: Better Auth
1266
+
1267
+ Suggested Skills (based on your stack):
1268
+ trie skills add vercel-labs/agent-skills vercel-react-best-practices
1269
+ trie skills add vercel-labs/agent-skills web-design-guidelines
1270
+ trie skills add supabase/agent-skills supabase-postgres-best-practices
1271
+ trie skills add better-auth/skills better-auth-best-practices
1272
+ trie skills add wshobson/agents typescript-advanced-types
1273
+
1274
+ Explore skill categories:
1275
+ trie skills list documents # 5 skills
1276
+ trie skills list marketing # 23 skills
1277
+ trie skills list development # 25 skills
1278
+ trie skills list security # 10 skills
1279
+ trie skills list productivity # 17 skills
1280
+ trie skills list categories # see all 12 categories
1281
+
1282
+ Browse all skills: https://skills.sh
1218
1283
  ```
1219
1284
 
1220
1285
  ### Commands
@@ -167,15 +167,310 @@ async function handleCheckpointCommand(args) {
167
167
  }
168
168
  }
169
169
 
170
- // src/bootstrap/files.ts
171
- import { readFile as readFile3, writeFile as writeFile2, unlink, mkdir as mkdir2 } from "fs/promises";
172
- import { existsSync as existsSync3 } from "fs";
173
- import { join as join3 } from "path";
174
-
175
170
  // src/bootstrap/stack-detector.ts
176
171
  import { readFile as readFile2 } from "fs/promises";
177
172
  import { existsSync as existsSync2 } from "fs";
178
173
  import { join as join2 } from "path";
174
+ var SKILL_MAPPINGS = {
175
+ // Frontend Frameworks - React/Next.js
176
+ "next": [
177
+ "vercel-labs/agent-skills vercel-react-best-practices",
178
+ "vercel-labs/agent-skills web-design-guidelines",
179
+ "anthropics/skills frontend-design",
180
+ "wshobson/agents nextjs-app-router-patterns"
181
+ ],
182
+ "react": [
183
+ "vercel-labs/agent-skills vercel-react-best-practices",
184
+ "anthropics/skills frontend-design",
185
+ "wshobson/agents react-state-management"
186
+ ],
187
+ // Vue/Nuxt Ecosystem
188
+ "vue": [
189
+ "hyf0/vue-skills vue-best-practices",
190
+ "hyf0/vue-skills pinia-best-practices",
191
+ "hyf0/vue-skills vueuse-best-practices",
192
+ "onmax/nuxt-skills vue"
193
+ ],
194
+ "nuxt": [
195
+ "onmax/nuxt-skills nuxt",
196
+ "onmax/nuxt-skills nuxt-ui",
197
+ "onmax/nuxt-skills nuxt-content",
198
+ "onmax/nuxt-skills nuxt-modules",
199
+ "onmax/nuxt-skills nuxt-better-auth",
200
+ "onmax/nuxt-skills nuxthub"
201
+ ],
202
+ "pinia": [
203
+ "hyf0/vue-skills pinia-best-practices"
204
+ ],
205
+ "@vueuse/core": [
206
+ "hyf0/vue-skills vueuse-best-practices",
207
+ "onmax/nuxt-skills vueuse"
208
+ ],
209
+ // Mobile - Expo
210
+ "expo": [
211
+ "expo/skills building-native-ui",
212
+ "expo/skills upgrading-expo",
213
+ "expo/skills native-data-fetching",
214
+ "expo/skills expo-dev-client",
215
+ "expo/skills expo-deployment",
216
+ "expo/skills expo-api-routes",
217
+ "expo/skills expo-tailwind-setup",
218
+ "expo/skills expo-cicd-workflows",
219
+ "expo/skills use-dom"
220
+ ],
221
+ // Mobile - React Native
222
+ "react-native": [
223
+ "callstackincubator/agent-skills react-native-best-practices",
224
+ "wshobson/agents react-native-architecture"
225
+ ],
226
+ // Backend Frameworks
227
+ "@nestjs/core": [
228
+ "kadajett/agent-nestjs-skills nestjs-best-practices"
229
+ ],
230
+ "nestjs": [
231
+ "kadajett/agent-nestjs-skills nestjs-best-practices"
232
+ ],
233
+ "elysia": [
234
+ "elysiajs/skills elysiajs"
235
+ ],
236
+ "hono": [
237
+ "elysiajs/skills elysiajs"
238
+ ],
239
+ // Database/BaaS
240
+ "@supabase/supabase-js": [
241
+ "supabase/agent-skills supabase-postgres-best-practices"
242
+ ],
243
+ "convex": [
244
+ "waynesutton/convexskills convex-best-practices"
245
+ ],
246
+ "pg": [
247
+ "wshobson/agents postgresql-table-design"
248
+ ],
249
+ "postgres": [
250
+ "wshobson/agents postgresql-table-design"
251
+ ],
252
+ // Auth
253
+ "better-auth": [
254
+ "better-auth/skills better-auth-best-practices",
255
+ "better-auth/skills create-auth-skill"
256
+ ],
257
+ // Payments
258
+ "stripe": [
259
+ "stripe/ai stripe-best-practices"
260
+ ],
261
+ "@stripe/stripe-js": [
262
+ "stripe/ai stripe-best-practices"
263
+ ],
264
+ // Media/Graphics
265
+ "remotion": [
266
+ "remotion-dev/skills remotion-best-practices"
267
+ ],
268
+ "three": [
269
+ "cloudai-x/threejs-skills threejs-fundamentals",
270
+ "cloudai-x/threejs-skills threejs-animation",
271
+ "cloudai-x/threejs-skills threejs-materials",
272
+ "cloudai-x/threejs-skills threejs-shaders",
273
+ "cloudai-x/threejs-skills threejs-lighting",
274
+ "cloudai-x/threejs-skills threejs-geometry",
275
+ "cloudai-x/threejs-skills threejs-textures",
276
+ "cloudai-x/threejs-skills threejs-loaders",
277
+ "cloudai-x/threejs-skills threejs-interaction",
278
+ "cloudai-x/threejs-skills threejs-postprocessing"
279
+ ],
280
+ // UI Libraries
281
+ "tailwindcss": [
282
+ "wshobson/agents tailwind-design-system",
283
+ "jezweb/claude-skills tailwind-v4-shadcn",
284
+ "wshobson/agents responsive-design"
285
+ ],
286
+ "@shadcn/ui": [
287
+ "giuseppe-trisciuoglio/developer-kit shadcn-ui"
288
+ ],
289
+ "shadcn": [
290
+ "giuseppe-trisciuoglio/developer-kit shadcn-ui"
291
+ ],
292
+ "@radix-ui/react-slot": [
293
+ "onmax/nuxt-skills reka-ui"
294
+ ],
295
+ // State Management
296
+ "@tanstack/react-query": [
297
+ "jezweb/claude-skills tanstack-query"
298
+ ],
299
+ // Testing
300
+ "playwright": [
301
+ "anthropics/skills webapp-testing",
302
+ "wshobson/agents e2e-testing-patterns"
303
+ ],
304
+ "puppeteer": [
305
+ "anthropics/skills webapp-testing"
306
+ ],
307
+ "vitest": [
308
+ "wshobson/agents e2e-testing-patterns"
309
+ ],
310
+ "jest": [
311
+ "wshobson/agents e2e-testing-patterns"
312
+ ],
313
+ // DevTools/MCP
314
+ "@modelcontextprotocol/sdk": [
315
+ "anthropics/skills mcp-builder"
316
+ ],
317
+ // Security
318
+ "semgrep": [
319
+ "trailofbits/skills semgrep"
320
+ ],
321
+ // Monorepos
322
+ "turbo": [
323
+ "wshobson/agents monorepo-management"
324
+ ],
325
+ "nx": [
326
+ "wshobson/agents monorepo-management"
327
+ ],
328
+ "lerna": [
329
+ "wshobson/agents monorepo-management"
330
+ ],
331
+ // TypeScript (handled separately based on tsconfig.json)
332
+ "typescript": [
333
+ "wshobson/agents typescript-advanced-types"
334
+ ]
335
+ };
336
+ var SKILL_CATEGORIES = {
337
+ documents: [
338
+ "anthropics/skills pdf",
339
+ "anthropics/skills xlsx",
340
+ "anthropics/skills pptx",
341
+ "anthropics/skills docx",
342
+ "anthropics/skills doc-coauthoring"
343
+ ],
344
+ design: [
345
+ "anthropics/skills canvas-design",
346
+ "anthropics/skills theme-factory",
347
+ "anthropics/skills web-artifacts-builder",
348
+ "anthropics/skills algorithmic-art",
349
+ "anthropics/skills brand-guidelines",
350
+ "anthropics/skills slack-gif-creator",
351
+ "nextlevelbuilder/ui-ux-pro-max ui-ux-pro-max",
352
+ "superdesigndev/superdesign-skill superdesign",
353
+ "wshobson/agents design-system-patterns"
354
+ ],
355
+ marketing: [
356
+ "coreyhaines31/marketingskills seo-audit",
357
+ "coreyhaines31/marketingskills copywriting",
358
+ "coreyhaines31/marketingskills marketing-psychology",
359
+ "coreyhaines31/marketingskills programmatic-seo",
360
+ "coreyhaines31/marketingskills marketing-ideas",
361
+ "coreyhaines31/marketingskills copy-editing",
362
+ "coreyhaines31/marketingskills pricing-strategy",
363
+ "coreyhaines31/marketingskills social-content",
364
+ "coreyhaines31/marketingskills launch-strategy",
365
+ "coreyhaines31/marketingskills page-cro",
366
+ "coreyhaines31/marketingskills competitor-alternatives",
367
+ "coreyhaines31/marketingskills analytics-tracking",
368
+ "coreyhaines31/marketingskills schema-markup",
369
+ "coreyhaines31/marketingskills onboarding-cro",
370
+ "coreyhaines31/marketingskills email-sequence",
371
+ "coreyhaines31/marketingskills paid-ads",
372
+ "coreyhaines31/marketingskills signup-flow-cro",
373
+ "coreyhaines31/marketingskills free-tool-strategy",
374
+ "coreyhaines31/marketingskills form-cro",
375
+ "coreyhaines31/marketingskills paywall-upgrade-cro",
376
+ "coreyhaines31/marketingskills referral-program",
377
+ "coreyhaines31/marketingskills popup-cro",
378
+ "coreyhaines31/marketingskills ab-test-setup"
379
+ ],
380
+ development: [
381
+ "obra/superpowers brainstorming",
382
+ "obra/superpowers test-driven-development",
383
+ "obra/superpowers systematic-debugging",
384
+ "obra/superpowers writing-plans",
385
+ "obra/superpowers executing-plans",
386
+ "obra/superpowers verification-before-completion",
387
+ "obra/superpowers using-superpowers",
388
+ "obra/superpowers subagent-driven-development",
389
+ "obra/superpowers requesting-code-review",
390
+ "obra/superpowers writing-skills",
391
+ "obra/superpowers dispatching-parallel-agents",
392
+ "obra/superpowers receiving-code-review",
393
+ "obra/superpowers using-git-worktrees",
394
+ "obra/superpowers finishing-a-development-branch",
395
+ "wshobson/agents code-review-excellence",
396
+ "wshobson/agents api-design-principles",
397
+ "wshobson/agents architecture-patterns",
398
+ "wshobson/agents error-handling-patterns",
399
+ "wshobson/agents nodejs-backend-patterns",
400
+ "wshobson/agents microservices-patterns",
401
+ "wshobson/agents modern-javascript-patterns",
402
+ "wshobson/agents web-component-design",
403
+ "wshobson/agents async-python-patterns",
404
+ "wshobson/agents python-testing-patterns",
405
+ "boristane/agent-skills logging-best-practices"
406
+ ],
407
+ productivity: [
408
+ "softaworks/agent-toolkit daily-meeting-update",
409
+ "softaworks/agent-toolkit agent-md-refactor",
410
+ "softaworks/agent-toolkit session-handoff",
411
+ "softaworks/agent-toolkit meme-factory",
412
+ "softaworks/agent-toolkit qa-test-planner",
413
+ "softaworks/agent-toolkit writing-clearly-and-concisely",
414
+ "softaworks/agent-toolkit commit-work",
415
+ "softaworks/agent-toolkit mermaid-diagrams",
416
+ "softaworks/agent-toolkit dependency-updater",
417
+ "softaworks/agent-toolkit crafting-effective-readmes",
418
+ "softaworks/agent-toolkit reducing-entropy",
419
+ "softaworks/agent-toolkit feedback-mastery",
420
+ "softaworks/agent-toolkit marp-slide",
421
+ "softaworks/agent-toolkit professional-communication",
422
+ "softaworks/agent-toolkit difficult-workplace-conversations",
423
+ "anthropics/skills internal-comms",
424
+ "othmanadi/planning-with-files planning-with-files"
425
+ ],
426
+ security: [
427
+ "trailofbits/skills semgrep",
428
+ "trailofbits/skills secure-workflow-guide",
429
+ "trailofbits/skills codeql",
430
+ "trailofbits/skills property-based-testing",
431
+ "trailofbits/skills variant-analysis",
432
+ "trailofbits/skills guidelines-advisor",
433
+ "trailofbits/skills sharp-edges",
434
+ "trailofbits/skills differential-review",
435
+ "trailofbits/skills ask-questions-if-underspecified",
436
+ "squirrelscan/skills audit-website"
437
+ ],
438
+ mobile: [
439
+ "wshobson/agents mobile-ios-design",
440
+ "wshobson/agents mobile-android-design",
441
+ "dimillian/skills swiftui-ui-patterns",
442
+ "dimillian/skills swiftui-liquid-glass"
443
+ ],
444
+ obsidian: [
445
+ "kepano/obsidian-skills obsidian-markdown",
446
+ "kepano/obsidian-skills obsidian-bases",
447
+ "kepano/obsidian-skills json-canvas"
448
+ ],
449
+ prompts: [
450
+ "f/awesome-chatgpt-prompts skill-lookup",
451
+ "f/awesome-chatgpt-prompts prompt-lookup",
452
+ "wshobson/agents prompt-engineering-patterns"
453
+ ],
454
+ browser: [
455
+ "vercel-labs/agent-browser agent-browser"
456
+ ],
457
+ content: [
458
+ "op7418/humanizer-zh humanizer-zh",
459
+ "blader/humanizer humanizer",
460
+ "op7418/youtube-clipper-skill youtube-clipper",
461
+ "jimliu/baoyu-skills baoyu-slide-deck",
462
+ "jimliu/baoyu-skills baoyu-article-illustrator",
463
+ "jimliu/baoyu-skills baoyu-cover-image",
464
+ "jimliu/baoyu-skills baoyu-comic",
465
+ "jimliu/baoyu-skills baoyu-infographic",
466
+ "jimliu/baoyu-skills baoyu-image-gen"
467
+ ],
468
+ integrations: [
469
+ "intellectronica/agent-skills context7",
470
+ "softaworks/agent-toolkit gemini",
471
+ "softaworks/agent-toolkit codex"
472
+ ]
473
+ };
179
474
  async function detectStack(projectDir) {
180
475
  const stack = {
181
476
  suggestedSkills: [],
@@ -185,6 +480,7 @@ async function detectStack(projectDir) {
185
480
  if (existsSync2(join2(projectDir, "tsconfig.json"))) {
186
481
  stack.language = "TypeScript";
187
482
  stack.suggestedAgents.push("typecheck");
483
+ stack.suggestedSkills.push("wshobson/agents typescript-advanced-types");
188
484
  } else if (existsSync2(join2(projectDir, "package.json"))) {
189
485
  stack.language = "JavaScript";
190
486
  } else if (existsSync2(join2(projectDir, "requirements.txt")) || existsSync2(join2(projectDir, "pyproject.toml"))) {
@@ -194,6 +490,11 @@ async function detectStack(projectDir) {
194
490
  } else if (existsSync2(join2(projectDir, "Cargo.toml"))) {
195
491
  stack.language = "Rust";
196
492
  }
493
+ if (existsSync2(join2(projectDir, "Package.swift")) || existsSync2(join2(projectDir, "project.pbxproj")) || existsSync2(join2(projectDir, "*.xcodeproj"))) {
494
+ stack.language = "Swift";
495
+ stack.suggestedSkills.push("dimillian/skills swiftui-ui-patterns");
496
+ stack.suggestedSkills.push("dimillian/skills swiftui-liquid-glass");
497
+ }
197
498
  if (existsSync2(join2(projectDir, "pnpm-lock.yaml"))) {
198
499
  stack.packageManager = "pnpm";
199
500
  } else if (existsSync2(join2(projectDir, "yarn.lock"))) {
@@ -203,6 +504,9 @@ async function detectStack(projectDir) {
203
504
  } else if (existsSync2(join2(projectDir, "package-lock.json"))) {
204
505
  stack.packageManager = "npm";
205
506
  }
507
+ if (existsSync2(join2(projectDir, ".github", "workflows"))) {
508
+ stack.suggestedSkills.push("wshobson/agents github-actions-templates");
509
+ }
206
510
  try {
207
511
  const pkgPath = join2(projectDir, "package.json");
208
512
  if (existsSync2(pkgPath)) {
@@ -212,16 +516,22 @@ async function detectStack(projectDir) {
212
516
  for (const dep of Object.keys(deps)) {
213
517
  stack.dependencies.add(dep);
214
518
  }
519
+ for (const dep of Object.keys(deps)) {
520
+ const skills = SKILL_MAPPINGS[dep];
521
+ if (skills) {
522
+ stack.suggestedSkills.push(...skills);
523
+ }
524
+ }
215
525
  if (deps["next"]) {
216
526
  stack.framework = `Next.js ${deps["next"].replace("^", "")}`;
217
- stack.suggestedSkills.push("vercel-labs/agent-skills react-best-practices");
218
527
  stack.suggestedAgents.push("accessibility", "design");
219
528
  } else if (deps["react"]) {
220
529
  stack.framework = `React ${deps["react"].replace("^", "")}`;
221
- stack.suggestedSkills.push("vercel-labs/agent-skills react-best-practices");
222
530
  stack.suggestedAgents.push("accessibility");
223
531
  } else if (deps["vue"]) {
224
532
  stack.framework = `Vue ${deps["vue"].replace("^", "")}`;
533
+ } else if (deps["nuxt"]) {
534
+ stack.framework = `Nuxt ${deps["nuxt"].replace("^", "")}`;
225
535
  } else if (deps["svelte"]) {
226
536
  stack.framework = "Svelte";
227
537
  } else if (deps["express"]) {
@@ -230,6 +540,10 @@ async function detectStack(projectDir) {
230
540
  stack.framework = "Fastify";
231
541
  } else if (deps["hono"]) {
232
542
  stack.framework = "Hono";
543
+ } else if (deps["elysia"]) {
544
+ stack.framework = "Elysia";
545
+ } else if (deps["@nestjs/core"]) {
546
+ stack.framework = "NestJS";
233
547
  }
234
548
  if (deps["next-auth"] || deps["@auth/core"]) {
235
549
  stack.auth = "NextAuth.js";
@@ -239,7 +553,6 @@ async function detectStack(projectDir) {
239
553
  stack.auth = "Clerk";
240
554
  } else if (deps["better-auth"]) {
241
555
  stack.auth = "Better Auth";
242
- stack.suggestedSkills.push("better-auth/skills better-auth-best-practices");
243
556
  }
244
557
  if (deps["prisma"] || deps["@prisma/client"]) {
245
558
  stack.database = "Prisma ORM";
@@ -247,25 +560,16 @@ async function detectStack(projectDir) {
247
560
  stack.database = "Drizzle ORM";
248
561
  } else if (deps["@supabase/supabase-js"]) {
249
562
  stack.database = "Supabase";
250
- stack.suggestedSkills.push("supabase/agent-skills supabase-postgres-best-practices");
251
563
  } else if (deps["mongoose"]) {
252
564
  stack.database = "MongoDB (Mongoose)";
253
565
  } else if (deps["pg"]) {
254
566
  stack.database = "PostgreSQL";
567
+ } else if (deps["convex"]) {
568
+ stack.database = "Convex";
255
569
  }
256
570
  if (deps["stripe"] || deps["@stripe/stripe-js"]) {
257
- stack.suggestedSkills.push("stripe/ai stripe-best-practices");
258
571
  stack.suggestedAgents.push("moneybags");
259
572
  }
260
- if (deps["expo"]) {
261
- stack.suggestedSkills.push("expo/skills upgrading-expo");
262
- }
263
- if (deps["remotion"]) {
264
- stack.suggestedSkills.push("remotion-dev/skills remotion-best-practices");
265
- }
266
- if (deps["react-native"]) {
267
- stack.suggestedSkills.push("callstackincubator/agent-skills react-native-best-practices");
268
- }
269
573
  }
270
574
  } catch {
271
575
  }
@@ -280,8 +584,20 @@ async function detectStack(projectDir) {
280
584
  stack.suggestedAgents = [...new Set(stack.suggestedAgents)];
281
585
  return stack;
282
586
  }
587
+ function getSkillsByCategory(category) {
588
+ return SKILL_CATEGORIES[category] || [];
589
+ }
590
+ function getSkillCategories() {
591
+ return Object.entries(SKILL_CATEGORIES).map(([name, skills]) => ({
592
+ name,
593
+ count: skills.length
594
+ }));
595
+ }
283
596
 
284
597
  // src/bootstrap/files.ts
598
+ import { readFile as readFile3, writeFile as writeFile2, unlink, mkdir as mkdir2 } from "fs/promises";
599
+ import { existsSync as existsSync3 } from "fs";
600
+ import { join as join3 } from "path";
285
601
  var BOOTSTRAP_FILES = [
286
602
  { name: "PROJECT.md", type: "user", description: "Project overview and conventions" },
287
603
  { name: "RULES.md", type: "user", description: "Coding standards agents enforce" },
@@ -519,6 +835,9 @@ function getBootstrapTemplate(stack) {
519
835
  }
520
836
 
521
837
  export {
838
+ SKILL_CATEGORIES,
839
+ getSkillsByCategory,
840
+ getSkillCategories,
522
841
  loadBootstrapContext,
523
842
  initializeBootstrapFiles,
524
843
  completeBootstrap,
@@ -530,4 +849,4 @@ export {
530
849
  getLastCheckpoint,
531
850
  handleCheckpointCommand
532
851
  };
533
- //# sourceMappingURL=chunk-BAME4KVK.js.map
852
+ //# sourceMappingURL=chunk-6T7S77U7.js.map