From neovim-advisor
Guides Neovim configuration with Lua-only patterns, lazy.nvim plugin management, Mason + nvim-lspconfig LSP setup, namespaced structure, and leader key conventions.
npx claudepluginhub kriscard/kriscard-claude-plugins --plugin neovim-advisorThis skill uses the workspace's default tool permissions.
Opinionated guidance for modern Neovim configuration. This skill covers the decisions and patterns that matter — not documentation you can look up.
Applies Neovim community best practices, plugin architecture patterns, and idiomatic Lua style when writing, reviewing, or refactoring Neovim plugins.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
Opinionated guidance for modern Neovim configuration. This skill covers the decisions and patterns that matter — not documentation you can look up.
These are the opinionated choices this config follows. Apply these unless the user explicitly wants something different.
All configuration in Lua. No vim.cmd() wrappers around Vimscript unless there's no Lua API equivalent. Use vim.opt for options, vim.keymap.set for keymaps, vim.api.nvim_create_autocmd for autocommands.
One plugin per file in lua/plugins/. Every plugin lazy-loaded unless needed at startup (colorscheme, treesitter, statusline). See the lazy-nvim-optimization skill for deep lazy-loading guidance.
~/.config/nvim/
├── init.lua
└── lua/
└── kriscard/
├── init.lua
├── options.lua
├── keymaps.lua
├── autocmds.lua
└── lazy.lua
This prevents collisions with plugin module names. Entry point is just require("kriscard").
Mason manages server installations. nvim-lspconfig provides server configurations. Use cmp_nvim_lsp capabilities for completion integration. Set keymaps in on_attach so they're buffer-local.
<Space> as leader, set before any plugins load. Organized by prefix:
f = find/search (telescope)g = git operationsb = buffer managementw = window managementl = LSP operationst = terminal/testsEvery keymap requires a desc field for which-key discoverability.
Take advantage of these — they replace plugins:
gcc/gc work natively. Can replace Comment.nvim.vim.lsp.inlay_hint.enable(true) — no plugin needed.vim.diagnostic.config() with float.border for better display.| Instead of... | Use... |
|---|---|
vim.cmd("set number") | vim.opt.number = true |
vim.api.nvim_set_keymap() | vim.keymap.set() |
vim.cmd("augroup...") | vim.api.nvim_create_autocmd() |
| Vimscript autocommands | Lua with callback |
| Comment.nvim (on 0.10+) | Built-in gcc |
init.lua is entry point only (just require("kriscard"))lua/lua/plugins/ (one per file or logical group)vim.opt for optionsvim.keymap.set with desc for keymapsvim.api.nvim_create_autocmd for autocommandsnvim --startuptime)VeryLazyFor detailed information:
references/plugin-recommendations.md - Curated plugin list by categoryreferences/lsp-setup.md - Comprehensive LSP configuration guidereferences/migration-guide.md - Migrating from Vimscript to Lua