Agent skill
neovim
Use when editing ANY Neovim configuration including init.lua, plugins, keymaps, LSP settings, or theme configuration. Provides file structure guidance and VHS testing workflow.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/testing/neovim-jruz-dotfiles
SKILL.md
Neovim Skill
Configuration Locations
- Main config:
home/.config/nvim/init.lua - Plugins:
home/.config/nvim/lua/plugins.lua - Config modules:
home/.config/nvim/lua/config/keymaps.lua- Key mappingslsp.lua- LSP configurationcompletion.lua- Completion settingswhich-key.lua- Which-key mappingstreesitter.lua- Treesitter configtelescope.lua- Telescope configlualine.lua- Statusline configoil.lua- Oil file manager config
- Always edit files in
~/dev/dotfiles/, not symlinked files in~/.config/
File Structure
home/.config/nvim/
├── init.lua # Base config, options, rustaceanvim settings
├── lua/
│ ├── plugins.lua # Lazy.nvim plugin definitions with opts
│ └── config/
│ ├── init.lua # Loads all config modules
│ ├── keymaps.lua
│ ├── lsp.lua
│ └── ...
├── after/ # Filetype-specific settings
├── selene.toml # Lua linter config
└── stylua.toml # Lua formatter config
Plugin Configuration Pattern
Plugins use lazy.nvim with inline opts or config functions:
{
"plugin/name",
opts = {
setting = value,
},
}
For plugins requiring setup logic:
{
"plugin/name",
config = function(_, opts)
require("plugin").setup(opts)
end,
}
VHS Testing
CRITICAL: NEVER run nvim commands that affect the user's active session. VHS creates its own isolated terminal.
CRITICAL: ALWAYS use the tape in this skill folder. NEVER create ad-hoc tape files with different output names.
Use VHS to verify visual changes:
- Run the tape:
vhs .claude/skills/neovim/neovim.tape - Output screenshot goes to
tmp/neovim.png - Read the screenshot to verify before telling user the fix is complete
The tape opens neovim in a clean environment, waits for it to load, and captures a screenshot.
Color Scheme
Uses Catppuccin Mocha theme. Set in init.lua:
vim.cmd.colorscheme("catppuccin-mocha")
Key Mappings
Leader key is Space. Mappings defined in:
lua/config/keymaps.lua- General keymapslua/config/which-key.lua- Which-key groups and mappingslua/plugins.lua- Plugin-specific mappings in plugin specs
LSP Setup
LSP configured via:
- Mason for LSP server installation
- mason-lspconfig for automatic setup
- Individual server configs in
lua/config/lsp.lua - Rustaceanvim configured separately in
init.lua(must load before plugins)
Verification Checklist
Before declaring a config change complete:
- Confirm you edited files in
~/dev/dotfiles/home/.config/nvim/ - Run VHS tape to capture screenshot
- Verify neovim starts without errors
- Test the specific feature you changed
- Check no Lua errors in
:messages
Common Issues
- Plugin errors: Check lazy.nvim lockfile at
~/.local/share/nvim/lazy-lock.json - LSP not starting: Check
:LspInfoand:Mason - Treesitter errors: Run
:TSUpdate - Config reload: Use
<leader>Ror:source %on init.lua
Didn't find tool you were looking for?