Help us improve
Share bugs, ideas, or general feedback.
From prism-nvim
Install and configure prism.nvim - Neovim integration with token-saving MCP tools
npx claudepluginhub genomewalker/prism.nvim --plugin prism-nvimHow this skill is triggered — by the user, by Claude, or both
Slash command
/prism-nvim:prismThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Claude controls your editor directly. Talk to it. Watch it edit. 55+ MCP tools with 10-50x token savings.
Expert in using Claude Code CLI for advanced configuration, hooks, MCPs, CLAUDE.md, workflows, sub-agents, and permissions to maximize productivity.
Guides integration of Model Context Protocol (MCP) servers into Claude Code plugins via .mcp.json or plugin.json for external service tools, with scope management (local, project, user).
Provides official documentation for Claude Code CLI, plugins, hooks, MCP servers, skills, configuration, and features. Use for setup, development, troubleshooting, and integrations.
Share bugs, ideas, or general feedback.
Claude controls your editor directly. Talk to it. Watch it edit. 55+ MCP tools with 10-50x token savings.
Based on $ARGUMENTS:
Display this information:
/prism - Neovim integration with Claude Code
Commands:
/prism install - Install or reinstall prism.nvim (idempotent)
/prism update - Update to latest version
/prism status - Check installation and MCP connection
/prism help - Show this help
After install:
1. Restart Claude Code to load MCP server
2. Open Neovim, press Ctrl+; to toggle Claude terminal
3. Talk naturally: "go to line 42", "fix this error", "commit with message X"
Shell commands (after install):
nvc - Open nvim with Claude
nvc -c - Continue last conversation
nvc --model opus - Use Opus model
nvco - Shortcut for nvc --model opus
Quick update without full reinstall:
PRISM_DIR="$HOME/.local/share/prism.nvim"
if [ ! -d "$PRISM_DIR" ]; then
echo "Prism not installed. Run /prism install first."
exit 1
fi
cd "$PRISM_DIR"
OLD_VERSION=$(grep '^version' pyproject.toml 2>/dev/null | cut -d'"' -f2)
echo "Current version: $OLD_VERSION"
git fetch origin main --quiet
BEHIND=$(git rev-list HEAD..origin/main --count 2>/dev/null || echo "0")
if [ "$BEHIND" -eq 0 ]; then
echo "Already up to date"
else
echo "Updating ($BEHIND commits behind)..."
git pull
NEW_VERSION=$(grep '^version' pyproject.toml | cut -d'"' -f2)
echo "Updated to version: $NEW_VERSION"
if [ "$OLD_VERSION" != "$NEW_VERSION" ]; then
echo ""
echo "Version changed: $OLD_VERSION -> $NEW_VERSION"
echo "Restart Claude Code to apply changes."
fi
fi
After git pull, check if shell functions need updating:
PRISM_DIR="$HOME/.local/share/prism.nvim"
REF_BASH="$PRISM_DIR/scripts/shell/nvc.bash"
for rc in ~/.zshrc ~/.bashrc; do
if [ -f "$rc" ] && grep -q "nvc()" "$rc"; then
installed=$(sed -n '/^# Prism.nvim helpers/,/^alias nvco=/p' "$rc")
ref_content=$(cat "$REF_BASH")
if [ "$installed" != "$ref_content" ]; then
echo "shell_$(basename $rc):outdated"
fi
fi
done
If any shell functions are outdated, use AskUserQuestion:
question: "Your nvc shell function is outdated. Update to latest version?"
header: "Update nvc"
options:
- label: "Yes, update (Recommended)"
description: "Replace old nvc function with latest version"
- label: "No, keep current"
description: "Keep your existing function"
If user says yes, update the function:
sed -i.bak '/^# Prism.nvim helpers/,/^alias nvco=/d' ~/.bashrc # or ~/.zshrc
cat "$PRISM_DIR/scripts/shell/nvc.bash" >> ~/.bashrc # or ~/.zshrc
echo "Shell function updated. Run: source ~/.bashrc"
After running, tell the user:
Run these checks and report results in a table:
PRISM_DIR="$HOME/.local/share/prism.nvim"
if [ -d "$PRISM_DIR" ]; then
cd "$PRISM_DIR"
LOCAL_VERSION=$(grep '^version' pyproject.toml 2>/dev/null | cut -d'"' -f2)
git fetch origin main --quiet 2>/dev/null
BEHIND=$(git rev-list HEAD..origin/main --count 2>/dev/null || echo "?")
echo "version:$LOCAL_VERSION"
echo "behind:$BEHIND"
else
echo "version:not installed"
fi
python3 -c "import msgpack" 2>/dev/null && echo "msgpack:ok" || echo "msgpack:missing"
[ -L ~/.local/share/nvim/site/pack/prism/start/prism.nvim ] && echo "plugin:linked" || echo "plugin:missing"
claude mcp list 2>&1 | grep -q "prism-nvim" && echo "mcp:configured" || echo "mcp:missing"
[ -L ~/.claude/rules/prism-nvim.md ] && echo "rules:linked" || echo "rules:missing"
[ -f ~/.config/nvim/lua/plugins/prism.lua ] && echo "nvim_config:exists" || echo "nvim_config:missing"
# Check shell aliases by comparing content directly (portable, works on macOS/Linux)
PRISM_DIR="$HOME/.local/share/prism.nvim"
REF_BASH="$PRISM_DIR/scripts/shell/nvc.bash"
check_shell_func() {
local rc="$1"
local name="$2"
if [ ! -f "$rc" ]; then return; fi
if ! grep -q "nvc()" "$rc" 2>/dev/null; then return; fi
# Extract nvc function block from rc file
local installed=$(sed -n '/^# Prism.nvim helpers/,/^alias nvco=/p' "$rc" 2>/dev/null)
if [ -z "$installed" ]; then
# Try alternate extraction - just the function
installed=$(sed -n '/^nvc()/,/^}/p' "$rc" 2>/dev/null)
fi
if [ -n "$installed" ]; then
# Compare content directly instead of using hashes
local ref_content=$(cat "$REF_BASH")
if [ "$installed" = "$ref_content" ]; then
echo "shell_$name:current"
else
echo "shell_$name:outdated"
fi
else
echo "shell_$name:configured"
fi
}
check_shell_func ~/.zshrc zsh
check_shell_func ~/.bashrc bash
grep -q "nvc()" ~/.zshrc ~/.bashrc 2>/dev/null || echo "shell:missing"
Also try MCP connection: mcp__prism-nvim__get_current_file
Present results as:
| Component | Status |
|---|---|
| Version | X.Y.Z (N commits behind) |
| Python msgpack | OK / Missing |
| Neovim plugin | Linked / Missing |
| MCP server | Configured / Missing |
| Rules | Linked / Missing |
| Nvim config | Exists / Missing |
| Shell alias | Current / Outdated / Missing |
| MCP connection | Connected / Not connected |
If any component is missing, suggest running /prism install.
If shell alias shows "Outdated", suggest running /prism install to update the nvc function.
Full installation (all steps are idempotent - safe to run multiple times).
PRISM_DIR="$HOME/.local/share/prism.nvim"
if [ -d "$PRISM_DIR" ]; then
cd "$PRISM_DIR"
LOCAL_VERSION=$(grep '^version' pyproject.toml 2>/dev/null | cut -d'"' -f2)
echo "Current version: $LOCAL_VERSION"
git fetch origin main --quiet
BEHIND=$(git rev-list HEAD..origin/main --count 2>/dev/null || echo "0")
if [ "$BEHIND" -gt 0 ]; then
echo "Updates available ($BEHIND commits behind)"
git pull
NEW_VERSION=$(grep '^version' pyproject.toml | cut -d'"' -f2)
echo "Updated to version: $NEW_VERSION"
else
echo "Already up to date"
fi
else
git clone https://github.com/genomewalker/prism.nvim.git "$PRISM_DIR"
cd "$PRISM_DIR"
VERSION=$(grep '^version' pyproject.toml | cut -d'"' -f2)
echo "Installed version: $VERSION"
fi
python3 -c "import msgpack" 2>/dev/null && echo "msgpack already installed" || python3 -m pip install --user msgpack
PACK_DIR="$HOME/.local/share/nvim/site/pack/prism/start"
if [ -L "$PACK_DIR/prism.nvim" ]; then
echo "Neovim plugin already linked"
else
mkdir -p "$PACK_DIR"
ln -sf "$HOME/.local/share/prism.nvim" "$PACK_DIR/prism.nvim"
echo "Neovim plugin linked"
fi
Install prism_nvim as a pip package:
cd ~/.local/share/prism.nvim && pip install -e . 2>&1 | tail -3
Create the prism-mcp wrapper script:
mkdir -p ~/.local/bin
cat > ~/.local/bin/prism-mcp << 'EOF'
#!/usr/bin/env python3
import sys
from prism_nvim.mcp_server import main
if __name__ == '__main__':
sys.exit(main())
EOF
chmod +x ~/.local/bin/prism-mcp
echo "Created prism-mcp wrapper"
First check if prism-nvim MCP is already configured:
claude mcp list 2>&1 | grep -q "prism-nvim" && echo "MCP already configured"
Only if not configured, use the claude CLI to add the MCP server:
claude mcp add --transport stdio --scope user prism-nvim -- prism-mcp
This adds prism-nvim to user-level settings so it's available in all projects.
Check if exists first: ~/.config/nvim/lua/plugins/prism.lua
If file exists, skip. Otherwise create:
-- Prism.nvim - Claude Code Integration
return {
{
dir = vim.fn.expand("~/.local/share/prism.nvim"),
name = "prism.nvim",
lazy = false,
dependencies = {
"MunifTanjim/nui.nvim",
},
config = function()
require("prism").setup({
mcp = { auto_start = false },
terminal = {
provider = "native",
position = "vertical",
width = 0.4,
auto_start = false,
passthrough = true,
},
claude = { model = nil, continue_session = false },
trust = { mode = "companion" },
})
end,
keys = {
{ "<leader>cc", "<cmd>Prism<cr>", desc = "Prism: Open Layout" },
{ "<leader>ct", "<cmd>PrismToggle<cr>", desc = "Prism: Toggle Terminal" },
{ "<leader>cs", "<cmd>PrismSend<cr>", mode = { "n", "v" }, desc = "Prism: Send to Claude" },
{ "<leader>ca", "<cmd>PrismAction<cr>", mode = { "n", "v" }, desc = "Prism: Code Actions" },
{ "<C-\\>", "<cmd>PrismToggle<cr>", desc = "Toggle Prism Terminal" },
},
},
}
Check first:
[ -L ~/.claude/rules/prism-nvim.md ] && echo "Rules already linked"
Only if not linked:
mkdir -p ~/.claude/rules
ln -sf ~/.local/share/prism.nvim/CLAUDE.md ~/.claude/rules/prism-nvim.md
echo "Rules linked"
First, check existing shell functions and compare with reference:
PRISM_DIR="$HOME/.local/share/prism.nvim"
REF_BASH="$PRISM_DIR/scripts/shell/nvc.bash"
REF_FISH="$PRISM_DIR/scripts/shell/nvc.fish"
# Check each shell rc file
for rc in ~/.zshrc ~/.bashrc; do
if [ -f "$rc" ] && grep -q "nvc()" "$rc"; then
# Extract installed function
installed=$(sed -n '/^# Prism.nvim helpers/,/^alias nvco=/p' "$rc")
ref_content=$(cat "$REF_BASH")
if [ "$installed" != "$ref_content" ]; then
echo "shell_$(basename $rc):outdated"
else
echo "shell_$(basename $rc):current"
fi
else
echo "shell_$(basename $rc):missing"
fi
done
If missing: Use AskUserQuestion to ask which shell:
question: "Which shell do you use?"
header: "Shell"
options:
- label: "Zsh"
description: "Add aliases to ~/.zshrc"
- label: "Bash"
description: "Add aliases to ~/.bashrc"
- label: "Fish"
description: "Add functions to ~/.config/fish/functions/"
- label: "Skip"
description: "Don't add shell aliases"
If outdated: Use AskUserQuestion to offer update:
question: "Your nvc shell function is outdated. Update to latest version?"
header: "Update"
options:
- label: "Yes, update it (Recommended)"
description: "Replace old nvc function with latest version"
- label: "No, keep current"
description: "Keep your existing function (may miss bug fixes)"
To update outdated function: Remove old block and append new:
# Remove old prism block from rc file
sed -i.bak '/^# Prism.nvim helpers/,/^alias nvco=/d' ~/.bashrc # or ~/.zshrc
# Append new version
cat "$PRISM_DIR/scripts/shell/nvc.bash" >> ~/.bashrc # or ~/.zshrc
For new installs, append the reference file:
# For Bash/Zsh - append the reference file
cat "$PRISM_DIR/scripts/shell/nvc.bash" >> ~/.bashrc # or ~/.zshrc
For Fish (~/.config/fish/functions/nvc.fish and nvco.fish):
# Copy reference files for Fish
mkdir -p ~/.config/fish/functions
cp "$PRISM_DIR/scripts/shell/nvc.fish" ~/.config/fish/functions/nvc.fish
cp "$PRISM_DIR/scripts/shell/nvco.fish" ~/.config/fish/functions/nvco.fish
Tell the user:
Explain that MCP tools save tokens because:
%s/old/new/g)Prism's 55+ MCP tools respond to natural language:
| You say | Claude does |
|---|---|
| "go to line 42" | goto_line(42) |
| "show me errors" | get_diagnostics |
| "fix this error" | fix_diagnostic |
| "replace foo with bar" | search_and_replace("foo", "bar") |
| "be more careful" | set_trust_mode("guardian") |
| "just do it" | set_trust_mode("autopilot") |
| "teach me vim" | set_config(narrated=true) |
| "commit with message X" | git_commit("X") |
| "who wrote this?" | git_blame |
See CLAUDE.md for the complete natural language reference.