// the find
ThePrimeagen/99
Neovim AI agent done right
99 is a Neovim plugin that acts as a thin orchestration layer over AI CLI tools (opencode, claude, cursor-agent, gemini). Instead of calling LLM APIs directly, it shells out to whichever CLI you have installed and pipes results into Neovim's quickfix list or replaces visual selections. Aimed at developers who live in Neovim and want AI help without leaving their editor.
The provider abstraction is genuinely useful — swapping between Claude Code, opencode, and Gemini without restarting Neovim is something no other plugin does cleanly. Treesitter query files for six languages (Go, TypeScript, C++, Java, Lua, Ruby, Elixir) show real thought about giving the LLM structural context rather than raw text. The test suite is surprisingly thorough for a Lua plugin — 20+ spec files covering state, providers, completions, and visual selection bounds. The SKILL.md convention for injecting domain context is a practical idea: you define what the AI needs to know about your stack once and reference it with #.
The whole thing is beta and the README says so repeatedly — APIs are disappearing, prompts are 'temporary', and the author admits cwd changes break things. It's fundamentally a wrapper around other tools, so you're adding a dependency on whichever AI CLI you choose, each with their own auth setup and billing. The 'vibe' operation has no documentation whatsoever in the README — it exists, you can call it, and that's all you know. The `tmp_dir` defaulting to `./tmp` means it writes files into your project root unless you override it, which will pollute git status on any project that doesn't have that directory gitignored.