@ulpi/cli 0.1.5 → 0.1.6

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 (109) hide show
  1. package/LICENSE +21 -0
  2. package/dist/{auth-PN7TMQHV-2W4ICG64.js → auth-FWM7MM4Q-VZC3U2XZ.js} +1 -1
  3. package/dist/{auth-BFFBUJUC.js → auth-HDK7ECJL.js} +2 -1
  4. package/dist/{chunk-RJIRWQJD.js → chunk-3BCW6ABU.js} +402 -142
  5. package/dist/{chunk-L3PWNHSA.js → chunk-3WB5CXH4.js} +180 -5
  6. package/dist/{chunk-K4OVPFY2.js → chunk-4UCJIAOU.js} +2 -2
  7. package/dist/chunk-4XTHZVDS.js +109 -0
  8. package/dist/chunk-4ZPOZULQ.js +6522 -0
  9. package/dist/{chunk-SIAQVRKG.js → chunk-5MI5GIXM.js} +48 -2
  10. package/dist/{chunk-KLEASXUR.js → chunk-6ZL6NXMV.js} +1 -1
  11. package/dist/{chunk-AV5RB3N2.js → chunk-76D3BYJD.js} +48 -0
  12. package/dist/{chunk-DOIKS6C5.js → chunk-AWOSRA5F.js} +1 -1
  13. package/dist/{chunk-UCMT5OKP.js → chunk-BFEKZZHM.js} +274 -57
  14. package/dist/chunk-C7CLUQI6.js +1286 -0
  15. package/dist/{chunk-ELTGWMDE.js → chunk-E3B5NROU.js} +7 -7
  16. package/dist/chunk-EJ7TW77N.js +1418 -0
  17. package/dist/{chunk-6OURRFP7.js → chunk-IV6MWETF.js} +383 -168
  18. package/dist/chunk-IZPJHSPX.js +1478 -0
  19. package/dist/chunk-JLHNLM3C.js +228 -0
  20. package/dist/{chunk-P2RESJRN.js → chunk-KYYI23AQ.js} +2 -2
  21. package/dist/chunk-S6ANCSYO.js +1271 -0
  22. package/dist/chunk-SEU7WWNQ.js +1251 -0
  23. package/dist/chunk-SNQ7NAIS.js +453 -0
  24. package/dist/{ulpi-RMMCUAGP-EWYUE7RU.js → chunk-TSLDGT5O.js} +73 -35
  25. package/dist/{chunk-EIWYSP3A.js → chunk-UXHCHOWQ.js} +83 -62
  26. package/dist/chunk-V2H5D6Y3.js +146 -0
  27. package/dist/{chunk-5SCG7UYM.js → chunk-VVEDXI7E.js} +1 -1
  28. package/dist/chunk-VXH5Y4FO.js +6761 -0
  29. package/dist/chunk-WED4LM5N.js +322 -0
  30. package/dist/{chunk-74WVVWJ4.js → chunk-YOKL7RB5.js} +184 -15
  31. package/dist/chunk-Z53CAR7G.js +298 -0
  32. package/dist/{ci-JQ56YIKC.js → ci-X3U2W4HC.js} +124 -26
  33. package/dist/cloud-2F3NLVHN.js +274 -0
  34. package/dist/{codemap-HMYBXJL2.js → codemap-XNGMAF3F.js} +37 -37
  35. package/dist/codex-MB5YTMRT.js +132 -0
  36. package/dist/{config-YYWEN7U2.js → config-OOELBYTH.js} +1 -1
  37. package/dist/dist-2BJYR5EI.js +59 -0
  38. package/dist/dist-3EIQTZHT.js +1380 -0
  39. package/dist/{dist-WAMAQVPK.js → dist-4U5L2X2C.js} +2 -2
  40. package/dist/{dist-4XTJ6HLM.js → dist-54KAMNLO.js} +16 -15
  41. package/dist/dist-6M4MZWZW.js +58 -0
  42. package/dist/dist-6X576SU2.js +27 -0
  43. package/dist/dist-7QOEYLFX.js +103 -0
  44. package/dist/dist-AYBGHEDY.js +2541 -0
  45. package/dist/dist-EK45QNEM.js +45 -0
  46. package/dist/{dist-U7ZIJMZD.js → dist-FKFEJRPX.js} +16 -15
  47. package/dist/dist-GTEJUBBT.js +66 -0
  48. package/dist/dist-HA74OKJZ.js +40 -0
  49. package/dist/{dist-XG2GG5SD.js → dist-HU5RZAON.js} +14 -2
  50. package/dist/dist-IYE3OBRB.js +374 -0
  51. package/dist/{dist-7WLLPWWB.js → dist-JLU26AB6.js} +12 -9
  52. package/dist/{dist-6G7JC2RA.js → dist-KUCI6JFE.js} +49 -9
  53. package/dist/dist-NUEMFZFL.js +33 -0
  54. package/dist/{dist-GWGTAHNM.js → dist-NUXMDXZ3.js} +31 -3
  55. package/dist/{dist-5R4RYNQO.js → dist-YCNWHSLN.js} +15 -5
  56. package/dist/{dist-6MFVWIFF.js → dist-YFFG2ZD6.js} +9 -16
  57. package/dist/dist-ZG4OKCSR.js +15 -0
  58. package/dist/doctor-SI4LLLDZ.js +345 -0
  59. package/dist/{export-import-4A5MWLIA.js → export-import-JFQH4KSJ.js} +1 -1
  60. package/dist/{history-RNUWO4JZ.js → history-5NE46ZAH.js} +7 -7
  61. package/dist/{hooks-installer-K2JXEBNN.js → hooks-installer-UN5JZLDQ.js} +2 -2
  62. package/dist/index.js +394 -618
  63. package/dist/{init-NQWFZPKO.js → init-5FK3VKRT.js} +76 -10
  64. package/dist/job-HIDMAFW2.js +376 -0
  65. package/dist/jobs.memory-PLMMSFHB-VBECCTHN.js +33 -0
  66. package/dist/kiro-VMUHDFGK.js +153 -0
  67. package/dist/{launchd-OYXUAVW6.js → launchd-6AWT54HR.js} +9 -17
  68. package/dist/mcp-PDUD7SGP.js +249 -0
  69. package/dist/mcp-installer-PQU3XOGO.js +259 -0
  70. package/dist/mcp-setup-OA7IB3H3.js +263 -0
  71. package/dist/{memory-D6ZFFCI2.js → memory-ZNAEAK3B.js} +17 -17
  72. package/dist/{ollama-3XCUZMZT-FYKHW4TZ.js → ollama-3XCUZMZT-4JMH6B7P.js} +1 -1
  73. package/dist/{openai-E7G2YAHU-IG33BFYF.js → openai-E7G2YAHU-T3HMBPH7.js} +2 -2
  74. package/dist/portal-JYWVHXDU.js +210 -0
  75. package/dist/prd-Q4J5NVAR.js +408 -0
  76. package/dist/repos-WWZXNN3P.js +271 -0
  77. package/dist/review-integration-5WHEJU2A.js +14 -0
  78. package/dist/{rules-3OFGWHP4.js → rules-Y4VSOY5Y.js} +3 -3
  79. package/dist/run-VPNXEIBY.js +687 -0
  80. package/dist/server-COL4AXKU-P7S7NNF6.js +11 -0
  81. package/dist/server-KKSETHDV-XSSLEENT.js +20 -0
  82. package/dist/{skills-GY2CTPWN.js → skills-QEYU2N27.js} +4 -2
  83. package/dist/start-JYOEL7AJ.js +303 -0
  84. package/dist/{status-SE43TIFJ.js → status-BHQYYGAL.js} +2 -2
  85. package/dist/{templates-O2XDKB5R.js → templates-CBRUJ66V.js} +6 -5
  86. package/dist/tui-DP7736EX.js +61 -0
  87. package/dist/ulpi-5EN6JCAS-LFE3WSL4.js +10 -0
  88. package/dist/{uninstall-KWGSGZTI.js → uninstall-ICUV6DDV.js} +3 -3
  89. package/dist/{update-QYZA4D23.js → update-7ZMAYRBH.js} +3 -3
  90. package/dist/{version-checker-MVB74DEX.js → version-checker-4ZFMZA7Y.js} +2 -2
  91. package/package.json +39 -31
  92. package/dist/chunk-26LLDX2T.js +0 -553
  93. package/dist/chunk-DDRLI6JU.js +0 -331
  94. package/dist/chunk-IFATANHR.js +0 -453
  95. package/dist/chunk-JWUUVXIV.js +0 -13694
  96. package/dist/chunk-LD52XG3X.js +0 -4273
  97. package/dist/chunk-MIAQVCFW.js +0 -39
  98. package/dist/chunk-YYZOFYS6.js +0 -415
  99. package/dist/dist-XD4YI27T.js +0 -26
  100. package/dist/mcp-installer-TOYDP77X.js +0 -124
  101. package/dist/projects-COUJP4ZC.js +0 -271
  102. package/dist/review-KMGP2S25.js +0 -152
  103. package/dist/server-USLHY6GH-F4JSXCWA.js +0 -18
  104. package/dist/server-X5P6WH2M-ULZF5WHZ.js +0 -11
  105. package/dist/skills/ulpi-generate-guardian/SKILL.md +0 -750
  106. package/dist/skills/ulpi-generate-guardian/references/framework-rules.md +0 -849
  107. package/dist/skills/ulpi-generate-guardian/references/language-rules.md +0 -591
  108. package/dist/ui-4SM2SUI6.js +0 -167
  109. package/dist/ui.html +0 -698
