@fermindi/pwn-cli 0.1.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 (46) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +251 -0
  3. package/cli/batch.js +333 -0
  4. package/cli/codespaces.js +303 -0
  5. package/cli/index.js +91 -0
  6. package/cli/inject.js +53 -0
  7. package/cli/knowledge.js +531 -0
  8. package/cli/notify.js +135 -0
  9. package/cli/patterns.js +665 -0
  10. package/cli/status.js +91 -0
  11. package/cli/validate.js +61 -0
  12. package/package.json +70 -0
  13. package/src/core/inject.js +128 -0
  14. package/src/core/state.js +91 -0
  15. package/src/core/validate.js +202 -0
  16. package/src/core/workspace.js +176 -0
  17. package/src/index.js +20 -0
  18. package/src/knowledge/gc.js +308 -0
  19. package/src/knowledge/lifecycle.js +401 -0
  20. package/src/knowledge/promote.js +364 -0
  21. package/src/knowledge/references.js +342 -0
  22. package/src/patterns/matcher.js +218 -0
  23. package/src/patterns/registry.js +375 -0
  24. package/src/patterns/triggers.js +423 -0
  25. package/src/services/batch-service.js +849 -0
  26. package/src/services/notification-service.js +342 -0
  27. package/templates/codespaces/devcontainer.json +52 -0
  28. package/templates/codespaces/setup.sh +70 -0
  29. package/templates/workspace/.ai/README.md +164 -0
  30. package/templates/workspace/.ai/agents/README.md +204 -0
  31. package/templates/workspace/.ai/agents/claude.md +625 -0
  32. package/templates/workspace/.ai/config/.gitkeep +0 -0
  33. package/templates/workspace/.ai/config/README.md +79 -0
  34. package/templates/workspace/.ai/config/notifications.template.json +20 -0
  35. package/templates/workspace/.ai/memory/deadends.md +79 -0
  36. package/templates/workspace/.ai/memory/decisions.md +58 -0
  37. package/templates/workspace/.ai/memory/patterns.md +65 -0
  38. package/templates/workspace/.ai/patterns/backend/README.md +126 -0
  39. package/templates/workspace/.ai/patterns/frontend/README.md +103 -0
  40. package/templates/workspace/.ai/patterns/index.md +256 -0
  41. package/templates/workspace/.ai/patterns/triggers.json +1087 -0
  42. package/templates/workspace/.ai/patterns/universal/README.md +141 -0
  43. package/templates/workspace/.ai/state.template.json +8 -0
  44. package/templates/workspace/.ai/tasks/active.md +77 -0
  45. package/templates/workspace/.ai/tasks/backlog.md +95 -0
  46. package/templates/workspace/.ai/workflows/batch-task.md +356 -0
