Development Environments for Developer Advocates
Developer Advocates work with different types of platforms, editors and IDEs, including AI-native workflows using the GitLab Duo Agent Platform. This page compiles best practices and useful tips to help optimize developer advocacy-related setups.
Resources
Start in the GitLab Duo Agent Platformdocumentation and read on for IDEs, CLI and extensibility and customization with MCP, custom rules, etc.
For architecture insights, review the architecture design document.
The GitLab Duo Agent Platform launch support issue - DevRel (internal) collects product/engineering updates, GTM and content strategies, and use case development.
IDEs
Developer Advocates can use different IDEs depending on their projects and content requirements. It is key to understand the IDE capabilities and use cases, put them into focus for content requests, and diversify usage for different audiences.
AI and GitLab Duo in IDEs
GitLab Duo and the GitLab Duo Agent Platform are integrated as IDE extensions/plugins.
Visual Studio Code
Visual Studio Code (short: VS Code) supports a variety of programming languages and development tool integrations through its marketplace.
GitLab Duo can be integrated through the GitLab Workflow extension in the VS Code marketplace.
Note
Review the internal guide for Dev Environments after completing the initial setup.

Tips and best practices for VS Code
- Learn and practice frequently used keyboard shortcuts for VS Code.
- Command palette:
cmd shift pon macOS orctrl shift pon Windows/Linux. - Settings:
cmd ,on macOS orctrl ,on Windows/Linux. - Tip: You can also ask GitLab Duo Chat, or Claude for help.
- Command palette:
- Open local Git repositories or directories using the
code .shortcut from the terminal. This simplifies the workflow of editing/debugging code when you need to switch contexts between GitLab UI, VS Code and terminal. - Open a terminal in VS Code (shortcut:
cmd jon macOS, orcmd shift pand search forterminal). This allows starting background tasks like running servers, compilers, Ansible playbooks, etc. while editing code and avoids context switching between different windows.
Recommended settings and extensions
- Enable auto-save while editing. This avoids data loss or missing Git commit data when writing your code.
- UI: Open the settings by clicking the gear icon in the bottom left corner (shortcut:
cmd ,on macOS). Search forauto save. - VS Code
settings.json: Add a new key/value for"files.autoSave": "afterDelay".
- UI: Open the settings by clicking the gear icon in the bottom left corner (shortcut:
- Enable word-wrap by default. This makes long lines readable without horizontal scrolling.
- UI: Open the settings by clicking the gear icon in the bottom left corner (shortcut:
cmd ,on macOS). Search forword wrap. - VS Code
settings.json: Add a new key/value for"editor.wordWrap": "on".
- UI: Open the settings by clicking the gear icon in the bottom left corner (shortcut:
- Install extensions you need regularly, and only use trusted sources.
- Review the maintained list in @dnsmichi’s dotfiles project
- You can install extensions on the CLI with
code --install-extension. Examplecode --install-extension gitlab.gitlab-workflow.
Demo settings: Profiles and themes in VS Code
The default profile in VS Code uses a dark theme.
"workbench.colorTheme": "Default Dark Modern",
The light theme works better on in-person event projectors, and can help with demo recordings, too.
"workbench.colorTheme": "Default Light Modern",
It is recommended to create multiple profiles to manage different themes, and extensions installed, for example Default and Light theme for demos.
For required demo recording settings, review the video guidelines handbook.
Move Chat to the right panel
By default, the Chat panel is on the left side of the VS Code UI. This might interfere with file trees in the explorer and Git commits, which are also located on the left.
In order to move the Chat to the right sidebar:
- Open the Secondary Side bar with the icon on upper right corner.
- Drag the Chat icon (for example, Duo Chat) and drop it to the right sidebar.
- You can use multiple chat panels in parallel.
@dnsmichi uses this setup by default.
Enable additional languages for GitLab Duo Code Suggestions
-
Choose between two paths:
- UI: Open the settings by clicking the gear icon in the bottom left corner. Search for
gitlab.duoCodeSuggestions. - VS Code
settings.json: Presscmd shift pon macOS to open the command palette, and search forsettings.json. Add/Modify the entry for"gitlab.duoCodeSuggestions.additionalLanguages"with an array of strings as value.
- UI: Open the settings by clicking the gear icon in the bottom left corner. Search for
-
Add
markdownto the array when you want to see more code suggestions when editing yourREADME.mdfile.- @dnsmichi is confident with the quality and the relevance of the following languages in
settings.json(development test cycle: 1 year+):
{ "gitlab.duoCodeSuggestions.additionalLanguages": [ "powershell", "yaml", "ansible", "perl", "dockerfile", "markdown", "json" ], } - @dnsmichi is confident with the quality and the relevance of the following languages in
-
It is important for Code Suggestions to have proper context: Open more tabs that are relevant to your current task, as those will be used for context.
A full VS Code settings.json example is located in @dnsmichi’s dotfiles project.
Debug VS Code extensions and GitLab Duo Agent Platform
An example use case: GitLab Duo Agentic Chat provides an MCP integration, and we want to verify that the MCP server is started and consumes the additional AI Context.
Need-to-know: The GitLab Language Server powers the backend across IDE extensions for GitLab, and handles the MCP integration for GitLab Duo Agentic Chat.
- You can debug extensions using the
Outputview in VS Code. - Steps to debug:
- Open the command palette with
cmd shift p(macOS) and search forView: toggle Output. - Select
GitLab Language Serverin theOutputview dropdown (next toFilter). - This view streams the extension log on the terminal. Trigger a UI action with GitLab Duo, and observe if the client sends the correct data.
- Open the command palette with
- You can use the
Filterform to search/filter the output, for examplemcpto isolate entries related to the MCP integration. - Optional: Increase the log verbosity to
debug:- Open the settings by clicking the gear icon in the bottom left corner (shortcut:
cmd ,on macOS). Search forGitLaborgitlabin the settings tree. - Tick the
GitLab: Debugcheckbox and restart VS Code.
- Open the settings by clicking the gear icon in the bottom left corner (shortcut:
GitLab Duo Agentic Chat will also spawm terminals to run commands. If the execution is blocked or runs infinitely, investigate whether to disable terminal integrations like Oh-My-ZSH or Powerlevel10k.
JetBrains IDEs
Developer Advocates can access JetBrains IDEs for different purposes and use cases:
- IntelliJ IDEA Ultimate (Java, Kotlin, Scala)
- PyCharm (Python, Django)
- GoLand (Go)
- DataGrip (SQL, Databases)
- RubyMine (Ruby, Rails)
- PhpStorm (PHP)
- WebStorm (JavaScript, TypeScript, HTML/CSS)
- Rider (C#, .NET)
- CLion (C, C++)
- Android Studio (Android development)
IntelliJ IDEA also supports plugins for other languages, the availability depends on the subscription tier (Ultimate vs Community).
GitLab Duo can be integrated using the GitLab Duo plugin in the JetBrains marketplace.
Note
Review the internal guide for Dev Environments after completing the initial setup.

Tips and best practices for JetBrains IDEs
- Review the available IDE licenses, and eventually create an Access Request for additional permanent IDE licenses.
- Read the setup and configuration guide and install the JetBrains Toolbox to manage individual IDEs and their updates.
- Optional tip: By default, the toolbox keeps older installed versions. If this behavior causes problems with storage consumption, disable the setting in
Tools > Keep previous versions to enable instant rollback. - JetBrains IDEs can migrate/import configuration from existing setups. This is convenient to install/configure the GitLab Duo plugin once, and import it into another JetBrains IDE.
- Optional tip: By default, the toolbox keeps older installed versions. If this behavior causes problems with storage consumption, disable the setting in
- GitLab Duo Agentic Chat will also spawm terminals to run commands. If the execution is blocked or runs infinitely, investigate whether to disable terminal integrations like Oh-My-ZSH or Powerlevel10k.
Demo settings: Appearance in JetBrains IDEs
The default profile in JetBrains IDEs uses a dark theme. In order to switch to a light theme, navigate into Settings > Appearance & Behavior > Appearance and select Light with Light Header.
The Zoom dropdown can be changed to 125% for increased details in talk live demos.
For required demo recording settings, review the video guidelines handbook.
MS Visual Studio
Note: Needs access to a Windows and Visual Studio license, and requires additional security review.
Status: Research. Todos are tracked in this internal issue.
GitLab Duo can be integrated using the GitLab extension in the Visual Studio marketplace.
Note
Review the internal guide for Dev Environments after completing the initial setup.
Eclipse
GitLab Duo can be integrated using the GitLab extension in the Eclipse marketplace.
neovim
Tip: Start a new neovim configuration using a fork of kickstart.nvim to bootstrap and optimize your neovim experience.
GitLab Duo can be integrated using a neovim plugin.
CLI
GitLab Duo CLI
The GitLab Duo CLI provides access to GitLab Duo Agent Platform on the terminal.
Requirements:
- Install NodeJS 22+, for example, using mise
- Create a Personal Access Token with
apiscope. - Install the CLI.
- Run the CLI to start the configuration dialogue.
mise install node@22
npm i -g @gitlab/duo-cli
duo
Usage examples:
Which tools are available?
What is this repository about
Which issues need my attention
Help me implement issue 15
The pipelines in MR 23 fail. Please fix them.
The CLI uses the GitLab LSP to communicate with the AIGW and DAP services, and therefore the CLI is developed inside gitlab-lsp.
Follow the product epic for functionality and roadmap updates, and add feedback into the Duo CLI Feedback & Dogfooding epic.
Extensibility and Customization
Custom Rules
Consider addding custom rules by default to every new or existing Developer Advocacy project.
- Custom rules for Agentic Chat.
- Custom review instructions for Code Review Agent.
- System prompt for custom agents in the AI Catalog.
Example projects:
MCP Clients
Refer to the GitLab MCP Clients documentation on how to integrate MCP clients into IDEs.
Internal research issue: DAP MCP use case testing - DevRel
MCP Server
Refer to the GitLab MCP Server documentation for setup and configuration in AI tools and IDEs.
Knowledge Graph
Follow the Knowledge Graph documentation for setup and integration steps.
The GitLab Knowledge Graph First Iteration product epic tracks the development and feature roadmap.
Self-hosted models for Duo Agent Platform
Access to supported self-hosted models requires access to the engineering test infrastructure. Review the self-hosted models research in FY26 (internal) for DRIs, options and ideas.
GitLab Duo Agent Platform use cases
Developer Advocates use case prompts
Use these prompts with GitLab Duo Agentic Chat in IDEs, and the CLI:
Demo Environment Management
- “Create a new demo project setup guide for
technology/feature” - “Document the prerequisites for this demo environment”
- “Generate a troubleshooting guide for common demo setup issues”
- “Create a quick start script for setting up
demo environment”
Demo Repository & Code
- “Create a sample application demonstrating
GitLab feature” - “Add comprehensive README with setup instructions for this demo”
- “Generate example CI/CD pipeline for
language/frameworkdemo” - “Create a demo showcasing
featureintegration withtechnology”
Content Creation Support
- “Extract code snippets from this demo for a blog post”
- “Generate speaker notes for demoing this feature”
- “Create a step-by-step tutorial from this demo repository”
- “Suggest improvements to make this demo more engaging”
Environment Documentation
- “Document the tools and versions used in this environment”
- “Create a comparison table of different setup approaches”
- “Generate installation instructions for
OS/platform” - “Document environment variables and configuration needed”
Demo Maintenance
- “Check if this demo uses deprecated GitLab features”
- “Update this demo to use the latest
frameworkversion” - “Verify all demo links and references are still valid”
- “Test if this demo still works with current GitLab version”
Workshop & Presentation Prep
- “Create a workshop outline based on this demo”
- “Generate talking points for presenting this feature”
- “Build a hands-on exercise from this example”
- “Create a cheat sheet for workshop participants”
Integration Examples
- “Show how to integrate
toolwith GitLab in this demo” - “Create examples for all
featureconfiguration options” - “Generate sample webhook payloads for testing”
- “Document API usage examples for this integration”
Documentation & Content Management
- “Review this page for broken links and outdated information”
- “Check if this documentation follows the handbook style guide”
- “Find all pages that mention
topicand summarize them” - “Suggest improvements to make this page more accessible”
Repository Navigation & Understanding
- “Show me the most recently updated pages in
directory” - “What are the main sections of this handbook?”
- “Find documentation about [specific process or policy]”
- “Who are the main contributors to
directory/file?”
Maintenance & Quality
- “Find pages that haven’t been updated in over 6 months”
- “Check for inconsistent formatting across similar pages”
- “Identify duplicate or overlapping content”
- “Review recent merge requests for this section”
Workflow Automation
- “Create a new handbook page for
topicfollowing the template” - “Update all references to [old term] with [new term]”
- “Generate a changelog for recent updates to
section” - “Create an issue for outdated content in
directory”
Collaboration
- “Summarize recent discussions on
topicfrom issues and MRs” - “Who should I ask about [specific handbook section]?”
- “Show me open merge requests that need review”
- “Find related work items for this documentation update”
CI/CD Specific
- “Convert this YAML anchor to use extends instead”
- “Add proper rules to this CI job”
- “Optimize the pipeline configuration for faster builds”
Development
mise for managing language runtimes
mise is a polyglot version manager that helps manage different language runtimes and tools. It is used in the GitLab Development Kit (GDK) and GitLab handbook to manage Node.js, Ruby, Go, and other dependencies.
Developer Advocates can use mise to:
-
Manage multiple language versions: Easily switch between different versions of Node.js, Python, Ruby, Go, etc., required for various projects or demos.
mise use node@22 mise use node@24 -
Ensure consistent environments: Define project-specific tool versions in a
.mise.tomlor.tool-versionsfile, ensuring that all team members (or your different projects) use the same environment.# .mise.toml example [tools] node = "25" python = "3.14" go = "1.25" -
Simplify tool installation: Install and manage tools like
npm,yarn,pip,gowithout system-wide interference.mise install node@25 mise install python@3.14 -
Integrate with IDEs: Ensure that IDEs like VS Code or JetBrains IDEs pick up the correct tool versions managed by
miseby configuring the shell environment.
Tips and best practices for mise
-
Install
mise: Follow the official installation guide. -
Configure your shell: Add
eval "$(mise activate)"to your shell configuration file (e.g.,.zshrc,.bashrc). -
Use
.mise.tomlor.tool-versions: For project-specific versions, create one of these files in your project root.misewill automatically detect and activate the specified versions when you navigate into the directory. -
Global versions: Set global default versions for tools using
mise global <tool>@<version>.mise global node@22 -
Check current versions: Use
mise currentto see which tool versions are active in your current directory. -
List installed versions: Use
mise lsto see all installed versions of a tool. -
Update tools: Keep your tools up-to-date with
mise upgrade.
For more advanced usage and configuration, refer to the mise documentation.
mise environments in GitLab development
- GitLab Development Kit (GDK)
- GitLab LSP (integrated into IDEs and CLI)
Remote Development Workspaces
Workspaces offer cloud development environments, running on Developer Relations Cloud Resources.
Status: Inactive. Currently, there is no infrastructure maintainer. The following documentation exists for historical reference in the future.
The remote-development sub group has an agent for Kubernetes installed, which is documented in the agent-kubernetes-gke project. This includes troubleshooting when the agent becomes unresponsive, and workspaces are not created.
Resources:
- The Kubernetes cluster
da-remote-development-1needs to be running in GKE. Current resources: 3 nodes. Total 6 vCPU, 12 GB memory. - The domain
remote-dev.devhas been purchased through the Google DNS service and points to the Kubernetes cluster’s public IP. - The TLS certificates have been generated manually with Let’s Encrypt and need to be renewed quarterly (2023-08-15), following the documentation steps.
Learning resources
Team member examples
- @dnsmichi’s dotfiles project which documents the work environment setup including IDEs and development tools.
Talks and demos highlighting Dev Environments
Review the Developer Advocacy content library and the following resources:
- Learning AI 101: Practical Foundations for Developers - 2025-06, Open Source @ Siemens
- Efficient DevSecOps workflows with a little help from AI - 2024-12, GitLab DACH Roadshow FY25
d4e4ee9e)