@@ -1,849 +0,0 @@
1
- # Framework-Specific Rules
2
-
3
- ## Next.js
4
-
5
- ```yaml
6
- permissions:
7
- auto-approve-next:
8
- trigger: PermissionRequest
9
- matcher: Bash
10
- command_pattern: "next"
11
- decision: allow
12
-
13
- # Build output protection
14
- block-next-cache:
15
- trigger: PreToolUse
16
- matcher: "Write|Edit"
17
- file_pattern: ".next/**"
18
- decision: deny
19
- message: "Do not edit .next/ cache. Run `next build` to regenerate."
20
- locked: true
21
-
22
- preconditions:
23
- warn-app-router-convention:
24
- trigger: PreToolUse
25
- matcher: "Write|Edit"
26
- file_pattern: "app/**/page.tsx"
27
- message: "Page files must export default. Check naming conventions."
28
- priority: 70
29
-
30
- warn-next-config:
31
- trigger: PreToolUse
32
- matcher: "Write|Edit"
33
- file_pattern: "next.config.*"
34
- message: "Next.js config changes may require dev server restart and affect build behavior."
35
- priority: 60
36
-
37
- warn-middleware:
38
- trigger: PreToolUse
39
- matcher: "Write|Edit"
40
- file_pattern: "middleware.ts"
41
- message: "Middleware runs on every request. Verify edge runtime compatibility."
42
- priority: 60
43
-
44
- postconditions:
45
- # Lint on save (Next.js built-in linter)
46
- nextjs-lint-on-save:
47
- trigger: PostToolUse
48
- matcher: "Write|Edit"
49
- file_pattern: "**/*.{ts,tsx}"
50
- run: "npx next lint --quiet"
51
- timeout: 30000
52
- block_on_failure: false
53
-
54
- # Typecheck on save
55
- nextjs-typecheck:
56
- trigger: PostToolUse
57
- matcher: "Write|Edit"
58
- file_pattern: "**/*.{ts,tsx}"
59
- run: "tsc --noEmit"
60
- timeout: 30000
61
- block_on_failure: true
62
- ```
63
-
64
- ## Nuxt
65
-
66
- ```yaml
67
- permissions:
68
- auto-approve-nuxt:
69
- trigger: PermissionRequest
70
- matcher: Bash
71
- command_pattern: "nuxt"
72
- decision: allow
73
-
74
- auto-approve-nuxi:
75
- trigger: PermissionRequest
76
- matcher: Bash
77
- command_pattern: "nuxi"
78
- decision: allow
79
-
80
- # Build output protection
81
- block-nuxt-cache:
82
- trigger: PreToolUse
83
- matcher: "Write|Edit"
84
- file_pattern: ".nuxt/**"
85
- decision: deny
86
- message: "Do not edit .nuxt/ cache. Run `nuxt build` to regenerate."
87
- locked: true
88
-
89
- block-nuxt-output:
90
- trigger: PreToolUse
91
- matcher: "Write|Edit"
92
- file_pattern: ".output/**"
93
- decision: deny
94
- message: "Do not edit .output/. Run `nuxt build` to regenerate."
95
- locked: true
96
-
97
- preconditions:
98
- warn-nuxt-config:
99
- trigger: PreToolUse
100
- matcher: "Write|Edit"
101
- file_pattern: "nuxt.config.*"
102
- message: "Nuxt config changes may require dev server restart."
103
- priority: 60
104
-
105
- postconditions:
106
- nuxt-typecheck:
107
- trigger: PostToolUse
108
- matcher: "Write|Edit"
109
- file_pattern: "**/*.{ts,vue}"
110
- run: "npx nuxi typecheck"
111
- timeout: 30000
112
- block_on_failure: true
113
- ```
114
-
115
- ## NestJS
116
-
117
- ```yaml
118
- permissions:
119
- auto-approve-nest:
120
- trigger: PermissionRequest
121
- matcher: Bash
122
- command_pattern: "nest"
123
- decision: allow
124
-
125
- # Build output protection
126
- block-nest-dist:
127
- trigger: PreToolUse
128
- matcher: "Write|Edit"
129
- file_pattern: "dist/**"
130
- decision: deny
131
- message: "Do not edit dist/. Run `nest build` to regenerate."
132
- locked: true
133
-
134
- preconditions:
135
- warn-module-changes:
136
- trigger: PreToolUse
137
- matcher: "Write|Edit"
138
- file_pattern: "**/*.module.ts"
139
- message: "Module changes affect dependency injection. Verify imports/exports."
140
- priority: 70
141
-
142
- postconditions:
143
- nest-build-check:
144
- trigger: PostToolUse
145
- matcher: "Write|Edit"
146
- file_pattern: "src/**/*.ts"
147
- run: "nest build"
148
- timeout: 30000
149
- block_on_failure: true
150
- ```
151
-
152
- ## SvelteKit
153
-
154
- ```yaml
155
- permissions:
156
- auto-approve-svelte:
157
- trigger: PermissionRequest
158
- matcher: Bash
159
- command_pattern: "svelte-kit"
160
- decision: allow
161
-
162
- # Build output protection
163
- block-svelte-kit-output:
164
- trigger: PreToolUse
165
- matcher: "Write|Edit"
166
- file_pattern: ".svelte-kit/**"
167
- decision: deny
168
- message: "Do not edit .svelte-kit/. Run `svelte-kit build` to regenerate."
169
- locked: true
170
-
171
- preconditions:
172
- warn-svelte-config:
173
- trigger: PreToolUse
174
- matcher: "Write|Edit"
175
- file_pattern: "svelte.config.*"
176
- message: "SvelteKit config changes may require dev server restart."
177
- priority: 60
178
-
179
- postconditions:
180
- svelte-check:
181
- trigger: PostToolUse
182
- matcher: "Write|Edit"
183
- file_pattern: "**/*.{ts,svelte}"
184
- run: "npx svelte-check"
185
- timeout: 30000
186
- block_on_failure: true
187
- ```
188
-
189
- ## Angular
190
-
191
- ```yaml
192
- permissions:
193
- auto-approve-ng:
194
- trigger: PermissionRequest
195
- matcher: Bash
196
- command_pattern: "ng"
197
- decision: allow
198
-
199
- # Build output protection
200
- block-angular-dist:
201
- trigger: PreToolUse
202
- matcher: "Write|Edit"
203
- file_pattern: "dist/**"
204
- decision: deny
205
- message: "Do not edit dist/. Run `ng build` to regenerate."
206
- locked: true
207
-
208
- preconditions:
209
- warn-angular-json:
210
- trigger: PreToolUse
211
- matcher: "Write|Edit"
212
- file_pattern: "angular.json"
213
- message: "angular.json changes affect build configuration and all projects."
214
- priority: 60
215
-
216
- postconditions:
217
- angular-lint:
218
- trigger: PostToolUse
219
- matcher: "Write|Edit"
220
- file_pattern: "**/*.ts"
221
- run: "ng lint"
222
- timeout: 30000
223
- block_on_failure: false
224
- ```
225
-
226
- ## Expo React Native
227
-
228
- ```yaml
229
- permissions:
230
- auto-approve-expo:
231
- trigger: PermissionRequest
232
- matcher: Bash
233
- command_pattern: "expo"
234
- decision: allow
235
-
236
- auto-approve-npx-expo:
237
- trigger: PermissionRequest
238
- matcher: Bash
239
- command_pattern: "npx expo"
240
- decision: allow
241
-
242
- auto-approve-eas:
243
- trigger: PermissionRequest
244
- matcher: Bash
245
- command_pattern: "eas"
246
- decision: allow
247
-
248
- # Build output protection
249
- block-expo-cache:
250
- trigger: PreToolUse
251
- matcher: "Write|Edit"
252
- file_pattern: ".expo/**"
253
- decision: deny
254
- message: "Do not edit .expo/ cache. Run `npx expo start --clear` to regenerate."
255
- locked: true
256
-
257
- preconditions:
258
- warn-app-json:
259
- trigger: PreToolUse
260
- matcher: "Write|Edit"
261
- file_pattern: "app.json"
262
- message: "app.json changes may require a native rebuild (npx expo prebuild --clean)."
263
- priority: 60
264
-
265
- warn-plugins:
266
- trigger: PreToolUse
267
- matcher: "Write|Edit"
268
- file_pattern: "plugins/**"
269
- message: "Plugin changes require prebuild. Run `npx expo prebuild` after editing."
270
- priority: 60
271
-
272
- postconditions:
273
- expo-typecheck:
274
- trigger: PostToolUse
275
- matcher: "Write|Edit"
276
- file_pattern: "**/*.{ts,tsx}"
277
- run: "tsc --noEmit"
278
- timeout: 30000
279
- block_on_failure: true
280
-
281
- expo-config-check:
282
- trigger: PostToolUse
283
- matcher: "Write|Edit"
284
- file_pattern: "app.json"
285
- run: "npx expo config --type public"
286
- timeout: 10000
287
- block_on_failure: false
288
- ```
289
-
290
- ## Laravel
291
-
292
- ```yaml
293
- permissions:
294
- auto-approve-artisan:
295
- trigger: PermissionRequest
296
- matcher: Bash
297
- command_pattern: "php artisan"
298
- decision: allow
299
-
300
- block-migrate-fresh:
301
- trigger: PreToolUse
302
- matcher: Bash
303
- command_pattern: "artisan migrate:fresh"
304
- decision: deny
305
- message: "migrate:fresh drops all tables. Use migrate instead."
306
-
307
- block-db-wipe:
308
- trigger: PreToolUse
309
- matcher: Bash
310
- command_pattern: "artisan db:wipe"
311
- decision: deny
312
- message: "db:wipe destroys the database."
313
-
314
- # Build artifact protection
315
- block-vendor:
316
- trigger: PreToolUse
317
- matcher: "Write|Edit"
318
- file_pattern: "vendor/**"
319
- decision: deny
320
- message: "Do not edit vendor/ directly. Use composer to manage dependencies."
321
- locked: true
322
-
323
- block-storage-framework:
324
- trigger: PreToolUse
325
- matcher: "Write|Edit"
326
- file_pattern: "storage/framework/**"
327
- decision: deny
328
- message: "Do not edit storage/framework/ directly. These are generated cache files."
329
- locked: true
330
-
331
- postconditions:
332
- # Cache clears after config/route/view changes
333
- laravel-config-clear:
334
- trigger: PostToolUse
335
- matcher: "Write|Edit"
336
- file_pattern: "config/**/*.php"
337
- run: "php artisan config:clear"
338
- timeout: 10000
339
- block_on_failure: true
340
-
341
- laravel-route-clear:
342
- trigger: PostToolUse
343
- matcher: "Write|Edit"
344
- file_pattern: "routes/**/*.php"
345
- run: "php artisan route:clear"
346
- timeout: 10000
347
- block_on_failure: true
348
-
349
- laravel-view-clear:
350
- trigger: PostToolUse
351
- matcher: "Write|Edit"
352
- file_pattern: "resources/views/**/*.blade.php"
353
- run: "php artisan view:clear"
354
- timeout: 10000
355
- block_on_failure: true
356
-
357
- # Migration check
358
- migrate-after-migration:
359
- trigger: PostToolUse
360
- matcher: "Write|Edit"
361
- file_pattern: "database/migrations/*.php"
362
- run: "php artisan migrate --pretend"
363
- timeout: 15000
364
- block_on_failure: false
365
-
366
- # Lint on save (if Pint or PHP-CS-Fixer detected)
367
- laravel-lint:
368
- trigger: PostToolUse
369
- matcher: "Write|Edit"
370
- file_pattern: "**/*.php"
371
- run: "./vendor/bin/pint --test" # or php-cs-fixer fix --dry-run
372
- timeout: 30000
373
- block_on_failure: false
374
- ```
375
-
376
- ## Django
377
-
378
- ```yaml
379
- permissions:
380
- auto-approve-manage:
381
- trigger: PermissionRequest
382
- matcher: Bash
383
- command_pattern: "python manage.py"
384
- decision: allow
385
-
386
- block-flush:
387
- trigger: PreToolUse
388
- matcher: Bash
389
- command_pattern: "manage.py flush"
390
- decision: deny
391
- message: "manage.py flush deletes all data."
392
-
393
- postconditions:
394
- # Django system check
395
- django-check:
396
- trigger: PostToolUse
397
- matcher: "Write|Edit"
398
- file_pattern: "**/*.py"
399
- run: "python manage.py check"
400
- timeout: 15000
401
- block_on_failure: true
402
-
403
- # Migration check after model changes
404
- django-migrations-check:
405
- trigger: PostToolUse
406
- matcher: "Write|Edit"
407
- file_pattern: "**/models.py"
408
- run: "python manage.py makemigrations --check --dry-run"
409
- timeout: 15000
410
- block_on_failure: false
411
-
412
- makemigrations:
413
- trigger: PostToolUse
414
- matcher: "Write|Edit"
415
- file_pattern: "**/models.py"
416
- run: "python manage.py makemigrations"
417
- timeout: 30000
418
- block_on_failure: false
419
- ```
420
-
421
- ## FastAPI
422
-
423
- ```yaml
424
- permissions:
425
- auto-approve-uvicorn:
426
- trigger: PermissionRequest
427
- matcher: Bash
428
- command_pattern: "uvicorn"
429
- decision: allow
430
-
431
- auto-approve-fastapi:
432
- trigger: PermissionRequest
433
- matcher: Bash
434
- command_pattern: "fastapi"
435
- decision: allow
436
-
437
- preconditions:
438
- warn-schema-changes:
439
- trigger: PreToolUse
440
- matcher: "Write|Edit"
441
- file_pattern: "**/schemas.py"
442
- message: "Schema changes may affect API contracts."
443
- priority: 70
444
-
445
- postconditions:
446
- # Typecheck on save (use detected: mypy or pyright)
447
- fastapi-typecheck:
448
- trigger: PostToolUse
449
- matcher: "Write|Edit"
450
- file_pattern: "**/*.py"
451
- run: "mypy ." # or pyright .
452
- timeout: 30000
453
- block_on_failure: true
454
- ```
455
-
456
- ## Rails
457
-
458
- ```yaml
459
- permissions:
460
- auto-approve-rails:
461
- trigger: PermissionRequest
462
- matcher: Bash
463
- command_pattern: "rails"
464
- decision: allow
465
-
466
- block-db-drop:
467
- trigger: PreToolUse
468
- matcher: Bash
469
- command_pattern: "rails db:drop"
470
- decision: deny
471
- message: "rails db:drop destroys the database."
472
-
473
- postconditions:
474
- db-migrate:
475
- trigger: PostToolUse
476
- matcher: "Write|Edit"
477
- file_pattern: "db/migrate/*.rb"
478
- run: "rails db:migrate"
479
- timeout: 30000
480
- block_on_failure: false
481
-
482
- # Lint on save (if RuboCop detected)
483
- rubocop-check:
484
- trigger: PostToolUse
485
- matcher: "Write|Edit"
486
- file_pattern: "**/*.rb"
487
- run: "rubocop --format quiet"
488
- timeout: 30000
489
- block_on_failure: false
490
- ```
491
-
492
- ## Prisma
493
-
494
- ```yaml
495
- permissions:
496
- auto-approve-prisma:
497
- trigger: PermissionRequest
498
- matcher: Bash
499
- command_pattern: "prisma"
500
- decision: allow
501
-
502
- block-prisma-reset:
503
- trigger: PreToolUse
504
- matcher: Bash
505
- command_pattern: "prisma migrate reset"
506
- decision: deny
507
- message: "prisma migrate reset is destructive. Use prisma migrate dev."
508
-
509
- postconditions:
510
- prisma-generate:
511
- trigger: PostToolUse
512
- matcher: "Write|Edit"
513
- file_pattern: "prisma/schema.prisma"
514
- run: "npx prisma generate"
515
- timeout: 30000
516
- block_on_failure: true
517
- ```
518
-
519
- ## Drizzle
520
-
521
- ```yaml
522
- permissions:
523
- auto-approve-drizzle:
524
- trigger: PermissionRequest
525
- matcher: Bash
526
- command_pattern: "drizzle-kit"
527
- decision: allow
528
-
529
- postconditions:
530
- drizzle-generate:
531
- trigger: PostToolUse
532
- matcher: "Write|Edit"
533
- file_pattern: "**/schema.ts"
534
- run: "npx drizzle-kit generate"
535
- timeout: 30000
536
- block_on_failure: false
537
- ```
538
-
539
- ## Vitest
540
-
541
- ```yaml
542
- permissions:
543
- auto-approve-vitest:
544
- trigger: PermissionRequest
545
- matcher: Bash
546
- command_pattern: "vitest"
547
- decision: allow
548
- ```
549
-
550
- ## Jest
551
-
552
- ```yaml
553
- permissions:
554
- auto-approve-jest:
555
- trigger: PermissionRequest
556
- matcher: Bash
557
- command_pattern: "jest"
558
- decision: allow
559
- ```
560
-
561
- ## ESLint
562
-
563
- ```yaml
564
- permissions:
565
- auto-approve-eslint:
566
- trigger: PermissionRequest
567
- matcher: Bash
568
- command_pattern: "eslint"
569
- decision: allow
570
-
571
- postconditions:
572
- eslint-on-save:
573
- trigger: PostToolUse
574
- matcher: "Write|Edit"
575
- file_pattern: "**/*.{ts,tsx,js,jsx}"
576
- run: "eslint --quiet {file_path}"
577
- timeout: 15000
578
- block_on_failure: false
579
- ```
580
-
581
- ## Prettier
582
-
583
- ```yaml
584
- permissions:
585
- auto-approve-prettier:
586
- trigger: PermissionRequest
587
- matcher: Bash
588
- command_pattern: "prettier"
589
- decision: allow
590
-
591
- postconditions:
592
- prettier-check-on-save:
593
- trigger: PostToolUse
594
- matcher: "Write|Edit"
595
- file_pattern: "**/*.{ts,tsx,js,jsx,json,css,md}"
596
- run: "prettier --check {file_path}"
597
- timeout: 10000
598
- block_on_failure: false
599
- ```
600
-
601
- ## Biome
602
-
603
- ```yaml
604
- permissions:
605
- auto-approve-biome:
606
- trigger: PermissionRequest
607
- matcher: Bash
608
- command_pattern: "biome"
609
- decision: allow
610
-
611
- postconditions:
612
- biome-check-on-save:
613
- trigger: PostToolUse
614
- matcher: "Write|Edit"
615
- file_pattern: "**/*.{ts,tsx,js,jsx,json}"
616
- run: "biome check {file_path}"
617
- timeout: 15000
618
- block_on_failure: false
619
- ```
620
-
621
- ## TypeScript (tsup/tsc)
622
-
623
- ```yaml
624
- permissions:
625
- auto-approve-tsc:
626
- trigger: PermissionRequest
627
- matcher: Bash
628
- command_pattern: "tsc"
629
- decision: allow
630
-
631
- auto-approve-tsup:
632
- trigger: PermissionRequest
633
- matcher: Bash
634
- command_pattern: "tsup"
635
- decision: allow
636
-
637
- postconditions:
638
- typecheck-on-save:
639
- trigger: PostToolUse
640
- matcher: "Write|Edit"
641
- file_pattern: "**/*.{ts,tsx}" # Detect extensions: add .vue if Vue SFC, .mts/.cts if used
642
- run: "tsc --noEmit"
643
- timeout: 30000
644
- block_on_failure: true
645
- ```
646
-
647
- ## Vite
648
-
649
- ```yaml
650
- permissions:
651
- auto-approve-vite:
652
- trigger: PermissionRequest
653
- matcher: Bash
654
- command_pattern: "vite"
655
- decision: allow
656
-
657
- preconditions:
658
- warn-vite-config:
659
- trigger: PreToolUse
660
- matcher: "Write|Edit"
661
- file_pattern: "vite.config.*"
662
- message: "Vite config changes may require dev server restart."
663
- priority: 60
664
- ```
665
-
666
- ## Turborepo (Monorepo)
667
-
668
- When Turborepo is detected, the skill MUST map the full workspace topology (Step 2b in SKILL.md) and generate monorepo-aware rules. The rules below are templates — replace placeholders with actual package names and paths from the detected topology.
669
-
670
- ### Header — Workspace Topology Comment
671
-
672
- Always include a topology diagram in the YAML header:
673
-
674
- ```yaml
675
- # Workspace Topology:
676
- # {app-package} → {lib-package} (one-way dependency)
677
- # {standalone-package} (no internal deps)
678
- #
679
- # Task Graph (from turbo.json):
680
- # build: depends on ^build
681
- # type-check: depends on ^type-check
682
- # lint: depends on ^lint
683
- ```
684
-
685
- ### Permissions
686
-
687
- ```yaml
688
- permissions:
689
- auto-approve-turbo:
690
- trigger: PermissionRequest
691
- matcher: Bash
692
- command_pattern: "turbo"
693
- decision: allow
694
-
695
- # Build artifact protection
696
- block-turbo-cache:
697
- trigger: PreToolUse
698
- matcher: "Write|Edit"
699
- file_pattern: ".turbo/**"
700
- decision: deny
701
- message: "Do not edit .turbo/ cache. Run `turbo` to regenerate."
702
- locked: true
703
- ```
704
-
705
- ### Preconditions — Package Boundary Enforcement
706
-
707
- Generate one rule per dependency boundary. The `file_pattern` and `import_pattern` should reflect the actual package names.
708
-
709
- ```yaml
710
- preconditions:
711
- # Package boundary: {lib-package} must NOT import from {app-package}
712
- # Generate one rule per forbidden import direction
713
- no-{lib-short}-imports-{app-short}:
714
- enabled: true
715
- trigger: PreToolUse
716
- matcher: "Write|Edit"
717
- file_pattern: "{lib-package-path}/**"
718
- message: "{lib-package} must not import from {app-package}. Dependency flows {app} → {lib}, never reverse."
719
- priority: 80
720
-
721
- # Prefer turbo over direct package manager for tasks defined in turbo.json
722
- prefer-turbo-over-direct:
723
- enabled: true
724
- trigger: PreToolUse
725
- matcher: Bash
726
- command_pattern: "{package_manager} (build|lint|type-check|test)"
727
- message: "Use `turbo run <task>` or `turbo run <task> --filter=<package>` instead of running {package_manager} directly for tasks defined in turbo.json."
728
- priority: 70
729
-
730
- # Critical config cautions
731
- caution-turbo-config:
732
- enabled: true
733
- trigger: PreToolUse
734
- matcher: "Write|Edit"
735
- file_pattern: "turbo.json"
736
- message: "turbo.json defines the task graph and caching for ALL packages. Changes affect the entire monorepo build pipeline."
737
- priority: 90
738
-
739
- caution-root-package-json:
740
- enabled: true
741
- trigger: PreToolUse
742
- matcher: "Write|Edit"
743
- file_pattern: "package.json"
744
- message: "Root package.json defines workspace scripts and shared devDependencies. Changes affect all packages."
745
- priority: 80
746
-
747
- caution-workspace-config:
748
- enabled: true
749
- trigger: PreToolUse
750
- matcher: "Write|Edit"
751
- file_pattern: "pnpm-workspace.yaml" # or package.json workspaces field
752
- message: "Workspace config defines which directories are packages. Changes affect monorepo structure."
753
- priority: 90
754
- ```
755
-
756
- ### Preconditions — Project-Specific Critical Files
757
-
758
- Generate caution rules for files identified as architecturally critical during topology mapping. Examples:
759
-
760
- ```yaml
761
- # Barrel exports (index.ts files that re-export from a package)
762
- caution-barrel-exports:
763
- enabled: true
764
- trigger: PreToolUse
765
- matcher: "Write|Edit"
766
- file_pattern: "{lib-package-path}/src/index.ts"
767
- message: "Barrel export for {lib-package}. Adding/removing exports affects all consumers."
768
- priority: 80
769
-
770
- # Framework middleware, adapters, or other high-impact files
771
- # Customize based on what you find during topology mapping
772
- caution-{critical-file}:
773
- enabled: true
774
- trigger: PreToolUse
775
- matcher: "Write|Edit"
776
- file_pattern: "{path-to-critical-file}"
777
- message: "{Explanation of why this file is critical}"
778
- priority: 80
779
- ```
780
-
781
- ### Postconditions — Per-Package Type Checking
782
-
783
- Generate one postcondition per package. Use `turbo run --filter=` to scope to the affected package.
784
-
785
- ```yaml
786
- postconditions:
787
- # Per-package type checking — one rule per workspace package
788
- type-check-{package-short}-on-change:
789
- enabled: false # postconditions disabled by default
790
- trigger: PostToolUse
791
- matcher: "Write|Edit"
792
- file_pattern: "{package-path}/**/*.{ts,tsx}"
793
- run: "turbo run type-check --filter={package-name}"
794
- timeout: 30000
795
- block_on_failure: true
796
-
797
- # Example for a package with no build step (consumed as source):
798
- # type-check-ui-on-change:
799
- # file_pattern: "packages/ui/**/*.{ts,tsx}"
800
- # run: "turbo run type-check --filter=@maya/ui"
801
-
802
- # Example for an app package:
803
- # type-check-web-on-change:
804
- # file_pattern: "apps/web/**/*.{ts,tsx}"
805
- # run: "turbo run type-check --filter=@maya/web"
806
- ```
807
-
808
- ### Pipelines — Use Turbo Directly
809
-
810
- **IMPORTANT:** Every pipeline MUST include `on_failure`. It is a required field. Omitting it causes a validation error.
811
-
812
- ```yaml
813
- pipelines:
814
- pre-commit-checks:
815
- enabled: true
816
- trigger: "PreToolUse"
817
- matcher: "Bash"
818
- command_pattern: "git commit"
819
- steps:
820
- - name: "type-check"
821
- run: "turbo run type-check"
822
- timeout: 60000
823
- - name: "lint"
824
- run: "turbo run lint"
825
- timeout: 60000
826
- on_failure: "block" # REQUIRED — "block" or "warn"
827
- message: "Pre-commit checks via turbo."
828
- locked: true
829
- priority: 5
830
-
831
- full-check:
832
- enabled: false
833
- steps:
834
- - run: "turbo run type-check"
835
- label: "Type-check all packages"
836
- timeout: 60000
837
- - run: "turbo run lint"
838
- label: "Lint all packages"
839
- timeout: 60000
840
- on_failure: "warn" # REQUIRED — "block" or "warn"
841
- ```
842
-
843
- ### What NOT to Generate for Turborepo
844
-
845
- - **Do NOT use `pnpm build` / `pnpm lint` in postconditions** — use `turbo run <task> --filter=<pkg>` instead
846
- - **Do NOT generate global `tsc --noEmit` postconditions** — each package has its own tsconfig; use turbo to respect the task graph
847
- - **Do NOT omit the topology comment** — it documents the workspace structure for humans
848
- - **Do NOT skip package boundary rules** — they prevent the most common monorepo mistake (reverse imports)
849
- - **Do NOT auto-approve git push** — even in monorepos, pushes affect shared state