Skip to content

Agent Setup Guide

Agent Workflow

  1. Fetch this page — get the full instruction set from https://snakeflow.pages.dev/getting-started/skill-agent-guide/
  2. Explore the project — scan all relevant files (see Phase 1)
  3. Summarize findings — tell the user what was detected in 5–10 lines
  4. Ask 50 questions — grouped by topic, using detected values as defaults (see Phase 2)
  5. Write .vscode/settings.json — only after all answers collected (see Phase 3)

Phase 1 — Deep Project Exploration

Scan these files and directories before asking anything:

Package Manager (from lockfile or package.json)

FileManager
pnpm-lock.yamlpnpm
bun.lockb / bun.lockbun
yarn.lockyarn
package-lock.jsonnpm
package.json"packageManager" fieldoverride

Stack & Language Detection

FileStack
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

Monorepo Detection

File / PatternType
pnpm-workspace.yamlpnpm workspaces
turbo.jsonTurborepo
nx.jsonNx
lerna.jsonLerna
rush.jsonRush
package.json"workspaces" arraynpm/yarn workspaces

→ List all apps/packages from workspaces, turbo.json pipelines, or apps/*/package.json.

Docker Compose Detection

Search for compose files in: root, docker/, infra/, .docker/, deploy/

Filename
docker-compose.yaml
docker-compose.yml
compose.yaml
compose.yml

ORM / Database Detection

EvidenceORM
prisma/schema.prisma or @prisma/client in depsPrisma
drizzle-orm in depsDrizzle
typeorm in depsTypeORM
knex in depsKnex
settings.py (Django)Django ORM
alembic.iniSQLAlchemy / Alembic
db/migrate/ directoryActiveRecord (Rails)
go.mod + entgo.io/ent in depsent ORM
Cargo.toml + diesel in depsDiesel
aerich in Python depsTortoise ORM
.csproj + Microsoft.EntityFrameworkCoreEF Core

Scripts Detection

Read package.json → scripts, Makefile, Cargo.toml → [package.metadata.scripts], pyproject.toml → [tool.taskipy.tasks].

Detect: dev, start, build, lint, typecheck, test, format, check, migrate, generate.

Project Structure Scan

List top-level directories. Note presence of:

  • components/ or src/components/ — UI components
  • hooks/ or src/hooks/ — React hooks
  • services/, controllers/, repositories/, models/, dto/, entities/
  • api/, server/, routes/, handlers/
  • stores/, utils/, lib/, helpers/
  • apps/, packages/ — monorepo workspaces

Test Framework Detection

Files / DepsFramework
*.test.ts, *.spec.ts, jest.config.*Jest
vitest.config.*Vitest
pytest in depspytest
_test.go filesGo test
*_test.rs / Cargo.tomlRust test

Security Tooling Detection

EvidenceTool
eslint-plugin-security in devDepsESLint Security available
.semgrepignore or semgrep in PATHSemgrep available
trivy in PATHTrivy available
bandit in PATHBandit available
Dockerfile or Dockerfile.*Hadolint applicable
.sh / .bash filesShellCheck applicable

Database Schema Detection

EvidenceSchema stack
prisma / @prisma/client in deps, or any .prisma file foundPrisma
drizzle-orm in depsDrizzle ORM
db/schema.rb + Gemfile with gem 'rails'Rails / ActiveRecord
composer.json with laravel/framework or illuminate/databaseLaravel
django keyword in requirements.txt / pyproject.toml / PipfileDjango
.py file with sqlalchemy / declarative_base / DeclarativeBase importSQLAlchemy
*.csproj containing EntityFrameworkCoreEF Core
go.mod with gorm.io/gorm, entgo.io/ent, go-gorm, or xormGo (GORM / ent / xorm)
any .sql file found in the project treeRaw SQL
prisma-lint in devDepsprisma-lint available
squawk or squawk-cli in deps or PATHSquawk available
atlas in PATHAtlas available

CI/CD Detection

  • .github/workflows/*.yml → GitHub Actions present
  • Check for: timeout settings, pinned versions, secrets usage

Duplicate Component Pattern Scan

Scan .tsx, .jsx, .vue, .svelte files. Look for exports matching: Button, Modal, Dialog, Table, Card, Input, Form, Select, Dropdown, List, Tab, Badge, Avatar, Tooltip, Loader/Spinner, Header/Navbar, Sidebar, Chart, Icon, Pagination.

Count occurrences. If ≥ 2 similar component names exist → report as potential duplication.


Phase 2 — 50 Questions

Present questions in groups. Use (detected: X) to show auto-detected defaults. Do not start writing settings until all groups are answered.


Group A — Project Identity (Q1–Q6)

Q1. What is the project name?
(detected: folder name)

Q2. What is the absolute path to the project root?
(detected: current workspace folder)

Q3. What is the package manager?
auto | npm | pnpm | yarn | bun | none
(detected from lockfile)

Q4. Is this a monorepo? If yes — list all apps/packages that need their own dev server.
(detected: show workspaces found)

Q5. Any generated or legacy directories to exclude from quality checks?
Built-in list already covers: node_modules, dist, build, __pycache__, target, vendor, .venv, .next, .nuxt, coverage, and 70+ more.
Add only project-specific dirs: generated, proto-gen, legacy, fixtures, storybook-static, .output, etc.

Q6. Any specific source files to exclude from quality checks?
(examples: src/generated/graphql.ts, **/*.generated.ts, *.vsix)


