@a1st/aix-schema 0.0.3

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 (74) hide show
  1. package/dist/aix.d.ts +51 -0
  2. package/dist/aix.d.ts.map +1 -0
  3. package/dist/aix.js +39 -0
  4. package/dist/aix.js.map +1 -0
  5. package/dist/config.d.ts +12130 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +36 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/core.d.ts +17 -0
  10. package/dist/core.d.ts.map +1 -0
  11. package/dist/core.js +34 -0
  12. package/dist/core.js.map +1 -0
  13. package/dist/editors.d.ts +3288 -0
  14. package/dist/editors.d.ts.map +1 -0
  15. package/dist/editors.js +52 -0
  16. package/dist/editors.js.map +1 -0
  17. package/dist/factory.d.ts +7 -0
  18. package/dist/factory.d.ts.map +1 -0
  19. package/dist/factory.js +15 -0
  20. package/dist/factory.js.map +1 -0
  21. package/dist/hooks.d.ts +106 -0
  22. package/dist/hooks.d.ts.map +1 -0
  23. package/dist/hooks.js +50 -0
  24. package/dist/hooks.js.map +1 -0
  25. package/dist/index.d.ts +18 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +18 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/jsonc.d.ts +10 -0
  30. package/dist/jsonc.d.ts.map +1 -0
  31. package/dist/jsonc.js +16 -0
  32. package/dist/jsonc.js.map +1 -0
  33. package/dist/mcp.d.ts +508 -0
  34. package/dist/mcp.d.ts.map +1 -0
  35. package/dist/mcp.js +92 -0
  36. package/dist/mcp.js.map +1 -0
  37. package/dist/migrate.d.ts +11 -0
  38. package/dist/migrate.d.ts.map +1 -0
  39. package/dist/migrate.js +24 -0
  40. package/dist/migrate.js.map +1 -0
  41. package/dist/normalize.d.ts +36 -0
  42. package/dist/normalize.d.ts.map +1 -0
  43. package/dist/normalize.js +143 -0
  44. package/dist/normalize.js.map +1 -0
  45. package/dist/prompts.d.ts +297 -0
  46. package/dist/prompts.d.ts.map +1 -0
  47. package/dist/prompts.js +50 -0
  48. package/dist/prompts.js.map +1 -0
  49. package/dist/references.d.ts +60 -0
  50. package/dist/references.d.ts.map +1 -0
  51. package/dist/references.js +23 -0
  52. package/dist/references.js.map +1 -0
  53. package/dist/rules.d.ts +534 -0
  54. package/dist/rules.d.ts.map +1 -0
  55. package/dist/rules.js +85 -0
  56. package/dist/rules.js.map +1 -0
  57. package/dist/skill.d.ts +38 -0
  58. package/dist/skill.d.ts.map +1 -0
  59. package/dist/skill.js +18 -0
  60. package/dist/skill.js.map +1 -0
  61. package/dist/skills.d.ts +183 -0
  62. package/dist/skills.d.ts.map +1 -0
  63. package/dist/skills.js +26 -0
  64. package/dist/skills.js.map +1 -0
  65. package/dist/validate.d.ts +17 -0
  66. package/dist/validate.d.ts.map +1 -0
  67. package/dist/validate.js +34 -0
  68. package/dist/validate.js.map +1 -0
  69. package/dist/version.d.ts +3 -0
  70. package/dist/version.d.ts.map +1 -0
  71. package/dist/version.js +5 -0
  72. package/dist/version.js.map +1 -0
  73. package/package.json +42 -0
  74. package/schema.json +1408 -0
