effective-neovim

Apply best practices from the Neovim community to write clean, idiomatic Lua plugins.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "effective-neovim" with this command: npx skills add kylesnowschwartz/simpleclaude/kylesnowschwartz-simpleclaude-effective-neovim

Effective Neovim

Apply best practices from the Neovim community to write clean, idiomatic Lua plugins.

When to Apply

Use this skill automatically when:

  • Writing new Neovim plugins in Lua

  • Reviewing Neovim plugin code

  • Refactoring existing plugin implementations

Tooling

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"

Key Principles

From nvim-best-practices (parts upstreamed to :h lua-plugin ):

  • No forced setup() : Plugins should work out of the box. Separate configuration from initialization.

  • <Plug> mappings: Let users define their own keymaps instead of hardcoding bindings.

  • Subcommands over pollution: Use :Rocks install not :RocksInstall , :RocksPrune , etc.

  • Defer require() : Don't load everything at startup. Require inside command implementations.

  • LuaCATS annotations: Use type hints; catch bugs in CI with lua-language-server.

  • Busted over plenary.nvim: For testing. More powerful, standard in broader Lua community.

  • SemVer: Version your plugins properly. Publish to luarocks.org.

  • Health checks: Provide lua/{plugin}/health.lua for :checkhealth .

Style Conventions

  • Indent: 2 spaces (not tabs)

  • Quotes: Single quotes preferred

  • Line width: 100 columns

  • Naming: snake_case for functions and variables, PascalCase for classes/modules

  • No semicolons: They're unnecessary in Lua

  • Trailing commas: In multi-line tables for cleaner diffs

  • Comments: Explain why, not what

Plugin Structure

plugin-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

References

For detailed guidance with code examples, see references/nvim-best-practices.md .

External sources:

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

OpenClaw Windows WSL2 Install Guide

Complete step-by-step installation guide for OpenClaw on Windows 10/11 with WSL2, includes common pitfalls and solutions from real installation experience.

Registry SourceRecently Updated
General

Package Version Tracker

查询 npm 和 PyPI 包的版本信息、历史发布及依赖,支持版本比较和批量查询,响应快速无须 API key。

Registry SourceRecently Updated
General

Pinboard Manager

Use this skill for ALL Pinboard bookmark management tasks — this is the go-to skill whenever Pinboard (pinboard.in) is involved. Invoke immediately when the...

Registry SourceRecently Updated
General

51mee Resume Parse

简历解析。触发场景:用户上传简历文件要求解析、提取结构化信息。

Registry SourceRecently Updated