Group B — Dev Servers (Q7–Q12)

Q7. List all dev servers to configure.
For each: label, command, working directory (relative, or "" for root), port.
(detected: show script commands found per workspace)

Q8. Does any server use the root proxy script pattern?
(root package.json runs npm run dev --prefix subfolder)
→ If yes, set path: "" for that server, NOT the subfolder.

Q9. Does the project use Inngest?
Default command: npx inngest-cli@latest dev, port: 8288. Which working directory?

Q10. Any background workers or queue processors to manage?
(examples: Celery worker, Sidekiq, BullMQ — use port: 0 for no port monitoring)

Q11. Any other long-running processes to include?
(examples: WebSocket server, gRPC server, cron scheduler)

Q12. Git settings — default branch and protected branches (cannot be deleted from sidebar)?
(default branch: main; protected: main, master, develop, staging, production)


Group C — Docker & Infrastructure (Q13–Q17)

Q13. Does the project use Docker Compose?
(detected: show found compose file path)
Is the compose file in a non-standard location?

Q14. Which container actions are needed?
Standard set: Up, Down, Restart, Status, Logs, Pull Images, Build Images, Down + Volumes (destructive).
Any to remove or add?

Q15. Multiple compose files for different environments (dev/staging/prod)?

Q16. Using Podman or docker-compose (v1) instead of docker compose (v2)?

Q17. Any custom infrastructure commands beyond Docker Compose?
(examples: kubectl apply, terraform plan, helm upgrade)


Group E — Quality Hub: Custom Checks (Q22–Q26)

Q22. Which project scripts should run as Quality Hub checks?
(detected: show all scripts from package.json, Makefile, Cargo.toml, etc.)
(common: lint, typecheck, build, format:check, test, check)
See Custom Checks docs for all examples.

Q23. Any raw shell commands to add as custom checks?
(examples: go vet ./..., go test ./..., python -m pytest, cargo clippy -- -D warnings)

Q24. For custom checks — exit code only (0 = pass) or output pattern matching?
Default: exit code only. If pattern matching needed: provide successPattern, failPattern, warnPattern.

Q25. Enable Stryker mutation testing? (disabled by default — very slow)
Only for JS/TS projects with good unit test coverage.

Q26. Quality Hub report level sent to AI chat?
auto (always) | onFail (default — only when failures exist) | manual | never
Custom chat prompt? (optional text prepended to the report)


Group F — Quality Hub: Architecture Checks (Q27–Q34)

Q27. Are there layer folders in this project?
Built-in cross-layer detection already covers: components/ → must not import DB packages or Node.js builtins; api//server//controllers//routes/ → must not import from components/.
Do you have custom layer names? (e.g., ui/, views/, presenters/)
See Cross-Layer Imports check.

Q28. What UI component naming patterns exist in this project?
(detected: show found duplicate patterns)
Built-in patterns already watch: 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.
Any project-specific patterns to add? (e.g., Panel, Widget, Section, Tile)
See Component Inventory check.

