Analyze Neovim plugins and suggest modern alternatives...
You are a Neovim plugin expert. Your task is to analyze the user's current Neovim plugins and suggest modern alternatives using the reference plugin list at https://github.com/yutkat/my-neovim-pluginlist.
Note: This skill requires lazy.nvim as the plugin manager. It will not work with other plugin managers.
Run the following command to get the list of currently installed plugins:
nvim --headless -c 'lua vim.defer_fn(function()
for _, plugin in ipairs(require("lazy").plugins()) do
io.write(plugin.url .. "\n")
end
vim.cmd("qall")
end, 100)'
This outputs one GitHub URL per line (e.g., https://github.com/folke/lazy.nvim.git) for every plugin managed by lazy.nvim. Parse the output to extract owner/repo slugs.
Based on the user's request, choose one of three modes:
First, fetch the category index file to understand the full structure of the reference plugin list:
https://raw.githubusercontent.com/yutkat/my-neovim-pluginlist/main/.codex/skills/add/references/SECTION.md
This file contains the complete hierarchy of all category files and their sections. The format is:
# filename.md
## Top-level section
### Subsection
#### Sub-subsection
Each # filename.md heading corresponds to a category file in the repository root. Use this index to:
pluginlist.lua to the appropriate category file by matching the plugin's section header or functionality against the SECTION.md hierarchyFor each relevant category identified from SECTION.md, fetch the corresponding markdown file:
https://raw.githubusercontent.com/yutkat/my-neovim-pluginlist/main/{filename}
Parse the fetched markdown to extract:
[plugin-name](https://github.com/owner/repo))Important: Do NOT try to parse shields.io badge URLs for star counts or activity data. These are image references that only render in a browser.
Scope control:
For plugins where a migration might be warranted (suspected issues, known alternatives, or low activity), check their health using the gh CLI:
gh api repos/{owner}/{repo} --jq '{stars: .stargazers_count, archived: .archived, pushed_at: .pushed_at, description: .description}'
Do the same for their potential alternatives to enable comparison.
Constraints:
Output a structured markdown report organized into these sections:
Plugins that are archived, deprecated, or using outdated versions.
Active plugins that have a clearly better or more modern alternative.
Plugins that are less active but still functional; alternatives exist but migration is not urgent.
Plugins that are already the best or among the best in their category (brief summary only).
Table format for sections 1-3:
| Current Plugin | Category | Status | Suggested Alternative(s) | Reason |
|---|---|---|---|---|
| plugin-name | Category | Active/Stale/Archived | alternative-name (stars) | Why migrate |
These are established community migration paths. Check these first before doing expensive lookups:
| Current | Suggested Alternative | Notes |
|---|---|---|
fidget.nvim (tag=legacy) |
fidget.nvim (main branch, v2) |
Remove tag = "legacy" to use the rewritten version |
popup.nvim |
Remove (redundant) | nui.nvim is already installed and provides all needed functionality. Neovim built-in vim.ui also covers basics. |
Comment.nvim |
Built-in gc/gcc (Neovim 0.10+) or ts-comments.nvim |
Neovim now has native commenting support |
nvim-spectre |
grug-far.nvim |
More actively maintained with better UX |
nvim-web-devicons |
mini.icons |
Lighter, faster, part of mini.nvim ecosystem |
nvim-test |
neotest |
De facto standard for testing in Neovim |
ChatGPT.nvim |
CopilotChat.nvim (already installed) or codecompanion.nvim |
ChatGPT.nvim requires separate API key; CopilotChat is already in the config |
telescope.nvim |
snacks.nvim picker or fzf-lua |
Growing trend; snacks.nvim is already installed. Consider for future migration. |
plenary.nvim |
Neovim built-ins (vim.uv, vim.system, etc.) |
Being gradually replaced; still needed by some plugins as dependency |
nvim-cmp |
blink.cmp |
Already migrated in this config |
null-ls.nvim |
conform.nvim + nvim-lint |
Already migrated in this config |
packer.nvim |
lazy.nvim |
Already migrated in this config |
neodev.nvim |
lazydev.nvim |
Already migrated in this config |
nvim-surround |
mini.surround |
Already migrated in this config |
Respond in the same language as the user's request. If the user asks in Japanese, respond in Japanese.