Перейти до вмісту

Настанова для агента

Workflow агента

  1. Завантажити цю сторінку — отримати повну інструкцію з https://snakeflow.pages.dev/uk/getting-started/skill-agent-guide/ 2. Дослідити проєкт — просканувати всі релевантні файли (Phase 1) 3. Підсумувати знахідки — повідомити користувача про виявлене в 5–10 реченнях 4. Задати 50 питань — згруповано, з автовизначеними значеннями за замовчуванням (Phase 2) 5. Записати .vscode/settings.json — тільки після збору всіх відповідей (Phase 3)

Phase 1 — Глибоке дослідження проєкту

Перед питаннями просканувати ці файли та директорії:

Package Manager (з lockfile або package.json)

ФайлМенеджер
pnpm-lock.yamlpnpm
bun.lockb / bun.lockbun
yarn.lockyarn
package-lock.jsonnpm
package.json → поле "packageManager"перевизначення

Стек і мова програмування

ФайлСтек
package.jsonNode.js
go.modGo
Cargo.tomlRust
composer.jsonPHP
GemfileRuby
pyproject.toml / requirements.txtPython
pubspec.yamlDart/Flutter
mix.exsElixir
build.gradle / pom.xmlJava/Kotlin
Package.swiftSwift
*.csproj / *.fsproj.NET

Монорепо

Файл / ОзнакаТип
pnpm-workspace.yamlpnpm workspaces
turbo.jsonTurborepo
nx.jsonNx
lerna.jsonLerna
rush.jsonRush
package.json → масив "workspaces"npm/yarn workspaces

→ Перелічити всі apps/packages з workspaces, пайплайнів turbo.json, або apps/*/package.json.

Docker Compose

Шукати compose-файли в: root, docker/, infra/, .docker/, deploy/

Назва файлу
docker-compose.yaml
docker-compose.yml
compose.yaml
compose.yml

ORM / База даних

ОзнакаORM
prisma/schema.prisma або @prisma/client в depsPrisma
drizzle-orm в depsDrizzle
typeorm в depsTypeORM
knex в depsKnex
settings.py (Django)Django ORM
alembic.iniSQLAlchemy / Alembic
директорія db/migrate/ActiveRecord (Rails)
go.mod + entgo.io/ent в depsent ORM
Cargo.toml + diesel в depsDiesel
aerich в Python depsTortoise ORM
.csproj + Microsoft.EntityFrameworkCoreEF Core

Скрипти

Читати package.json → scripts, Makefile, Cargo.toml, pyproject.toml.

Визначити: dev, start, build, lint, typecheck, test, format, check, migrate, generate.

Структура проєкту

Перелічити директорії верхнього рівня. Відзначити наявність:

  • components/ або src/components/ — UI-компоненти
  • hooks/ або src/hooks/ — React hooks
  • services/, controllers/, repositories/, models/, dto/, entities/
  • api/, server/, routes/, handlers/
  • stores/, utils/, lib/, helpers/
  • apps/, packages/ — workspaces монорепо

Тестовий фреймворк

Файли / ЗалежностіФреймворк
*.test.ts, *.spec.ts, jest.config.*Jest
vitest.config.*Vitest
pytest в depspytest
файли _test.goGo test
*_test.rs / Cargo.tomlRust test

Інструменти безпеки

ОзнакаІнструмент
eslint-plugin-security в devDepsESLint Security доступний
.semgrepignore або semgrep в PATHSemgrep доступний
trivy в PATHTrivy доступний
bandit в PATHBandit доступний
Dockerfile або Dockerfile.*Hadolint застосовний
файли .sh / .bashShellCheck застосовний

Стек схеми бази даних

ОзнакаСтек
prisma / @prisma/client в deps, або будь-який .prisma файлPrisma
drizzle-orm в depsDrizzle ORM
db/schema.rb + Gemfile з gem 'rails'Rails / ActiveRecord
composer.json з laravel/framework або illuminate/databaseLaravel
ключове слово django в requirements.txt / pyproject.toml / PipfileDjango
.py файл з імпортом sqlalchemy / declarative_base / DeclarativeBaseSQLAlchemy
*.csproj що містить EntityFrameworkCoreEF Core
go.mod з gorm.io/gorm, entgo.io/ent, go-gorm або xormGo (GORM / ent / xorm)
будь-який .sql файл у дереві проєктуСирий SQL
prisma-lint в devDepsprisma-lint доступний
squawk або squawk-cli в deps або PATHSquawk доступний
atlas в PATHAtlas доступний

CI/CD

  • .github/workflows/*.yml → GitHub Actions є в проєкті

Сканування дублікатів компонентів

Просканувати .tsx, .jsx, .vue, .svelte файли. Шукати експорти, що збігаються з: Button, Modal, Dialog, Table, Card, Input, Form, Select, Dropdown, List, Tab, Badge, Avatar, Tooltip, Loader/Spinner, Header/Navbar, Sidebar, Chart, Icon, Pagination.

Підрахувати входження. Якщо ≥ 2 схожих назв компонентів — повідомити як потенційне дублювання.


Phase 2 — 50 питань

Презентувати питання групами. Використовувати (визначено: X) для показу автовизначених значень. Не починати запис налаштувань до отримання відповідей на всі групи.


Група A — Ідентичність проєкту (Q1–Q6)

Q1. Яка назва проєкту для налаштувань?
(визначено: назва папки)

Q2. Який абсолютний шлях до кореня проєкту?
(визначено: поточна папка workspace)

Q3. Який пакетний менеджер?
auto | npm | pnpm | yarn | bun | none
(визначено з lockfile)

Q4. Це монорепо? Якщо так — перелічити всі apps/packages, що потребують власного dev-сервера.
(визначено: показати знайдені workspaces)

Q5. Які згенеровані або legacy-директорії виключити з перевірок?
Вбудований список вже покриває: node_modules, dist, build, __pycache__, target, vendor, .venv, .next, .nuxt, coverage та 70+ інших.
Додати лише специфічні для проєкту: generated, proto-gen, legacy, fixtures, storybook-static, .output тощо.

Q6. Які конкретні файли виключити з перевірок?
(приклади: src/generated/graphql.ts, \*\*/_.generated.ts, _.vsix)