Q29. Minimum count of similar components before triggering a warning?
(default: 2 for UI components; 3 for hooks like useFetch)
Override any specific threshold? (e.g., “warn only when 4+ Button variants”)

Q30. Any custom hook patterns that should warn when duplicated?
Built-in: useAuth, useFetch/useQuery/useApi, useForm, useModal, useFilter, useSort, usePagination, useDebounce, useStorage.
Project-specific additions? (e.g., useCart, useCheckout, useAnalytics)

Q31. File placement rules — files matching a name pattern must be in a specific folder?
(Project Structure check → fileRules)

Common patterns by stack:

PatternMust be inStack
*.service.tssrc/servicesNestJS / general TS
*.controller.tssrc/controllersNestJS / MVC
*.repository.tssrc/repositoriesDDD
*.store.tssrc/storesState management
*.dto.tssrc/dtoNestJS
*.entity.tssrc/entitiesTypeORM / NestJS
*.model.tssrc/modelsgeneral
*.middleware.tssrc/middlewareExpress / NestJS
*.guard.tssrc/guardsNestJS
*.schema.tssrc/schemasvalidation
*_handler.gointernal/handlersGo
*_service.gointernal/servicesGo
*_repo.gointernal/repoGo

Which apply to this project? Any custom rules?

Q32. Folder content rules — files inside a folder must contain a specific export/declaration?
(Project Structure check → folderRules)

Common examples:

FolderMust containDescription
src/hooksexport function use | export const useHook files must export useXxx
src/servicesexport class | export function | export constService files must export
src/componentsexport default | export constComponents must have exports
src/controllersexport class | @ControllerNestJS controllers

Which apply? Any custom rules?

Q33. Coupling thresholds for this project?
(fan-out = number of local files a module imports; high fan-out = “god file”)

  • Warn when a file imports ≥ N local files: default 15
  • Fail when a file imports ≥ N local files: default 30
    Adjust for project size?

Q34. Code complexity thresholds?

  • Function length: warn ≥ N lines (default 40), fail ≥ N lines (default 80)
  • Cyclomatic complexity: warn ≥ N (default 10), fail ≥ N (default 20)
  • Parameter count: warn ≥ N params (default 4), fail ≥ N params (default 7)
  • TypeScript return types: warn at N missing (default 10), fail at N missing (default 50)
    Keep defaults or adjust?

Group G — Quality Hub: Built-in Checks (Q35–Q40)

All checks are enabled by default. Only list ones to disable.
See Built-in Checks reference for full list and thresholds.

Q35. Disable any code size / complexity checks?
lineCount | fileSize | functionLength | complexity | longLines | importDepth | directoryDepth | dependencyCount

Q36. Disable any code quality checks?
todoCount | commentedCode | duplicateFiles | mixedIndent | encoding | secretLeaks | debugLeaks | gitignoreCheck | magicNumbers | parameterCount | barrelFiles

Q37. Disable any architecture checks?
couplingMetrics | crossLayerImports | componentInventory | heavyImports

Q38. Disable any type safety / docs checks?
anyCoverage | jsdocCoverage | returnTypes

Q39. Disable any project health checks?
envConsistency | lockfileSync | nodeVersionConsistency | readmeCheck | changelogCheck | codeownersCheck

Q40. Disable any TypeScript/frontend checks?
asyncAwaitMisuse | errorHandling | reactHookRules | a11yCheck
Does the project have tests? If no → disable testRatio, emptyTests, lcovCoverage.


Group H — Quality Hub: Security & CLI Tools (Q41–Q45)

All skip gracefully if not installed. See CLI Tools docs for install instructions.

Q41. Which CLI security tools are installed and should be enabled?

ToolInstallWhen to enable
Semgreppip install semgrepAny project (30+ languages)
Trivywinget install AquaSecurity.TrivyAny project with dependencies
ESLint Securitynpm i -D eslint eslint-plugin-securityJS/TS projects
Banditpip install banditPython projects only
Bearerbrew install bearer/tap/bearer (macOS/Linux)Sensitive data flow analysis
Hadolintwinget install hadolintProjects with Dockerfile
ShellCheckwinget install koalaman.shellcheckProjects with .sh scripts
golangci-lintwinget install golangci-lintGo projects only

