Skip to content

Instantly share code, notes, and snippets.

@nanotaboada
Last active February 22, 2026 16:56
Show Gist options
  • Select an option

  • Save nanotaboada/00c435a33bc2f4533fac9bb7fc68fdc7 to your computer and use it in GitHub Desktop.

Select an option

Save nanotaboada/00c435a33bc2f4533fac9bb7fc68fdc7 to your computer and use it in GitHub Desktop.
⚙ VS Code Settings
// ---------------------------------------------------------------------------------------------------------------------------
// ⚙ VS Code Settings
// Customized settings for optimal development experience
// https://code.visualstudio.com/docs/configure/settings
// ---------------------------------------------------------------------------------------------------------------------------
{
// -------------------------------------------------------------------------------------------------------------------------
// 🗜 Workbench
// General UI behavior and appearance
// -------------------------------------------------------------------------------------------------------------------------
"security.workspace.trust.untrustedFiles": "open", // Open untrusted files
"workbench.startupEditor": "none", // Don't show welcome page
"workbench.fontAliasing": "antialiased", // Smooth font rendering
"workbench.activityBar.location": "default", // Activity bar position
// 🗂 Editor tabs and layout -----------------------------------------------------------------------------------------------
"workbench.editor.customLabels.enabled": true, // Custom file labels
"workbench.editor.dragToOpenWindow": true, // Drag tabs to new window
"workbench.editor.decorations.colors": true, // Show file decoration colors
"workbench.editor.pinnedTabSizing": "normal", // Pinned tab width
"workbench.editor.pinnedTabsOnSeparateRow": true, // Separate row for pinned tabs
"workbench.editor.wrapTabs": true, // Wrap tabs when overflow
"workbench.editor.closeOnFileDelete": true, // Close deleted files
"workbench.editor.highlightModifiedTabs": true, // Visually mark unsaved tabs (default: false)
"workbench.editor.enablePreview": false, // Single-click opens permanent tab (default: true)
"workbench.editor.tabSizing": "fit", // Tabs shrink to fit (explicit, matches default)
// 🪾 Tree views (Explorer, Search, Git panels) ----------------------------------------------------------------------------
"workbench.tree.enableStickyScroll": true, // Sticky parent folders
"workbench.tree.stickyScrollMaxItemCount": 9, // Max sticky items
"workbench.tree.indent": 11, // Tree indentation (px)
"workbench.tree.renderIndentGuides": "always", // Show indent guides
"workbench.colorCustomizations": {
"tree.indentGuidesStroke": "#999999",
"[Material Theme Darker High Contrast]": {}
},
"workbench.list.smoothScrolling": true, // Smooth tree/list scrolling (default: false)
// 🪟 Window behavior and appearance ---------------------------------------------------------------------------------------
"window.density.editorTabHeight": "compact", // Compact tab height
"window.titleBarStyle": "native", // Use native OS title bar
"window.customTitleBarVisibility": "auto", // Custom title bar (macOS)
"window.zoomPerWindow": true, // Per-window zoom level
"window.systemColorTheme": "auto", // Match system theme
"window.confirmSaveUntitledWorkspace": true, // Confirm save workspace
"window.newWindowProfile": "Default", // Default window profile
// 🎨 Visual appearance ----------------------------------------------------------------------------------------------------
"workbench.iconTheme": "material-icon-theme", // Material icons
"workbench.colorTheme": "GitHub Dark", // GitHub Dark theme
// 🕓 Local history -------------------------------------------------------------------------------------------------------
"workbench.localHistory.enabled": true, // Keep local file history (explicit, matches default)
"workbench.localHistory.maxFileEntries": 55, // Max history entries per file
// -------------------------------------------------------------------------------------------------------------------------
// 📂 Explorer
// File explorer: layout, behavior, and file/folder visibility
// -------------------------------------------------------------------------------------------------------------------------
"explorer.autoReveal": true, // ⚠️ Auto-reveal active file in explorer
"explorer.compactFolders": false, // Don't compact single-child folders (keep full path visible)
"explorer.excludeGitIgnore": true, // ⚠️ Exclude files from explorer based on .gitignore
"explorer.confirmDelete": true, // Always confirm before delete
"explorer.confirmDragAndDrop": true, // Always confirm drag & drop moves
"explorer.fileNesting.enabled": true, // Group related files under parent
"explorer.fileNesting.patterns": {
"*.ts": "${capture}.js",
"*.js": "${capture}.js.map, ${capture}.min.js, ${capture}.d.ts",
"*.jsx": "${capture}.js",
"*.tsx": "${capture}.ts",
"tsconfig.json": "tsconfig.*.json",
"package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb",
"go.mod": "go.sum", // Group Go module files
"*.csproj": "*.sln", // Group .NET solution files
"pom.xml": ".mvn, mvnw, mvnw.cmd" // Group Maven wrapper files
},
// -------------------------------------------------------------------------------------------------------------------------
// ✏️ Editor
// Code editor: formatting, behavior, and appearance
// -------------------------------------------------------------------------------------------------------------------------
// 🔤 Font & rendering -----------------------------------------------------------------------------------------------------
"editor.fontFamily": "MesloLGS NF, Menlo, Monaco, 'Courier New', monospace",
"editor.codeLensFontFamily": "MesloLGS NF, Menlo, Monaco, 'Courier New', monospace",
"editor.inlineSuggest.fontFamily": "MesloLGS NF, Menlo, Monaco, 'Courier New', monospace",
"editor.semanticHighlighting.enabled": true, // Semantic token colors
"editor.bracketPairColorization.enabled": true, // Color-code brackets
// 🖱️ Cursor ---------------------------------------------------------------------------------------------------------------
"editor.cursorStyle": "block", // Block-style cursor
"editor.cursorBlinking": "smooth", // Smooth cursor blink
"editor.cursorSmoothCaretAnimation": "on", // Smooth cursor movement
"editor.cursorSurroundingLines": 8, // Visible lines around cursor
"editor.cursorSurroundingLinesStyle": "default", // Apply to all lines
// 📐 Indentation & whitespace ---------------------------------------------------------------------------------------------
"editor.tabSize": 4,
"editor.insertSpaces": true, // ⚠️ Use spaces, not tabs
"editor.trimAutoWhitespace": true, // ⚠️ Trim auto-inserted whitespace
"editor.renderWhitespace": "boundary", // Show whitespace at boundaries
// 📏 Layout & guides ------------------------------------------------------------------------------------------------------
"editor.wordWrap": "off", // No line wrapping
"editor.rulers": [
{ "column": 127 } // ⚠️ Vertical ruler at column 127 (GitHub)
],
"editor.guides.bracketPairs": "active", // Show active bracket guides
"editor.guides.highlightActiveIndentation": true, // Highlight active indent
// 🔗 Editing behavior -----------------------------------------------------------------------------------------------------
"editor.linkedEditing": true, // Edit matching tags simultaneously
"editor.largeFileOptimizations": false, // Disable large file optimizations
"editor.smoothScrolling": true, // Smooth scrolling
"editor.formatOnPaste": false, // Don't format on paste (format on save handles it)
// 🔍 Find -----------------------------------------------------------------------------------------------------------------
"editor.find.seedSearchStringFromSelection": "always", // Pre-fill find with current selection
// 🔍 Occurrences & navigation ---------------------------------------------------------------------------------------------
"editor.occurrencesHighlight": "singleFile", // Highlight occurrences in file
"editor.gotoLocation.multipleDefinitions": "peek", // Peek when multiple definitions exist
// 💡 Suggestions & IntelliSense -------------------------------------------------------------------------------------------
"editor.wordBasedSuggestions": "offWithInlineSuggestions", // Suppress word suggestions when Copilot is active
"editor.suggest.localityBonus": true, // Rank nearby symbols higher in suggestions
"editor.inlayHints.enabled": "off", // ⚠️ Disable inlay hints (reduce visual noise)
// 📌 Sticky scroll --------------------------------------------------------------------------------------------------------
"editor.stickyScroll.enabled": true, // Keep scope visible while scrolling
"editor.stickyScroll.maxLineCount": 9, // Max sticky lines
"editor.stickyScroll.scrollWithEditor": true, // Sync sticky scroll with editor
// 🗺️ Minimap --------------------------------------------------------------------------------------------------------------
"editor.minimap.enabled": true, // Show minimap
"editor.minimap.maxColumn": 127, // Match ruler column
"editor.minimap.renderCharacters": false, // Use blocks not chars
"editor.minimap.showSlider": "always", // Always show slider
"editor.minimap.size": "fill", // Fill vertical space
// 📋 Clipboard ------------------------------------------------------------------------------------------------------------
"editor.copyWithSyntaxHighlighting": false, // ⚠️ Prevents copying rich text to clipboard —
// avoids extra blank lines when pasting into
// Slack, Jira, Confluence, etc.
// -------------------------------------------------------------------------------------------------------------------------
// 🍞 Breadcrumbs
// File and symbol navigation at the top of the editor
// -------------------------------------------------------------------------------------------------------------------------
"breadcrumbs.enabled": true, // Show breadcrumbs
"breadcrumbs.symbolPath": "on", // Show symbol path in breadcrumbs
// -------------------------------------------------------------------------------------------------------------------------
// 🔀 Diff Editor
// Side-by-side diff viewer settings
// -------------------------------------------------------------------------------------------------------------------------
"diffEditor.codeLens": true, // Show code lens in diff editor
"diffEditor.ignoreTrimWhitespace": false, // Show whitespace changes in diffs
"diffEditor.renderGutterMenu": true, // Show gutter menu for quick actions in diff editor
"diffEditor.experimental.showMoves": true, // Show moved code blocks in diffs (v1.85+)
"diffEditor.diffAlgorithm": "advanced", // Use advanced diff algorithm for better diffs (v1.85+)
"diffEditor.hideUnchangedRegions.enabled": false, // Don't hide unchanged regions in diffs
"diffEditor.renderSideBySide": true, // Always side-by-side (explicit, matches default)
// -------------------------------------------------------------------------------------------------------------------------
// 💻 Terminal
// Integrated terminal: appearance, behavior, and shell integration
// -------------------------------------------------------------------------------------------------------------------------
// 🔗 Link schemes ---------------------------------------------------------------------------------------------------------
"terminal.integrated.allowedLinkSchemes": [
"docker-desktop",
"file",
"http",
"https",
"mailto",
"vscode",
"vscode-insiders"
],
// 🎨 Appearance -----------------------------------------------------------------------------------------------------------
"terminal.integrated.fontFamily": "MesloLGS NF, Menlo, Monaco, 'Courier New', monospace",
"terminal.integrated.fontSize": 12,
"terminal.integrated.rescaleOverlappingGlyphs": true, // Better rendering of overlapping characters (e.g. ligatures, emojis)
"terminal.integrated.smoothScrolling": true, // Smooth terminal scrolling
"terminal.integrated.mouseWheelZoom": true, // Ctrl + mouse wheel zooms terminal font
// 🖱️ Cursor ---------------------------------------------------------------------------------------------------------------
"terminal.integrated.cursorStyle": "block", // Block cursor (matches editor style)
"terminal.integrated.cursorBlinking": false, // Don't blink cursor (can be distracting)
// 📋 Selection & clipboard ------------------------------------------------------------------------------------------------
"terminal.integrated.copyOnSelection": false, // Don't auto-copy on select
"terminal.integrated.rightClickBehavior": "selectWord", // Right-click selects word
// 🔔 Notifications --------------------------------------------------------------------------------------------------------
"terminal.integrated.confirmOnKill": "editor", // Confirm kill only in editor tabs
"terminal.integrated.showExitAlert": true, // Alert on non-zero exit
"terminal.integrated.enableMultiLinePasteWarning": "auto", // Warn on multi-line paste
// 📜 Scrollback -----------------------------------------------------------------------------------------------------------
"terminal.integrated.scrollback": 1100, // Lines to keep in buffer
"terminal.integrated.persistentSessionScrollback": 110, // Lines saved across sessions
// 🔁 Session & environment ------------------------------------------------------------------------------------------------
"terminal.integrated.enablePersistentSessions": true, // Restore terminals on restart
"terminal.integrated.inheritEnv": true, // Inherit shell env variables
"terminal.integrated.macOptionIsMeta": false, // ⚠️ Option key as Option, not Meta (macOS)
// 🔌 Shell integration ----------------------------------------------------------------------------------------------------
"terminal.integrated.shellIntegration.enabled": true, // Enable shell integration
"terminal.integrated.shellIntegration.decorationsEnabled": "both", // Show command decorations in gutter
"terminal.integrated.shellIntegration.quickFixEnabled": true, // Quick fixes in terminal
// 💡 Suggestions ----------------------------------------------------------------------------------------------------------
"terminal.integrated.suggest.enabled": true, // Terminal IntelliSense
"terminal.integrated.suggest.suggestOnTriggerCharacters": true, // Suggest on -,/,etc
// 🗂️ Tabs -----------------------------------------------------------------------------------------------------------------
"terminal.integrated.tabs.defaultIcon": "terminal", // Default tab icon
"terminal.integrated.tabs.title": "${process}", // Show process name in tab
"terminal.integrated.tabs.description": "${task}${separator}${local}${separator}${cwdFolder}",
// 🔒 Sticky scroll --------------------------------------------------------------------------------------------------------
"terminal.integrated.stickyScroll.enabled": false, // No sticky scroll
// -------------------------------------------------------------------------------------------------------------------------
// 📄 Files
// File handling, encoding, and visibility
// -------------------------------------------------------------------------------------------------------------------------
"files.autoGuessEncoding": true, // Auto-detect encoding
"files.autoSaveWorkspaceFilesOnly": false, // Auto-save all files
"files.autoSaveWhenNoErrors": false, // No save on errors
"files.insertFinalNewline": true, // ⚠️ Ensure file ends with newline
"files.trimFinalNewlines": true, // ⚠️ Trim extra blank lines at end of file
"files.trimTrailingWhitespace": true, // ⚠️ Trim trailing whitespace on save
"files.associations": {
"*.json": "json",
"settings.json": "jsonc", // ⚠️ Use JSON with comments for settings file
".runsettings": "xml", // .NET test settings file
"*.cshtml": "html", // Razor views (C# + HTML)
"*.razor": "razor", // Blazor components
"go.mod": "go.mod", // Go module definition
"go.sum": "go.sum", // Go dependency checksums
"requirements.txt": "pip-requirements", // Python dependencies
"Pipfile": "pipfile", // Python Pipenv dependencies
"*.pom": "xml", // Maven project files
"*.yml": "yaml", // YAML files
"copilot-instructions.md": "markdown" // Copilot instruction files (markdown format)
},
"files.exclude": {
"**/.classpath": true, // Java Eclipse metadata
"**/.factorypath": true, // Java Eclipse metadata
"**/.project": true, // Eclipse project file
"**/.settings": true, // Eclipse settings
"**/bin": true, // .NET build output
"**/obj": true, // .NET intermediate files
"**/.vs": true // Visual Studio metadata
},
"files.watcherExclude": {
"**/bin/**": true, // .NET build output
"**/obj/**": true, // .NET intermediate files
"**/.git/objects/**": true, // Git object database
"**/.git/subtree-cache/**": true, // Git subtree cache
"**/node_modules/*/**": true, // Node.js dependencies (huge perf impact)
"**/.hg/store/**": true, // Mercurial store
"**/__pycache__/**": true, // Python bytecode
"**/.pytest_cache/**": true, // Pytest cache
"**/.venv/**": true, // Python virtual environments
"**/venv/**": true,
"**/target/**": true, // Java/Maven builds
"**/.gradle/**": true, // Gradle cache
"**/build/**": true, // Generic build output
"**/dist/**": true // Distribution files
},
// -------------------------------------------------------------------------------------------------------------------------
// 🔍 Search
// Search behavior, indexing, and file exclusions
// -------------------------------------------------------------------------------------------------------------------------
"search.collapseResults": "alwaysExpand", // Always expand search results (default: auto)
"search.showLineNumbers": true, // Show line numbers in results (default: false)
"search.smartCase": true, // Case-insensitive unless pattern has uppercase (default: false)
"search.maxResults": 20000, // Explicit cap on results (explicit)
"search.searchOnType": true, // Search as you type (explicit)
"search.useIgnoreFiles": true, // ⚠️ Respect .gitignore and similar files
"search.exclude": {
"**/bin": true, // .NET build output
"**/obj": true, // .NET intermediate build files
"**/node_modules": true, // Node.js dependencies
"**/.git": true, // Git metadata
"**/coverage": true, // Test coverage reports
"**/.vs": true, // Visual Studio metadata
"**/__pycache__": true, // Python bytecode cache
"**/.pytest_cache": true, // Pytest cache
"**/.venv": true, // Python virtual environment
"**/venv": true, // Python virtual environment (alternative name)
"**/.mypy_cache": true, // MyPy type checker cache
"**/target": true, // Maven/Java build output
"**/.gradle": true, // Gradle cache
"**/build": true, // Generic build output
"**/dist": true // Distribution/compiled output
},
// -------------------------------------------------------------------------------------------------------------------------
// 🌿 Source Control
// Git integration, commit behavior, and branch settings
// -------------------------------------------------------------------------------------------------------------------------
"git.autoStash": true, // Auto-stash changes when switching branches
"git.autofetch": true, // Auto-fetch changes from remotes
"git.openRepositoryInParentFolders": "never", // Don't auto-detect repos in parent folders
"git.showCommitInput": true, // Show commit input box
"git.timeline.showAuthor": true, // Show commit author in timeline
"git.timeline.showUncommitted": true, // Show uncommitted changes in timeline
"git.branchProtection": [
"master"
], // Protect master branch
"git.defaultBranchName": "master", // Default branch name for new repos
"git.mergeEditor": true, // Use merge editor for conflicts
"git.promptToSaveFilesBeforeCommit": "always", // Save before commit
"git.promptToSaveFilesBeforeStash": "always", // Save before stash
"git.pruneOnFetch": false, // Don't auto-prune remote branches on fetch
"git.requireGitUserConfig": true, // Require user.name and user.email for commits
"git.suggestSmartCommit": false, // Don't suggest smart commit (only commit staged changes)
// 🏷️ Git Blame annotations ------------------------------------------------------------------------------------------------
"git.blame.editorDecoration.enabled": true, // ⚠️ Show blame annotations in editor
"git.blame.editorDecoration.template": "${subject} • ${authorName} • ${authorDateAgo}",
"git.blame.statusBarItem.enabled": true, // Show blame info in status bar
"git.blame.statusBarItem.template": "${authorName} • ${authorDateAgo} • ${subject}",
// 🕶 Modern Git features (v1.85+) -----------------------------------------------------------------------------------------
"scm.repositories.selectionMode": "single", // Only select one repository at a time
"scm.inputMinLineCount": 1, // Minimum lines for commit input box
"scm.inputMaxLineCount": 10, // Maximum lines for commit input box
"scm.inputFontSize": 12, // Commit input font size
"git.decorations.enabled": true, // Enable Git decorations (e.g. modified/added indicators)
"git.verboseCommit": false, // Don't show detailed commit messages in SCM view (keep it concise)
"git.useEditorAsCommitInput": false, // Use built-in commit input box, not editor (explicit, matches default)
// 🔘 SCM action buttons ---------------------------------------------------------------------------------------------------
"git.showActionButton": {
"commit": true,
"publish": true,
"sync": true
},
"git.experimental.diffAlgorithm": "histogram", // Histogram diff algorithm
// -------------------------------------------------------------------------------------------------------------------------
// 🐙 GitHub
// GitHub integration, pull requests, and Copilot AI settings
// -------------------------------------------------------------------------------------------------------------------------
"github.branchProtection": true, // Enable branch protection features
"githubPullRequests.createOnPublishBranch": "ask", // Ask before creating PR on publish
"githubPullRequests.pullBranch": "never", // Don't auto-checkout PR branches
// 🤖 Copilot AI settings --------------------------------------------------------------------------------------------------
"github.copilot.enable": {
// Per-language enablement
"*": true, // Enable for all languages by default
"markdown": false, // Disable for markdown files
"plaintext": false, // Disable for plain text files
"scminput": false // Disable for SCM input (e.g. commit messages) to avoid distractions
},
"github.copilot.editor.enableCodeActions": true, // Enable Copilot code actions (e.g. "Fix this code", "Add error handling")
"github.copilot.selectedCompletionModel": "gpt-4.1", // Use GPT-4.1 for Copilot completions
"github.copilot.renameSuggestions.triggerAutomatically": true, // ⚠️ Automatically trigger rename suggestions
// when renaming symbols (can be noisy, but helps
// keep code consistent)
"github.copilot.chat.codeGeneration.useInstructionFiles": true, // Use instruction files for code generation
"github.copilot.chat.agent.currentEditorContext.enabled": true, // Include active editor name in agent context
"github.copilot.chat.agent.autoFix": false, // ⚠️ Don't automatically apply fixes, show
// suggestions in chat for user review instead
// (safer, prevents unintended changes)
// Next Edit Suggestions (NES) - AI-generated edit suggestions based on diagnostics, code context, and recent changes ------
"github.copilot.nextEditSuggestions.enabled": true, // Enable Next Edit Suggestions
"github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges": true, // Allow NES to suggest changes that only modify
// whitespace (e.g. formatting fixes)
"github.copilot.nextEditSuggestions.extendedRange": true, // Consider larger code context for NES
"github.copilot.nextEditSuggestions.fixes": true, // Offer diagnostic fixes via NES
"github.copilot.nextEditSuggestions.preferredModel": "none", // ⚠️ Use default model for Next Edit Suggestions
// (don't pin to a specific model, allow updates
// and improvements over time)
// 🚧 Experimental (These settings enable experimental features that may be unstable. Use with caution.)
// -------------------------------------------------------------------------------------------------------------------------
// 🤖 Agent mode -----------------------------------------------------------------------------------------------------------
"github.copilot.chat.askQuestions.enabled": true, // ⚠️ Allow agents to ask clarifying questions
// in chat when user intent is unclear (can lead
// to better results, may generate more messages)
"github.copilot.chat.summarizeAgentConversationHistory.enabled": true, // ⚠️ Summarize agent conversation history to
// improve performance and context relevance
// (especially for long-running sessions)
"github.copilot.chat.agentHistorySummarizationForceGpt41": true, // ⚠️ Force using GPT-4.1 for agent conversation
// history summarization for best results,
// even if a different model is selected for
// the agent (summarization quality is critical
// for agent performance)
"github.copilot.chat.agent.temperature": 0, // Use deterministic responses for agent tools
"github.copilot.chat.agent.largeToolResultsToDisk.enabled": true, // Offload large tool results to disk to prevent
// memory issues (e.g. large diffs, test outputs)
"github.copilot.chat.agent.largeToolResultsToDisk.thresholdBytes": 8192, // Threshold for offloading tool results to disk
// (8KB, adjust based on typical tool output sizes)
// 🔮 Anthropic / Claude ---------------------------------------------------------------------------------------------------
"github.copilot.chat.anthropic.useMessagesApi": true, // Use Messages API for Anthropic models
"github.copilot.chat.anthropic.thinking.budgetTokens": 16000, // Token budget for Anthropic model thinking
// process (higher allows for more complex
// reasoning but may increase latency)
"github.copilot.chat.anthropic.contextEditing.enabled": false, // ⚠️ Allow Anthropic models to edit their own
// context (can lead to better results but may
// cause issues if the model removes important
// information)
// 🔍 Code Review
"github.copilot.chat.reviewAgent.enabled": true, // Enable code review agent for pull requests
// and code files
"github.copilot.chat.reviewSelection.enabled": true, // Allow selecting specific code blocks for
// review by the agent (instead of whole file)
// for more focused feedback
// 📝 Commit & PR generation -----------------------------------------------------------------------------------------------
"github.copilot.chat.commitMessageGeneration.instructions": [
{ "text": "Use conventional commit format: <type>(<scope>): <description>" }
],
"github.copilot.chat.pullRequestDescriptionGeneration.instructions": [],
// -------------------------------------------------------------------------------------------------------------------------
// 🐛 Run and Debug
// Debugging behavior, configurations, and UI settings
// -------------------------------------------------------------------------------------------------------------------------
"debug.javascript.autoAttachFilter": "onlyWithFlag", // Auto-attach to Node.js processes with --inspect
"debug.toolBarLocation": "commandCenter", // Centralized debug toolbar
"debug.closeReadonlyTabsOnEnd": true, // Close debug tabs when session ends
"debug.inlineValues": "auto", // Show variable values inline while debugging
"debug.openDebug": "openOnDebugBreak", // Open debug view only on breakpoint hit
"debug.terminal.clearBeforeReusing": true, // Clear terminal before each debug session (default: false)
"debug.focusEditorOnBreak": true, // Focus editor when debugger breaks (explicit)
"debug.onTaskErrors": "prompt", // Ask what to do on preLaunchTask errors (explicit)
"debug.console.fontFamily": "MesloLGS NF, Menlo, Monaco, 'Courier New', monospace", // Match editor font
"debug.console.fontSize": 12, // Match terminal font size
// -------------------------------------------------------------------------------------------------------------------------
// 🧪 Testing
// Test explorer, runners, and coverage settings
// -------------------------------------------------------------------------------------------------------------------------
"testing.defaultGutterClickAction": "run", // Clicking test gutter runs test
"testing.followRunningTest": true, // Auto-reveal running test in explorer
"testing.saveBeforeTest": true, // Save dirty editors before running tests (explicit)
"testing.automaticallyOpenTestResults": "openOnTestStart", // Open test results view when test starts
"testing.automaticallyOpenPeekView": "failureInVisibleDocument", // Open peek view on test failure if test is in currently visible document
"testing.alwaysRevealTestOnStateChange": true, // Always reveal test in explorer when its state changes (e.g. from running to failed) to keep test results visible
"testing.countBadge": "failed", // Show failed test count in badge
// 🚦 Coverage thresholds ------------------------------------------------------------------------------------------------
"testing.showCoverageInExplorer": true, // Show coverage in File Explorer (explicit)
"testing.coverageBarThresholds": {
"red": 0,
"yellow": 40,
"green": 80
},
// -------------------------------------------------------------------------------------------------------------------------
// 🌐 Language-Specific
// Settings for individual programming languages
// -------------------------------------------------------------------------------------------------------------------------
// 🟣 .NET / C# ------------------------------------------------------------------------------------------------------------
"[csharp]": {
"editor.defaultFormatter": "csharpier.csharpier-vscode",
"editor.formatOnSave": true
},
// Note: C# DevKit inlay hints are controlled via editor UI (right-click > Inlay Hints)
// Legacy csharp.inlayHints settings are deprecated in favor of dotnet settings
"dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "openFiles", // Analyzer diagnostics for open files only
"dotnet.backgroundAnalysis.compilerDiagnosticsScope": "openFiles", // Compiler diagnostics for open files only
"dotnet.server.useOmnisharp": false, // ⚠️ Use .NET DevKit, not OmniSharp
"dotnet.symbolSearch.searchReferenceAssemblies": true, // Search reference assemblies for symbols
// 🟪 CSS ------------------------------------------------------------------------------------------------------------------
"[css]": {
"editor.defaultFormatter": "vscode.css-language-features",
"editor.formatOnSave": true
},
// 🚢 Docker ---------------------------------------------------------------------------------------------------------------
"[dockerfile]": {
"editor.defaultFormatter": "ms-azuretools.vscode-containers"
},
"[dockercompose]": {
"editor.insertSpaces": true,
"editor.tabSize": 2,
"editor.autoIndent": "advanced",
"editor.quickSuggestions": {
"other": true,
"comments": false,
"strings": true
},
"editor.defaultFormatter": "redhat.vscode-yaml"
},
// 🐿️ Go -------------------------------------------------------------------------------------------------------------------
"[go]": {
"editor.defaultFormatter": "golang.go",
"editor.formatOnSave": true
},
"go.toolsManagement.autoUpdate": true, // Auto-update Go tools
"go.useLanguageServer": true, // Use gopls language server
"go.lintOnSave": "package", // Lint on save for current package
"go.vetOnSave": "package", // Vet on save for current package
"go.coverOnSave": false, // Don't run coverage on save (use test explorer instead)
"go.testFlags": [
"-v"
], // Verbose test output
"gopls": {
// gopls LSP settings
"ui.semanticTokens": true,
"ui.codelenses": {
"test": true,
"references": true
}
},
// 🟧 HTML -----------------------------------------------------------------------------------------------------------------
"[html]": {
"editor.defaultFormatter": "vscode.html-language-features",
"editor.formatOnSave": true
},
// ☕️ Java -----------------------------------------------------------------------------------------------------------------
"java.compile.nullAnalysis.mode": "automatic", // Null pointer analysis
"java.configuration.updateBuildConfiguration": "automatic", // Auto-update build config
"java.codeGeneration.useBlocks": true, // Always use {} blocks
"java.saveActions.organizeImports": true, // Organize imports
"java.sources.organizeImports.starThreshold": 99, // Avoid wildcard imports
"java.test.config": {}, // Use default test config
// 🟨 JavaScript -----------------------------------------------------------------------------------------------------------
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"javascript.updateImportsOnFileMove": "always", // Update imports on move
"javascript.preferences.importModuleSpecifier": "relative", // Use relative imports
"javascript.suggest.autoImports": true, // Auto-add imports
"javascript.suggest.completeFunctionCalls": true, // Add () on completion
// ⚫ JSON -----------------------------------------------------------------------------------------------------------------
"[json]": {
"editor.defaultFormatter": "vscode.json-language-features",
"editor.formatOnSave": true,
"editor.tabSize": 2
},
"json.maxItemsComputed": 99999, // Process large JSON files
// ⚫ JSONC (JSON with Comments) -------------------------------------------------------------------------------------------
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.tabSize": 2
},
// ⬜ Markdown -------------------------------------------------------------------------------------------------------------
"[markdown]": {
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint",
"editor.formatOnSave": true,
"editor.unicodeHighlight.invisibleCharacters": true,
"editor.wordWrap": "on"
},
// 🔤 Plain Text -----------------------------------------------------------------------------------------------------------
"[plaintext]": {
"editor.unicodeHighlight.invisibleCharacters": true
},
// 🐍 Python ---------------------------------------------------------------------------------------------------------------
"[python]": {
"editor.defaultFormatter": "ms-python.python",
"editor.formatOnSave": true
},
"python.analysis.autoImportCompletions": true, // Auto-import completions
"python.analysis.completeFunctionParens": true, // Add parentheses on function completions
"python.analysis.typeCheckingMode": "basic", // Basic type checking (more performant than strict)
"python.languageServer": "Pylance", // Use Pylance language server
"python.testing.pytestArgs": [
"tests",
"-v"
],
"python.testing.pytestEnabled": true, // Enable pytest
"python.testing.unittestEnabled": false, // Disable unittest
// 💾 SQL ------------------------------------------------------------------------------------------------------------------
"[sql]": {
"editor.defaultFormatter": "inferrinizzard.prettier-sql-vscode"
},
// 🔵 TypeScript -----------------------------------------------------------------------------------------------------------
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"typescript.updateImportsOnFileMove.enabled": "always", // Update imports on move
"typescript.preferences.importModuleSpecifier": "relative", // Use relative imports
"typescript.suggest.autoImports": true, // Auto-add imports
// 🅰️ YAML -----------------------------------------------------------------------------------------------------------------
"[yaml]": {
"editor.defaultFormatter": "redhat.vscode-yaml",
"editor.formatOnSave": true,
"editor.insertSpaces": true,
"editor.tabSize": 2
},
"[yml]": {
"editor.defaultFormatter": "redhat.vscode-yaml",
"editor.formatOnSave": true
},
"[github-actions-workflow]": {
"editor.defaultFormatter": "redhat.vscode-yaml"
},
"yaml.schemas": {
// GitHub Actions workflow validation and IntelliSense
"https://json.schemastore.org/github-workflow.json": ".github/workflows/*",
// GitHub Actions action.yml validation
"https://json.schemastore.org/github-action.json": ".github/actions/*/action.yml",
// Docker Compose file validation
"https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json": "compose.yaml"
},
// -------------------------------------------------------------------------------------------------------------------------
// 🧩 Extensions
// Extension-specific settings and configurations
// -------------------------------------------------------------------------------------------------------------------------
// ⭐️ Code Quality ---------------------------------------------------------------------------------------------------------
"sonarlint.connectedMode.connections.sonarcloud": [
{
"connectionId": "nanotaboada",
"organizationKey": "nanotaboada",
"region": "EU"
}
],
"sonarlint.automaticAnalysis": true, // Enable automatic analysis on file save and open
"sonarlint.focusOnNewCode": false, // Don't limit analysis to new code
"sonarlint.ideLabsEnabled": true, // Enable SonarLint IDE Labs features
// ✅ Formatting & Linting -------------------------------------------------------------------------------------------------
"markdown-preview-github-styles.darkTheme": "light", // Use light GitHub styles in markdown preview (matches VS Code dark theme better)
"markdown.editor.pasteUrlAsFormattedLink.enabled": "smartWithSelection", // Smart paste URL as link when text is selected, otherwise paste as plain URL
"markdown.editor.drop.enabled": "smart", // Smart drag-and-drop (e.g. dragging an image file into a markdown document will upload it and insert a formatted link)
"markdown.editor.filePaste.enabled": "smart", // Smart file paste (e.g. pasting an image file into a markdown document will upload it and insert a formatted link)
// 🔄 Version Control & Collaboration --------------------------------------------------------------------------------------
"gitlens.ai.model": "vscode", // Use default VS Code model for GitLens code suggestions
"gitlens.ai.vscode.model": "copilot:claude-sonnet", // Use Claude Sonnet for GitLens code suggestions
// 🎨 UI Enhancements ------------------------------------------------------------------------------------------------------
// 🌈 Indent Rainbow colors
"indentRainbow.colors": [
"rgba(64,64,16,0.1)",
"rgba(32,64,32,0.1)",
"rgba(64,32,64,0.1)",
"rgba(16,48,48,0.1)"
],
// 🌐 Language-Specific Extensions
// -------------------------------------------------------------------------------------------------------------------------
// 🟣 .NET -----------------------------------------------------------------------------------------------------------------
"dotnet.preview.enableSupportForSlnx": false, // No .slnx preview
"dotnetAcquisitionExtension.existingDotnetPath": [], // .NET install paths
// 💾 MSSQL (SQL Server) ---------------------------------------------------------------------------------------------------
"mssql.connectionGroups": [
{
"id": "68191908-3628-477C-BE06-23D04590BC2D",
"name": "ROOT"
}
],
"mssql.connections": [], // No pre-defined connections
"mssql.resultsFontFamily": "MesloLGS NF, Menlo, Monaco, 'Courier New', monospace",
// ☁️ AWS ------------------------------------------------------------------------------------------------------------------
"aws.cloudformation.telemetry.enabled": true, // CloudFormation telemetry
// -------------------------------------------------------------------------------------------------------------------------
// ♿ Accessibility
// Accessibility features and signals
// -------------------------------------------------------------------------------------------------------------------------
"accessibility.signals.lineHasBreakpoint": {
// Sound when line has breakpoint
"sound": "auto"
},
"accessibility.signals.lineHasError": {
// Sound when line has error
"sound": "auto"
},
"accessibility.signals.lineHasWarning": {
// Sound when line has warning
"sound": "auto"
},
"accessibility.signals.onDebugBreak": {
// Sound when debugger breaks
"sound": "auto"
},
"accessibility.openChatEditedFiles": true, // Open edited files in chat for screen readers
"terminal.integrated.accessibleViewFocusOnCommandExecution": false, // Don't auto-focus accessible view on terminal
// command execution (can be disruptive, better
// to check manually when needed)
// -------------------------------------------------------------------------------------------------------------------------
// 💬 Chat & Copilot Tools
// Auto-approved terminal commands (safe operations) and URL approval rules
// -------------------------------------------------------------------------------------------------------------------------
"inlineChat.defaultModel": "Claude Sonnet 4.6 (copilot)", // Use Claude Sonnet for inline chat
"mermaid-chat.enabled": true, // Enable Mermaid chat sessions
"chat.viewSessions.orientation": "stacked", // Stack chat sessions vertically
"chat.tools.autoExpandFailures": true, // Auto-expand tool output on failure to show error details
// 🚧 Experimental (These settings enable experimental features that may be unstable. Use with caution.)
// -------------------------------------------------------------------------------------------------------------------------
"inlineChat.enableV2": true, // Enable new inline chat experience
"chat.agent.codeBlockProgress": true, // Show progress updates for code-generating tools in chat
"chat.extensionUnification.enabled": true, // Unify chat extensions into single interface
"chat.agent.thinking.collapsedTools": "always", // Always collapse tool output in thinking process to reduce noise (can be expanded manually if needed)
"chat.agent.thinkingStyle": "collapsed", // Start thinking process in collapsed state to reduce noise (can be expanded manually if needed)
"chat.tools.terminal.ignoreDefaultAutoApproveRules": false, // Keep built-in safety rules active
"chat.tools.terminal.blockDetectedFileWrites": "outsideWorkspace", // Block file writes outside workspace
"chat.tools.terminal.autoApproveWorkspaceNpmScripts": true, // Trust package.json scripts in workspace
"chat.tools.terminal.autoReplyToPrompts": false, // Don't auto-answer terminal prompts
"chat.tools.terminal.preventShellHistory": true, // Exclude agent commands from shell history
"chat.tools.terminal.outputLocation": "chat", // Show terminal output in chat only
"chat.tools.terminal.enforceTimeoutFromModel": true, // Respect model-provided timeout
// 🔗 Auto-approval rules for URLs (allowing responses from trusted domains while blocking potentially unsafe ones)
// -------------------------------------------------------------------------------------------------------------------------
"chat.tools.urls.autoApprove": {
"https://docs.github.com": {
"approveRequest": false,
"approveResponse": true
}
},
// ✅ Auto-approved terminal commands (safe, read-only and build operations)
// -------------------------------------------------------------------------------------------------------------------------
"chat.tools.terminal.enableAutoApprove": true, // Enable auto-approval for safe terminal commands
"chat.tools.terminal.autoApprove": {
// File reading and inspection -------------------------------------------------------------------------------------------
"cat": true,
"head": true,
"tail": true,
"less": true,
"more": true,
"bat": true,
"hexdump": true,
// File system navigation and info ---------------------------------------------------------------------------------------
"cd": true,
"ls": true,
"pwd": true,
"tree": true,
"/^tree\\b.*-o\\b/": false, // Block output redirection
"find": true,
"/^find\\b.*-(delete|exec|execdir|fprint|fprintf|fls|ok|okdir)\\b/": false, // Block destructive operations
"which": true,
"basename": true,
"dirname": true,
"realpath": true,
"readlink": true,
"stat": true,
"file": true,
"du": true,
"df": true,
// Text processing -------------------------------------------------------------------------------------------------------
"echo": true,
"grep": true,
"findstr": true,
"wc": true,
"tr": true,
"cut": true,
"cmp": true,
"column": true,
"/^column\\b.*-c\\s+[0-9]{4,}/": false, // Block excessive column widths
"sort": true,
"/^sort\\b.*-(o|S)\\b/": false, // Block output redirection
// System information ----------------------------------------------------------------------------------------------------
"date": true,
"/^date\\b.*(-s|--set)\\b/": false, // Block date modification
"sleep": true,
"uname": true,
"hostname": true,
"env": true,
"printenv": true,
"uptime": true,
"whoami": true,
// Git (read-only operations) --------------------------------------------------------------------------------------------
"git status": true,
"git log": true,
"git show": true,
"git diff": true,
"git grep": true,
"git branch": true,
"/^git branch\\b.*-(d|D|m|M|-delete|-force)\\b/": false, // Block branch deletion
"git stash list": true,
"git remote": true,
"git tag": true,
"git fetch": true,
"git ls-files": true,
"git ls-tree": true,
// .NET ------------------------------------------------------------------------------------------------------------------
"dotnet --version": true,
"dotnet --info": true,
"dotnet --list-sdks": true,
"dotnet --list-runtimes": true,
"dotnet build": true,
"dotnet run": true,
"dotnet watch": true,
"dotnet test": true,
"dotnet restore": true,
"dotnet clean": true,
"dotnet publish": true,
"dotnet format": true,
"dotnet tool": true,
"dotnet ef": true,
// Python ----------------------------------------------------------------------------------------------------------------
"python": true,
"python3": true,
"pip": true,
"pip3": true,
"poetry": true,
"poetry run": true,
"uvicorn": true,
"pytest": true,
"black": true,
"flake8": true,
"ruff": true,
"mypy": true,
// Go --------------------------------------------------------------------------------------------------------------------
"go": true,
"go run": true,
"go build": true,
"go test": true,
"go mod": true,
"go fmt": true,
"go vet": true,
"go get": true,
"go list": true,
"go version": true,
// Node.js/TypeScript ----------------------------------------------------------------------------------------------------
"node": true,
"npm": true,
"npm run": true,
"npm test": true,
"npm install": true,
"npm ci": true,
"npm list": true,
"yarn": true,
"yarn run": true,
"pnpm": true,
"tsx": true,
"ts-node": true,
// Java ------------------------------------------------------------------------------------------------------------------
"java": true,
"javac": true,
"./mvnw": true,
"mvn": true,
"gradle": true,
"./gradlew": true,
"jar": true,
"jenv": true,
// Rust ------------------------------------------------------------------------------------------------------------------
"cargo": true,
"cargo build": true,
"cargo run": true,
"cargo test": true,
"cargo check": true,
"cargo fmt": true,
"cargo clippy": true,
"rustc": true,
"rustup": true,
// Docker (read-only and safe operations) --------------------------------------------------------------------------------
"docker ps": true,
"docker images": true,
"docker inspect": true,
"docker version": true,
"docker compose": true,
"docker compose ps": true,
"docker compose config": true,
"docker logs": true,
"docker exec": true,
// Database tools --------------------------------------------------------------------------------------------------------
"sqlite3": true,
// Editor ----------------------------------------------------------------------------------------------------------------
"code": true,
// 🚫 Blocked: Destructive file operations -------------------------------------------------------------------------------
"rm": false,
"rmdir": false,
"del": false,
"Remove-Item": false,
"ri": false,
"rd": false,
"erase": false,
"dd": false,
// 🚫 Blocked: Process management ----------------------------------------------------------------------------------------
"kill": false,
"ps": false,
"top": false,
"spps": false,
"taskkill": false,
"taskkill.exe": false,
// 🚫 Blocked: Network operations ----------------------------------------------------------------------------------------
"curl": false,
"wget": false,
"irm": false,
"iwr": false,
// 🚫 Blocked: Permission changes ----------------------------------------------------------------------------------------
"chmod": false,
"chown": false,
"sp": false,
"Set-Acl": false,
// 🚫 Blocked: Dangerous utilities ---------------------------------------------------------------------------------------
"jq": false,
"xargs": false,
"eval": false,
"iex": false
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment