{
  "_": "Профили приёмки. Проект определяется по первому совпавшему правилу сверху вниз.",
  "_поля": {
    "match": "подстроки, которые ищутся в пути проекта и в git remote",
    "files": "файлы, которые должны существовать в корне (все)",
    "skill": "скилл-проверяльщик, который вызывает агент — он умеет ходить в живой сервис",
    "checks": "механические команды, которые CLI прогоняет сам и пишет в журнал",
    "note": "чем эта приёмка отличается и что она НЕ доказывает"
  },
  "profiles": [
    {
      "id": "chekan",
      "match": [
        "chekan",
        "чекан"
      ],
      "skill": null,
      "checks": [
        ".venv/bin/python -m pytest tests/",
        "python3 install.py --check"
      ],
      "note": "сам инструмент: полная сюита плюс сухой прогон установщика — он ставится на три машины, и молча сломанная установка дороже упавшего теста"
    },
    {
      "id": "avtero",
      "match": [
        "avtero",
        "автеро"
      ],
      "skill": "avtero-bot-e2e",
      "checks": [
        "python3 -m pytest"
      ],
      "note": "гоняет настоящие хендлеры aiogram против живого API :8201, без браузера"
    },
    {
      "id": "vakhunter",
      "match": [
        "vakhunter",
        "вакхантер"
      ],
      "skill": "vakhunter-e2e",
      "checks": [
        "python3 -m pytest"
      ],
      "note": "БД-смоук + парсеры + живой сценарий тест-юзером"
    },
    {
      "id": "investpilot",
      "match": [
        "investpilot",
        "кодинвест"
      ],
      "skill": "investpilot-e2e",
      "checks": [
        "python3 -m pytest"
      ],
      "note": "бот owner-only, tg-web-e2e для него бесполезен by design"
    },
    {
      "id": "zemlya",
      "match": [
        "zemlya",
        "zbrcheck",
        "земля"
      ],
      "skill": "zemlya-report-e2e",
      "checks": [
        "python3 -m pytest"
      ],
      "note": "прогон проверки участка на реальном КН + скриншоты отчёта"
    },
    {
      "id": "ceberspost",
      "match": [
        "ceberspost",
        "cebersLog"
      ],
      "skill": "ceberspost-verify",
      "checks": [],
      "note": "конфиг-смоук ловит мёртвые пути в projects.yaml"
    },
    {
      "id": "winkod",
      "match": [
        "winkod",
        "винкод",
        "cebersrun"
      ],
      "skill": "winkod-verify",
      "checks": [],
      "note": "запуск .exe под bundled-wine"
    },
    {
      "id": "onec",
      "match": [
        "epf",
        "erf",
        "новаяконфа",
        "обработки",
        "onec",
        "1c",
        "1с",
        "yaxunit",
        "vanessa",
        "features"
      ],
      "skill": "1c-testbench",
      "checks": [
        "vrunner run --command \"RunUnitTests\""
      ],
      "note": "доказано вживую: файловая база и модульные тесты YAxUnit (зелёный даёт 0, красный 1, отчёт JUnit разбирается); НЕ доказано: UI/BDD-тесты форм через Vanessa-Automation — на macOS запуск открывает интерактивный клиент 1С и виснет без результата (проверено 21.08.2026), и клиент-серверная база на PostgreSQL"
    },
    {
      "id": "telegram-bot",
      "files": [
        "bot.py"
      ],
      "skill": "tg-web-e2e",
      "checks": [
        "python3 -m pytest"
      ],
      "note": "универсальный прогон бота живым аккаунтом через web.telegram.org"
    },
    {
      "id": "pdf",
      "match": [
        "pdf",
        "кп",
        "инвойс"
      ],
      "skill": "pdf-visual-qa",
      "checks": [],
      "note": "документ не готов, пока не посмотрел на отрендеренные страницы"
    },
    {
      "id": "web",
      "files": [
        "package.json"
      ],
      "skill": null,
      "checks": [
        "npm run -s build",
        "npm test --silent --if-present"
      ],
      "note": "фронт проверяется браузером: откройте превью и пройдите сценарий"
    },
    {
      "id": "python",
      "files": [
        "pyproject.toml"
      ],
      "skill": null,
      "checks": [
        "python3 -m pytest"
      ],
      "note": "generic: только тесты, живого сценария нет"
    },
    {
      "id": "android",
      "files": [
        "gradlew"
      ],
      "skill": "android-e2e",
      "checks": [
        "./gradlew testDebugUnitTest -q"
      ],
      "note": "Android-приложение: проверка модульных тестов и сборки через Gradle"
    },
    {
      "id": "golang",
      "files": [
        "go.mod"
      ],
      "skill": null,
      "checks": [
        "go test ./..."
      ],
      "note": "Go-проект: запуск пакетов тестов go test"
    },
    {
      "id": "rust",
      "files": [
        "Cargo.toml"
      ],
      "skill": null,
      "checks": [
        "cargo test"
      ],
      "note": "Rust-проект: запуск тестов cargo test"
    }
  ],
  "fallback": {
    "id": "generic",
    "skill": null,
    "checks": [],
    "note": "профиль не опознан. Приёмка требует хотя бы одной реальной команды — назовите её сами через `chekan run ... --kind accept`"
  }
}