route-based — скилл для Claude Code: code splitting по маршрутам
Подсказывает агенту, как разбить SPA по маршрутам и грузить только тот код, который нужен на текущей странице. Пригодится, когда маршрутов много, а стартовая загрузка тормозит.
npx skills add PatternsDev/skills --skill route-based -a claude-codeЧто делает route-based
Скилл описывает приём route-based splitting: компоненты уровня страницы подгружаются лениво, по одному на маршрут. Внутри инструкция сочетать React Suspense или loadable-components с библиотеками маршрутизации вроде react-router. Агент получает готовый порядок действий, а не общие слова про оптимизацию бандла.
Задержка при переходе между страницами — обычное дело, поэтому именно туда и переносится загрузка. Пользователь и так ждёт, а приложение в этот момент тянет только нужный чанк. В деталях упомянуто, что Next.js, Remix и React Router умеют это из коробки, а в самодельной сборке нужен React.lazy() с Suspense либо отдельные точки входа в бандлере.
Скилл нацелен на файлы **/*.js и **/*.ts, так что в проектах на других языках он не сработает. Смежные темы — module-pattern и singleton-pattern. Если у вас один маршрут и весь код всё равно грузится сразу, делить нечего.
Какие задачи решает
- уменьшить вес стартового бандла в SPA
- разложить код по маршрутам и грузить его лениво
- подключить
React.lazy()иSuspenseк страницам - перенести загрузку в паузу при переходе между страницами
- настроить точки входа бандлера под каждый маршрут
Примеры запросов агенту
- Разбей приложение по маршрутам и сделай ленивую загрузку страниц через
React.lazy()иSuspense - Подключи route-based splitting к
react-router: каждый маршрут — отдельный чанк - Проверь, что при переходе между страницами грузится только код текущего маршрута
Как установить route-based
1Через Skills CLI (Vercel)
npx skills add PatternsDev/skills --skill route-based -a claude-code2Вручную: положить файлы
~/.claude/skills/route-based/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/route-based/
1Через Skills CLI (Vercel)
npx skills add PatternsDev/skills --skill route-based -a codex2Вручную: положить файлы
.agents/skills/route-based/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add PatternsDev/skills --skill route-based -a cursor2Вручную: положить файлы
.cursor/skills/route-based/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install PatternsDev/skills route-based2Вручную: положить файлы
.github/skills/route-based/SKILL.md1Через Skills CLI (Vercel)
npx skills add PatternsDev/skills --skill route-based -a gemini-cli2Командой платформы
gemini skills install https://github.com/PatternsDev/skills --path javascript/route-basedВручную: положить файлы
.devin/skills/route-based/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add PatternsDev/skills --skill route-based -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о route-based
Как установить route-based в Claude?
Выполните npx skills add PatternsDev/skills --skill route-based -a claude-code. Скилл окажется в ~/.claude/skills/route-based/SKILL.md.
Что делает route-based?
Учит агента разбивать SPA по маршрутам: компоненты страниц подгружаются лениво, и на каждой странице запрашивается только нужный бандл.
Нужен ли route-based, если проект на Next.js или Remix?
Эти фреймворки поддерживают разбиение по маршрутам сами. Скилл полезнее в самодельной сборке, где React.lazy() с Suspense или точки входа бандлера настраиваются вручную.
Исходный текст
SKILL.md · MIT
--- name: route-based description: Teaches route-based code splitting for single-page applications. Use when different routes load distinct feature sets and you want to avoid loading all route code upfront. paths: - "**/*.js" - "**/*.ts" license: MIT metadata: author: patterns.dev version: "1.1" related_skills: - "module-pattern" - "singleton-pattern" --- # Route Based Splitting We can request resources that are only needed for specific routes, by adding _route-based splitting_. By combining **React Suspense** or `loadable-components` with libraries such as `react-router`, we can dynamically load components based on the current route. By lazily loading the components per route, we're only requesting the bundle that contains the code that's necessary for the current route. Since most people are used to the fact that there may be some loading time during a redirect, it's the perfect place to lazily load components! ## When to Use - Use this when your application has multiple routes and not all code is needed on every page - This is helpful for reducing initial load time by only loading code for the current route ## Instructions - Combine React Suspense or `loadable-components` with routing libraries like `react-router` - Lazily load page-level components per route for optimal code splitting - Take advantage of natural loading pauses during route transitions for a seamless experience ## Details By lazily loading the components per route, only the bundle containing code necessary for the current route is requested. Since users expect some loading time during navigation, route transitions are a natural place to introduce code splitting without degrading the experience. Most modern frameworks (Next.js, Remix, React Router) support route-based splitting out of the box. In a custom setup, use `React.lazy()` with `Suspense` to wrap route-level components, or configure your bundler's entry points per route. ## Source - [patterns.dev/vanilla/route-based](https://patterns.dev/vanilla/route-based)
© patterns.dev · MIT · PatternsDev/skills