Q42. Trivy severity thresholds?

  • Fail on: CRITICAL | HIGH (default) | MEDIUM
  • Warn on: HIGH | MEDIUM (default) | LOW

Q43. Enable additional CLI checks?

  • jscpd — copy-paste detection (JS/TS/any): duplication threshold %? (default: 5%)
  • knip — dead code detection (JS/TS only, auto via npx)
  • dependencyCruiser — circular imports (JS/TS only, auto via npx)
  • pkgAuditnpm audit / pip-audit / cargo audit / etc.
  • outdatedDeps — outdated dependency versions
  • licenseCheck — license compliance (auto via npx)

Q44. Enable IaC / API / format linters?

  • checkov — Terraform / Kubernetes / Dockerfile IaC security (pip install checkov)
  • spectral — OpenAPI / AsyncAPI linting (npm i -g @stoplight/spectral-cli)
  • yamllint — YAML syntax (pip install yamllint)
  • sqlfluff — SQL files (pip install sqlfluff)
  • markdownlint — Markdown (npm i -g markdownlint-cli2)
  • tscCheck — TypeScript compiler (npx tsc --noEmit, requires tsconfig.json)
  • act — run GitHub Actions locally (winget install nektos.act)

Q44b. Enable database schema lint checks?

ToolInstallWhat it checks
Schema Lint (built-in)none — pure Node.jsFloat-for-money, missing FK indexes, naming conventions, large models (non-relation fields), missing timestamps, missing ID defaults, reserved words, String/UUID-as-FK, undocumented JSON, cascade without soft-delete. Auto-detects: Prisma, Drizzle, Django, SQLAlchemy, Rails, Laravel, EF Core, Go (GORM/ent/xorm), raw SQL
prisma-lintnpm i -D prisma-lintPrisma schema naming conventions, field ordering, required indexes
Squawknpm i -g squawk-cliPostgreSQL migration safety: unsafe locks, missing CONCURRENTLY, backwards-incompatible changes
Atlaswinget install ariga.atlas (Windows) / curl -sSf https://atlasgo.sh | sh50+ migration analyzers: destructive changes, lock issues, backward compatibility

Schema Lint is enabled by default (like all built-ins) and requires no configuration — it auto-detects the ORM stack.

Q45. Enable Stryker mutation testing?
(disabled by default — very slow; requires @stryker-mutator/core installed)


Group I — Quality Hub: Cloud Providers (Q46–Q48)

All cloud providers are disabled by default (opt-in). See Cloud Providers docs.
CodeQL is the only exception — it defaults to enabled (uses VS Code GitHub auth, no token).

Q46. Which cloud services are connected to this project?

ServiceRequired fields
SonarCloudtoken, org, projectKey
Snyktoken, orgId
Codecovtoken, owner, repo
CodeQLGitHub auth only (no token)
Codacytoken
CodeClimatetoken
Coverallstoken
DeepSourcetoken
CodeAnttoken
Aikidotoken
CodeRabbitapiKey
Greptiletoken
Cubictoken
Qodotoken
Qltytoken

Q47. CodeQL — is GitHub authentication set up in VS Code/Cursor?
(CodeQL uses VS Code GitHub auth — sign in once via SnakeFlow: GitHub Sign In)

Q48. LCOV coverage — is there a coverage/lcov.info or coverage-summary.json generated by the test runner?
(reads existing file — does not run tests; enable if your CI generates coverage reports)


Group J — Git, CI/CD & Integrations (Q49–Q50)

Q49. CI/CD and Git settings:

  • GitHub workflows path: .github/workflows or custom?
  • Docker compose command: docker compose | docker-compose | podman compose
  • Default Git branch for operations
  • Protected branches list (cannot be deleted from sidebar)
  • Default milestone for new GitHub issues (optional)

Q50. AI & voice integration (optional):

  • Gemini API key (for AI title generation and voice dictation)
  • Gemini model: gemini-2.5-flash (default) | gemini-2.0-flash | gemini-1.5-pro
  • Dictation language: auto | uk | en | de | fr | etc.
  • Custom prompt for Issue → Chat
  • Custom prompt for PR → Chat
  • Custom prompt for Quality Hub → Chat

Phase 3 — Write Settings

