deepen — скилл для Claude Code: что делает и как установить
Находит поверхностные модули с громоздкими интерфейсами и проектирует глубокую архитектуру. Запускается, когда тесты зелёные и остался неизрасходованный бюджет токенов.
npx skills add JuliusBrussee/cavekit --skill deepen -a claude-codeЧто делает deepen
Скилл ищет в затронутых задачей файлах так называемые поверхностные модули (shallow modules). Это классы и функции, чей интерфейс столь же сложен, как и внутренняя реализация: сквозные методы, аргументы с кучей флагов или дублирование абстракций. За один проход инструмент берёт ровно один проблемный участок, чтобы не устраивать хаотичный рефакторинг по всему репозиторию.
Работа идёт в пять шагов: выбор модуля, точный диагноз дефекта со ссылкой на строку, поиск подходящего паттерна, подготовка правок спецификации (§I, §V, §T) и сверка тестов. Скилл сам не переписывает файлы проекта, а лишь формулирует изменения для передачи агенту спецификаций. Если подключён скилл codebase-design, deepen опирается на его терминологию.
Главное ограничение — поведение системы неприкосновенно. Тесты обязаны проходить до начала работы и после неё. Запускать deepen в разгаре разработки фичи или перед дедлайном бессмысленно, потому что скилл рассчитан на спокойную зачистку архитектурного долга за счёт лишнего лимита токенов.
Какие задачи решает
- скрыть детали реализации за лаконичным интерфейсом
- найти методы-прослойки и утечки конфигурации в коде
- сформулировать правки §I, §V и §T для спецификации без изменения поведения
- убрать эффект лавинообразных правок по множеству файлов
Примеры запросов агенту
- /ck:deepen
- найди поверхностный интерфейс в затронутом коде и спрячь сложность внутри
- исследуй архитектуру модуля и подготовь правки интерфейса через /ck:deepen
Как установить deepen
1Через Skills CLI (Vercel)
npx skills add JuliusBrussee/cavekit --skill deepen -a claude-code2Вручную: положить файлы
~/.claude/skills/deepen/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/deepen/
1Через Skills CLI (Vercel)
npx skills add JuliusBrussee/cavekit --skill deepen -a codex2Вручную: положить файлы
.agents/skills/deepen/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add JuliusBrussee/cavekit --skill deepen -a cursor2Вручную: положить файлы
.cursor/skills/deepen/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install JuliusBrussee/cavekit deepen2Вручную: положить файлы
.github/skills/deepen/SKILL.md1Через Skills CLI (Vercel)
npx skills add JuliusBrussee/cavekit --skill deepen -a gemini-cli2Командой платформы
gemini skills install https://github.com/JuliusBrussee/cavekit --path skills/deepenВручную: положить файлы
.devin/skills/deepen/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add JuliusBrussee/cavekit --skill deepen -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора9
Похожие
Рядом в теме «Код-ревью и рефакторинг»
Всё по теме «Код-ревью и рефакторинг» →Вопросы о deepen
Как установить deepen в Claude Code?
Выполните в терминале команду npx skills add JuliusBrussee/cavekit --skill deepen -a claude-code.
Что делает скилл deepen?
Он анализирует затронутый код, выбирает один модуль с раздутым интерфейсом и предлагает архитектурные правки, скрывая внутреннюю логику от вызывающего кода.
Можно ли запускать deepen, если тесты падают?
Нет, скилл требует зелёного набора тестов как до начала рефакторинга, так и после него.
Исходный текст
SKILL.md · MIT
--- name: deepen description: | Optional design-improvement pass for when you have spare usage to drain. Finds the shallowest modules in the code the spec touches, researches a deeper design, and proposes refactors that shrink interfaces and hide decisions — behavior held constant, tests green before and after. Proposes §I/§V/§T edits, never silent rewrites. Triggers when the user says "deepen this", "improve the design", "this module feels shallow", "pull complexity down", "use spare budget on the codebase", or invokes /ck:deepen. Leans on the codebase-design skill's deep-module vocabulary when present. --- # deepen — make modules deep **Behavior is sacred: tests green before AND after. Every change shrinks an interface or hides a decision — deepen, don't churn.** A **deep module** hides a lot behind a small interface; a **shallow** one's interface costs as much to use as writing the code yourself. Complexity = dependencies + obscurity, and it compounds. Deepen spends spare usage paying that down *before* it becomes a §B. Run it when the build is green & you have budget to drain — not under deadline. ## WHEN TO DEEPEN - Build is green, tests pass, & you have token budget spare. - A module's interface feels as complex as its implementation (shallow smell). - The same change keeps touching many files (change amplification). - User explicitly asks to improve design quality. ⊥ run mid-feature or under pressure. Deepen is the deliberate pass, not the reflex. ## FIVE STEPS ### 1. PICK THE SHALLOW Scan the modules the spec touches. Rank by shallowness — interface surface vs work done. Pick the **one** worst offender. Tells: - Pass-through method that only forwards to one other (shallow layer). - Caller must set 5 flags right to use it (config leakage). - Same abstraction repeated at two layers (no information hiding). - A `?` or §B that traces back to a confusing interface. One module per pass. Deepening is surgical, ⊥ a codebase sweep. ### 2. DIAGNOSE Name the design defect in caveman, citing file:line: > src/auth/token.go: 6-arg ctor leaks rotation policy to every caller. shallow. Complexity is real only if it shows: change amplification, high cognitive load, or an unknown-unknown (caller must know a hidden fact to call it right). ### 3. RESEARCH THE DEEPENING What does a deeper version look like? Pull a known pattern (hand to **research** for the external case → §R) or derive from the codebase's own better modules. Moves that deepen: - **Pull complexity down** — hide the hard part inside, give callers the simple path. - **Define errors out of existence** — design the interface so the edge can't occur. - **Information hiding** — one decision, one module; callers don't learn it. - **General-purpose interface** over a pile of special-case methods. ### 4. PROPOSE Draft the change as spec edits, not a silent rewrite: - New/simpler §I shape for the module. - §V that locks the deepened invariant so a future build can't re-shallow it. - §T refactor row(s), each citing the §V/§I it serves. Hand to **spec** to write. Show the before/after interface so the user sees the shrink. ### 5. VERIFY BEHAVIOR HELD Refactor ≠ rewrite. Full suite green before you start AND after. A deepening that changes behavior is a feature in disguise — stop, route through `/spec` + `/build`. New interface gets a test proving the old callers still work. ## WHEN TO STOP Done when the chosen module's interface is strictly smaller, its hidden decision no longer leaks, tests are green, and §I/§V record the new shape. One module deepened beats five churned. Budget left → pick the next shallowest, fresh pass. ## BOUNDARIES - ⊥ change behavior. Green before, green after. Pure structure. - ⊥ write SPEC.md. Propose §I/§V/§T; spec writes. - ⊥ deepen more than one module per pass. - ⊥ run under deadline or mid-feature. This is the spare-budget pass. - ⊥ add abstraction for single-use code. A deep module earns its hiding; a speculative one is just more surface.
© JuliusBrussee · MIT · JuliusBrussee/cavekit