plugins/sc-skills/skills/effective-neovim/SKILL.md
This skill SHOULD be used when writing, reviewing, or refactoring Neovim plugins in Lua. Apply Neovim community best practices, plugin architecture patterns, and idiomatic Lua style to ensure clean, maintainable plugins.
npx skillsauth add kylesnowschwartz/simpleclaude effective-neovimInstall 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.
Apply best practices from the Neovim community to write clean, idiomatic Lua plugins.
Use this skill automatically when:
The Type A Neovim developers use:
| Tool | Purpose | | ------ | --------- | | StyLua | Formatter (opinionated, like prettier) | | selene | Linter (30+ checks) | | lua-language-server | Type checking via LuaCATS annotations |
Neovim's own .stylua.toml:
column_width = 100
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferSingle"
From nvim-best-practices (parts upstreamed to :h lua-plugin):
setup(): Plugins should work out of the box. Separate configuration from initialization.<Plug> mappings: Let users define their own keymaps instead of hardcoding bindings.:Rocks install not :RocksInstall, :RocksPrune, etc.require(): Don't load everything at startup. Require inside command implementations.lua/{plugin}/health.lua for :checkhealth.snake_case for functions and variables, PascalCase for classes/modulesplugin-name/
├── lua/
│ └── plugin-name/
│ ├── init.lua # Entry point, setup function
│ ├── health.lua # :checkhealth integration
│ └── *.lua # Module files
├── plugin/
│ └── plugin-name.lua # Auto-loaded, defines commands/autocommands
├── doc/
│ └── plugin-name.txt # Vimdoc for :h plugin-name
└── tests/
└── *_spec.lua # Busted test files
For detailed guidance with code examples, see references/nvim-best-practices.md.
External sources:
:h lua-guide:h lua-plugintesting
Use when writing or editing a Slack message, email, pull request body, GitHub issue, Reddit post, agenda, or doc. Enforces a direct, warm, unfilled tone and removes AI tells. Always scores the final draft and runs a self-audit pass before delivery.
development
Reframe code design through functional programming principles for agent-assisted development. This skill SHOULD be used when the user says "think functional", "think FP", "make this pure", "separate effects", "where should this side effect go", "this function does too much", "how should I structure this for agents", "make this easier to review", "reduce context needed", or when planning module structure, store design, or code that agents will write and humans will review. Applies FP discipline within any language to maximize agent effectiveness and human reviewability.
development
Use when the user is clarifying beliefs, assumptions, goals, or framing before committing to decision or plan.
testing
Audit and improve project memory files (CLAUDE.md, AGENTS.md, .claude.local.md) — assess against a quality rubric, then apply additions and removals. This skill SHOULD be used when the user asks to audit, improve, edit, fix, tighten, rewrite, or update a memory file, or to check whether one is too long, stale, or bloated.