Група B — Dev-сервери (Q7–Q12)

Q7. Перелічити всі dev-сервери для налаштування.
Для кожного: label, команда, робоча директорія (відносна, або "" для кореня), порт, чи входить у bulk start (startWithAll, за замовчуванням true).
(визначено: показати знайдені скрипти команд для кожного workspace)

Q8. Чи використовує якийсь сервер патерн root proxy?
(кореневий package.json запускає npm run dev --prefix subfolder)
→ Якщо так — для цього сервера встановити path: "", НЕ підпапку.

Q9. Проєкт використовує Inngest?
Команда за замовчуванням: npx inngest-cli@latest dev, порт: 8288. Яка робоча директорія?

Q10. Є фонові workers або обробники черг?
(приклади: Celery worker, Sidekiq, BullMQ — використовувати port: 0 без моніторингу)

Q11. Є інші тривалі процеси для управління?
(приклади: WebSocket-сервер, gRPC-сервер, cron-планувальник)
Для опційних утиліт лише за потреби (Prisma Studio, Storybook, Mailpit) — запис у servers з "startWithAll": false; запуск з меню серверів у status bar, не через Ctrl+Alt+S.

Q12. Git-налаштування — гілка за замовчуванням і захищені гілки (не можна видалити з сайдбара)?
(за замовчуванням: main; захищені: main, master, develop, staging, production)


Група C — Docker та інфраструктура (Q13–Q17)

Q13. Проєкт використовує Docker Compose?
(визначено: показати знайдений шлях до compose-файлу)
Чи compose-файл у нестандартному місці?

Q14. Які дії з контейнерами потрібні?
Стандартний набір: Up, Down, Restart, Status, Logs, Pull Images, Build Images, Down + Volumes (деструктивна).
Щось прибрати або додати?

Q15. Кілька compose-файлів для різних середовищ (dev/staging/prod)?

Q16. Використовується Podman або docker-compose (v1) замість docker compose (v2)?

Q17. Є кастомні інфраструктурні команди поза Docker Compose?
(приклади: kubectl apply, terraform plan, helm upgrade)

