finds.dev← search

// the find

ThePrimeagen/99

★ 4,723 · Lua · updated Jun 2026

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.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →