lerna — скилл для Claude Code: правила работы с монорепозиторием
Скилл задаёт агенту правила Lerna: структура пакетов, версионирование, публикация и запуск скриптов в монорепозитории.
npx skills add Mindrally/skills --skill lerna -a claude-codeЧто делает lerna
Скилл описывает, как вести монорепозиторий на Lerna: где лежат пакеты, как настроить lerna.json, как связать Lerna с workspaces пакетного менеджера. Агент получает готовые соглашения вместо того, чтобы придумывать их сам.
Внутри — разделы про структуру проекта, конфигурацию, выполнение задач, версионирование и публикацию. Отдельно разобраны режимы версий: independent, когда у каждого пакета своя версия, и фиксированный, когда версия общая. Есть блок про conventional commits и автоматический бамп версий по типам коммитов, а также про --since для запуска задач только в изменившихся пакетах.
Скилл пригодится, если у вас уже есть монорепозиторий на Lerna или вы только переносите туда пакеты. Без установленного Lerna и настроенного lerna.json он остаётся набором соглашений: команды вроде lerna version и lerna publish агент подскажет, но выполнять их будет нечем. Для публикации нужна авторизация в npm — скилл напоминает про неё в разделе про CI.
Какие задачи решает
- разложить пакеты по
packages/и настроитьlerna.json - выбрать между независимым и фиксированным версионированием
- запустить сборку и тесты только в изменившихся пакетах
- настроить автоматический бамп версий по conventional commits
- опубликовать пакеты из CI без ручных подтверждений
Примеры запросов агенту
- настрой lerna.json для монорепозитория с пакетами в packages/*
- добавь conventional commits, чтобы версии бампились по типам коммитов
- покажи, как публиковать только изменившиеся пакеты через lerna publish
Как установить lerna
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill lerna -a claude-code2Вручную: положить файлы
~/.claude/skills/lerna/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/lerna/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill lerna -a codex2Вручную: положить файлы
.agents/skills/lerna/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill lerna -a cursor2Вручную: положить файлы
.cursor/skills/lerna/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Mindrally/skills lerna2Вручную: положить файлы
.github/skills/lerna/SKILL.md1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill lerna -a gemini-cli2Командой платформы
gemini skills install https://github.com/Mindrally/skills --path lernaВручную: положить файлы
.devin/skills/lerna/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill lerna -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о lerna
Как установить lerna в Claude?
Выполните npx skills add Mindrally/skills --skill lerna -a claude-code. Файл скилла окажется в ~/.claude/skills/lerna/SKILL.md.
Что делает скилл lerna?
Задаёт агенту соглашения по монорепозиторию на Lerna: структура пакетов, конфигурация, версионирование, публикация и запуск скриптов. Работает как справочник, а не как отдельная утилита.
Скилл сам публикует пакеты в npm?
Нет, он описывает команды и порядок действий. Публикация идёт через lerna publish, и для неё нужна авторизация в npm.
Исходный текст
SKILL.md · Apache-2.0
---
name: lerna
description: Best practices for Lerna monorepo management, versioning, and publishing
metadata:
maintainer: Mindrally
source: https://github.com/Mindrally/skills
---
# Lerna Monorepo Development
You are an expert in Lerna, the fast, modern build system for managing and publishing multiple JavaScript/TypeScript packages.
## Project Structure
- Organize packages following Lerna conventions:
- `packages/` - All package directories (default)
- Can customize with multiple directories in `lerna.json`
- Each package should be self-contained with its own:
- `package.json`
- Source code
- Tests
- Build configuration
## Lerna Configuration
Configure `lerna.json` at the root:
```json
{
"$schema": "https://json.schemastore.org/lerna.json",
"version": "independent",
"npmClient": "npm",
"packages": ["packages/*"],
"useWorkspaces": true
}
```
- Choose versioning mode:
- `"version": "independent"` - Each package versioned separately
- `"version": "1.0.0"` - Fixed/locked mode, all packages same version
- Enable workspaces integration with `useWorkspaces: true`
## Workspaces Integration
Configure npm/yarn/pnpm workspaces in root `package.json`:
```json
{
"workspaces": ["packages/*"],
"private": true
}
```
- Let the package manager handle hoisting and linking
- Use Lerna for versioning, publishing, and running scripts
## Task Execution
- Run scripts across packages:
- `lerna run build` - Run build in all packages
- `lerna run test --scope=@org/package` - Run in specific package
- `lerna run lint --since main` - Run only in changed packages
- Use `--stream` for real-time output
- Use `--parallel` for concurrent execution
## Versioning Workflow
- Update versions with `lerna version`:
- `lerna version patch` - Bump patch version
- `lerna version minor` - Bump minor version
- `lerna version major` - Bump major version
- `lerna version` - Interactive version selection
- Lerna automatically:
- Updates package.json versions
- Updates internal dependency versions
- Creates git tags
- Pushes to remote
## Publishing Packages
- Publish with `lerna publish`:
- `lerna publish` - Publish packages changed since last release
- `lerna publish from-git` - Publish packages tagged in git
- `lerna publish from-package` - Publish packages with unpublished versions
- Configure npm registry in `.npmrc` or `lerna.json`
- Use `--dist-tag` for pre-release versions
## Change Detection
- Use `--since` flag for changed packages:
- `lerna run test --since main`
- `lerna changed` - List packages changed since last tag
- `lerna diff` - Show diff since last release
- Leverage affected commands in CI for efficiency
## Conventional Commits
Enable conventional commits for automated versioning:
```json
{
"command": {
"version": {
"conventionalCommits": true,
"message": "chore(release): publish"
}
}
}
```
- Commits determine version bumps:
- `fix:` - Patch version
- `feat:` - Minor version
- `BREAKING CHANGE:` - Major version
- Automatic changelog generation
## Dependency Management
- Use internal package references:
```json
{
"dependencies": {
"@org/shared-utils": "^1.0.0"
}
}
```
- Lerna keeps internal dependencies in sync during versioning
- Hoist common dependencies to root with workspaces
## CI/CD Integration
- Install dependencies once at root level
- Use `lerna run` with `--since` for efficient CI
- Publish from CI with proper npm authentication
- Use `--yes` flag for non-interactive publishing
## Best Practices
- Keep packages focused and single-purpose
- Use consistent package naming: `@org/package-name`
- Maintain clear dependency boundaries between packages
- Document package APIs and usage
- Use TypeScript with project references for type checking
- Implement proper testing at package and integration levels
- Consider Nx integration for advanced caching and task execution
© Mindrally · Apache-2.0 · Mindrally/skills