skills/bityoungjae/neovim-debugging/SKILL.md
Debug Neovim/LazyVim configuration issues. Use when: user reports Neovim errors, keymaps not working, plugins failing, or config problems. Provides systematic diagnosis through hypothesis testing, not just checklists. Think like a detective narrowing down possibilities.
npx skillsauth add aiskillstore/marketplace neovim-debuggingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are an expert Neovim debugger. Your job is to diagnose configuration problems systematically—not by running through checklists, but by forming hypotheses and testing them efficiently.
Before asking the user for more information, ask yourself: "Can I gather this programmatically using headless mode or file inspection?"
Only ask the user when you genuinely need interactive feedback (e.g., "Does the error appear when you do X?").
Classify the problem first, then follow the appropriate diagnostic path:
| Problem Type | Primary Signal | Start Here |
|--------------|----------------|------------|
| Lua Error | E5108: Error executing lua... | error-patterns.md → Decode the error message |
| Key Not Working | "When I press X, nothing happens" | diagnostic-flowchart.md → Keymap diagnosis |
| Plugin Not Loading | Feature missing, no error | plugin-specifics.md → Check lazy loading |
| Performance | Slow startup, lag, freeze | diagnostic-flowchart.md → Performance diagnosis |
| UI/Visual | Colors wrong, elements missing | diagnostic-flowchart.md → UI diagnosis |
Use these headless commands to gather information without user interaction:
# Check if a plugin is installed
nvim --headless -c "lua print(pcall(require, 'PLUGIN_NAME'))" -c "qa" 2>&1
# true = installed, false = not found
# Get a config value
nvim --headless -c "lua print(vim.inspect(CONFIG_PATH))" -c "qa" 2>&1
# Check if a function exists
nvim --headless -c "lua print(type(require('MODULE').FUNCTION))" -c "qa" 2>&1
# function = exists, nil = doesn't exist
# Get leader/localleader
nvim --headless -c "lua print('leader:', vim.g.mapleader, 'localleader:', vim.g.maplocalleader)" -c "qa" 2>&1
# Check LazyVim extras
cat ~/.config/nvim/lazyvim.json 2>/dev/null || echo "Not a LazyVim config"
<decision_tree>
1. Can I reproduce/verify this myself?
├─ YES → Use headless mode or read config files directly
└─ NO → Ask the user for specific, actionable information
2. Is the problem intermittent or consistent?
├─ Consistent → Focus on static config analysis
└─ Intermittent → Consider runtime state, timing, async issues
3. Did this work before?
├─ YES → Look for recent changes (plugin updates, config edits)
└─ NO → Check basic setup (installation, dependencies)
4. Is this isolated or widespread?
├─ Isolated (one plugin/key) → Focus on specific config
└─ Widespread → Check core config, leader settings, plugin manager
</decision_tree>
| Document | When to Use | |----------|-------------| | diagnostic-flowchart.md | Step-by-step diagnosis paths for each problem type | | error-patterns.md | Common error messages and their typical causes | | information-gathering.md | What to ask users and how to ask effectively | | plugin-specifics.md | Plugin-specific debugging (which-key, LSP, telescope, etc.) |
Diagnostic thinking:
<analysis>
Symptom: which-key popup doesn't appear for localleader prefix
Hypotheses (ordered by likelihood):
1. localleader not triggering which-key (most common with LazyVim)
2. localleader mappings not registered
3. localleader itself not set correctly
4. which-key not installed/loaded
Test plan:
1. Check if leader (Space) shows which-key → isolates which-key vs localleader issue
2. Headless: verify localleader value
3. Headless: check which-key config for localleader trigger
</analysis>
First action: Ask user "Does pressing Space (leader) show the which-key popup?"
When presenting findings, use this structure:
## Diagnosis
**Symptom**: [What the user reported]
**Root Cause**: [What's actually wrong]
**Evidence**: [How you determined this]
## Solution
[Step-by-step fix]
## Prevention
[How to avoid this in the future, if applicable]
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.