Усі налаштування
Усі параметри в просторі імен devManager.*.
Редагування:
Ctrl+,→ пошук@ext:vaulttec-dev.snakeflow-dev-manager- Або
.vscode/settings.json(workspace, окремо для кожного проєкту)
Примітка: Quality Hub реєструє понад 90 провайдерів і сотні ключів
devManager.quality.<providerId>.*. Таблиці нижче — репрезентативні приклади за категоріями. Повний актуальний перелік переглядайте в Налаштуваннях IDE:Ctrl+,→ пошукdevManager.quality.— біля кожного ключа є вбудований опис.
Проєкт
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
devManager.project.name | string | auto | Ідентифікатор проєкту |
devManager.project.dir | string | auto | Абсолютний шлях до кореня |
devManager.project.packageManager | enum | "auto" | auto | npm | pnpm | yarn | bun |
devManager.project.servers | array | [] | Конфігурації dev-серверів |
devManager.project.composePath | string | "" | Шлях до Compose (порожньо = авто) |
devManager.project.containerActions | array | auto | Меню контейнерів |
Git і GitHub
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
devManager.git.defaultBranch | string | "main" | Fallback назви гілки |
devManager.git.protectedBranches | string[] | ["main","master","develop","staging","production"] | Підтвердження перед видаленням |
devManager.github.defaultMilestone | string | "" | Milestone для нових issues |
devManager.prToChat.prompt | string | "" | Промпт для PR у чат |
devManager.issueToChat.prompt | string | "" | Промпт для Issue у чат |
SnakeFlow Cloud
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
devManager.cloud.apiUrl | string | https://snakeflow.pages.dev | Базовий URL сервісу синхронізації (HTTPS). Змінюйте лише якщо використовуєте власний хост. |
Детальніше: Синхронізація налаштувань у хмарі → — команди та приватність.
Team Tracker
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
devManager.team.enabled | boolean | false | Увімкнено — облік активних хвилин за UTC-добу та відправка в team API після входу. |
devManager.team.idleWindowMinutes | number | 5 | Заявлене вікно тиші (1–15). Зміна перезапускає Team Tracker. Якщо ви вже в workspace, collector фактично бере мінімум idle_window_minutes з сервера для кожного workspace. Без membership використовується вбудовані 5 хв до вступу в workspace. |
devManager.team.useActivityWatch | boolean | true | Використовувати локальний ActivityWatch для системної миші/клавіатури. |
devManager.team.requireActivityWatch | boolean | true | Жорстка вимога: хвилини не рахуються, доки ActivityWatch недоступний. |
devManager.team.activityWatchUrl | string | http://localhost:5600 | Базовий URL REST API локального aw-server. |
devManager.team.requireTracking | boolean | false | Якщо true — попередження, коли трекінг вимкнено і сесію не запущено. |
devManager.team.idleSleepWindow | string | "" | Локальний інтервал HH:MM-HH:MM, у якому collector примусово IDLE. Порожньо = вимкнено. Див. Інтервал сну. |
Allowlist програм (regex по назві вікна / app з ActivityWatch) — це не параметр devManager.*: адмін workspace налаштовує на сервері (вкладка Cloud Team або команда SnakeFlow: Team Tracker — Edit App Allowlist). Детальніше: Team Tracker → — двофакторна активність, інтервал сну, статус-бар, ActivityWatch, internal/external, лог.
Docker і CI
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
devManager.docker.composeCommand | string | "docker compose" | CLI Compose |
devManager.ci.workflowsPath | string | ".github/workflows" | Шлях до workflow GitHub Actions |
AI (Gemini + Dictation)
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
devManager.gemini.apiKey | string | "" | Ключ Google Gemini для заголовків issues та голосового введення |
devManager.gemini.model | string | "gemini-2.5-flash" | Назва моделі |
devManager.gemini.dictationLanguage | enum | "auto" | Мова для транскрибації голосового введення. auto = Gemini визначає автоматично. Варіанти: uk, en, de, fr, es, pl, it, pt, nl, cs, ja, zh, ko |
Детальніше: Голосове введення →
Quality Hub — загальне
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
devManager.quality.customChecks | array | [] | Кастомні перевірки |
devManager.quality.skipDirs | string[] | [] | Додаткові назви папок (не glob), що додаються до вбудованих виключень |
devManager.quality.skipFiles | string[] | [] | Відносні шляхи від кореня проєкту (слеші /), шаблони на кшталт *.vsix або **/file.ext — для багатьох built-in і агрегації Semgrep |
devManager.quality.timeout | number | 30 | Макс. час перевірки (хв) |
devManager.quality.maxBuffer | number | 50 | Макс. stdout (МБ) |
devManager.quality.chatReport | enum | "onFail" | auto | onFail | manual | never — коли відкривати чат зі звітом після прогону |
devManager.quality.chatPrompt | string | "" | Текст на початку звіту в чат |
Quality Hub — хмарні провайдери
Кожен сервіс має devManager.quality.<id>.enabled (більшість за замовчуванням вимкнені; CodeQL — увімкнений). Обов’язкові поля різні — немає одного універсального token для всіх.
Повний перелік ключів і поведінка: Хмарні провайдери →
Ідентифікатори в налаштуваннях (частина з них описана в хмарних провайдерах): sonarcloud, snyk, codecov, coveralls, codeclimate, codacy, deepsource, coderabbit, qodo, greptile, cubic, codeant, qlty, codeql, aikido, socket, … — повний список шукайте devManager.quality. у Налаштуваннях.
Приклади (деталі — у статті про cloud):
"devManager.quality.sonarcloud.enabled": true,"devManager.quality.sonarcloud.token": "","devManager.quality.sonarcloud.projectKey": "","devManager.quality.sonarcloud.serverUrl": "https://sonarcloud.io",
"devManager.quality.snyk.token": "","devManager.quality.snyk.orgId": "",
"devManager.quality.coderabbit.enabled": true,"devManager.quality.coderabbit.apiKey": ""Quality Hub — вбудовані перевірки
Замість <check> — назва перевірки. Спільне:
| Параметр | Тип | За замовчуванням |
|---|---|---|
devManager.quality.builtin.<check>.enabled | boolean | true |
Приклади порогів:
"devManager.quality.builtin.lineCount.warnLines": 300,"devManager.quality.builtin.lineCount.failLines": 500,
"devManager.quality.builtin.functionLength.warnLines": 40,"devManager.quality.builtin.functionLength.failLines": 80,
"devManager.quality.builtin.complexity.warnScore": 10,"devManager.quality.builtin.complexity.failScore": 20,
"devManager.quality.builtin.fileSize.warnKb": 50,"devManager.quality.builtin.fileSize.failKb": 200,
"devManager.quality.builtin.importDepth.warnDepth": 4,"devManager.quality.builtin.importDepth.failDepth": 6,
"devManager.quality.builtin.dependencyCount.warnAt": 50,"devManager.quality.builtin.dependencyCount.failAt": 100,
"devManager.quality.builtin.parameterCount.warnAt": 4,"devManager.quality.builtin.parameterCount.failAt": 7,
"devManager.quality.builtin.jscpd.threshold": 5,"devManager.quality.builtin.jscpd.minLines": 5,
"devManager.quality.builtin.trivy.failOnSeverity": "HIGH","devManager.quality.builtin.trivy.warnOnSeverity": "MEDIUM","devManager.quality.builtin.trivy.path": "trivy",
"devManager.quality.builtin.golangciLint.warnAt": 5,"devManager.quality.builtin.golangciLint.failAt": 20,"devManager.quality.builtin.golangciLint.path": "golangci-lint",
"devManager.quality.builtin.bandit.path": "bandit","devManager.quality.builtin.bearer.path": "bearer",
"devManager.quality.builtin.returnTypes.warnAt": 10,"devManager.quality.builtin.returnTypes.failAt": 50,
"devManager.quality.builtin.noManualMigrations.enabled": true,"devManager.quality.builtin.noManualMigrations.severity": "error","devManager.quality.builtin.noManualMigrations.adapters": ["drizzle", "prisma", "atlas"],"devManager.quality.builtin.noManualMigrations.checkRemoved": true,"devManager.quality.builtin.noManualMigrations.gitLookback": 50,
"devManager.quality.builtin.prismaMigrateStatus.realtime": true,
"devManager.quality.builtin.squawk.dataRisk": "warn","devManager.quality.builtin.squawk.requireDownMigration": false,
"devManager.quality.builtin.migrationsCiGate.enabled": true,
"devManager.quality.semgrep.config": "auto"Назви вбудованих перевірок:
lineCount · functionLength · complexity · fileSize · longLines · importDepth · directoryDepth · dependencyCount · todoCount · commentedCode · duplicateFiles · testRatio · mixedIndent · encoding · secretLeaks · debugLeaks · gitignoreCheck · magicNumbers · parameterCount · barrelFiles · couplingMetrics · crossLayerImports · componentInventory · heavyImports · anyCoverage · jsdocCoverage · lcovCoverage · actionsAudit · emptyTests · jscpd · knip · dependencyCruiser · pkgAudit · outdatedDeps · licenseCheck · hadolint · shellcheck · golangciLint · bearer · stryker · trivy · bandit · semgrep · act · envConsistency · lockfileSync · nodeVersionConsistency · readmeCheck · changelogCheck · codeownersCheck · tscCheck · asyncAwaitMisuse · errorHandling · returnTypes · reactHookRules · a11yCheck · yamllint · spectral · checkov · sqlfluff · markdownlint · attw · publint · lockfileLint · npmProvenance · syncpack · manypkg · scorecard · typeCoverage · commitlint · noFocusedTests · noManualMigrations · migrationsCiGate · stylelint · prettierCheck · sizeLimit · lighthouseCi · oasdiff · graphqlInspector · bufBreaking · dockle · grype · dive · hardenRunnerAudit · sbom · sentrySourcemaps · trojanSource · rlsCheck · pgtapPresence · sqruff · vale · alex · lychee · promptfoo · dotenvLinter
Профіль якості —
devManager.quality.profile(strict|balanced|vibe, за замовчуваннямstrict) керує тим, які перевірки типово запускаються.strict— максимальний набір (усі ввімкнені, warning трактується як fail).balanced— той самий набір увімкнень, але warning лишається warning.vibe— за замовчуванням лише «сильні» хмарні та CLI-інструменти. Параметриenabledу конкретного провайдера завжди мають пріоритет. Див. такожdevManager.quality.warnAsFail— накладання «підвищення» warning до fail.
Realtime Quality
Додаткові у редакторі повторні прогоні для провайдерів із realtime-хуками.
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
devManager.realtime.enabled | boolean | true | Головний вимикач. |
devManager.realtime.onType.enabled | boolean | true | Повтор після введення тексту. |
devManager.realtime.onSave.enabled | boolean | true | Повтор після збереження. |
devManager.realtime.precommit.mode | enum | "warn" | off | warn | block — реакція на error-рівень діагностик SnakeFlow на staged файлах. block спрацьовує при запуску SnakeFlow: Pre-commit Gate (devManager.realtime.precommitGate) або якщо команду прив’язано до git-hook. |
devManager.realtime.precommit.migrationsMode | enum | "warn" | off | warn | block-strict — додаткова політика для staged шляхів міграцій (prisma/migrations/, drizzle/ тощо). block-strict блокує commit, якщо на цих файлах є будь-яка діагностика SnakeFlow (включно з warning). Може один раз попередити, якщо core.hooksPath вказує не на стандартні .git/hooks. |
No Manual Migrations, Prisma Migrate Status (watch) і подібні перевірки можуть оновлювати діагностику при змінах файлів схеми/міграцій, якщо ввімкнено і перевірку, і realtime. Див. No Manual Migrations →.
Pre-commit Gate: ручні міграції
devManager.realtime.precommit.scanners.orphanMigrations (за замовч. true) блокує коміт, якщо в Drizzle migrations/ зафіксовано .sql, тег якого відсутній у meta/_journal.json. Ловить ручні міграції, які обходять drizzle-kit generate. Працює і у VS Code Source Control gate, і в авто-встановленому .git/hooks/pre-commit.
Pre-commit Gate: надсилати помилки у чат
devManager.realtime.precommit.sendFailToChat (за замовч. true) — коли gate блокує коміт (через VS Code Source Control або через термінал через авто-встановлений .git/hooks/pre-commit), SnakeFlow автоматично відкриває поточну панель AI-чату і вставляє список помилок. AI може одразу запропонувати виправлення.
Сирий звіт зберігається у .snakeflow/last-precommit-fail.json (додано до .gitignore). Вимкніть налаштування, щоб зупинити автоматичне надсилання у чат, зберігаючи решту поведінки gate без змін.
Pre-commit Gate: сканування staged-only
Gate сканує post-commit стан робочої директорії — рівно те, що потрапить у HEAD після цього коміту. Перед запуском сканерів SnakeFlow ховає всі незастейджені зміни (як зміни tracked-файлів, так і untracked-файли) шляхом збереження бінарного патчу, а після — відновлює їх. Підхід ідентичний lint-staged і покриває найпоширенішу пастку pre-commit:
Локально виправляєте баг і стейджите іншу зміну через
git add -p. Фікс лишається unstaged.vitest/knip/tscбачать фікс у робочій дир-ї → проходять. А зламаний файл їде уHEAD.
Зі staged-only command-сканери бачать саме той стан, який git збирається закомітити. Fast-path повністю пропускає цю обгортку, якщо немає незастейджених змін (95% комітів — нульовий overhead). Стани mid-merge / rebase / cherry-pick детектяться і не чіпаються. Якщо авто-відновлення фейлиться (рідко: одночасні записи на диск тощо), unstaged-дельта зберігається у .snakeflow/precommit-restore-<ts>.patch із готовою командою git apply для відновлення.
Pre-commit Gate: кастомні перевірки
devManager.realtime.precommit.customChecks дозволяє команді додавати власні перевірки поряд із вбудованими. Два типи:
kind: "pattern"— JS regex по доданих рядках diff (scope: "diff", типово) або повному файлу (scope: "file"). Фільтр черезfilePatternglob (типово**).kind: "command"— shell-команда у корені репозиторію. Ненульовий exit = помилка. Таймаут —devManager.realtime.precommit.customCheckTimeoutMs(типово 30000 мс). Виконується вже у staged-only робочій дир-ї (див. вище).
Кожна перевірка має id (стабільний ідентифікатор), необов’язковий label, і severity ("error" блокує коміт, "warn" — інформативна). Налаштування зберігаються у .vscode/settings.json — після git pull команда отримує однаковий набір.
"devManager.realtime.precommit.customChecks": [ { "id": "no-todo", "label": "No TODO/FIXME", "kind": "pattern", "pattern": "TODO|FIXME", "filePattern": "src/**/*.{ts,tsx}", "scope": "diff", "severity": "error" }, { "id": "run-tests", "label": "Unit tests", "kind": "command", "command": "npm test --silent", "severity": "error" }]Область дії перевірки: Hub / Реалтайм / Пре-коміт
Кожен провайдер якості має три незалежні рубильники. Їх можна комбінувати довільно — наприклад, залишити перевірку у Quality Hub, вимкнути live-підкреслення, але увімкнути блокування коміту.
| Рубильник | Ключ налаштування | За замовч. | Ефект |
|---|---|---|---|
Hub (Quality Hub, Ctrl+Alt+F) | devManager.quality.builtin.<id>.enabled | true (builtin), false (cloud) | Включає / виключає перевірку з пакетного запуску |
| Реалтайм (live-діагностика) | devManager.quality.builtin.<id>.realtime | true | Вмикає підкреслення при наборі / збереженні |
| Пре-коміт (git-шлюз) | devManager.quality.builtin.<id>.precommit | false | Блокує коміт, якщо перевірка знаходить помилки у staged-файлах |
Ті ж самі три ключі є для cloud-провайдерів під devManager.quality.<id>.*.
Приклад: жорстка пре-коміт-політика
Увімкнути ESLint і Prettier для блокування комітів, але прибрати live-підкреслення від Prettier (щоб не шуміло при кожному натисканні клавіші):
{ "devManager.quality.builtin.eslint.precommit": true, "devManager.quality.builtin.prettierCheck.precommit": true, "devManager.quality.builtin.prettierCheck.realtime": false}Як працює precommit-область
Коли devManager.realtime.precommit.mode дорівнює block (за замовчуванням), SnakeFlow збирає всі VS Code діагностики від увімкнених realtime-провайдерів для staged-файлів. До лічильника помилок потрапляють лише провайдери, де .precommit = true. Сім вбудованих сканерів (secrets, envFiles, focusedTests, dangerousPatterns, lockfileDrift, schemaDrift, orphanMigrations) керуються власними ключами devManager.realtime.precommit.scanners.* і завжди враховуються незалежно від прапора .precommit.
Workflows
AI-керовані сценарії: багатокрокові перевірки, візуальна регресія, поріг покриття.
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
devManager.workflows.anthropicApiKey | string | "" | Ключ Anthropic для кроків AI у workflow |
devManager.workflows.claudeModel | string | "sonnet" | Модель Claude для AI-кроків (підтягується з API) |
devManager.workflows.timeoutMinutes | number | 60 | Макс. тривалість одного прогону workflow (хв; 0 = без обмеження) |
devManager.workflows.minCoverage | number | 80 | Мінімальне покриття тестами % для проходження |
devManager.workflows.maxCostUsd | number | 5 | Макс. витрати на AI (USD) за прогон до зупинки |
devManager.workflows.visualTolerance | number | 0.1 | Допустима різниця пікселів % перед прапором візуальної регресії |
devManager.workflows.runsPerWorkflow | number | 1 | Скільки разів кожен workflow запускається на один тригер |
devManager.workflows.watchdogSeconds | number | 90 | Секунд тиші, після яких крок вважається завислим |
devManager.workflows.maxChangedFiles | number | 50 | Макс. змінених файлів workflow до зупинки |
devManager.workflows.parallelRoles | boolean | false | Паралельний запуск multi-role кроків |
devManager.workflows.isolateDatabase | boolean | true | Окрема копія БД на кожен прогон |
devManager.workflows.viewports.mobile | boolean | true | Включити mobile viewport у візуальні / Lighthouse перевірки |
devManager.workflows.viewports.tablet | boolean | false | Включити tablet viewport |
devManager.workflows.viewports.desktop | boolean | true | Включити desktop viewport |
devManager.workflows.lighthouseMin | object | {performance:70,seo:80} | Мінімальні бали Lighthouse (0–100) |
devManager.workflows.useApiKey | boolean | false | Автентифікація запитів workflow за API-ключем |
devManager.workflows.testAccounts | array | [] | Тестові акаунти для входу в workflow |
devManager.workflows.custom | array | [] | Власні визначення workflow |
Wake Lock
Блокує сон ОС під час активності в редакторі та за потреби під час Quality Hub. Не залежить від обліку хвилин у Team Tracker →. Детально: Wake Lock →.
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
devManager.wakeLock.enabled | boolean | true | Головний перемикач. false — і трекер активності в статус-барі, і авто Quality Hub не отримують лок. |
devManager.wakeLock.autoActivate | boolean | true | Автоматично тримати wake lock на час повного прогону Quality Hub (acquire('Quality Hub')), незалежно від перемикача в статус-барі. |
devManager.wakeLock.keepDisplayAwake | boolean | true | Тримати дисплей увімкненим (ES_DISPLAY_REQUIRED у Windows; на частині Linux дисплей може все одно гаснути). |
devManager.wakeLock.idleThresholdSeconds | number | 120 | При перемикачі ON — секунд без сигналів активності перед звільненням активнісного лока (довгограючі task самі по собі не «якорять» лок). |
devManager.wakeLock.readyTimeoutMs | number | 0 | Очікування готовності helper (0 = дефолт платформи). |
devManager.wakeLock.startRetries | number | 2 | Повторні спроби запуску helper. |
devManager.wakeLock.maxHoldHours | number | 4 | Якщо refCount лишається більше нуля безперервно стільки годин — попередження в лог і notification (0 = вимкнено). Без примусового release. |
devManager.wakeLock.persistLog | boolean | false | Дублювати рядки каналу Wake Lock у <workspace>/.vscode/snakeflow-wakelock.log або <workspace>/.cursor/snakeflow-wakelock.log (ротація 1 МБ). Потрібна відкрита папка workspace. |
Команди: SnakeFlow: Wake Lock — Toggle / SnakeFlow: Wake Lock — Diagnose (довідник команд →).
Контекст агента
Керування контекстом для AI-агента та автооновлення документації.
| Параметр | Тип | За замовчуванням | Опис |
|---|---|---|---|
devManager.agentContext.structureSync.enabled | boolean | true | Автогенерація знімка структури проєкту для AI-контексту |
devManager.agentContext.structureSync.autoSync | boolean | true | Повторна синхронізація знімка при зміні файлів |
devManager.docUpdater.commitCount | number | 20 | Скільки останніх комітів аналізувати при автооновленні доків |
devManager.docUpdater.files | array | [] | Файли документації для підтримки в актуальному стані (шлях + промпт) |
devManager.github.defaultMilestone | string | "" | Milestone GitHub за замовчуванням для issues і PR, створених AI |
devManager.prToChat.prompt | string | "" | Промпт на початку при відправці diff PR у чат AI |
devManager.issueToChat.prompt | string | "" | Промпт на початку при відправці GitHub issue у чат AI |
Див. також
- Wake Lock → — сигнали активності, Quality Hub, діагностика
- Team Tracker → — двофакторна активність, інтервал сну, ActivityWatch, internal vs external
- Довідник команд палітри →
- Встановлення CLI →