# tree-shaking

Скилл объясняет tree shaking и подсказывает агенту, как убрать неиспользуемые экспорты из JavaScript-бандла. Пригодится, когда сборка тянет лишнее.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1400 установок · ★ 257
- Автор: patterns.dev
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/PatternsDev/skills/tree/HEAD/javascript/tree-shaking/SKILL.md
- Обновлён: 2026-04-15
- HTML: https://affpapa.org/nevibecode/skills/tree-shaking

## Что делает

Скилл учит агента tree shaking — удалению кода, который нигде не вызывается, до попадания в финальный бандл. Внутри — инструкции и разбор концепций: входные файлы рассматриваются как граф, обход идёт от точки входа и помечает нужные ветки, остальное отбрасывается. Агент получает конкретные правила: использовать синтаксис `import`/`export` из ES2015, брать именованные импорты вместо целых модулей, помечать пакеты как не имеющие побочных эффектов в `package.json`.

Главная тонкость — побочные эффекты. Модуль с ES6-импортом выполняется сразу, и если он трогает глобальную область (полифиллы, глобальные стили), выкинуть его нельзя, даже когда его экспорты нигде не нужны. Поэтому просто включить минификатор недостаточно: сборщик вроде webpack или Rollup уберёт мёртвый код только там, где это безопасно. Если в проекте остались `require` и CommonJS, tree shaking по этим модулям не сработает — это повод проверить, на каком синтаксисе держится кодовая база.

Скилл подключается к Claude, Codex, Cursor, GitHub Copilot, Gemini CLI и OpenCode. Файл скилла лежит по пути вида `~/.claude/skills/tree-shaking/SKILL.md` и срабатывает на файлы `**/*.js` и `**/*.ts`.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add PatternsDev/skills --skill tree-shaking -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/tree-shaking/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/tree-shaking/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add PatternsDev/skills --skill tree-shaking -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/tree-shaking/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add PatternsDev/skills --skill tree-shaking -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/tree-shaking/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install PatternsDev/skills tree-shaking
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/tree-shaking/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add PatternsDev/skills --skill tree-shaking -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/PatternsDev/skills --path javascript/tree-shaking
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/tree-shaking/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add PatternsDev/skills --skill tree-shaking -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/PatternsDev/skills/tree/HEAD/javascript/tree-shaking/SKILL.md

## Когда брать
- убрать неиспользуемые экспорты из бандла
- перевести импорты на именованные, чтобы сборщик отбрасывал лишнее
- пометить пакеты как не имеющие побочных эффектов в `package.json`
- разобраться, почему модуль с побочными эффектами не выкидывается
- сократить размер JavaScript-бандла на этапе сборки

## Примеры запросов агенту
- Проверь мой бандл на мёртвый код и скажи, что можно выкинуть
- Почему этот модуль не tree-shaken, хотя его экспорты нигде не используются?
- Перепиши импорты на именованные, чтобы сборщик убрал лишнее

## Похожие
- [rollup-bundler](https://affpapa.org/nevibecode/skills/rollup-bundler.md) — скилл · 657 установок
- [turbopack](https://affpapa.org/nevibecode/skills/turbopack.md) — скилл · 5 установок
- [migrate](https://affpapa.org/nevibecode/skills/toss-migrate.md) — скилл · 313 установок
- [esbuild](https://affpapa.org/nevibecode/rules/esbuild.md) — правило · ★ 3579
- [bun-development](https://affpapa.org/nevibecode/skills/bun-development.md) — скилл · 2800 установок
- [bun-macros](https://affpapa.org/nevibecode/skills/bun-macros.md) — скилл · 385 установок

Из того же набора: [patternsdev/skills](https://affpapa.org/nevibecode/by/patternsdev/skills.md) — 46 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