Чому немає групи D / Q18–Q21? Ці місця зарезервовані під GitHub і CI, що дублюють CI & CD та GitHub. Нумерація Q17 → Q22 навмисна, щоб існуючі JSON скілів і автоматизація, які посилаються на Q22+, лишалися стабільними.


Група E — Quality Hub: кастомні перевірки (Q22–Q26)

Q22. Які скрипти проєкту запускати як Quality Hub перевірки?
(визначено: показати всі скрипти з package.json, Makefile, Cargo.toml тощо)
(типові: lint, typecheck, build, format:check, test, check)
Дивись документацію Custom Checks для прикладів.

Q23. Є сирі shell-команди для кастомних перевірок?
(приклади: go vet ./..., go test ./..., python -m pytest, cargo clippy -- -D warnings)

Q24. Для кастомних перевірок — тільки код виходу (0 = pass) чи матчинг паттернів виводу?
За замовчуванням: код виходу. Якщо потрібен матчинг: надати successPattern, failPattern, warnPattern.

Q25. Увімкнути Stryker mutation testing? (вимкнено за замовчуванням — дуже повільний)
Тільки для JS/TS проєктів з гарним покриттям юніт-тестами.

Q26. Рівень звіту Quality Hub для AI-чату?
auto (завжди) | onFail (за замовчуванням — тільки при помилках) | manual | never
Кастомний промпт для чату? (необов’язковий текст на початку звіту)


Група F — Quality Hub: архітектурні перевірки (Q27–Q34)

Q27. Є шарові папки в проєкті? (наприклад, ui/, views/, presenters/, api/, components/)
Межі шарів забезпечує CLI-перевірка dependency-cruiser — задекларуйте заборонені напрямки імпортів у .dependency-cruiser.cjs.
Дивись dependency-cruiser.

Q28. Які паттерни іменування UI-компонентів є в проєкті?
(визначено: показати знайдені дублікати)
Вбудовані паттерни вже відстежують: Button, Modal, Dialog, Table, Card, Input, Form, Select, Dropdown, List, Tab, Badge, Avatar, Tooltip, Loader/Spinner, Notification/Toast/Alert, Header/Navbar, Sidebar/Drawer, Chart, Icon, Pagination, Stepper.
Є специфічні для проєкту паттерни? (наприклад, Panel, Widget, Section, Tile)
Дивись перевірку Component Inventory.

Q29. Мінімальна кількість схожих компонентів для попередження?
(за замовчуванням: 2 для UI-компонентів; 3 для hooks типу useFetch)
Перевизначити порогове значення? (наприклад, “попереджати тільки при 4+ варіантах Button”)

Q30. Є кастомні hook-паттерни що мають попереджати при дублюванні?
Вбудовані: useAuth, useFetch/useQuery/useApi, useForm, useModal, useFilter, useSort, usePagination, useDebounce, useStorage.
Додати специфічні для проєкту? (наприклад, useCart, useCheckout, useAnalytics)

Q31. Правила розміщення файлів — файли з певним паттерном назви мають бути в певній папці?
(Project Structure check → fileRules)

Типові паттерни за стеком:

ПаттернМає бути вСтек
*.service.tssrc/servicesNestJS / загальний TS
*.controller.tssrc/controllersNestJS / MVC
*.repository.tssrc/repositoriesDDD
*.store.tssrc/storesУправління станом
*.dto.tssrc/dtoNestJS
*.entity.tssrc/entitiesTypeORM / NestJS
*.model.tssrc/modelsзагальний
*.middleware.tssrc/middlewareExpress / NestJS
*.guard.tssrc/guardsNestJS
*.schema.tssrc/schemasвалідація
*_handler.gointernal/handlersGo
*_service.gointernal/servicesGo
*_repo.gointernal/repoGo

Які застосовні? Є кастомні правила?

Q32. Правила вмісту папок — файли всередині папки мають містити певний експорт/оголошення?
(Project Structure check → folderRules)

Типові приклади:

ПапкаМає міститиОпис
src/hooksexport function use | export const useHook-файли мають експортувати useXxx
src/servicesexport class | export function | export constService-файли мають щось експортувати
src/componentsexport default | export constКомпоненти мають мати експорти
src/controllersexport class | @ControllerNestJS контролери

Які застосовні? Є кастомні правила?

Q33. Пороги зв’язності для цього проєкту?
(fan-out = кількість локальних файлів, які імпортує модуль; великий fan-out = “god file”)

  • Попередження при fan-out ≥ N: за замовчуванням 15
  • Помилка при fan-out ≥ N: за замовчуванням 30
    Скоригувати для розміру проєкту?

Q34. Пороги складності коду?

  • Довжина функції: попередження ≥ N рядків (за замовчуванням 40), помилка ≥ N рядків (за замовчуванням 80)
  • Циклічна складність: попередження ≥ N (за замовчуванням 10), помилка ≥ N (за замовчуванням 20)
  • Кількість параметрів: попередження ≥ N (за замовчуванням 4), помилка ≥ N (за замовчуванням 7)
  • TypeScript return types: попередження при N відсутніх (за замовчуванням 10), помилка при N (за замовчуванням 50)
    Залишити за замовчуванням чи скоригувати?

Група G — Quality Hub: вбудовані перевірки (Q35–Q40)

Всі перевірки увімкнені за замовчуванням. Перелічити тільки ті, що вимкнути.
Дивись довідник Built-in Checks для повного переліку і порогів.

Q35. Вимкнути перевірки розміру / складності коду?
lineCount | fileSize | functionLength | complexity | longLines | importDepth | directoryDepth | dependencyCount

Q36. Вимкнути перевірки якості коду?
todoCount | commentedCode | duplicateFiles | mixedIndent | encoding | secretLeaks | debugLeaks | gitignoreCheck | magicNumbers | parameterCount | barrelFiles

Q37. Вимкнути архітектурні перевірки?
couplingMetrics | componentInventory | heavyImports

Q38. Вимкнути перевірки типізації / документації?
anyCoverage | jsdocCoverage | returnTypes

Q39. Вимкнути перевірки здоров’я проєкту?
envConsistency | lockfileSync | nodeVersionConsistency | readmeCheck | changelogCheck | codeownersCheck

Q40. Вимкнути TypeScript/frontend перевірки?
asyncAwaitMisuse | errorHandling | reactHookRules | a11yCheck
Проєкт має тести? Якщо ні → вимкнути testRatio, emptyTests, lcovCoverage.


Група H — Quality Hub: security та CLI-інструменти (Q41–Q45)

Всі пропускаються gracefully якщо не встановлені. Дивись документацію CLI Tools для інструкцій встановлення.

Q41. Які CLI security-інструменти встановлені і мають бути увімкнені?

ІнструментВстановленняКоли вмикати
Semgreppip install semgrepБудь-який проєкт (30+ мов)
Trivywinget install AquaSecurity.TrivyБудь-який проєкт із залежностями
ESLint Securitynpm i -D eslint eslint-plugin-securityJS/TS проєкти
Banditpip install banditТільки Python-проєкти
Bearerbrew install bearer/tap/bearer (macOS/Linux)Аналіз витоку чутливих даних
Hadolintwinget install hadolintПроєкти з Dockerfile
ShellCheckwinget install koalaman.shellcheckПроєкти зі скриптами .sh
golangci-lintwinget install golangci-lintТільки Go-проєкти

Q42. Пороги серйозності Trivy?

  • Помилка при: CRITICAL | HIGH (за замовчуванням) | MEDIUM
  • Попередження при: HIGH | MEDIUM (за замовчуванням) | LOW

Q43. Увімкнути додаткові CLI-перевірки?

  • jscpd — виявлення copy-paste (JS/TS/будь-яка мова): поріг дублювання %? (за замовчуванням: 5%)
  • knip — виявлення мертвого коду (JS/TS, auto via npx)
  • dependencyCruiser — циклічні імпорти (JS/TS, auto via npx)
  • pkgAuditnpm audit / pip-audit / cargo audit тощо
  • outdatedDeps — застарілі залежності
  • licenseCheck — відповідність ліцензій (auto via npx)