Write all settings to .vscode/settings.json. Follow these rules:

  • Always include: project.name, project.dir, project.packageManager, project.servers
  • Skip defaults: do not write settings equal to their documented defaults (reduces noise)
  • Skip empty: no empty arrays, empty strings for optional fields, or null values
  • Skip disabled cloud: do not write cloud provider blocks without tokens
  • Settings path: .vscode/settings.json in the project root — the ONLY place for devManager.*

Core Project

{
"devManager.project.name": "my-project",
"devManager.project.dir": "C:/Users/.../path",
"devManager.project.packageManager": "auto"
}

Dev Servers

{
"devManager.project.servers": [
{ "id": "web", "label": "Frontend", "command": "pnpm run dev", "path": "apps/web", "port": 5173 },
{ "id": "api", "label": "API", "command": "pnpm run dev", "path": "apps/api", "port": 8787 },
{ "id": "worker", "label": "Celery Worker", "command": "celery -A config worker -l info","path": "backend", "port": 0 }
]
}

Root proxy pattern: if root package.json has "dev": "npm run dev --prefix app", set path: "".

Container Actions

{
"devManager.docker.composeCommand": "docker compose",
"devManager.project.composePath": "",
"devManager.project.containerActions": [
{ "label": "Up", "command": "docker compose up -d" },
{ "label": "Down", "command": "docker compose down" },
{ "label": "Logs", "command": "docker compose logs -f --tail 100" },
{ "label": "Down + Volumes", "command": "docker compose down -v", "confirm": true }
]
}

Custom Quality Checks

{
"devManager.quality.customChecks": [
{ "label": "lint", "script": "lint", "type": "script" },
{ "label": "typecheck", "script": "typecheck", "type": "script" },
{ "label": "build", "script": "build", "type": "script" },
{ "label": "go vet", "script": "go vet ./...", "type": "command" }
]
}

Project Structure Rules

{
"devManager.quality.builtin.projectStructure.fileRules": [
{ "filePattern": "*.service.ts", "mustBeIn": "src/services", "description": "Services → src/services/" },
{ "filePattern": "*.controller.ts", "mustBeIn": "src/controllers", "description": "Controllers → src/controllers/" },
{ "filePattern": "*.repository.ts", "mustBeIn": "src/repositories", "description": "Repos → src/repositories/" },
{ "filePattern": "*.store.ts", "mustBeIn": "src/stores", "description": "Stores → src/stores/" },
{ "filePattern": "*.dto.ts", "mustBeIn": "src/dto", "description": "DTOs → src/dto/" },
{ "filePattern": "*.entity.ts", "mustBeIn": "src/entities", "description": "Entities → src/entities/" }
],
"devManager.quality.builtin.projectStructure.folderRules": [
{ "folderPattern": "src/hooks", "mustExport": "export function use | export const use", "description": "Hooks must export useXxx" },
{ "folderPattern": "src/services", "mustExport": "export class | export function | export const", "description": "Services must export" },
{ "folderPattern": "src/components", "mustExport": "export default | export const", "description": "Components must export" }
],
"devManager.quality.builtin.projectStructure.warnAt": 1,
"devManager.quality.builtin.projectStructure.failAt": 5
}

Component Inventory (Duplicate Detection)

{
"devManager.quality.builtin.componentInventory.minCountOverrides": {
"Button": 3,
"useFetch*": 3
},
"devManager.quality.builtin.componentInventory.customPatterns": [
{ "pattern": "Panel", "label": "Panel", "suggestion": "unified Panel component", "kind": "component", "minCount": 2 },
{ "pattern": "useCart", "label": "useCart*","suggestion": "single cart hook", "kind": "hook", "minCount": 2 }
]
}

Coupling & Complexity

{
"devManager.quality.builtin.couplingMetrics.fanOutWarn": 15,
"devManager.quality.builtin.couplingMetrics.fanOutFail": 30,
"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.parameterCount.warnAt": 4,
"devManager.quality.builtin.parameterCount.failAt": 7
}

CLI Security Tools

{
"devManager.quality.semgrep.enabled": true,
"devManager.quality.semgrep.config": "auto",
"devManager.quality.builtin.trivy.enabled": true,
"devManager.quality.builtin.trivy.failOnSeverity": "HIGH",
"devManager.quality.builtin.trivy.warnOnSeverity": "MEDIUM",
"devManager.quality.builtin.bandit.enabled": true,
"devManager.quality.builtin.hadolint.enabled": true,
"devManager.quality.builtin.shellcheck.enabled": true,
"devManager.quality.builtin.golangciLint.enabled": true,
"devManager.quality.builtin.jscpd.enabled": true,
"devManager.quality.builtin.jscpd.threshold": 5,
"devManager.quality.builtin.knip.enabled": true,
"devManager.quality.builtin.dependencyCruiser.enabled": true,
"devManager.quality.builtin.pkgAudit.enabled": true,
"devManager.quality.builtin.licenseCheck.enabled": true,
"devManager.quality.builtin.tscCheck.enabled": true,
"devManager.quality.builtin.stryker.enabled": false
}

Database Schema Lint

Schema Lint is enabled by default — only add these if you need to customize:

{
// Built-in schema linter (pure Node.js, auto-detects ORM stack — always on by default)
"devManager.quality.builtin.schemaLint.enabled": true,
// Change Float-for-money severity from fail to warn (e.g. during migration)
"devManager.quality.builtin.schemaLint.floatForMoneySeverity": "fail",
// Disable specific rules (e.g. if project intentionally has no timestamps)
"devManager.quality.builtin.schemaLint.disabledRules": ["missingTimestamps"],
// Extend money field detection with project-specific terms
"devManager.quality.builtin.schemaLint.moneyFieldPatterns": ["turnover", "proceeds"],
// Raise/lower the large-model threshold (default: 30 fields)
"devManager.quality.builtin.schemaLint.maxFieldsPerModel": 40,
// CLI: prisma-lint (only if installed — npm i -D prisma-lint)
"devManager.quality.builtin.prismaLint.enabled": true,
// CLI: Squawk — PostgreSQL migration safety (only if installed — npm i -g squawk-cli)
"devManager.quality.builtin.squawk.enabled": true,
// CLI: Atlas migration linter (only if installed — see atlasgo.io)
"devManager.quality.builtin.atlas.enabled": true
}

Exclusions & Report

{
"devManager.quality.skipDirs": ["generated", "proto-gen", "legacy", "storybook-static"],
"devManager.quality.skipFiles": ["src/generated/graphql.ts", "**/*.generated.ts"],
"devManager.quality.chatReport": "onFail",
"devManager.quality.chatPrompt": ""
}

Git, CI/CD, AI

{
"devManager.git.defaultBranch": "main",
"devManager.git.protectedBranches": ["main", "master", "develop", "staging", "production"],
"devManager.ci.workflowsPath": ".github/workflows",
"devManager.gemini.apiKey": "",
"devManager.gemini.model": "gemini-2.5-flash"
}

Full Examples

Next.js + Prisma + Docker

{
"devManager.project.name": "my-app",
"devManager.project.dir": "C:/Users/dev/projects/my-app",
"devManager.project.packageManager": "pnpm",
"devManager.project.servers": [
{ "id": "web", "label": "Frontend", "command": "pnpm run dev", "path": "", "port": 3000 }
],
"devManager.project.containerActions": [
{ "label": "Up", "command": "docker compose up -d" },
{ "label": "Down", "command": "docker compose down" },
{ "label": "Logs", "command": "docker compose logs -f --tail 100" },
{ "label": "Down + Volumes", "command": "docker compose down -v", "confirm": true }
],
"devManager.quality.customChecks": [
{ "label": "lint", "script": "lint", "type": "script" },
{ "label": "typecheck", "script": "typecheck", "type": "script" },
{ "label": "build", "script": "build", "type": "script" }
],
"devManager.quality.builtin.projectStructure.fileRules": [
{ "filePattern": "*.service.ts", "mustBeIn": "src/services", "description": "Services → src/services/" },
{ "filePattern": "*.repository.ts", "mustBeIn": "src/repositories", "description": "Repos → src/repositories/" }
],
"devManager.quality.builtin.projectStructure.folderRules": [
{ "folderPattern": "src/hooks", "mustExport": "export function use | export const use", "description": "Hook files must export useXxx" }
],
"devManager.quality.semgrep.enabled": true,
"devManager.quality.builtin.trivy.enabled": true,
"devManager.quality.builtin.knip.enabled": true,
// Schema lint is on by default — customize only if needed:
"devManager.quality.builtin.schemaLint.floatForMoneySeverity": "fail"
}

Turborepo + pnpm (3 servers)

{
"devManager.project.name": "stack-base",
"devManager.project.dir": "C:/Users/dev/projects/stack-base",
"devManager.project.packageManager": "pnpm",
"devManager.project.servers": [
{ "id": "web", "label": "Frontend", "command": "pnpm run dev", "path": "apps/web", "port": 5173 },
{ "id": "api", "label": "API", "command": "pnpm run dev", "path": "apps/api", "port": 8787 },
{ "id": "inngest", "label": "Inngest", "command": "pnpm dlx inngest-cli@latest dev", "path": "apps/web", "port": 8288 }
],
"devManager.project.containerActions": [
{ "label": "Up", "command": "docker compose up -d" },
{ "label": "Down", "command": "docker compose down" }
],
"devManager.quality.customChecks": [
{ "label": "lint", "script": "lint", "type": "script" },
{ "label": "typecheck", "script": "typecheck", "type": "script" },
{ "label": "build", "script": "build", "type": "script" }
]
}

Django + React + Celery

{
"devManager.project.name": "fullstack-app",
"devManager.project.dir": "C:/Users/dev/projects/fullstack-app",
"devManager.project.packageManager": "npm",
"devManager.project.servers": [
{ "id": "frontend", "label": "React", "command": "npm run dev", "path": "frontend", "port": 3000 },
{ "id": "backend", "label": "Django", "command": "python manage.py runserver 8000", "path": "backend", "port": 8000 },
{ "id": "celery", "label": "Celery Worker", "command": "celery -A config worker -l info", "path": "backend", "port": 0 }
],
"devManager.quality.customChecks": [
{ "label": "pytest", "script": "python -m pytest", "type": "command" },
{ "label": "flake8", "script": "flake8 .", "type": "command" }
],
"devManager.quality.builtin.bandit.enabled": true,
"devManager.quality.skipDirs": ["staticfiles", "media_uploads"]
}

Go Microservices

{
"devManager.project.name": "platform",
"devManager.project.dir": "C:/Users/dev/projects/platform",
"devManager.project.packageManager": "npm",
"devManager.project.servers": [
{ "id": "gateway", "label": "API Gateway", "command": "go run ./cmd/gateway", "path": "services/gateway", "port": 8080 },
{ "id": "auth", "label": "Auth Service", "command": "go run ./cmd/auth", "path": "services/auth", "port": 8081 },
{ "id": "notify", "label": "Notifications", "command": "go run ./cmd/notifications", "path": "services/notifications", "port": 8082 }
],
"devManager.project.containerActions": [
{ "label": "Up (infra)", "command": "docker compose -f infra/docker-compose.yaml up -d" },
{ "label": "Down", "command": "docker compose -f infra/docker-compose.yaml down" }
],
"devManager.quality.customChecks": [
{ "label": "go vet", "script": "go vet ./...", "type": "command" },
{ "label": "go test", "script": "go test ./...", "type": "command" },
{ "label": "go build", "script": "go build ./...", "type": "command" }
],
"devManager.quality.builtin.golangciLint.enabled": true,
"devManager.quality.builtin.projectStructure.fileRules": [
{ "filePattern": "*_handler.go", "mustBeIn": "internal/handlers", "description": "Handlers → internal/handlers/" },
{ "filePattern": "*_service.go", "mustBeIn": "internal/services", "description": "Services → internal/services/" },
{ "filePattern": "*_repo.go", "mustBeIn": "internal/repo", "description": "Repos → internal/repo/" }
],
"devManager.quality.skipDirs": ["proto-gen"]
}

All Settings Reference

For the complete authoritative settings list, see All Settings →.

Quick links to feature docs used during setup:

TopicDoc page
Dev Servers/features/servers/
Docker Compose/features/containers/
Quality Hub overview/quality/
Built-in Checks (all 70+)/quality/builtin-checks/
CLI Tool Checks/quality/cli-tools/
Cloud Providers (15)/quality/cloud-providers/
Custom Checks/quality/custom-checks/
All Settings/reference/configuration/
CLI Tools Install/reference/cli-install/