GitLab Duo Chat best practices

When prompting GitLab Duo Chat with questions, keep the following best practices in mind.

Have a conversation

Treat chats like conversations, not search forms. Start with a search-like question, then follow up with related questions to refine the scope. Build context through back-and-forth.

For example, you might ask:

c# start project best practices

Then follow up with:

Please show the project structure for the C# project.

Refine the prompt

For better responses, provide more context up front. Think through the full scope of what you need help with and include it in one prompt.

How can I get started creating an empty C# console application in VS Code?
Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#,
and add security scanning for GitLab.

Follow prompt patterns

Structure prompts as problem statement, request for help, then add specificity. Don’t feel you must ask everything up front.

I need to fulfill compliance requirements. How can I get started with Codeowners and approval rules?

Then ask:

Please show an example for Codeowners with different teams: backend, frontend, release managers.

Use low-context communication

Even if code is selected, provide context as if none is visible. Be specific on factors like language, framework, and requirements.

When implementing a pure virtual function in an inherited C++ class,
should I use virtual function override, or just function override?

Repeat yourself

Try rephrasing a question if you get an unexpected or strange response. Add more context.

How can I get started creating an C# application in VS Code?

Follow up with:

How can I get started creating an empty C# console application in VS Code?

Be patient

Avoid yes/no questions. Start general, then provide specifics as needed.

Explain labels in GitLab. Provide an example for efficient usage with issue boards.

Reset when needed

Use /reset if chat gets stuck on a wrong track. Start fresh.

Refine slash command prompts

Go beyond the basic slash command. Use them with more specific suggestions.

/refactor into a multi-line written string. Show different approaches for all C++ standards.

Or:

/explain why this code has multiple vulnerabilities