Q44. Увімкнути IaC / API / format лінтери?

  • checkov — безпека Terraform / Kubernetes / Dockerfile (pip install checkov)
  • spectral — лінтинг OpenAPI / AsyncAPI (npm i -g @stoplight/spectral-cli)
  • yamllint — YAML синтаксис (pip install yamllint)
  • sqlfluff — SQL файли (pip install sqlfluff)
  • markdownlint — Markdown (npm i -g markdownlint-cli2)
  • tscCheck — TypeScript компілятор (npx tsc --noEmit, потребує tsconfig.json)
  • act — запуск GitHub Actions локально (winget install nektos.act)

Q44b. Увімкнути лінт схеми бази даних?

ІнструментВстановленняЩо перевіряє
Schema Lint (вбудований)не потрібно — чистий Node.jsFloat замість Decimal для грошей, відсутні FK-індекси, іменування, великі моделі (лише не-relation поля), відсутні timestamps, відсутній default для ID, зарезервовані слова, String/UUID-as-FK (суфікси Id/_id/Ref/_ref), JSON без документації, cascade без soft-delete. Авторозпізнавання: Prisma, Drizzle, Django, SQLAlchemy, Rails, Laravel, EF Core, Go (GORM/ent/xorm), сирий SQL
prisma-lintnpm i -D prisma-lintІменування в Prisma-схемі, порядок полів, обов’язкові індекси
Squawknpm i -g squawk-cliБезпека міграцій PostgreSQL: небезпечні блокування, missing CONCURRENTLY, backward-несумісні зміни
Atlaswinget install ariga.atlas (Windows) / curl -sSf https://atlasgo.sh | sh50+ аналізаторів міграцій: деструктивні зміни, блокування, сумісність

Schema Lint увімкнений за замовчуванням (як всі вбудовані перевірки) і не потребує налаштування — він автоматично визначає стек ORM.

Q45. Увімкнути Stryker mutation testing?
(вимкнено за замовчуванням — дуже повільний; потребує @stryker-mutator/core)


Група I — Quality Hub: покриття (Q48)

Q48. LCOV coverage — чи є coverage/lcov.info або coverage-summary.json згенерований тест-ранером?
(читає існуючий файл — тести не запускає; увімкнути якщо CI генерує coverage-звіти)


Група J — Git, CI/CD та інтеграції (Q49–Q50)

Q49. CI/CD та Git налаштування:

  • Шлях до GitHub workflows: .github/workflows або кастомний?
  • Команда docker compose: docker compose | docker-compose | podman compose
  • Гілка за замовчуванням для Git-операцій
  • Список захищених гілок (не можна видалити з сайдбара)
  • Milestone за замовчуванням для нових GitHub Issues (необов’язково)

Q50. AI та голосові налаштування (необов’язково):

  • Gemini API key (для AI генерації заголовків та голосової диктовки)
  • Модель Gemini: gemini-2.5-flash (за замовчуванням) | gemini-2.0-flash | gemini-1.5-pro
  • Мова диктовки: auto | uk | en | de | fr тощо
  • Кастомний промпт для Issue → Chat
  • Кастомний промпт для PR → Chat
  • Кастомний промпт для Quality Hub → Chat

Phase 3 — Запис налаштувань

Записати всі налаштування в .vscode/settings.json. Правила:

  • Завжди включати: project.name, project.dir, project.packageManager, project.servers
  • Пропускати дефолти: не писати налаштування рівні задокументованим за замовчуванням
  • Пропускати порожнє: без порожніх масивів, порожніх рядків для необов’язкових полів, null
  • Шлях: .vscode/settings.json у корені проєкту — ЄДИНЕ місце для devManager.*

Для повного довідника налаштувань і прикладів — дивись англомовну версію настанови (містить всі приклади JSON).


Посилання на документацію

ТемаСторінка
Dev Servers/uk/features/servers/
Docker Compose/uk/features/containers/
Quality Hub огляд/uk/quality/
Built-in перевірки (70+)/uk/quality/builtin-checks/
CLI Tool перевірки/uk/quality/cli-tools/
Custom Checks/uk/quality/custom-checks/
Всі налаштування/uk/reference/configuration/
Встановлення CLI-інструментів/uk/reference/cli-install/