package/schema.json ADDED
@@ -0,0 +1,1408 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://x.a1st.dev/schemas/v1/ai.json",
4
+ "title": "ai.json Configuration",
5
+ "description": "Configuration file for aix - unified AI agent and editor configuration",
6
+ "$ref": "#/definitions/AiJsonConfig",
7
+ "definitions": {
8
+ "AiJsonConfig": {
9
+ "type": "object",
10
+ "properties": {
11
+ "$schema": {
12
+ "type": "string",
13
+ "format": "uri",
14
+ "description": "URL to JSON Schema for validation"
15
+ },
16
+ "extends": {
17
+ "anyOf": [
18
+ {
19
+ "type": "string",
20
+ "description": "Single config to extend (npm package or local path)"
21
+ },
22
+ {
23
+ "type": "array",
24
+ "items": {
25
+ "type": "string"
26
+ },
27
+ "description": "Array of configs to extend (resolved in order)"
28
+ }
29
+ ],
30
+ "description": "Extend from other ai.json configs"
31
+ },
32
+ "skills": {
33
+ "type": "object",
34
+ "additionalProperties": {
35
+ "anyOf": [
36
+ {
37
+ "anyOf": [
38
+ {
39
+ "anyOf": [
40
+ {
41
+ "type": "string",
42
+ "description": "Shorthand: version range or local path"
43
+ },
44
+ {
45
+ "type": "object",
46
+ "properties": {
47
+ "git": {
48
+ "type": "string",
49
+ "description": "Git URL (e.g., \"github:user/repo\", \"https://...\")"
50
+ },
51
+ "ref": {
52
+ "type": "string",
53
+ "description": "Git ref (branch, tag, commit)"
54
+ },
55
+ "path": {
56
+ "type": "string",
57
+ "description": "Subdirectory within repo"
58
+ }
59
+ },
60
+ "required": [
61
+ "git"
62
+ ],
63
+ "additionalProperties": false
64
+ },
65
+ {
66
+ "type": "object",
67
+ "properties": {
68
+ "path": {
69
+ "type": "string",
70
+ "description": "Local file or directory path"
71
+ }
72
+ },
73
+ "required": [
74
+ "path"
75
+ ],
76
+ "additionalProperties": false
77
+ },
78
+ {
79
+ "type": "object",
80
+ "properties": {
81
+ "version": {
82
+ "type": "string",
83
+ "description": "Version range from registry"
84
+ },
85
+ "registry": {
86
+ "type": "string",
87
+ "format": "uri",
88
+ "description": "Custom registry URL"
89
+ }
90
+ },
91
+ "required": [
92
+ "version"
93
+ ],
94
+ "additionalProperties": false
95
+ }
96
+ ],
97
+ "description": "Reference to a skill, config, or resource"
98
+ },
99
+ {
100
+ "type": "object",
101
+ "properties": {
102
+ "source": {
103
+ "anyOf": [
104
+ {
105
+ "type": "string",
106
+ "description": "Shorthand: version range or local path"
107
+ },
108
+ {
109
+ "type": "object",
110
+ "properties": {
111
+ "git": {
112
+ "type": "string",
113
+ "description": "Git URL (e.g., \"github:user/repo\", \"https://...\")"
114
+ },
115
+ "ref": {
116
+ "type": "string",
117
+ "description": "Git ref (branch, tag, commit)"
118
+ },
119
+ "path": {
120
+ "type": "string",
121
+ "description": "Subdirectory within repo"
122
+ }
123
+ },
124
+ "required": [
125
+ "git"
126
+ ],
127
+ "additionalProperties": false
128
+ },
129
+ {
130
+ "type": "object",
131
+ "properties": {
132
+ "path": {
133
+ "type": "string",
134
+ "description": "Local file or directory path"
135
+ }
136
+ },
137
+ "required": [
138
+ "path"
139
+ ],
140
+ "additionalProperties": false
141
+ },
142
+ {
143
+ "type": "object",
144
+ "properties": {
145
+ "version": {
146
+ "type": "string",
147
+ "description": "Version range from registry"
148
+ },
149
+ "registry": {
150
+ "type": "string",
151
+ "format": "uri",
152
+ "description": "Custom registry URL"
153
+ }
154
+ },
155
+ "required": [
156
+ "version"
157
+ ],
158
+ "additionalProperties": false
159
+ }
160
+ ],
161
+ "description": "Where to load the skill from"
162
+ },
163
+ "enabled": {
164
+ "type": "boolean",
165
+ "default": true,
166
+ "description": "Whether skill is active"
167
+ },
168
+ "config": {
169
+ "type": "object",
170
+ "additionalProperties": {},
171
+ "description": "Skill-specific configuration"
172
+ }
173
+ },
174
+ "required": [
175
+ "source"
176
+ ],
177
+ "additionalProperties": false
178
+ }
179
+ ],
180
+ "description": "Skill reference (Agent Skills spec compliant)"
181
+ },
182
+ {
183
+ "type": "boolean",
184
+ "const": false
185
+ }
186
+ ]
187
+ },
188
+ "propertyNames": {
189
+ "minLength": 1,
190
+ "maxLength": 64,
191
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
192
+ },
193
+ "description": "Map of skill names to their configurations (or false to disable)",
194
+ "default": {}
195
+ },
196
+ "mcp": {
197
+ "type": "object",
198
+ "additionalProperties": {
199
+ "anyOf": [
200
+ {
201
+ "anyOf": [
202
+ {
203
+ "type": "object",
204
+ "properties": {
205
+ "enabled": {
206
+ "type": "boolean",
207
+ "description": "Whether server is active (default: true)"
208
+ },
209
+ "tools": {
210
+ "anyOf": [
211
+ {
212
+ "type": "array",
213
+ "items": {
214
+ "type": "string"
215
+ },
216
+ "description": "Allowed tool names"
217
+ },
218
+ {
219
+ "type": "object",
220
+ "properties": {
221
+ "include": {
222
+ "type": "array",
223
+ "items": {
224
+ "type": "string"
225
+ },
226
+ "description": "Tools to include"
227
+ },
228
+ "exclude": {
229
+ "type": "array",
230
+ "items": {
231
+ "type": "string"
232
+ },
233
+ "description": "Tools to exclude"
234
+ }
235
+ },
236
+ "additionalProperties": false
237
+ }
238
+ ],
239
+ "description": "Tool access control"
240
+ },
241
+ "disabledTools": {
242
+ "type": "array",
243
+ "items": {
244
+ "type": "string"
245
+ },
246
+ "description": "Tools to disable (Windsurf format)"
247
+ },
248
+ "resources": {
249
+ "anyOf": [
250
+ {
251
+ "type": "array",
252
+ "items": {
253
+ "type": "string"
254
+ },
255
+ "description": "Allowed resource patterns (glob)"
256
+ },
257
+ {
258
+ "type": "object",
259
+ "properties": {
260
+ "include": {
261
+ "type": "array",
262
+ "items": {
263
+ "type": "string"
264
+ },
265
+ "description": "Resource patterns to include"
266
+ },
267
+ "exclude": {
268
+ "type": "array",
269
+ "items": {
270
+ "type": "string"
271
+ },
272
+ "description": "Resource patterns to exclude"
273
+ }
274
+ },
275
+ "additionalProperties": false
276
+ }
277
+ ],
278
+ "description": "Resource access control"
279
+ },
280
+ "autoStart": {
281
+ "type": "boolean",
282
+ "description": "Start with editor (default: true)"
283
+ },
284
+ "restartOnFailure": {
285
+ "type": "boolean",
286
+ "description": "Auto-restart on crash (default: true)"
287
+ },
288
+ "maxRestarts": {
289
+ "type": "integer",
290
+ "exclusiveMinimum": 0,
291
+ "description": "Max restart attempts (default: 3)"
292
+ },
293
+ "command": {
294
+ "type": "string",
295
+ "description": "Command to execute"
296
+ },
297
+ "args": {
298
+ "type": "array",
299
+ "items": {
300
+ "type": "string"
301
+ },
302
+ "description": "Command arguments"
303
+ },
304
+ "env": {
305
+ "type": "object",
306
+ "additionalProperties": {
307
+ "type": "string",
308
+ "description": "Environment variable value. Use ${VAR_NAME} for dynamic resolution."
309
+ },
310
+ "description": "Environment variables"
311
+ },
312
+ "cwd": {
313
+ "type": "string",
314
+ "description": "Working directory"
315
+ },
316
+ "shell": {
317
+ "type": "boolean",
318
+ "description": "Run in shell"
319
+ }
320
+ },
321
+ "required": [
322
+ "command"
323
+ ],
324
+ "additionalProperties": false
325
+ },
326
+ {
327
+ "type": "object",
328
+ "properties": {
329
+ "enabled": {
330
+ "type": "boolean",
331
+ "description": "Whether server is active (default: true)"
332
+ },
333
+ "tools": {
334
+ "anyOf": [
335
+ {
336
+ "type": "array",
337
+ "items": {
338
+ "type": "string"
339
+ },
340
+ "description": "Allowed tool names"
341
+ },
342
+ {
343
+ "type": "object",
344
+ "properties": {
345
+ "include": {
346
+ "type": "array",
347
+ "items": {
348
+ "type": "string"
349
+ },
350
+ "description": "Tools to include"
351
+ },
352
+ "exclude": {
353
+ "type": "array",
354
+ "items": {
355
+ "type": "string"
356
+ },
357
+ "description": "Tools to exclude"
358
+ }
359
+ },
360
+ "additionalProperties": false
361
+ }
362
+ ],
363
+ "description": "Tool access control"
364
+ },
365
+ "disabledTools": {
366
+ "type": "array",
367
+ "items": {
368
+ "type": "string"
369
+ },
370
+ "description": "Tools to disable (Windsurf format)"
371
+ },
372
+ "resources": {
373
+ "anyOf": [
374
+ {
375
+ "type": "array",
376
+ "items": {
377
+ "type": "string"
378
+ },
379
+ "description": "Allowed resource patterns (glob)"
380
+ },
381
+ {
382
+ "type": "object",
383
+ "properties": {
384
+ "include": {
385
+ "type": "array",
386
+ "items": {
387
+ "type": "string"
388
+ },
389
+ "description": "Resource patterns to include"
390
+ },
391
+ "exclude": {
392
+ "type": "array",
393
+ "items": {
394
+ "type": "string"
395
+ },
396
+ "description": "Resource patterns to exclude"
397
+ }
398
+ },
399
+ "additionalProperties": false
400
+ }
401
+ ],
402
+ "description": "Resource access control"
403
+ },
404
+ "autoStart": {
405
+ "type": "boolean",
406
+ "description": "Start with editor (default: true)"
407
+ },
408
+ "restartOnFailure": {
409
+ "type": "boolean",
410
+ "description": "Auto-restart on crash (default: true)"
411
+ },
412
+ "maxRestarts": {
413
+ "type": "integer",
414
+ "exclusiveMinimum": 0,
415
+ "description": "Max restart attempts (default: 3)"
416
+ },
417
+ "url": {
418
+ "type": "string",
419
+ "format": "uri",
420
+ "description": "MCP endpoint URL (Streamable HTTP)"
421
+ },
422
+ "headers": {
423
+ "type": "object",
424
+ "additionalProperties": {
425
+ "type": "string",
426
+ "description": "Environment variable value. Use ${VAR_NAME} for dynamic resolution."
427
+ },
428
+ "description": "HTTP headers"
429
+ },
430
+ "timeout": {
431
+ "type": "number",
432
+ "exclusiveMinimum": 0,
433
+ "description": "Connection timeout (ms)"
434
+ },
435
+ "validateOrigin": {
436
+ "type": "boolean",
437
+ "description": "Validate Origin header (security)"
438
+ }
439
+ },
440
+ "required": [
441
+ "url"
442
+ ],
443
+ "additionalProperties": false
444
+ }
445
+ ]
446
+ },
447
+ {
448
+ "type": "boolean",
449
+ "const": false
450
+ }
451
+ ]
452
+ },
453
+ "propertyNames": {
454
+ "minLength": 1
455
+ },
456
+ "description": "Map of MCP server names to configurations (or false to disable)",
457
+ "default": {}
458
+ },
459
+ "rules": {
460
+ "type": "object",
461
+ "additionalProperties": {
462
+ "anyOf": [
463
+ {
464
+ "anyOf": [
465
+ {
466
+ "type": "string",
467
+ "description": "Source reference: local path (./, ../, /, file:), git URL (https://), or git shorthand (github:)"
468
+ },
469
+ {
470
+ "type": "object",
471
+ "properties": {
472
+ "description": {
473
+ "type": "string",
474
+ "description": "When the rule should apply (required for auto mode)"
475
+ },
476
+ "activation": {
477
+ "type": "string",
478
+ "enum": [
479
+ "always",
480
+ "auto",
481
+ "glob",
482
+ "manual"
483
+ ],
484
+ "default": "always",
485
+ "description": "When the rule should be activated"
486
+ },
487
+ "globs": {
488
+ "type": "array",
489
+ "items": {
490
+ "type": "string"
491
+ },
492
+ "description": "File patterns (required for glob mode)"
493
+ },
494
+ "content": {
495
+ "type": "string",
496
+ "description": "Inline rule content"
497
+ },
498
+ "path": {
499
+ "type": "string",
500
+ "description": "Local file path to rule content"
501
+ },
502
+ "git": {
503
+ "type": "object",
504
+ "properties": {
505
+ "url": {
506
+ "type": "string",
507
+ "description": "Git repository URL or shorthand (e.g., github:user/repo)"
508
+ },
509
+ "path": {
510
+ "type": "string",
511
+ "description": "Path to rule file within repo (default: root)"
512
+ },
513
+ "ref": {
514
+ "type": "string",
515
+ "description": "Branch, tag, or commit (default: main/master)"
516
+ }
517
+ },
518
+ "required": [
519
+ "url"
520
+ ],
521
+ "additionalProperties": false,
522
+ "description": "Git repository source"
523
+ },
524
+ "npm": {
525
+ "type": "object",
526
+ "properties": {
527
+ "npm": {
528
+ "type": "string",
529
+ "description": "NPM package name (e.g., \"@company/rules\")"
530
+ },
531
+ "path": {
532
+ "type": "string",
533
+ "description": "Path to file within package (e.g., \"rules/style.md\")"
534
+ },
535
+ "version": {
536
+ "type": "string",
537
+ "description": "Version to auto-install (omit to use project node_modules)"
538
+ }
539
+ },
540
+ "required": [
541
+ "npm",
542
+ "path"
543
+ ],
544
+ "additionalProperties": false,
545
+ "description": "NPM package source"
546
+ }
547
+ },
548
+ "additionalProperties": false,
549
+ "description": "Rule with metadata and content source"
550
+ }
551
+ ]
552
+ },
553
+ {
554
+ "type": "boolean",
555
+ "const": false
556
+ }
557
+ ]
558
+ },
559
+ "propertyNames": {
560
+ "minLength": 1,
561
+ "maxLength": 64,
562
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
563
+ },
564
+ "description": "Map of rule names to their definitions (or false to disable)",
565
+ "default": {}
566
+ },
567
+ "prompts": {
568
+ "type": "object",
569
+ "additionalProperties": {
570
+ "anyOf": [
571
+ {
572
+ "anyOf": [
573
+ {
574
+ "type": "string",
575
+ "description": "Source reference: local path (./, ../, /, file:), git URL (https://), or git shorthand (github:)"
576
+ },
577
+ {
578
+ "type": "object",
579
+ "properties": {
580
+ "description": {
581
+ "type": "string",
582
+ "description": "Shown in command picker"
583
+ },
584
+ "argumentHint": {
585
+ "type": "string",
586
+ "description": "Hint for arguments (e.g., \"[file] [message]\")"
587
+ },
588
+ "content": {
589
+ "type": "string",
590
+ "description": "Inline prompt content"
591
+ },
592
+ "path": {
593
+ "type": "string",
594
+ "description": "Local file path to prompt content"
595
+ },
596
+ "git": {
597
+ "type": "object",
598
+ "properties": {
599
+ "url": {
600
+ "type": "string",
601
+ "description": "Git repository URL or shorthand (e.g., github:user/repo)"
602
+ },
603
+ "path": {
604
+ "type": "string",
605
+ "description": "Path to rule file within repo (default: root)"
606
+ },
607
+ "ref": {
608
+ "type": "string",
609
+ "description": "Branch, tag, or commit (default: main/master)"
610
+ }
611
+ },
612
+ "required": [
613
+ "url"
614
+ ],
615
+ "additionalProperties": false,
616
+ "description": "Git repository source"
617
+ },
618
+ "npm": {
619
+ "type": "object",
620
+ "properties": {
621
+ "npm": {
622
+ "type": "string",
623
+ "description": "NPM package name (e.g., \"@company/rules\")"
624
+ },
625
+ "path": {
626
+ "type": "string",
627
+ "description": "Path to file within package (e.g., \"rules/style.md\")"
628
+ },
629
+ "version": {
630
+ "type": "string",
631
+ "description": "Version to auto-install (omit to use project node_modules)"
632
+ }
633
+ },
634
+ "required": [
635
+ "npm",
636
+ "path"
637
+ ],
638
+ "additionalProperties": false,
639
+ "description": "NPM package source"
640
+ }
641
+ },
642
+ "additionalProperties": false,
643
+ "description": "Prompt/command definition"
644
+ }
645
+ ]
646
+ },
647
+ {
648
+ "type": "boolean",
649
+ "const": false
650
+ }
651
+ ]
652
+ },
653
+ "propertyNames": {
654
+ "minLength": 1,
655
+ "maxLength": 64,
656
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
657
+ },
658
+ "description": "Map of prompt names to their definitions (or false to disable)",
659
+ "default": {}
660
+ },
661
+ "editors": {
662
+ "anyOf": [
663
+ {
664
+ "type": "array",
665
+ "items": {
666
+ "anyOf": [
667
+ {
668
+ "type": "string",
669
+ "enum": [
670
+ "windsurf",
671
+ "cursor",
672
+ "claude-code",
673
+ "vscode",
674
+ "zed",
675
+ "neovim"
676
+ ],
677
+ "description": "Supported editor/agent"
678
+ },
679
+ {
680
+ "type": "object",
681
+ "additionalProperties": {
682
+ "type": "object",
683
+ "properties": {
684
+ "enabled": {
685
+ "type": "boolean",
686
+ "default": true,
687
+ "description": "Whether to configure this editor"
688
+ },
689
+ "rules": {
690
+ "type": "object",
691
+ "additionalProperties": {
692
+ "anyOf": [
693
+ {
694
+ "anyOf": [
695
+ {
696
+ "type": "string",
697
+ "description": "Source reference: local path (./, ../, /, file:), git URL (https://), or git shorthand (github:)"
698
+ },
699
+ {
700
+ "type": "object",
701
+ "properties": {
702
+ "description": {
703
+ "type": "string",
704
+ "description": "When the rule should apply (required for auto mode)"
705
+ },
706
+ "activation": {
707
+ "type": "string",
708
+ "enum": [
709
+ "always",
710
+ "auto",
711
+ "glob",
712
+ "manual"
713
+ ],
714
+ "default": "always",
715
+ "description": "When the rule should be activated"
716
+ },
717
+ "globs": {
718
+ "type": "array",
719
+ "items": {
720
+ "type": "string"
721
+ },
722
+ "description": "File patterns (required for glob mode)"
723
+ },
724
+ "content": {
725
+ "type": "string",
726
+ "description": "Inline rule content"
727
+ },
728
+ "path": {
729
+ "type": "string",
730
+ "description": "Local file path to rule content"
731
+ },
732
+ "git": {
733
+ "type": "object",
734
+ "properties": {
735
+ "url": {
736
+ "type": "string",
737
+ "description": "Git repository URL or shorthand (e.g., github:user/repo)"
738
+ },
739
+ "path": {
740
+ "type": "string",
741
+ "description": "Path to rule file within repo (default: root)"
742
+ },
743
+ "ref": {
744
+ "type": "string",
745
+ "description": "Branch, tag, or commit (default: main/master)"
746
+ }
747
+ },
748
+ "required": [
749
+ "url"
750
+ ],
751
+ "additionalProperties": false,
752
+ "description": "Git repository source"
753
+ },
754
+ "npm": {
755
+ "type": "object",
756
+ "properties": {
757
+ "npm": {
758
+ "type": "string",
759
+ "description": "NPM package name (e.g., \"@company/rules\")"
760
+ },
761
+ "path": {
762
+ "type": "string",
763
+ "description": "Path to file within package (e.g., \"rules/style.md\")"
764
+ },
765
+ "version": {
766
+ "type": "string",
767
+ "description": "Version to auto-install (omit to use project node_modules)"
768
+ }
769
+ },
770
+ "required": [
771
+ "npm",
772
+ "path"
773
+ ],
774
+ "additionalProperties": false,
775
+ "description": "NPM package source"
776
+ }
777
+ },
778
+ "additionalProperties": false,
779
+ "description": "Rule with metadata and content source"
780
+ }
781
+ ]
782
+ },
783
+ {
784
+ "type": "boolean",
785
+ "const": false
786
+ }
787
+ ]
788
+ },
789
+ "propertyNames": {
790
+ "minLength": 1,
791
+ "maxLength": 64,
792
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
793
+ },
794
+ "description": "Editor-specific rules (in addition to global rules)"
795
+ }
796
+ },
797
+ "additionalProperties": false
798
+ }
799
+ }
800
+ ]
801
+ },
802
+ "description": "Shorthand: array of editor names or configs"
803
+ },
804
+ {
805
+ "type": "object",
806
+ "properties": {
807
+ "windsurf": {
808
+ "type": "object",
809
+ "properties": {
810
+ "enabled": {
811
+ "type": "boolean",
812
+ "default": true,
813
+ "description": "Whether to configure this editor"
814
+ },
815
+ "rules": {
816
+ "type": "object",
817
+ "additionalProperties": {
818
+ "anyOf": [
819
+ {
820
+ "anyOf": [
821
+ {
822
+ "type": "string",
823
+ "description": "Source reference: local path (./, ../, /, file:), git URL (https://), or git shorthand (github:)"
824
+ },
825
+ {
826
+ "type": "object",
827
+ "properties": {
828
+ "description": {
829
+ "type": "string",
830
+ "description": "When the rule should apply (required for auto mode)"
831
+ },
832
+ "activation": {
833
+ "type": "string",
834
+ "enum": [
835
+ "always",
836
+ "auto",
837
+ "glob",
838
+ "manual"
839
+ ],
840
+ "default": "always",
841
+ "description": "When the rule should be activated"
842
+ },
843
+ "globs": {
844
+ "type": "array",
845
+ "items": {
846
+ "type": "string"
847
+ },
848
+ "description": "File patterns (required for glob mode)"
849
+ },
850
+ "content": {
851
+ "type": "string",
852
+ "description": "Inline rule content"
853
+ },
854
+ "path": {
855
+ "type": "string",
856
+ "description": "Local file path to rule content"
857
+ },
858
+ "git": {
859
+ "type": "object",
860
+ "properties": {
861
+ "url": {
862
+ "type": "string",
863
+ "description": "Git repository URL or shorthand (e.g., github:user/repo)"
864
+ },
865
+ "path": {
866
+ "type": "string",
867
+ "description": "Path to rule file within repo (default: root)"
868
+ },
869
+ "ref": {
870
+ "type": "string",
871
+ "description": "Branch, tag, or commit (default: main/master)"
872
+ }
873
+ },
874
+ "required": [
875
+ "url"
876
+ ],
877
+ "additionalProperties": false,
878
+ "description": "Git repository source"
879
+ },
880
+ "npm": {
881
+ "type": "object",
882
+ "properties": {
883
+ "npm": {
884
+ "type": "string",
885
+ "description": "NPM package name (e.g., \"@company/rules\")"
886
+ },
887
+ "path": {
888
+ "type": "string",
889
+ "description": "Path to file within package (e.g., \"rules/style.md\")"
890
+ },
891
+ "version": {
892
+ "type": "string",
893
+ "description": "Version to auto-install (omit to use project node_modules)"
894
+ }
895
+ },
896
+ "required": [
897
+ "npm",
898
+ "path"
899
+ ],
900
+ "additionalProperties": false,
901
+ "description": "NPM package source"
902
+ }
903
+ },
904
+ "additionalProperties": false,
905
+ "description": "Rule with metadata and content source"
906
+ }
907
+ ]
908
+ },
909
+ {
910
+ "type": "boolean",
911
+ "const": false
912
+ }
913
+ ]
914
+ },
915
+ "propertyNames": {
916
+ "minLength": 1,
917
+ "maxLength": 64,
918
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
919
+ },
920
+ "description": "Editor-specific rules (in addition to global rules)"
921
+ },
922
+ "cascadeSettings": {
923
+ "type": "object",
924
+ "additionalProperties": {},
925
+ "description": "Windsurf Cascade settings"
926
+ }
927
+ },
928
+ "additionalProperties": false
929
+ },
930
+ "cursor": {
931
+ "type": "object",
932
+ "properties": {
933
+ "enabled": {
934
+ "type": "boolean",
935
+ "default": true,
936
+ "description": "Whether to configure this editor"
937
+ },
938
+ "rules": {
939
+ "type": "object",
940
+ "additionalProperties": {
941
+ "anyOf": [
942
+ {
943
+ "anyOf": [
944
+ {
945
+ "type": "string",
946
+ "description": "Source reference: local path (./, ../, /, file:), git URL (https://), or git shorthand (github:)"
947
+ },
948
+ {
949
+ "type": "object",
950
+ "properties": {
951
+ "description": {
952
+ "type": "string",
953
+ "description": "When the rule should apply (required for auto mode)"
954
+ },
955
+ "activation": {
956
+ "type": "string",
957
+ "enum": [
958
+ "always",
959
+ "auto",
960
+ "glob",
961
+ "manual"
962
+ ],
963
+ "default": "always",
964
+ "description": "When the rule should be activated"
965
+ },
966
+ "globs": {
967
+ "type": "array",
968
+ "items": {
969
+ "type": "string"
970
+ },
971
+ "description": "File patterns (required for glob mode)"
972
+ },
973
+ "content": {
974
+ "type": "string",
975
+ "description": "Inline rule content"
976
+ },
977
+ "path": {
978
+ "type": "string",
979
+ "description": "Local file path to rule content"
980
+ },
981
+ "git": {
982
+ "type": "object",
983
+ "properties": {
984
+ "url": {
985
+ "type": "string",
986
+ "description": "Git repository URL or shorthand (e.g., github:user/repo)"
987
+ },
988
+ "path": {
989
+ "type": "string",
990
+ "description": "Path to rule file within repo (default: root)"
991
+ },
992
+ "ref": {
993
+ "type": "string",
994
+ "description": "Branch, tag, or commit (default: main/master)"
995
+ }
996
+ },
997
+ "required": [
998
+ "url"
999
+ ],
1000
+ "additionalProperties": false,
1001
+ "description": "Git repository source"
1002
+ },
1003
+ "npm": {
1004
+ "type": "object",
1005
+ "properties": {
1006
+ "npm": {
1007
+ "type": "string",
1008
+ "description": "NPM package name (e.g., \"@company/rules\")"
1009
+ },
1010
+ "path": {
1011
+ "type": "string",
1012
+ "description": "Path to file within package (e.g., \"rules/style.md\")"
1013
+ },
1014
+ "version": {
1015
+ "type": "string",
1016
+ "description": "Version to auto-install (omit to use project node_modules)"
1017
+ }
1018
+ },
1019
+ "required": [
1020
+ "npm",
1021
+ "path"
1022
+ ],
1023
+ "additionalProperties": false,
1024
+ "description": "NPM package source"
1025
+ }
1026
+ },
1027
+ "additionalProperties": false,
1028
+ "description": "Rule with metadata and content source"
1029
+ }
1030
+ ]
1031
+ },
1032
+ {
1033
+ "type": "boolean",
1034
+ "const": false
1035
+ }
1036
+ ]
1037
+ },
1038
+ "propertyNames": {
1039
+ "minLength": 1,
1040
+ "maxLength": 64,
1041
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
1042
+ },
1043
+ "description": "Editor-specific rules (in addition to global rules)"
1044
+ },
1045
+ "aiSettings": {
1046
+ "type": "object",
1047
+ "additionalProperties": {},
1048
+ "description": "Cursor AI settings"
1049
+ }
1050
+ },
1051
+ "additionalProperties": false
1052
+ },
1053
+ "claude-code": {
1054
+ "type": "object",
1055
+ "properties": {
1056
+ "enabled": {
1057
+ "type": "boolean",
1058
+ "default": true,
1059
+ "description": "Whether to configure this editor"
1060
+ },
1061
+ "rules": {
1062
+ "type": "object",
1063
+ "additionalProperties": {
1064
+ "anyOf": [
1065
+ {
1066
+ "anyOf": [
1067
+ {
1068
+ "type": "string",
1069
+ "description": "Source reference: local path (./, ../, /, file:), git URL (https://), or git shorthand (github:)"
1070
+ },
1071
+ {
1072
+ "type": "object",
1073
+ "properties": {
1074
+ "description": {
1075
+ "type": "string",
1076
+ "description": "When the rule should apply (required for auto mode)"
1077
+ },
1078
+ "activation": {
1079
+ "type": "string",
1080
+ "enum": [
1081
+ "always",
1082
+ "auto",
1083
+ "glob",
1084
+ "manual"
1085
+ ],
1086
+ "default": "always",
1087
+ "description": "When the rule should be activated"
1088
+ },
1089
+ "globs": {
1090
+ "type": "array",
1091
+ "items": {
1092
+ "type": "string"
1093
+ },
1094
+ "description": "File patterns (required for glob mode)"
1095
+ },
1096
+ "content": {
1097
+ "type": "string",
1098
+ "description": "Inline rule content"
1099
+ },
1100
+ "path": {
1101
+ "type": "string",
1102
+ "description": "Local file path to rule content"
1103
+ },
1104
+ "git": {
1105
+ "type": "object",
1106
+ "properties": {
1107
+ "url": {
1108
+ "type": "string",
1109
+ "description": "Git repository URL or shorthand (e.g., github:user/repo)"
1110
+ },
1111
+ "path": {
1112
+ "type": "string",
1113
+ "description": "Path to rule file within repo (default: root)"
1114
+ },
1115
+ "ref": {
1116
+ "type": "string",
1117
+ "description": "Branch, tag, or commit (default: main/master)"
1118
+ }
1119
+ },
1120
+ "required": [
1121
+ "url"
1122
+ ],
1123
+ "additionalProperties": false,
1124
+ "description": "Git repository source"
1125
+ },
1126
+ "npm": {
1127
+ "type": "object",
1128
+ "properties": {
1129
+ "npm": {
1130
+ "type": "string",
1131
+ "description": "NPM package name (e.g., \"@company/rules\")"
1132
+ },
1133
+ "path": {
1134
+ "type": "string",
1135
+ "description": "Path to file within package (e.g., \"rules/style.md\")"
1136
+ },
1137
+ "version": {
1138
+ "type": "string",
1139
+ "description": "Version to auto-install (omit to use project node_modules)"
1140
+ }
1141
+ },
1142
+ "required": [
1143
+ "npm",
1144
+ "path"
1145
+ ],
1146
+ "additionalProperties": false,
1147
+ "description": "NPM package source"
1148
+ }
1149
+ },
1150
+ "additionalProperties": false,
1151
+ "description": "Rule with metadata and content source"
1152
+ }
1153
+ ]
1154
+ },
1155
+ {
1156
+ "type": "boolean",
1157
+ "const": false
1158
+ }
1159
+ ]
1160
+ },
1161
+ "propertyNames": {
1162
+ "minLength": 1,
1163
+ "maxLength": 64,
1164
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
1165
+ },
1166
+ "description": "Editor-specific rules (in addition to global rules)"
1167
+ },
1168
+ "permissions": {
1169
+ "type": "object",
1170
+ "additionalProperties": {},
1171
+ "description": "Claude Code permissions"
1172
+ }
1173
+ },
1174
+ "additionalProperties": false
1175
+ }
1176
+ },
1177
+ "additionalProperties": {
1178
+ "type": "object",
1179
+ "properties": {
1180
+ "enabled": {
1181
+ "type": "boolean",
1182
+ "default": true,
1183
+ "description": "Whether to configure this editor"
1184
+ },
1185
+ "rules": {
1186
+ "type": "object",
1187
+ "additionalProperties": {
1188
+ "anyOf": [
1189
+ {
1190
+ "anyOf": [
1191
+ {
1192
+ "type": "string",
1193
+ "description": "Source reference: local path (./, ../, /, file:), git URL (https://), or git shorthand (github:)"
1194
+ },
1195
+ {
1196
+ "type": "object",
1197
+ "properties": {
1198
+ "description": {
1199
+ "type": "string",
1200
+ "description": "When the rule should apply (required for auto mode)"
1201
+ },
1202
+ "activation": {
1203
+ "type": "string",
1204
+ "enum": [
1205
+ "always",
1206
+ "auto",
1207
+ "glob",
1208
+ "manual"
1209
+ ],
1210
+ "default": "always",
1211
+ "description": "When the rule should be activated"
1212
+ },
1213
+ "globs": {
1214
+ "type": "array",
1215
+ "items": {
1216
+ "type": "string"
1217
+ },
1218
+ "description": "File patterns (required for glob mode)"
1219
+ },
1220
+ "content": {
1221
+ "type": "string",
1222
+ "description": "Inline rule content"
1223
+ },
1224
+ "path": {
1225
+ "type": "string",
1226
+ "description": "Local file path to rule content"
1227
+ },
1228
+ "git": {
1229
+ "type": "object",
1230
+ "properties": {
1231
+ "url": {
1232
+ "type": "string",
1233
+ "description": "Git repository URL or shorthand (e.g., github:user/repo)"
1234
+ },
1235
+ "path": {
1236
+ "type": "string",
1237
+ "description": "Path to rule file within repo (default: root)"
1238
+ },
1239
+ "ref": {
1240
+ "type": "string",
1241
+ "description": "Branch, tag, or commit (default: main/master)"
1242
+ }
1243
+ },
1244
+ "required": [
1245
+ "url"
1246
+ ],
1247
+ "additionalProperties": false,
1248
+ "description": "Git repository source"
1249
+ },
1250
+ "npm": {
1251
+ "type": "object",
1252
+ "properties": {
1253
+ "npm": {
1254
+ "type": "string",
1255
+ "description": "NPM package name (e.g., \"@company/rules\")"
1256
+ },
1257
+ "path": {
1258
+ "type": "string",
1259
+ "description": "Path to file within package (e.g., \"rules/style.md\")"
1260
+ },
1261
+ "version": {
1262
+ "type": "string",
1263
+ "description": "Version to auto-install (omit to use project node_modules)"
1264
+ }
1265
+ },
1266
+ "required": [
1267
+ "npm",
1268
+ "path"
1269
+ ],
1270
+ "additionalProperties": false,
1271
+ "description": "NPM package source"
1272
+ }
1273
+ },
1274
+ "additionalProperties": false,
1275
+ "description": "Rule with metadata and content source"
1276
+ }
1277
+ ]
1278
+ },
1279
+ {
1280
+ "type": "boolean",
1281
+ "const": false
1282
+ }
1283
+ ]
1284
+ },
1285
+ "propertyNames": {
1286
+ "minLength": 1,
1287
+ "maxLength": 64,
1288
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
1289
+ },
1290
+ "description": "Editor-specific rules (in addition to global rules)"
1291
+ }
1292
+ },
1293
+ "additionalProperties": false
1294
+ }
1295
+ }
1296
+ ],
1297
+ "description": "Editor-specific configurations"
1298
+ },
1299
+ "hooks": {
1300
+ "type": "object",
1301
+ "additionalProperties": {
1302
+ "type": "array",
1303
+ "items": {
1304
+ "type": "object",
1305
+ "properties": {
1306
+ "matcher": {
1307
+ "type": "string",
1308
+ "description": "Pattern to match (regex supported, editor-specific)"
1309
+ },
1310
+ "hooks": {
1311
+ "type": "array",
1312
+ "items": {
1313
+ "type": "object",
1314
+ "properties": {
1315
+ "command": {
1316
+ "type": "string",
1317
+ "description": "Shell command to execute"
1318
+ },
1319
+ "timeout": {
1320
+ "type": "number",
1321
+ "exclusiveMinimum": 0,
1322
+ "description": "Timeout in seconds"
1323
+ },
1324
+ "show_output": {
1325
+ "type": "boolean",
1326
+ "description": "Whether to show command output in UI"
1327
+ },
1328
+ "working_directory": {
1329
+ "type": "string",
1330
+ "description": "Working directory for the command"
1331
+ }
1332
+ },
1333
+ "required": [
1334
+ "command"
1335
+ ],
1336
+ "additionalProperties": false,
1337
+ "description": "Hook action configuration"
1338
+ },
1339
+ "description": "Hooks to execute when matched"
1340
+ }
1341
+ },
1342
+ "required": [
1343
+ "hooks"
1344
+ ],
1345
+ "additionalProperties": false,
1346
+ "description": "Hook matcher configuration"
1347
+ }
1348
+ },
1349
+ "propertyNames": {
1350
+ "enum": [
1351
+ "pre_tool_use",
1352
+ "post_tool_use",
1353
+ "pre_file_read",
1354
+ "post_file_read",
1355
+ "pre_file_write",
1356
+ "post_file_write",
1357
+ "pre_command",
1358
+ "post_command",
1359
+ "pre_mcp_tool",
1360
+ "post_mcp_tool",
1361
+ "pre_prompt",
1362
+ "session_start",
1363
+ "session_end",
1364
+ "agent_stop"
1365
+ ]
1366
+ },
1367
+ "description": "Lifecycle hooks for AI agent events"
1368
+ },
1369
+ "aix": {
1370
+ "type": "object",
1371
+ "properties": {
1372
+ "cache": {
1373
+ "type": "object",
1374
+ "properties": {
1375
+ "maxBackups": {
1376
+ "type": "integer",
1377
+ "minimum": 1,
1378
+ "maximum": 100,
1379
+ "default": 5,
1380
+ "description": "Maximum number of backup files to keep per file"
1381
+ },
1382
+ "maxBackupAgeDays": {
1383
+ "type": "integer",
1384
+ "minimum": 1,
1385
+ "maximum": 365,
1386
+ "default": 30,
1387
+ "description": "Delete backups older than this many days"
1388
+ },
1389
+ "maxCacheAgeDays": {
1390
+ "type": "integer",
1391
+ "minimum": 1,
1392
+ "maximum": 365,
1393
+ "default": 7,
1394
+ "description": "Delete git-sourced cache entries older than this many days"
1395
+ }
1396
+ },
1397
+ "additionalProperties": false,
1398
+ "description": "Cache and backup retention settings"
1399
+ }
1400
+ },
1401
+ "additionalProperties": false,
1402
+ "description": "aix CLI tool settings"
1403
+ }
1404
+ },
1405
+ "additionalProperties": false
1406
+ }
1407
+ }
1408
+ }