{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://unpkg.com/@7n/rules/schemas/n-rules.json",
  "title": "n-rules project config",
  "description": "Конфігурація правил і skills для CLI @7n/rules (файл .n-rules.json у корені репозиторію).",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "type": "string",
      "format": "uri",
      "description": "Посилання на JSON Schema для автодоповнення та валідації в IDE; очікувано https://unpkg.com/@7n/rules/schemas/n-rules.json"
    },
    "rules": {
      "type": "array",
      "description": "Ідентифікатори правил без префікса n- (відповідають файлам n-<id>.mdc).",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "skills": {
      "type": "array",
      "description": "Ідентифікатори skills без префікса n- (у пакеті — підкаталог skills/<id>/, у проєкті після синку — .cursor/skills/n-<id>/). Якщо відсутній, CLI доповнить списком skills з пакету.",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "plugins": {
      "type": "array",
      "description": "npm-пакети-плагіни з додатковими правилами (rules/<id>/ за контрактом ядра). Якщо поле відсутнє — CLI автоматично визначає CI-провайдера (файли CI, потім repository.url) і дописує сюди результат. Порожній масив — плагіни вимкнено.",
      "items": {
        "type": "string",
        "pattern": "^(@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$"
      }
    },
    "disable-rules": {
      "type": "array",
      "description": "Список rule id (без префікса n-), які не потрібно автододавати в `.n-rules.json` під час запуску CLI.",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "disable-skills": {
      "type": "array",
      "description": "Список skill id (без префікса n-), які не потрібно автододавати в `.n-rules.json` під час запуску CLI.",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "ignore": {
      "type": "array",
      "description": "Директорії, що повністю виключаються з обходу check-скриптів CLI (npx @7n/rules fix ...) і AI-модифікацій (AI не редагує, не видаляє, не створює файли). Шляхи відносно кореня репозиторію (posix). Приклади: vendored Helm-чарти, генеровані маніфести, legacy-дерева. Стандартні виключення (node_modules, .git, dist, coverage, .turbo, .next) застосовуються завжди — додавати їх не треба.",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "version": {
      "type": "string",
      "description": "Застаріле поле, ігнорується CLI. Правила завжди копіюються з каталогу mdc/ установленого пакету (node_modules або кеш npx); змініть версію через оновлення залежності."
    },
    "claude-config": {
      "type": "boolean",
      "description": "Чи синхронізувати `.claude/settings.json` (hooks + permissions, merge зі збереженням користувацьких полів) і slash-команди checks. За замовчуванням true.",
      "default": true
    }
  },
  "required": [
    "rules"
  ]
}