@@ -0,0 +1,1087 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "description": "Pattern trigger definitions - determines which patterns auto-load based on context",
4
+ "lastUpdated": "2026-01-22T00:00:00Z",
5
+ "triggers": [
6
+ {
7
+ "id": "fe-react-tsx",
8
+ "name": "React TypeScript Components",
9
+ "type": "fileExt",
10
+ "value": ["*.tsx"],
11
+ "patterns": ["frontend/react", "universal/typescript"],
12
+ "description": "Auto-loads React and TypeScript patterns for .tsx files",
13
+ "priority": 100,
14
+ "enabled": true
15
+ },
16
+ {
17
+ "id": "fe-react-jsx",
18
+ "name": "React JavaScript Components",
19
+ "type": "fileExt",
20
+ "value": ["*.jsx"],
21
+ "patterns": ["frontend/react"],
22
+ "description": "Auto-loads React patterns for .jsx files",
23
+ "priority": 100,
24
+ "enabled": true
25
+ },
26
+ {
27
+ "id": "fe-vue-sfc",
28
+ "name": "Vue Single File Components",
29
+ "type": "fileExt",
30
+ "value": ["*.vue"],
31
+ "patterns": ["frontend/vue", "universal/typescript"],
32
+ "description": "Auto-loads Vue patterns for .vue files",
33
+ "priority": 100,
34
+ "enabled": true
35
+ },
36
+ {
37
+ "id": "fe-svelte-components",
38
+ "name": "Svelte Components",
39
+ "type": "fileExt",
40
+ "value": ["*.svelte"],
41
+ "patterns": ["frontend/svelte"],
42
+ "description": "Auto-loads Svelte patterns for .svelte files",
43
+ "priority": 100,
44
+ "enabled": true
45
+ },
46
+ {
47
+ "id": "fe-angular-components",
48
+ "name": "Angular Components",
49
+ "type": "fileExt",
50
+ "value": ["*.component.ts"],
51
+ "patterns": ["frontend/angular", "universal/typescript"],
52
+ "description": "Auto-loads Angular patterns for component files",
53
+ "priority": 100,
54
+ "enabled": true
55
+ },
56
+ {
57
+ "id": "fe-css-styles",
58
+ "name": "CSS Stylesheets",
59
+ "type": "fileExt",
60
+ "value": ["*.css"],
61
+ "patterns": ["frontend/styling"],
62
+ "description": "Auto-loads CSS patterns",
63
+ "priority": 90,
64
+ "enabled": true
65
+ },
66
+ {
67
+ "id": "fe-scss-styles",
68
+ "name": "SCSS Stylesheets",
69
+ "type": "fileExt",
70
+ "value": ["*.scss", "*.sass"],
71
+ "patterns": ["frontend/styling", "frontend/scss"],
72
+ "description": "Auto-loads SCSS/Sass patterns",
73
+ "priority": 90,
74
+ "enabled": true
75
+ },
76
+ {
77
+ "id": "fe-tailwind",
78
+ "name": "Tailwind CSS",
79
+ "type": "import",
80
+ "value": ["tailwindcss", "tailwind.config"],
81
+ "patterns": ["frontend/tailwind"],
82
+ "description": "Auto-loads Tailwind patterns when detected",
83
+ "priority": 85,
84
+ "enabled": true
85
+ },
86
+ {
87
+ "id": "fe-nextjs-pages",
88
+ "name": "Next.js Pages",
89
+ "type": "path",
90
+ "value": ["pages/**/*.tsx", "pages/**/*.ts", "app/**/*.tsx"],
91
+ "patterns": ["frontend/nextjs", "frontend/react"],
92
+ "description": "Auto-loads Next.js patterns for pages directory",
93
+ "priority": 95,
94
+ "enabled": true
95
+ },
96
+ {
97
+ "id": "fe-nextjs-api",
98
+ "name": "Next.js API Routes",
99
+ "type": "path",
100
+ "value": ["pages/api/**/*.ts", "app/api/**/*.ts"],
101
+ "patterns": ["frontend/nextjs", "backend/rest-api"],
102
+ "description": "Auto-loads Next.js API patterns",
103
+ "priority": 95,
104
+ "enabled": true
105
+ },
106
+ {
107
+ "id": "fe-remix",
108
+ "name": "Remix Routes",
109
+ "type": "path",
110
+ "value": ["app/routes/**/*.tsx"],
111
+ "patterns": ["frontend/remix", "frontend/react"],
112
+ "description": "Auto-loads Remix patterns",
113
+ "priority": 95,
114
+ "enabled": true
115
+ },
116
+ {
117
+ "id": "fe-astro",
118
+ "name": "Astro Components",
119
+ "type": "fileExt",
120
+ "value": ["*.astro"],
121
+ "patterns": ["frontend/astro"],
122
+ "description": "Auto-loads Astro patterns",
123
+ "priority": 100,
124
+ "enabled": true
125
+ },
126
+ {
127
+ "id": "fe-components-dir",
128
+ "name": "Component Directory",
129
+ "type": "path",
130
+ "value": ["src/components/**/*", "components/**/*"],
131
+ "patterns": ["frontend/components"],
132
+ "description": "Auto-loads component patterns for component directories",
133
+ "priority": 80,
134
+ "enabled": true
135
+ },
136
+ {
137
+ "id": "fe-hooks-dir",
138
+ "name": "React Hooks Directory",
139
+ "type": "path",
140
+ "value": ["src/hooks/**/*", "hooks/**/*"],
141
+ "patterns": ["frontend/react/hooks"],
142
+ "description": "Auto-loads React hooks patterns",
143
+ "priority": 80,
144
+ "enabled": true
145
+ },
146
+ {
147
+ "id": "fe-react-hooks-import",
148
+ "name": "React Hooks Usage",
149
+ "type": "import",
150
+ "value": ["import.*use(State|Effect|Context|Reducer|Memo|Callback|Ref)"],
151
+ "patterns": ["frontend/react/hooks"],
152
+ "description": "Auto-loads hooks patterns when using React hooks",
153
+ "priority": 60,
154
+ "enabled": true
155
+ },
156
+ {
157
+ "id": "fe-react-query",
158
+ "name": "React Query / TanStack Query",
159
+ "type": "import",
160
+ "value": ["@tanstack/react-query", "react-query"],
161
+ "patterns": ["frontend/react-query"],
162
+ "description": "Auto-loads React Query patterns",
163
+ "priority": 60,
164
+ "enabled": true
165
+ },
166
+ {
167
+ "id": "fe-redux",
168
+ "name": "Redux State Management",
169
+ "type": "import",
170
+ "value": ["@reduxjs/toolkit", "redux", "react-redux"],
171
+ "patterns": ["frontend/redux"],
172
+ "description": "Auto-loads Redux patterns",
173
+ "priority": 60,
174
+ "enabled": true
175
+ },
176
+ {
177
+ "id": "fe-zustand",
178
+ "name": "Zustand State Management",
179
+ "type": "import",
180
+ "value": ["zustand"],
181
+ "patterns": ["frontend/zustand"],
182
+ "description": "Auto-loads Zustand patterns",
183
+ "priority": 60,
184
+ "enabled": true
185
+ },
186
+ {
187
+ "id": "fe-jotai",
188
+ "name": "Jotai State Management",
189
+ "type": "import",
190
+ "value": ["jotai"],
191
+ "patterns": ["frontend/jotai"],
192
+ "description": "Auto-loads Jotai patterns",
193
+ "priority": 60,
194
+ "enabled": true
195
+ },
196
+ {
197
+ "id": "fe-shadcn",
198
+ "name": "shadcn/ui Components",
199
+ "type": "import",
200
+ "value": ["@/components/ui", "from.*shadcn"],
201
+ "patterns": ["frontend/shadcn"],
202
+ "description": "Auto-loads shadcn/ui patterns",
203
+ "priority": 60,
204
+ "enabled": true
205
+ },
206
+ {
207
+ "id": "fe-radix",
208
+ "name": "Radix UI Components",
209
+ "type": "import",
210
+ "value": ["@radix-ui"],
211
+ "patterns": ["frontend/radix"],
212
+ "description": "Auto-loads Radix UI patterns",
213
+ "priority": 60,
214
+ "enabled": true
215
+ },
216
+ {
217
+ "id": "fe-mui",
218
+ "name": "Material UI Components",
219
+ "type": "import",
220
+ "value": ["@mui/material", "@material-ui"],
221
+ "patterns": ["frontend/mui"],
222
+ "description": "Auto-loads MUI patterns",
223
+ "priority": 60,
224
+ "enabled": true
225
+ },
226
+ {
227
+ "id": "fe-chakra",
228
+ "name": "Chakra UI Components",
229
+ "type": "import",
230
+ "value": ["@chakra-ui"],
231
+ "patterns": ["frontend/chakra"],
232
+ "description": "Auto-loads Chakra UI patterns",
233
+ "priority": 60,
234
+ "enabled": true
235
+ },
236
+ {
237
+ "id": "fe-framer-motion",
238
+ "name": "Framer Motion Animations",
239
+ "type": "import",
240
+ "value": ["framer-motion"],
241
+ "patterns": ["frontend/animations"],
242
+ "description": "Auto-loads animation patterns",
243
+ "priority": 55,
244
+ "enabled": true
245
+ },
246
+ {
247
+ "id": "be-express-routes",
248
+ "name": "Express Routes",
249
+ "type": "fileExt",
250
+ "value": ["*.routes.ts", "*.routes.js", "*.router.ts"],
251
+ "patterns": ["backend/express", "universal/rest-api"],
252
+ "description": "Auto-loads Express patterns for route files",
253
+ "priority": 100,
254
+ "enabled": true
255
+ },
256
+ {
257
+ "id": "be-express-import",
258
+ "name": "Express Framework",
259
+ "type": "import",
260
+ "value": ["from.*express", "require.*express"],
261
+ "patterns": ["backend/express"],
262
+ "description": "Auto-loads Express patterns",
263
+ "priority": 60,
264
+ "enabled": true
265
+ },
266
+ {
267
+ "id": "be-fastify",
268
+ "name": "Fastify Framework",
269
+ "type": "import",
270
+ "value": ["fastify"],
271
+ "patterns": ["backend/fastify"],
272
+ "description": "Auto-loads Fastify patterns",
273
+ "priority": 60,
274
+ "enabled": true
275
+ },
276
+ {
277
+ "id": "be-hono",
278
+ "name": "Hono Framework",
279
+ "type": "import",
280
+ "value": ["hono"],
281
+ "patterns": ["backend/hono"],
282
+ "description": "Auto-loads Hono patterns",
283
+ "priority": 60,
284
+ "enabled": true
285
+ },
286
+ {
287
+ "id": "be-nestjs",
288
+ "name": "NestJS Framework",
289
+ "type": "import",
290
+ "value": ["@nestjs"],
291
+ "patterns": ["backend/nestjs", "universal/typescript"],
292
+ "description": "Auto-loads NestJS patterns",
293
+ "priority": 60,
294
+ "enabled": true
295
+ },
296
+ {
297
+ "id": "be-python",
298
+ "name": "Python Files",
299
+ "type": "fileExt",
300
+ "value": ["*.py"],
301
+ "patterns": ["backend/python"],
302
+ "description": "Auto-loads Python patterns",
303
+ "priority": 100,
304
+ "enabled": true
305
+ },
306
+ {
307
+ "id": "be-fastapi",
308
+ "name": "FastAPI Framework",
309
+ "type": "import",
310
+ "value": ["from fastapi", "import fastapi"],
311
+ "patterns": ["backend/fastapi", "backend/python"],
312
+ "description": "Auto-loads FastAPI patterns",
313
+ "priority": 60,
314
+ "enabled": true
315
+ },
316
+ {
317
+ "id": "be-django",
318
+ "name": "Django Framework",
319
+ "type": "import",
320
+ "value": ["from django", "import django"],
321
+ "patterns": ["backend/django", "backend/python"],
322
+ "description": "Auto-loads Django patterns",
323
+ "priority": 60,
324
+ "enabled": true
325
+ },
326
+ {
327
+ "id": "be-flask",
328
+ "name": "Flask Framework",
329
+ "type": "import",
330
+ "value": ["from flask", "import flask"],
331
+ "patterns": ["backend/flask", "backend/python"],
332
+ "description": "Auto-loads Flask patterns",
333
+ "priority": 60,
334
+ "enabled": true
335
+ },
336
+ {
337
+ "id": "be-go",
338
+ "name": "Go Files",
339
+ "type": "fileExt",
340
+ "value": ["*.go"],
341
+ "patterns": ["backend/go"],
342
+ "description": "Auto-loads Go patterns",
343
+ "priority": 100,
344
+ "enabled": true
345
+ },
346
+ {
347
+ "id": "be-rust",
348
+ "name": "Rust Files",
349
+ "type": "fileExt",
350
+ "value": ["*.rs"],
351
+ "patterns": ["backend/rust"],
352
+ "description": "Auto-loads Rust patterns",
353
+ "priority": 100,
354
+ "enabled": true
355
+ },
356
+ {
357
+ "id": "be-java",
358
+ "name": "Java Files",
359
+ "type": "fileExt",
360
+ "value": ["*.java"],
361
+ "patterns": ["backend/java"],
362
+ "description": "Auto-loads Java patterns",
363
+ "priority": 100,
364
+ "enabled": true
365
+ },
366
+ {
367
+ "id": "be-kotlin",
368
+ "name": "Kotlin Files",
369
+ "type": "fileExt",
370
+ "value": ["*.kt"],
371
+ "patterns": ["backend/kotlin"],
372
+ "description": "Auto-loads Kotlin patterns",
373
+ "priority": 100,
374
+ "enabled": true
375
+ },
376
+ {
377
+ "id": "be-spring",
378
+ "name": "Spring Framework",
379
+ "type": "import",
380
+ "value": ["org.springframework"],
381
+ "patterns": ["backend/spring", "backend/java"],
382
+ "description": "Auto-loads Spring patterns",
383
+ "priority": 60,
384
+ "enabled": true
385
+ },
386
+ {
387
+ "id": "be-prisma",
388
+ "name": "Prisma ORM",
389
+ "type": "import",
390
+ "value": ["@prisma/client", "from.*prisma"],
391
+ "patterns": ["backend/prisma", "backend/database"],
392
+ "description": "Auto-loads Prisma patterns",
393
+ "priority": 60,
394
+ "enabled": true
395
+ },
396
+ {
397
+ "id": "be-prisma-schema",
398
+ "name": "Prisma Schema",
399
+ "type": "fileExt",
400
+ "value": ["*.prisma"],
401
+ "patterns": ["backend/prisma"],
402
+ "description": "Auto-loads Prisma schema patterns",
403
+ "priority": 100,
404
+ "enabled": true
405
+ },
406
+ {
407
+ "id": "be-drizzle",
408
+ "name": "Drizzle ORM",
409
+ "type": "import",
410
+ "value": ["drizzle-orm"],
411
+ "patterns": ["backend/drizzle", "backend/database"],
412
+ "description": "Auto-loads Drizzle patterns",
413
+ "priority": 60,
414
+ "enabled": true
415
+ },
416
+ {
417
+ "id": "be-typeorm",
418
+ "name": "TypeORM",
419
+ "type": "import",
420
+ "value": ["typeorm"],
421
+ "patterns": ["backend/typeorm", "backend/database"],
422
+ "description": "Auto-loads TypeORM patterns",
423
+ "priority": 60,
424
+ "enabled": true
425
+ },
426
+ {
427
+ "id": "be-sequelize",
428
+ "name": "Sequelize ORM",
429
+ "type": "import",
430
+ "value": ["sequelize"],
431
+ "patterns": ["backend/sequelize", "backend/database"],
432
+ "description": "Auto-loads Sequelize patterns",
433
+ "priority": 60,
434
+ "enabled": true
435
+ },
436
+ {
437
+ "id": "be-knex",
438
+ "name": "Knex Query Builder",
439
+ "type": "import",
440
+ "value": ["knex"],
441
+ "patterns": ["backend/knex", "backend/database"],
442
+ "description": "Auto-loads Knex patterns",
443
+ "priority": 60,
444
+ "enabled": true
445
+ },
446
+ {
447
+ "id": "be-mongoose",
448
+ "name": "Mongoose ODM",
449
+ "type": "import",
450
+ "value": ["mongoose"],
451
+ "patterns": ["backend/mongoose", "backend/mongodb"],
452
+ "description": "Auto-loads Mongoose patterns",
453
+ "priority": 60,
454
+ "enabled": true
455
+ },
456
+ {
457
+ "id": "be-graphql",
458
+ "name": "GraphQL",
459
+ "type": "fileExt",
460
+ "value": ["*.graphql", "*.gql"],
461
+ "patterns": ["backend/graphql"],
462
+ "description": "Auto-loads GraphQL patterns",
463
+ "priority": 100,
464
+ "enabled": true
465
+ },
466
+ {
467
+ "id": "be-graphql-import",
468
+ "name": "GraphQL Libraries",
469
+ "type": "import",
470
+ "value": ["graphql", "@apollo", "apollo-server"],
471
+ "patterns": ["backend/graphql"],
472
+ "description": "Auto-loads GraphQL patterns",
473
+ "priority": 60,
474
+ "enabled": true
475
+ },
476
+ {
477
+ "id": "be-trpc",
478
+ "name": "tRPC",
479
+ "type": "import",
480
+ "value": ["@trpc"],
481
+ "patterns": ["backend/trpc"],
482
+ "description": "Auto-loads tRPC patterns",
483
+ "priority": 60,
484
+ "enabled": true
485
+ },
486
+ {
487
+ "id": "be-grpc",
488
+ "name": "gRPC",
489
+ "type": "fileExt",
490
+ "value": ["*.proto"],
491
+ "patterns": ["backend/grpc"],
492
+ "description": "Auto-loads gRPC patterns",
493
+ "priority": 100,
494
+ "enabled": true
495
+ },
496
+ {
497
+ "id": "be-auth-jwt",
498
+ "name": "JWT Authentication",
499
+ "type": "import",
500
+ "value": ["jsonwebtoken", "jose"],
501
+ "patterns": ["backend/auth", "backend/jwt"],
502
+ "description": "Auto-loads JWT auth patterns",
503
+ "priority": 55,
504
+ "enabled": true
505
+ },
506
+ {
507
+ "id": "be-auth-passport",
508
+ "name": "Passport.js Authentication",
509
+ "type": "import",
510
+ "value": ["passport"],
511
+ "patterns": ["backend/auth", "backend/passport"],
512
+ "description": "Auto-loads Passport.js patterns",
513
+ "priority": 55,
514
+ "enabled": true
515
+ },
516
+ {
517
+ "id": "be-auth-nextauth",
518
+ "name": "NextAuth.js",
519
+ "type": "import",
520
+ "value": ["next-auth"],
521
+ "patterns": ["backend/auth", "frontend/nextjs"],
522
+ "description": "Auto-loads NextAuth patterns",
523
+ "priority": 55,
524
+ "enabled": true
525
+ },
526
+ {
527
+ "id": "be-auth-clerk",
528
+ "name": "Clerk Authentication",
529
+ "type": "import",
530
+ "value": ["@clerk"],
531
+ "patterns": ["backend/auth"],
532
+ "description": "Auto-loads Clerk patterns",
533
+ "priority": 55,
534
+ "enabled": true
535
+ },
536
+ {
537
+ "id": "be-auth-supabase",
538
+ "name": "Supabase",
539
+ "type": "import",
540
+ "value": ["@supabase"],
541
+ "patterns": ["backend/supabase", "backend/database"],
542
+ "description": "Auto-loads Supabase patterns",
543
+ "priority": 55,
544
+ "enabled": true
545
+ },
546
+ {
547
+ "id": "be-auth-firebase",
548
+ "name": "Firebase",
549
+ "type": "import",
550
+ "value": ["firebase", "@firebase"],
551
+ "patterns": ["backend/firebase"],
552
+ "description": "Auto-loads Firebase patterns",
553
+ "priority": 55,
554
+ "enabled": true
555
+ },
556
+ {
557
+ "id": "be-redis",
558
+ "name": "Redis",
559
+ "type": "import",
560
+ "value": ["redis", "ioredis"],
561
+ "patterns": ["backend/redis", "backend/caching"],
562
+ "description": "Auto-loads Redis patterns",
563
+ "priority": 55,
564
+ "enabled": true
565
+ },
566
+ {
567
+ "id": "be-queue-bull",
568
+ "name": "Bull Queue",
569
+ "type": "import",
570
+ "value": ["bull", "bullmq"],
571
+ "patterns": ["backend/queues"],
572
+ "description": "Auto-loads queue patterns",
573
+ "priority": 55,
574
+ "enabled": true
575
+ },
576
+ {
577
+ "id": "be-websocket",
578
+ "name": "WebSocket",
579
+ "type": "import",
580
+ "value": ["ws", "socket.io"],
581
+ "patterns": ["backend/websocket"],
582
+ "description": "Auto-loads WebSocket patterns",
583
+ "priority": 55,
584
+ "enabled": true
585
+ },
586
+ {
587
+ "id": "uni-typescript",
588
+ "name": "TypeScript Files",
589
+ "type": "fileExt",
590
+ "value": ["*.ts"],
591
+ "patterns": ["universal/typescript"],
592
+ "description": "Auto-loads TypeScript patterns",
593
+ "priority": 90,
594
+ "enabled": true
595
+ },
596
+ {
597
+ "id": "uni-typescript-config",
598
+ "name": "TypeScript Config",
599
+ "type": "fileExt",
600
+ "value": ["tsconfig.json", "tsconfig.*.json"],
601
+ "patterns": ["universal/typescript/config"],
602
+ "description": "Auto-loads TypeScript config patterns",
603
+ "priority": 95,
604
+ "enabled": true
605
+ },
606
+ {
607
+ "id": "uni-jest-tests",
608
+ "name": "Jest Tests",
609
+ "type": "fileExt",
610
+ "value": ["*.test.ts", "*.test.tsx", "*.test.js", "*.spec.ts", "*.spec.tsx"],
611
+ "patterns": ["universal/testing/jest"],
612
+ "description": "Auto-loads Jest patterns for test files",
613
+ "priority": 100,
614
+ "enabled": true
615
+ },
616
+ {
617
+ "id": "uni-vitest-tests",
618
+ "name": "Vitest Tests",
619
+ "type": "import",
620
+ "value": ["vitest", "from.*vitest"],
621
+ "patterns": ["universal/testing/vitest"],
622
+ "description": "Auto-loads Vitest patterns",
623
+ "priority": 60,
624
+ "enabled": true
625
+ },
626
+ {
627
+ "id": "uni-testing-library",
628
+ "name": "Testing Library",
629
+ "type": "import",
630
+ "value": ["@testing-library"],
631
+ "patterns": ["universal/testing/testing-library"],
632
+ "description": "Auto-loads Testing Library patterns",
633
+ "priority": 60,
634
+ "enabled": true
635
+ },
636
+ {
637
+ "id": "uni-cypress",
638
+ "name": "Cypress E2E",
639
+ "type": "path",
640
+ "value": ["cypress/**/*", "*.cy.ts", "*.cy.tsx"],
641
+ "patterns": ["universal/testing/cypress"],
642
+ "description": "Auto-loads Cypress patterns",
643
+ "priority": 80,
644
+ "enabled": true
645
+ },
646
+ {
647
+ "id": "uni-playwright",
648
+ "name": "Playwright E2E",
649
+ "type": "path",
650
+ "value": ["playwright/**/*", "*.spec.ts"],
651
+ "patterns": ["universal/testing/playwright"],
652
+ "description": "Auto-loads Playwright patterns",
653
+ "priority": 80,
654
+ "enabled": true
655
+ },
656
+ {
657
+ "id": "uni-storybook",
658
+ "name": "Storybook Stories",
659
+ "type": "fileExt",
660
+ "value": ["*.stories.tsx", "*.stories.ts", "*.stories.jsx"],
661
+ "patterns": ["universal/storybook"],
662
+ "description": "Auto-loads Storybook patterns",
663
+ "priority": 100,
664
+ "enabled": true
665
+ },
666
+ {
667
+ "id": "uni-eslint",
668
+ "name": "ESLint Config",
669
+ "type": "fileExt",
670
+ "value": [".eslintrc.*", "eslint.config.*"],
671
+ "patterns": ["universal/linting"],
672
+ "description": "Auto-loads ESLint patterns",
673
+ "priority": 95,
674
+ "enabled": true
675
+ },
676
+ {
677
+ "id": "uni-prettier",
678
+ "name": "Prettier Config",
679
+ "type": "fileExt",
680
+ "value": [".prettierrc*", "prettier.config.*"],
681
+ "patterns": ["universal/formatting"],
682
+ "description": "Auto-loads Prettier patterns",
683
+ "priority": 95,
684
+ "enabled": true
685
+ },
686
+ {
687
+ "id": "uni-docker",
688
+ "name": "Docker Files",
689
+ "type": "fileExt",
690
+ "value": ["Dockerfile*", "docker-compose*.yml", "docker-compose*.yaml"],
691
+ "patterns": ["universal/docker"],
692
+ "description": "Auto-loads Docker patterns",
693
+ "priority": 100,
694
+ "enabled": true
695
+ },
696
+ {
697
+ "id": "uni-kubernetes",
698
+ "name": "Kubernetes Manifests",
699
+ "type": "path",
700
+ "value": ["k8s/**/*.yaml", "k8s/**/*.yml", "kubernetes/**/*"],
701
+ "patterns": ["universal/kubernetes"],
702
+ "description": "Auto-loads Kubernetes patterns",
703
+ "priority": 80,
704
+ "enabled": true
705
+ },
706
+ {
707
+ "id": "uni-terraform",
708
+ "name": "Terraform Files",
709
+ "type": "fileExt",
710
+ "value": ["*.tf", "*.tfvars"],
711
+ "patterns": ["universal/terraform"],
712
+ "description": "Auto-loads Terraform patterns",
713
+ "priority": 100,
714
+ "enabled": true
715
+ },
716
+ {
717
+ "id": "uni-github-actions",
718
+ "name": "GitHub Actions",
719
+ "type": "path",
720
+ "value": [".github/workflows/**/*.yml", ".github/workflows/**/*.yaml"],
721
+ "patterns": ["universal/ci-cd/github-actions"],
722
+ "description": "Auto-loads GitHub Actions patterns",
723
+ "priority": 80,
724
+ "enabled": true
725
+ },
726
+ {
727
+ "id": "uni-gitlab-ci",
728
+ "name": "GitLab CI",
729
+ "type": "fileExt",
730
+ "value": [".gitlab-ci.yml"],
731
+ "patterns": ["universal/ci-cd/gitlab"],
732
+ "description": "Auto-loads GitLab CI patterns",
733
+ "priority": 100,
734
+ "enabled": true
735
+ },
736
+ {
737
+ "id": "uni-package-json",
738
+ "name": "Package.json",
739
+ "type": "fileExt",
740
+ "value": ["package.json"],
741
+ "patterns": ["universal/npm"],
742
+ "description": "Auto-loads npm/package patterns",
743
+ "priority": 95,
744
+ "enabled": true
745
+ },
746
+ {
747
+ "id": "uni-markdown",
748
+ "name": "Markdown Files",
749
+ "type": "fileExt",
750
+ "value": ["*.md", "*.mdx"],
751
+ "patterns": ["universal/documentation"],
752
+ "description": "Auto-loads documentation patterns",
753
+ "priority": 85,
754
+ "enabled": true
755
+ },
756
+ {
757
+ "id": "uni-json-config",
758
+ "name": "JSON Config Files",
759
+ "type": "fileExt",
760
+ "value": ["*.config.json", ".*.json"],
761
+ "patterns": ["universal/config"],
762
+ "description": "Auto-loads config file patterns",
763
+ "priority": 85,
764
+ "enabled": true
765
+ },
766
+ {
767
+ "id": "uni-yaml-config",
768
+ "name": "YAML Config Files",
769
+ "type": "fileExt",
770
+ "value": ["*.yml", "*.yaml"],
771
+ "patterns": ["universal/config"],
772
+ "description": "Auto-loads YAML config patterns",
773
+ "priority": 85,
774
+ "enabled": true
775
+ },
776
+ {
777
+ "id": "uni-env-files",
778
+ "name": "Environment Files",
779
+ "type": "fileExt",
780
+ "value": [".env*"],
781
+ "patterns": ["universal/env-config"],
782
+ "description": "Auto-loads environment config patterns",
783
+ "priority": 90,
784
+ "enabled": true
785
+ },
786
+ {
787
+ "id": "uni-migrations",
788
+ "name": "Database Migrations",
789
+ "type": "path",
790
+ "value": ["migrations/**/*", "db/migrations/**/*"],
791
+ "patterns": ["backend/database", "backend/migrations"],
792
+ "description": "Auto-loads migration patterns",
793
+ "priority": 80,
794
+ "enabled": true
795
+ },
796
+ {
797
+ "id": "uni-seeds",
798
+ "name": "Database Seeds",
799
+ "type": "path",
800
+ "value": ["seeds/**/*", "db/seeds/**/*"],
801
+ "patterns": ["backend/database"],
802
+ "description": "Auto-loads seed patterns",
803
+ "priority": 80,
804
+ "enabled": true
805
+ },
806
+ {
807
+ "id": "uni-api-routes",
808
+ "name": "API Routes Directory",
809
+ "type": "path",
810
+ "value": ["api/**/*", "src/api/**/*"],
811
+ "patterns": ["backend/rest-api"],
812
+ "description": "Auto-loads REST API patterns",
813
+ "priority": 80,
814
+ "enabled": true
815
+ },
816
+ {
817
+ "id": "uni-middleware",
818
+ "name": "Middleware Directory",
819
+ "type": "path",
820
+ "value": ["middleware/**/*", "src/middleware/**/*"],
821
+ "patterns": ["backend/middleware"],
822
+ "description": "Auto-loads middleware patterns",
823
+ "priority": 80,
824
+ "enabled": true
825
+ },
826
+ {
827
+ "id": "uni-utils",
828
+ "name": "Utilities Directory",
829
+ "type": "path",
830
+ "value": ["utils/**/*", "src/utils/**/*", "lib/**/*"],
831
+ "patterns": ["universal/utilities"],
832
+ "description": "Auto-loads utility patterns",
833
+ "priority": 75,
834
+ "enabled": true
835
+ },
836
+ {
837
+ "id": "uni-types",
838
+ "name": "Type Definitions",
839
+ "type": "path",
840
+ "value": ["types/**/*", "src/types/**/*", "@types/**/*"],
841
+ "patterns": ["universal/typescript/types"],
842
+ "description": "Auto-loads type definition patterns",
843
+ "priority": 80,
844
+ "enabled": true
845
+ },
846
+ {
847
+ "id": "uni-dts",
848
+ "name": "Declaration Files",
849
+ "type": "fileExt",
850
+ "value": ["*.d.ts"],
851
+ "patterns": ["universal/typescript/declarations"],
852
+ "description": "Auto-loads TypeScript declaration patterns",
853
+ "priority": 95,
854
+ "enabled": true
855
+ },
856
+ {
857
+ "id": "cmd-npm-test",
858
+ "name": "NPM Test Command",
859
+ "type": "command",
860
+ "value": ["npm test", "pnpm test", "yarn test", "bun test"],
861
+ "patterns": ["universal/testing"],
862
+ "description": "Auto-loads testing patterns when running tests",
863
+ "priority": 20,
864
+ "enabled": true
865
+ },
866
+ {
867
+ "id": "cmd-npm-build",
868
+ "name": "Build Commands",
869
+ "type": "command",
870
+ "value": ["npm run build", "pnpm build", "yarn build", "bun run build"],
871
+ "patterns": ["universal/build"],
872
+ "description": "Auto-loads build patterns",
873
+ "priority": 20,
874
+ "enabled": true
875
+ },
876
+ {
877
+ "id": "cmd-npm-dev",
878
+ "name": "Dev Server Commands",
879
+ "type": "command",
880
+ "value": ["npm run dev", "pnpm dev", "yarn dev"],
881
+ "patterns": ["universal/development"],
882
+ "description": "Auto-loads development patterns",
883
+ "priority": 20,
884
+ "enabled": true
885
+ },
886
+ {
887
+ "id": "cmd-lint",
888
+ "name": "Lint Commands",
889
+ "type": "command",
890
+ "value": ["npm run lint", "eslint", "pnpm lint"],
891
+ "patterns": ["universal/linting"],
892
+ "description": "Auto-loads linting patterns",
893
+ "priority": 20,
894
+ "enabled": true
895
+ },
896
+ {
897
+ "id": "cmd-git",
898
+ "name": "Git Commands",
899
+ "type": "command",
900
+ "value": ["git commit", "git push", "git pull", "git merge"],
901
+ "patterns": ["universal/git"],
902
+ "description": "Auto-loads git workflow patterns",
903
+ "priority": 20,
904
+ "enabled": true
905
+ },
906
+ {
907
+ "id": "cmd-docker",
908
+ "name": "Docker Commands",
909
+ "type": "command",
910
+ "value": ["docker build", "docker-compose", "docker run"],
911
+ "patterns": ["universal/docker"],
912
+ "description": "Auto-loads Docker patterns",
913
+ "priority": 20,
914
+ "enabled": true
915
+ },
916
+ {
917
+ "id": "cmd-kubectl",
918
+ "name": "Kubectl Commands",
919
+ "type": "command",
920
+ "value": ["kubectl"],
921
+ "patterns": ["universal/kubernetes"],
922
+ "description": "Auto-loads Kubernetes patterns",
923
+ "priority": 20,
924
+ "enabled": true
925
+ },
926
+ {
927
+ "id": "kw-interface",
928
+ "name": "TypeScript Interface",
929
+ "type": "keyword",
930
+ "value": ["interface\\s+\\w+"],
931
+ "patterns": ["universal/typescript/interfaces"],
932
+ "description": "Auto-loads interface patterns",
933
+ "priority": 40,
934
+ "enabled": true
935
+ },
936
+ {
937
+ "id": "kw-class",
938
+ "name": "Class Definition",
939
+ "type": "keyword",
940
+ "value": ["class\\s+\\w+"],
941
+ "patterns": ["universal/oop"],
942
+ "description": "Auto-loads OOP patterns",
943
+ "priority": 40,
944
+ "enabled": true
945
+ },
946
+ {
947
+ "id": "kw-async-await",
948
+ "name": "Async/Await",
949
+ "type": "keyword",
950
+ "value": ["async\\s+function", "await\\s+"],
951
+ "patterns": ["universal/async"],
952
+ "description": "Auto-loads async patterns",
953
+ "priority": 40,
954
+ "enabled": true
955
+ },
956
+ {
957
+ "id": "kw-try-catch",
958
+ "name": "Error Handling",
959
+ "type": "keyword",
960
+ "value": ["try\\s*\\{", "catch\\s*\\(", "throw\\s+new"],
961
+ "patterns": ["universal/error-handling"],
962
+ "description": "Auto-loads error handling patterns",
963
+ "priority": 40,
964
+ "enabled": true
965
+ },
966
+ {
967
+ "id": "kw-fetch-api",
968
+ "name": "Fetch API",
969
+ "type": "keyword",
970
+ "value": ["fetch\\(", "axios\\.", "ky\\."],
971
+ "patterns": ["universal/http-client"],
972
+ "description": "Auto-loads HTTP client patterns",
973
+ "priority": 40,
974
+ "enabled": true
975
+ },
976
+ {
977
+ "id": "kw-regex",
978
+ "name": "Regular Expressions",
979
+ "type": "keyword",
980
+ "value": ["new RegExp\\(", "/.*?/[gimsuy]*"],
981
+ "patterns": ["universal/regex"],
982
+ "description": "Auto-loads regex patterns",
983
+ "priority": 35,
984
+ "enabled": true
985
+ },
986
+ {
987
+ "id": "kw-zod",
988
+ "name": "Zod Validation",
989
+ "type": "import",
990
+ "value": ["from.*zod", "import.*zod"],
991
+ "patterns": ["universal/validation/zod"],
992
+ "description": "Auto-loads Zod patterns",
993
+ "priority": 60,
994
+ "enabled": true
995
+ },
996
+ {
997
+ "id": "kw-yup",
998
+ "name": "Yup Validation",
999
+ "type": "import",
1000
+ "value": ["from.*yup", "import.*yup"],
1001
+ "patterns": ["universal/validation/yup"],
1002
+ "description": "Auto-loads Yup patterns",
1003
+ "priority": 60,
1004
+ "enabled": true
1005
+ },
1006
+ {
1007
+ "id": "fe-i18n",
1008
+ "name": "Internationalization",
1009
+ "type": "import",
1010
+ "value": ["react-i18next", "next-intl", "i18next"],
1011
+ "patterns": ["universal/i18n"],
1012
+ "description": "Auto-loads i18n patterns",
1013
+ "priority": 55,
1014
+ "enabled": true
1015
+ },
1016
+ {
1017
+ "id": "uni-monorepo",
1018
+ "name": "Monorepo Config",
1019
+ "type": "fileExt",
1020
+ "value": ["pnpm-workspace.yaml", "lerna.json", "turbo.json", "nx.json"],
1021
+ "patterns": ["universal/monorepo"],
1022
+ "description": "Auto-loads monorepo patterns",
1023
+ "priority": 95,
1024
+ "enabled": true
1025
+ },
1026
+ {
1027
+ "id": "uni-vite-config",
1028
+ "name": "Vite Config",
1029
+ "type": "fileExt",
1030
+ "value": ["vite.config.*"],
1031
+ "patterns": ["universal/vite"],
1032
+ "description": "Auto-loads Vite patterns",
1033
+ "priority": 95,
1034
+ "enabled": true
1035
+ },
1036
+ {
1037
+ "id": "uni-webpack-config",
1038
+ "name": "Webpack Config",
1039
+ "type": "fileExt",
1040
+ "value": ["webpack.config.*"],
1041
+ "patterns": ["universal/webpack"],
1042
+ "description": "Auto-loads Webpack patterns",
1043
+ "priority": 95,
1044
+ "enabled": true
1045
+ },
1046
+ {
1047
+ "id": "be-serverless",
1048
+ "name": "Serverless Framework",
1049
+ "type": "fileExt",
1050
+ "value": ["serverless.yml", "serverless.yaml"],
1051
+ "patterns": ["backend/serverless"],
1052
+ "description": "Auto-loads Serverless patterns",
1053
+ "priority": 95,
1054
+ "enabled": true
1055
+ },
1056
+ {
1057
+ "id": "be-aws-cdk",
1058
+ "name": "AWS CDK",
1059
+ "type": "import",
1060
+ "value": ["aws-cdk-lib", "@aws-cdk"],
1061
+ "patterns": ["backend/aws-cdk"],
1062
+ "description": "Auto-loads AWS CDK patterns",
1063
+ "priority": 60,
1064
+ "enabled": true
1065
+ },
1066
+ {
1067
+ "id": "be-aws-lambda",
1068
+ "name": "AWS Lambda",
1069
+ "type": "import",
1070
+ "value": ["@aws-sdk", "aws-lambda"],
1071
+ "patterns": ["backend/aws-lambda"],
1072
+ "description": "Auto-loads AWS Lambda patterns",
1073
+ "priority": 60,
1074
+ "enabled": true
1075
+ },
1076
+ {
1077
+ "id": "be-openapi",
1078
+ "name": "OpenAPI Spec",
1079
+ "type": "path",
1080
+ "value": ["openapi.yaml", "openapi.yml", "swagger.yaml", "swagger.json"],
1081
+ "patterns": ["backend/openapi"],
1082
+ "description": "Auto-loads OpenAPI patterns",
1083
+ "priority": 95,
1084
+ "enabled": true
1085
+ }
1086
+ ]
1087
+ }