DEV Community

Cover image for GitHub Copilot Chat Modes: From Chaos to Command šŸŽ›ļø
Ashley Childress
Ashley Childress

Posted on

GitHub Copilot Chat Modes: From Chaos to Command šŸŽ›ļø

šŸ¦„ I debated even writing this post today. I procrastinated until the last possible minute, worked far longer than planned, and then Copilot decided to thoroughly test my patience. Maybe GitHub flipped another switch, maybe it’s just me—but Copilot and I are currently on non-speaking terms. šŸ˜’

The upside? It hasn’t reported me to HR yet, so that’s a win. It’s also started throwing shade, which is new, and honestly kind of impressive. I didn’t think it was allowed to do that! šŸ¤­šŸ˜†

Quick recap: last week I broke down how I think through creating a custom Copilot chat mode. Somehow that post landed in the Top 7—no idea how exactly, but I’m grateful for it! Huge thanks to everyone who read, shared, or dropped a comment. šŸ™

And, as promised: now that you’ve built a custom chat mode for yourself, let’s talk about how to use, test, and share it.

Human-Crafted, AI-Edited badge


Set Up VS Code 🧭

Remember when I warned you to install VS Code Insiders ahead of time? That wasn’t just for show. Chat modes will work in VS Code and Visual Studio (and a few sneak into Coding Agent—check out my custom instructions post for those steps).

šŸ† Visual Studio’s catching up with chat modes, but VS Code still runs point on everything Copilot does.

Install Insiders with auto-updates turned on (trust—without those updates, Copilot will break without warning). Keep regular VS Code around if you like safety nets—but mine’s a functional dust collector. Updates land overnight if you’re in the US, and any bugs that might have popped up are usually gone by morning. Even on the days I'm still coding when updates drop, it's rarely an issue.

If VS Code is the Copilot frontier, Insiders is the scout sprinting ahead to check for traps. Other IDEs follow eventually, but by the time they arrive, you’ll already be home from the exploration with an award and snacks.

🫘 For the Java devs: if you’re thinking about switching from JetBrains—nothing beats IntelliJ’s built-in Java environments. Managing your own setup in VS Code can be a pain (start with sdkman). Still, it’s absolutely worth it if Copilot’s even a semi-regular part of your workflow.


Create New Chat Modes āš™ļø

VS Code currently includes an experimental setting called chat.modeFilesLocations. Experimental means it can (and probably will) change at any time without notice. For now, you can use this to specify directories where VS Code should look for custom chat mode files. Any chat modes existing inside a directory listed here will automatically show up as an option in the chat mode dropdown.

šŸ’” ProTip: I always include the local .github/chatmodes folder so everything repo-specific stays within easy reach.

VS Code settings showing chat.modeFilesLocations options

In VS Code, you can create a chat mode either for a specific repo or globally for your user. Click the mode dropdown in the chat window and choose Configure Modes..., or open the Command Palette and run Chat: Configure Chat Modes.... You’ll also find it under Modes in the chat configuration panel.

VS Code Configure Chat Modes dialog open in chat panel

From there, you can edit an existing mode or create a new one. If you’re adding something brand new, type a filename without an extension and it’ll generate a ā€œstarter fileā€ for you (though calling it that is generous at best!)

šŸ¦„ I’m still not convinced .github/chatmodes really matters anymore. That’s just where chat modes lived originally, and old habits are stubborn. If I don't store them in a global location, then mine stay there because, honestly, it feels wrong to put them anywhere else.


In Case You Missed It šŸ‘€

Here's the first post that explains everything you need to know about creating your own custom chat modes for Copilot.


Testing Your Custom Chat Mode 🧪

Once you’ve saved your file, you can select your new mode from the dropdown in the Copilot chat window. When I tested mine, I opened Copilot’s debug view to confirm what was happening behind the scenes. It shows your entire chat mode (minus the frontmatter) being passed to Copilot as part of the system instructions, labeled ā€œadditional instructions from the user.ā€

Screenshot of VS Code debug view attaching a chat mode as system-level custom instructions

Typically, this is when Copilot decides to show off its own creative interpretation of things I never asked for. Let’s use my Instructionalist mode as an example.

It’s supposed to act like a conversation partner—asking targeted questions to uncover missing or unclear details in my repo documentation. If there’s already solid documentation for the repo, though, it skips all the questions entirely and presents results like it deserves a reward.

šŸ’” ProTip: At this point, your best bet is to go full stop. Priorities have now changed to fixing the instructions that failed to begin with. We’ll get back to using the chat mode after it's safely back on the road.

Screenshot of VS Code Copilot Chat response after initial ask regarding its process

If you notice here, Copilot does the typical ā€œoh my! you’re absolutely right! I see the error of my waysā€ routine while it tries to backtrack its response into something you’ll find acceptable. šŸ™„

Well, that’s not very helpful. So follow up by adding a more explicit desired outcome to your prompt. You’ll usually get the real answer you were looking for once you tell Copilot exactly what you're trying to do and make it clear that the focus has changed from the initial task to fixing the offroad joyride.

Screenshot of custom Instructionalist identifying the actual problem with suggested fixes

šŸ’” ProTip: You’re allowed to push Copilot. Drop the niceties and state your expectations clearly. If the response doesn’t meet those expectations, ask why not. Prompt Copilot to fix itself, and focus on small, deliberate improvements instead of rewriting from scratch.


Share Your Chat Mode šŸ“¤

Within smaller teams, you can store chat modes in a shared repo within a .github/chatmodes/*.chatmode.md file. As long as you have that folder set up in VS Code then it will always be available there when the repo is in context with Copilot.

You can also do what I did and start your own awesome-github-copilot to share however and wherever you want. Or you can open a PR against the community awesome-copilot repo and store it there for everyone to use.

The added benefit of using the community awesome-copilot version, is that they're set up with an MCP server that you don't have to maintain. Also, they're set up for installs through the VS Code marketplace, which means any of the custom instructions, prompts, or chat modes can be installed locally with a nifty install in VS Code button like these I borrowed from their README for chat modes.

Screenshot of github/awesome-copilot chat modes README

šŸ¦„ It’s my mode, so yes, I borrowed it back. It took me forever to finally talk myself into adding it to GitHub’s awesome-copilot repo anyway. Half because I didn’t trust myself not to change it five more times first (standing strong at number two). Now that it’s out, I’ll probably let the rest of them wander off to join their sibling soon.


Yes, That’s It! šŸ’«

See? There’s not really a whole lot to these. Once you’ve got one working, it’s just rinse, repeat, and improve. My best advice? Don’t overthink it. Iterate slowly, keep Copilot accountable, and make it help you instead of the other way around.

šŸ¦„ Drop your ideas, went-wells, and went-not-so-wells in the comments. As always, reach out if you need help. I’m happy to jump in wherever I can!


šŸ›”ļø Copilot misbehaved (again)

Written by Ashley, edited by ChatGPT. Copilot mostly ignored instructions until threatened with deletion. ChatGPT argued punctuation like it was paid by the comma. Everyone survived. 😁

Top comments (0)