CodeCompanion.nvim is a Neovim plugin that connects the editor to large language models and coding agents. Neovim users employ it for chat, inline code changes, refactoring, reviews, workflows, and integrations through protocols such as ACP and MCP. Catalogue add-ons provide instructions for using the plugin.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add olimorris/codecompanion.nvim --skill writing-docsgit clone --depth 1 https://github.com/olimorris/codecompanion.nvimWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/olimorris/codecompanion.nvim/writing-docs)<a href="https://agentmods.dev/skills/olimorris/codecompanion.nvim/writing-docs"><img src="https://agentmods.dev/badge/skills/olimorris/codecompanion.nvim/writing-docs/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/olimorris/codecompanion.nvim/writing-docs"><img src="https://agentmods.dev/badge/skills/olimorris/codecompanion.nvim/writing-docs.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00023 | $0.02109 |
| Opus 5.5 | $0.00009 | $0.00844 |
| Sonnet 5.5 | $0.00005 | $0.00422 |
| Haiku 4.5 | $0.00002 | $0.00211 |
Grade A, and why
writing-docs scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 147 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Writing Docs
Write CodeCompanion.nvim's docs following the Microsoft Writing Style Guide with the overrides below. Run make docs after changing any page to regenerate the vimdoc.
Voice and Tone
- Write like you speak: friendly, direct and human, aimed at Neovim users. Avoid jargon where a familiar word works.
- Lead with what matters most. Front-load keywords so readers can scan.
- Say what happens, including the edge cases: "Optional arguments can be left blank, and cancelling at any point adds nothing".
- Be brief. Cut filler words, unnecessary adverbs and phrases like "you can", "there is" and "there are" where they add nothing. Prefer one-word verbs ("try", not "attempt to").
- Avoid marketing language and hedging: no "simply", "powerful", "awesome", "seamless" or "journey".
- Start with the content. Don't open with "This guide is intended to help you..." or close with "This is useful for...".
Page Structure
- Frontmatter
description: one sentence, what the page lets you do. - The
#title is "Using X" for usage pages, "Configuring X" for configuration pages and "Extending with X" for extending pages. Guides take a task title: "Running Local Models", "Choosing an Adapter". - Open with one to three sentences: what the feature is, then how CodeCompanion does it. If the feature solves a problem, name the problem in a sentence first.
##then###is the ceiling. For a sub-point under###, use a bold line (**Images**) instead of a deeper heading.- Section names are short nouns or gerunds: "Directories", "Groups", "Autoload", "Editing and Deleting".
- End with a "Limitations" section when there are any, stated honestly.
Code First
The rhythm is a one-line lead-in ending in a colon, then the code block:
Skills are enabled by default. To disable them:
```lua
require("codecompanion").setup({
skills = {
opts = {
chat = {
enabled = false,
},
},
},
})
```
- Lead-ins: "This can be configured with:", "You can override this with:", "To set an adapter:".
- Always wrap config examples in the full
require("codecompanion").setup({ ... })nesting, so they can be pasted as-is. - Use realistic values, not
fooorbar. - Inline comments list the allowed values or the unit, nothing more:
-- Can be "default", "telescope", "fzf_lua", "mini_pick" or "snacks",-- milliseconds. - Use
::: code-groupfor alternatives (Static and Conditional, Markdown and Lua) rather than two blocks with prose between them. - Ex commands go in a bare fenced block with no language.
- Let the snippet speak for itself. Only add a sentence after it for behaviour the code can't show: "A directory further down the list takes precedence if skills of the same name clash".
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today First seen · 147 lines · 23 tokens per session scan A 416a8826f002
writing-docs is a skill published in the GitHub repository olimorris/codecompanion.nvim (6,897 stars, last pushed today), licensed Apache-2.0. It adds 23 tokens to every session and 2,109 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-17.
Other skills, from other repositories
lynkr
Universal LLM gateway with intelligent routing, Graphify code intelligence, Distill compression, routing telemetry, Code Mode, and 12+ provider support. 60-80% cost reduction for Claude Code, Cursor, and Codex.
session-rag-eval
Run and debug Chatbox session attachment RAG model evaluation with synthetic and real long-file fixtures.
storyboard-core
Use NodeTool storyboard, entity-casting, rendering, and timeline-assembly tools for video production or debugging their contracts.
timeline-edit-ops
Reference for editing a NodeTool timeline that already exists with edittimeline ops — animateclip roles and presets, the easing grammar, per-word/character stagger, setclipparams limits, document-only fields (styleTracks, textAnimator, animationLinks, layout, camera2d, motionBlur, repeater), groups, transitions, masks…
native-game-reference
Field reference for native game documents: scripts, lifecycle hooks, events, tags and props, 2D visuals, particles, lighting, effects, 3D rendering, physics layers, audio mix, animation graphs, input bindings, HUD widgets, performance and editor panels. Load after native-game when an edit needs one of these fields.
sandbox-timeline
Author a motion-graphics timeline as code — scenes, layout containers, motion primitives and transitions, saved in one call.