Import VS Code AI prompts into Neovim's CodeCompanion. Share prompts across editors without friction.
Perfect for teams using VS Code prompts or developers migrating from VS Code to Neovim.
Looking for prompt browsing and selection? Check out code-companion-picker for advanced prompt selection with fuzzy search, previews, and customizable UI.
.github/prompts/ in your project (or configure custom directories):VsccImport to add VS Code prompts to CodeCompanion's library/vsc_my_prompt) in CodeCompanion chat buffers✅ Use existing VS Code prompts in Neovim ✅ Share prompt libraries across team members and editors ✅ Zero conversion needed - works with VS Code's standard format ✅ Flexible transformation system - customize how prompts are converted to CodeCompanion format ✅ Smart AI model detection from VS Code frontmatter
Dependencies:
{
'olimorris/codecompanion.nvim',
dependencies = {
'3ZsForInsomnia/vs-code-companion.nvim',
},
opts = {
-- your codecompanion config
}
}
The plugin uses a flexible transformation system to convert VS Code markdown prompts into CodeCompanion format. You can customize how properties are extracted and transformed:
local getters = require("vs-code-companion").getters()
local transforms = require("vs-code-companion").transforms()
local defaults = require("vs-code-companion").defaults()
{
'3ZsForInsomnia/vs-code-companion.nvim',
opts = {
directories = {'.github/prompts'},
transform = {
-- Use defaults for most properties
description = defaults.description,
content = defaults.content,
strategy = defaults.strategy,
-- Customize tools handling
tools = {
getter = getters.get_tools,
transform = transforms.transform_tools_full_stack_dev,
},
-- Disable certain properties
mapping = false,
-- Add custom getter/transform
custom_property = {
getter = function(file_info)
-- Custom logic to extract value
return "custom_value"
end,
transform = function(value)
-- Custom logic to transform for CodeCompanion
return value
end,
},
}
}
}
The plugin provides several built-in approaches for handling VS Code tools:
-- No tools (default)
local config1 = require("vs-code-companion").create_config_with_tools("none")
-- Use CodeCompanion's full_stack_dev tool for all VS Code tool
local config2 = require("vs-code-companion").create_config_with_tools("full_stack_dev")
-- Attempt to map VS Code tools to CodeCompanion tools (future feature)
local config3 = require("vs-code-companion").create_config_with_tools("mapped")
You can also import prompts with a custom transformation config without changing your main configuration:
-- Import once with full_stack_dev tools
local custom_config = require("vs-code-companion").create_config_with_tools("full_stack_dev")
require("vs-code-companion").import_prompts_with_config(custom_config)
-- Or create a completely custom config
local getters = require("vs-code-companion").getters()
local transforms = require("vs-code-companion").transforms()
local my_config = {
description = {
getter = getters.get_description,
transform = transforms.transform_description,
required = true,
},
content = {
getter = getters.get_content,
transform = function(content, role)
-- Custom content transformation
return {
role = role or "user",
content = "CUSTOM PREFIX: " .. content,
}
end,
required = true,
},
-- ... other properties
}
require("vs-code-companion").import_prompts_with_config(my_config)
use {
'olimorris/codecompanion.nvim',
requires = {
'3ZsForInsomnia/vs-code-companion.nvim',
},
config = function()
require("codecompanion").setup({
-- your codecompanion config
})
end
}
Create markdown files with YAML frontmatter in your project (default: .github/prompts/):
---
description: "Review code for bugs and improvements"
model: "Claude Sonnet 3.5"
---
Please review this code for potential bugs, performance issues, and improvements...
Learn more about VS Code's prompt format and see examples.
:VsccImport
This reads VS Code prompt files from configured directories and adds them to CodeCompanion's prompt library as slash commands.
Open a CodeCompanion chat buffer and use imported prompts as slash commands:
/ to see all available commands/vsc_<filename> where <filename> is your prompt file name (sanitized)test-prompt.md becomes /vsc_test_promptAdd VS Code prompt functionality directly to CodeCompanion chat buffers by configuring slash commands:
{
'olimorris/codecompanion.nvim',
dependencies = {
'3ZsForInsomnia/vs-code-companion.nvim',
},
opts = {
strategies = {
chat = {
slash_commands = {
vs_import = require("vs-code-companion").import_slash_command,
},
},
},
-- your other codecompanion config
}
}
This enables /vs_import to import VS Code prompts from within a CodeCompanion buffer.
VS Code prompts use markdown files with YAML frontmatter. Supported fields:
---
description: "Required - Brief description shown in picker"
model: "Optional - AI model name (see docs/models.md)"
tools: ["Optional", "array", "of", "tool", "names"]
---
Your prompt content here...
Required:
description - Short description shown in pickers and command descriptionsOptional:
model - AI model name (automatically converted from display names to technical names)tools - Array of tool names (currently replaced with CodeCompanion's @{full_stack_dev})Basic configuration options:
{
'3ZsForInsomnia/vs-code-companion.nvim',
opts = {
directories = {'.github/prompts', '.github/chatmodes'}, -- Where to find prompt files
}
}
Rules-based Configuration: Configure different transformation rules based on file paths or names
rules = {
{
pattern = "*.chatmode.md",
transform = custom_chatmode_config
},
{
pattern = ".github/prompts/**",
transform = github_prompts_config
}
}
Required Field Validation: Mark transformation properties as required and fail gracefully
transform = {
description = {
getter = getters.get_description,
transform = transforms.transform_description,
required = true -- Fail if this can't be extracted
}
}
VS Code to CodeCompanion Tool Mapping: Smart mapping of VS Code tools to equivalent CodeCompanion tools
-- Future: automatic mapping like this
vs_code_tools = ["python", "typescript"]
-- → codecompanion_tools = "@{python_dev}@{typescript_dev}"
"No prompts found"
"X files failed to process"
"Not in git repository"
Telescope not working
Commands not working
For advanced configuration, CodeCompanion integration, and technical details, see: