Вогонь. Код. Менше слів.
Plugin для Claude Code що вмикає печерний режим — видаляє воду, зберігає суть. −65–90% токенів без втрати точності. Побудований для українських розробників, розуміє обидві мови.
$ /cavemenko
╔─────────────────────────────────────────────────╗
│ Режим: FULL · Токени: ↓ ~78% · 🦴 Active │
╚─────────────────────────────────────────────────╝
- Навіщо це
- До vs Після
- Встановлення
- Використання
- Рівні стиснення
- Як стискається
- Конфігурація
- Архітектура
- Ліцензія
Claude Code за замовчуванням відповідає як академічна стаття: вступ, розвиток, висновок, ввічливість і ще раз ввічливість. Досвідченому розробнику це шум.
Cavemenko перемикає стиль на інженерний: конкретно, стисло, по суті — так, як говорять між собою в команді. Ніяких «Звичайно, із задоволенням допоможу...».
Назва: cave (печерна людина говорила коротко) + menko (зменшувальний суфікс). Плагін використовує рідні механізми мови, а не жорстке обрізання — граматика і сенс зберігаються.
React rerender
Без cavemenko (~230 символів):
Звичайно! Із задоволенням допоможу вам з цією проблемою. Давайте розберемося, що відбувається з вашим React-компонентом. Проблема, з якою ви зіткнулися, скоріше за все, пов'язана з тим, що при кожному рендерингу компонента створюється нове посилання на об'єкт...
full (~50 символів):
Inline obj = нове ref кожен render → rerender. Оберни в
useMemo.
Економія: ~78%
Connection pooling в БД
| Рівень | Відповідь |
|---|---|
| (без плагіна) | Pool reuse open connections до бази даних замість створення нового з'єднання на кожен запит. Це дозволяє уникнути накладних витрат на встановлення з'єднання та TCP handshake... |
lite |
Pool reuse open connections до БД замість створення нового на кожен request. Skip handshake overhead. |
full |
Pool — reuse open conn до БД. Skip handshake per request. |
ultra |
Pool = reuse conn БД. Skip handshake → fast. |
Fix token expiry bug
| Рівень | Відповідь |
|---|---|
lite |
Перевірка expiry використовує strict <, через що tokens на межі expiry відхиляються. Заміни на <=. |
full |
Bug — token expiry check. < → <=. Межа відкидається. |
ultra |
Bug: token exp, < → <=. |
/plugin marketplace add ruslanlap/cavemenko
/plugin install cavemenko@cavemenko
Git URL (HTTPS / SSH)
/plugin marketplace add https://github.com/ruslanlap/cavemenko.git
/plugin install cavemenko@cavemenko
/plugin marketplace add git@github.com:ruslanlap/cavemenko.git
/plugin install cavemenko@cavemenko
CLI (поза сесією)
claude plugin marketplace add ruslanlap/cavemenko
claude plugin install cavemenko@cavemenko
# з scope:
claude plugin install cavemenko@cavemenko --scope userPin to version
/plugin marketplace add https://github.com/ruslanlap/cavemenko.git#v2.0.0
/plugin install cavemenko@cavemenko
Local dev / fork
git clone https://github.com/ruslanlap/cavemenko.git/plugin marketplace add /path/to/cavemenko
/plugin install cavemenko@cavemenko
Або one-shot без install:
claude --plugin-dir /path/to/cavemenkoTeam / repo (.claude/settings.json)
Додай до .claude/settings.json у репо:
{
"extraKnownMarketplaces": {
"cavemenko": {
"source": { "source": "github", "repo": "ruslanlap/cavemenko" }
}
},
"enabledPlugins": { "cavemenko@cavemenko": true }
}Pre-seed для containers / CI
CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed \
claude plugin marketplace add ruslanlap/cavemenko
CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed \
claude plugin install cavemenko@cavemenko
# runtime:
export CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seedДеталі: pre-populate plugins
/plugin marketplace update cavemenko # оновити список
/plugin update cavemenko@cavemenko # оновити плагін
/plugin disable cavemenko@cavemenko # вимкнути (зберегти)
/plugin uninstall cavemenko@cavemenko # видалити
| Команда | Дія |
|---|---|
/cavemenko |
Увімкнути (default: full) |
/cavemenko lite|full|ultra |
Вибрати рівень |
/cavemenko off |
Вимкнути |
увімкни печерний, менше токенів, будь коротким |
Активація українською |
cavemenko on, cavemenko mode |
Активація англійською |
стоп печерний, вимкни печерний, звичайний режим |
Деактивація |
| Команда | Дія |
|---|---|
/cavemenko-commit |
Короткий commit message у стилі Conventional Commits |
/cavemenko-review |
One-line code review comment |
/cavemenko-compress |
Стиснення документа / нотаток / специфікацій (target ≤30%) |
/cavemenko-translate |
Переклад eng документації → стиснена Ukrainian |
/cavemenko-stats |
Статистика сесії: режим, зекономлені токени |
| Рівень | Стиль | Найкраще для |
|---|---|---|
lite |
Повні речення без води і hedging | Документація, пояснення для інших |
full (default) |
Фрагменти, наказовий спосіб, short forms | Щоденна розробка |
ultra |
Abbr, arrows (X → Y), max eng/ukr mix |
Power users, code review, specs |
«Чому React компонент rerender?»
| Level | Response |
|---|---|
lite |
Компонент перерендерюється, бо при кожному render створюється нове ref на object. Оберніть в useMemo, щоб ref стабілізувалося. |
full |
Inline obj = нове ref кожен render. Оберни в useMemo. |
ultra |
Inline obj → new ref → rerender. useMemo. |
«Поясни connection pooling в БД»
| Level | Response |
|---|---|
lite |
Pool reuse open connections до БД замість створення нового на кожен request. Skip handshake overhead. |
full |
Pool — reuse open conn до БД. Skip handshake per request. |
ultra |
Pool = reuse conn БД. Skip handshake → fast. |
Cavemenko не обрізає текст — він використовує рідні механізми української мови та зрозумілі tech-скорочення. Граматика і точність зберігаються.
| Прийом | До → Після | Економія |
|---|---|---|
| Pro-drop | я думаю → думаю |
−1 слово |
| Тире замість зв'язки | це є баг → баг |
−2 слова |
| Short forms | код зламаний → код зламано |
−2 символи |
| Наказовий спосіб | потрібно обернути → оберни |
−1 слово |
| Орудний відмінок | за допомогою команди → командою |
−2 слова |
| Drop «що» | думаю, що баг → думаю: баг |
−1 слово |
| Eng terms | автентифікація → auth |
−10 символів |
| Eng terms | програмне забезпечення → software |
−14 символів |
| Abbreviations | і так далі → etc |
−8 символів |
| Abbreviations | наприклад → eg |
−7 символів |
| Mix slangs | виконай → do |
−5 символів |
Повна таблиця абревіатур (ultra mode)
| Abbr | Повна форма |
|---|---|
| БД | база даних |
| ПЗ | software |
| ОС | operating system |
| ШІ | AI |
| фн | function |
| імпл | implementation |
| конф | config |
| auth | автентифікація |
| env | оточення |
| dep / deps | залежність / залежності |
| repo | репозиторій |
| PR | pull request |
| CI/CD | continuous integration/delivery |
| eg | наприклад |
| etc | і так далі |
| ASAP | якнайшвидше |
| API | програмний інтерфейс |
| UI/UX | user interface / user experience |
| ТЗ | технічне завдання |
| MVP | мінімально життєздатний продукт |
| ORM | object-relational mapping |
| CLI | command-line interface |
| SDK | software development kit |
| JWT | JSON web token |
| SSR/SSG | server-side rendering / static generation |
| DRY | don't repeat yourself |
| CRUD | create, read, update, delete |
Cavemenko читає мову промпту і відповідає відповідно:
- Запит англійською → стиснена англійська відповідь
- Запит українською → стиснена українська відповідь
| Контекст | Рівень стиснення |
|---|---|
| Пояснення, документація | Максимальний |
| Архітектурні рішення | Середній |
| Помилки, security | Мінімальний (точність важлива) |
CAVEMENKO_DEFAULT_MODE (env var)
└── .cavemenko.json (root репо)
└── ~/.config/cavemenko/config.json
└── default: full
// ~/.config/cavemenko/config.json
{
"defaultMode": "ultra"
}Або через змінну оточення:
export CAVEMENKO_DEFAULT_MODE=ultraДодай .cavemenko.json у корінь репо:
{
"defaultMode": "ultra",
"abbreviations": {
"ТСК": "таск-трекер",
"СПР": "спринт"
}
}Створи ~/.config/cavemenko/abbr.json:
{
"КБ": "кодова база",
"ФР": "фронтенд",
"БР": "бекенд",
"ТЛ": "техлід",
"СР": "сервер"
}Project-level abbr зливаються з user-level і перевизначають їх при конфліктах.
Показує активний режим і зекономлені токени прямо в UI Claude Code.
macOS / Linux — додай до ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "bash ~/.claude/plugins/cavemenko/hooks/cavemenko-statusline.sh"
}
}Windows:
{
"statusLine": {
"type": "command",
"command": "powershell -File ~/.claude/plugins/cavemenko/hooks/cavemenko-statusline.ps1"
}
}Можливі значення: [CAVEMENKO] · [CAVEMENKO:ULTRA] · [CAVEMENKO:ULTRA ↓2k]
SessionStart hook
├─ Записує .cavemenko-active (statusline читає)
├─ Завантажує SKILL.md → фільтрує по рівню → інджектить
├─ Завантажує custom abbr (user + project) → інджектить
├─ Визначає конфлікти з іншими плагінами → попереджає
└─ Перевіряє statusline → пропонує налаштування
UserPromptSubmit hook
├─ Відстежує /cavemenko lite|full|ultra|off
├─ Відстежує /cavemenko-{commit,review,compress,translate,stats}
├─ Парсить фрази активації/деактивації (укр + eng)
└─ Надсилає per-turn reinforcement (модель не дрейфує)
Statusline
├─ Читає mode flag → [CAVEMENKO:LEVEL]
└─ Читає stats file → token savings counter
- Flag file — symlink-safe write/read,
O_NOFOLLOW, whitelist validation - Statusline — cap 64 bytes, strip non-
[a-z0-9-], whitelist before render - Zero secrets · zero network · zero external deps
Натхнено caveman by Julius Brussee — побудовано з нуля для Ukrainian dev workflow.