Warm Neovim colorscheme with burgundy, gold, and sage — inspired by French cuisine. 🍷
{
'cfbender/claret.nvim',
priority = 1000,
config = function()
require('claret').setup({
variant = 'auto',
transparent = false,
})
vim.cmd.colorscheme('claret')
end,
}require('claret').setup({
variant = 'auto', -- 'auto' | 'dark' | 'light'
transparent = false,
italics = {
comments = true,
keywords = true,
parameters = true,
decorators = true,
},
groups = {}, -- raw group overrides, merged last
overrides = function(colors)
-- return a table of palette overrides, e.g. { rose_1 = '#FF00FF' }
return {}
end,
})Completion & UI
Statusline & structure
- heirline.nvim
- lualine.nvim
- aerial.nvim
- indent-blankline.nvim
- rainbow-delimiters.nvim
- nvim-highlight-colors
Git & diffs
Notes, tasks, terminal
Diagnostics, test & debug
AI
Matching themes for other tools live under ports/. They are auto-generated from lua/claret/palette.lua — don't edit them directly.
| Tool | File | Install |
|---|---|---|
| bat | ports/bat/ClaretDark.tmTheme |
Copy into "$(bat --config-dir)/themes/", then bat cache --build. Use with --theme=ClaretDark or set --theme="ClaretDark" in bat.conf. |
| ghostty | ports/ghostty/claret-dark.conf |
Copy to ~/.config/ghostty/themes/claret-dark, then add theme = claret-dark to ~/.config/ghostty/config. |
| kitty | ports/kitty/claret.conf |
include or copy into ~/.config/kitty/kitty.conf. |
| opencode | ports/opencode/claret.json |
Copy to ~/.config/opencode/themes/claret.json, then set "theme": "claret" in opencode.json. |
| starship | ports/starship/claret.toml |
Merge [palettes.claret] into ~/.config/starship.toml and set palette = "claret". |
| vicinae | ports/vicinae/claret-dark.toml |
Copy to ~/.local/share/vicinae/themes/claret-dark.toml. |
| yazi | ports/yazi/claret-dark.yazi/ |
Copy claret-dark.yazi/ to ~/.config/yazi/flavors/, then set dark = "claret-dark" under [flavor] in ~/.config/yazi/theme.toml. |
| zellij | ports/zellij/claret-dark.kdl |
Copy to ~/.config/zellij/themes/claret-dark.kdl, then set theme "claret-dark" in your zellij config. |
On macOS, replace ~/.config with $XDG_CONFIG_HOME if you set it, or use the tool's documented config directory.
# Run the full test suite (palette, load, highlights, plugins, ports).
./scripts/test.sh
# Regenerate port files after changing the palette or generator.
nvim --headless -u tests/minimal_init.lua \
-c "lua dofile('scripts/generate_ports.lua')" -c "qa!"Git hooks (optional but recommended) — managed by lefthook via mise:
mise run hooks-installThe pre-commit hook regenerates port files automatically when lua/claret/palette.lua, scripts/generate_ports.lua, or anything under ports/ changes, then re-stages them.
lua/claret/palette.lua— locked palette values (dark + light)lua/claret/config.lua— defaults and user-config mergelua/claret/theme.lua— assembles every highlight grouplua/claret/groups/*.lua— core groups (editor, syntax, diagnostics, …)lua/claret/groups/plugins/*.lua— per-plugin integrationscolors/*.lua— colorscheme entrypointstests/*.lua— headless smoke checksscripts/generate_ports.lua— generator for every file inports/
- Add a new file under
lua/claret/groups/plugins/that returns{ get = function(colors, opts) ... end }. - Register it in
lua/claret/theme.lua. - Reuse semantic palette roles (
rose_*for keywords,gold_*for functions,sage_*for strings,slate_*for types/tags,terra_*for errors) — don't invent new hues. - Add an assertion to
tests/plugins_spec.luacovering one representative group.
- Edit
lua/claret/palette.lua. - Regenerate ports (or let the pre-commit hook do it).
- Run
./scripts/test.shand update any hardcoded expectations intests/.


