К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

dart-resolve-package-conflicts — скилл для Claude Code: разрешение

Скилл для решения конфликтов версий пакетов в Dart-проектах, когда pub get не может найти совместимые версии. Помогает разобраться с lockfile и обновить зависимости без полного пересчёта.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add dart-lang/skills --skill dart-resolve-package-conflicts -a claude-code
Открыть на GitHub

Что делает dart-resolve-package-conflicts

Dart требует единственной версии каждого пакета для всего проекта и его зависимостей — это предотвращает несовместимость типов, но создаёт риск зависания версий. Скилл встраивает рабочий процесс, который показывает, как аудировать зависимости через dart pub outdated, различать обновляемые и разрешаемые версии, и обновлять пакеты без переписывания всего lockfile.

Рабочий процесс содержит три основных сценария: обновление до версий, разрешённых текущими ограничениями в pubspec.yaml (команда dart pub upgrade), обновление с изменением ограничений для крупных версий, и хирургическое удаление записи конкретного пакета из pubspec.lock без стирания остального. Для каждого сценария есть шаги проверки через dart analyze и dart test.

Важное предупреждение: удалять весь pubspec.lock нельзя — это вызывает неконтролируемое обновление всех зависимостей. Скилл обучает правильному способу: удалить только запись конфликтующего пакета, затем запустить dart pub get для разрешения одного пакета.

Какие задачи решает

  • разобраться, какие пакеты можно обновить в рамках текущих ограничений
  • обновить крупную версию зависимости без полного пересчёта графа
  • удалить конфликтующий или отозванный пакет из lockfile хирургически
  • проверить, что граф зависимостей разрешён корректно

Примеры запросов агенту

  • Помоги мне разрешить конфликт версий в моём Dart-проекте, скилл dart-resolve-package-conflicts
  • Скажи, какие пакеты можно обновить через `dart pub upgrade --tighten`
  • Как удалить запись пакета из `pubspec.lock` и пересчитать только её?

Как установить dart-resolve-package-conflicts

1Через Skills CLI (Vercel)

npx skills add dart-lang/skills --skill dart-resolve-package-conflicts -a claude-code

2Вручную: положить файлы

~/.claude/skills/dart-resolve-package-conflicts/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/dart-resolve-package-conflicts/

Из того же набора7

Весь набор →
dart-add-unit-test dart-lang Пишет unit-тесты на Dart и Flutter через package:test: раскладывает файлы по test/, добавляет моки и гоняет прогон до зелёного. Claude Code CX Codex Cursor +1 19 100установок dart-run-static-analysis dart-lang Запускает dart analyze для поиска ошибок и dart fix --apply для автоисправления предупреждений линтера. Помогает проверять качество кода на Dart перед коммитами. Claude Code CX Codex Cursor +1 19 000установок dart-use-pattern-matching dart-lang Скилл задаёт агенту правила работы с паттернами Dart 3: switch-выражения, деструктуризация JSON, sealed-классы, сегменты пути. Claude Code CX Codex Cursor +1 18 700установок dart-generate-test-mocks dart-lang Скилл для юнит-тестов на Dart: агент выносит внешние зависимости в конструктор, генерирует моки через mockito и build_runner, потом пишет тесты. Claude Code CX Codex Cursor +1 18 200установок dart-build-cli-app dart-lang Скилл для разработки command-line приложений на Dart. Даёт паттерны архитектуры, структуру точки входа, коды выхода, маршрутизацию потоков и запуск подпроцессов. Claude Code CX Codex Cursor +1 18 000установок dart-migrate-to-checks-package dart-lang Переводит тесты Dart с устаревшего пакета package:matcher на package:checks. Пригодится для перехода на строгую типизацию утверждений и улучшение диагностики ошибок. Claude Code CX Codex Cursor +1 18 000установок

Похожие

laravel-best-practices laravel Индексирует правила Laravel для написания контроллеров, моделей, миграций и очередей. Помогает соблюдать принятые в проекте шаблоны и избегать проблем с N+1. Claude Code CX Codex Cursor +1 2 100установок wp-plugin-development WordPress Скилл помогает разрабатывать плагины WordPress: выстраивать структуру, добавлять хуки, настраивать админку и готовить релиз. Claude Code CX Codex Cursor +1 7 900установок firecrawl-build-scrape firecrawl Скилл помогает встроить вызов Firecrawl /scrape в код продукта для извлечения данных со страницы. Он пригодится, когда URL уже известен и нужен чистый markdown или метаданные. Claude Code CX Codex Cursor +1 61 600установок firecrawl-build-onboarding firecrawl Скилл подтягивает учётные данные Firecrawl и настраивает SDK в проекте через встроенный браузер-аутентификатор. Используй, когда приложению нужен FIRECRAWL_API_KEY или надо добавить Firecrawl в .env. Claude Code CX Codex Cursor +1 61 200установок onboard-context-matic официальный github Интерактивный онбординг по MCP-серверу context-matic. Показывает список API под стек проекта, объясняет контроллеры и запускает живой поиск моделей и методов. GitHub Copilot 1 000установок blockchain-developer sickn33 Скилл направляет разработку смарт-контрактов, Web3-приложений и децентрализованных систем. Пригодится для проектирования, ревью и проверки рисков до действий в сети. Claude Code CX Codex Cursor +1 1 200установок mcp-builder официальный anthropics Скилл проводит через создание MCP-сервера на TypeScript или Python: от изучения протокола до тестов и оценки качества. Claude Code Claude.ai 130 949установок google-agents-cli-adk-code официальный Google Скилл даёт примеры и справку по Agent Development Kit: агентам, инструментам, колбэкам, состоянию и графовым workflow. Нужен при написании кода. Claude Code CX Codex Cursor +1 511 400установок

Вопросы о dart-resolve-package-conflicts

Как установить dart-resolve-package-conflicts в Claude Code?

Запустите npx skills add dart-lang/skills --skill dart-resolve-package-conflicts -a claude-code, затем отредактируйте файл ~/.claude/skills/dart-resolve-package-conflicts/SKILL.md.

Что делает dart-resolve-package-conflicts?

Это скилл для разрешения конфликтов версий Dart-пакетов. Он показывает, как аудировать зависимости, обновлять пакеты в рамках ограничений или менять сами ограничения, и как хирургически удалять конкретные пакеты из lockfile без переписывания остального.

Почему нельзя просто удалить весь `pubspec.lock`?

Полное удаление lockfile вызывает неконтролируемое обновление всех зависимостей сразу, что может привести к несовместимостям. Скилл учит удалять только запись конфликтующего пакета, затем запускать dart pub get для разрешения одного пакета.

Исходный текст

SKILL.md · BSD-3-Clause
---
name: dart-resolve-package-conflicts
description: Workflow for fixing package version conflicts. Use this when `pub get` fails due to incompatible package versions.
metadata:
  model: models/gemini-3.1-pro-preview
  last_modified: Fri, 24 Apr 2026 15:11:14 GMT
---
# Managing Dart Dependencies

## Contents
- [Core Concepts](#core-concepts)
- [Version Constraints](#version-constraints)
- [Workflow: Auditing Dependencies](#workflow-auditing-dependencies)
- [Workflow: Upgrading Dependencies](#workflow-upgrading-dependencies)
- [Workflow: Resolving Version Conflicts](#workflow-resolving-version-conflicts)
- [Examples](#examples)

## Core Concepts

Dart enforces a strict single-version rule for dependencies: a project and all its transitive dependencies must resolve to a single, shared version of any given package. This prevents runtime type mismatches but introduces the risk of "version lock."

To mitigate version lock, Dart relies on version constraints rather than pinned versions in the `pubspec.yaml`. The `pubspec.lock` file maintains the exact resolved versions for reproducible builds.

Understand the output columns of `dart pub outdated`:
*   **Current:** The version currently recorded in `pubspec.lock`.
*   **Upgradable:** The latest version allowed by the constraints in `pubspec.yaml`. `dart pub upgrade` resolves to this.
*   **Resolvable:** The absolute latest version that can be resolved when factoring in all other dependencies in the project.
*   **Latest:** The latest published version of the package (excluding prereleases).

## Version Constraints

*   **Use Caret Syntax:** Always use caret syntax (e.g., `^1.2.3`) for dependencies in `pubspec.yaml`. This allows `pub` to select newer, non-breaking versions (up to, but not including, the next major version) during resolution.
*   **Tighten Dev Dependencies:** Set the lower bound of `dev_dependencies` to the exact version currently used. This reduces resolution complexity and prevents older, incompatible dev tools from being selected.
*   **Enforce Lockfiles in CI:** Use `dart pub get --enforce-lockfile` in CI/CD pipelines to ensure the exact versions tested locally are used in production.

## Workflow: Auditing Dependencies

Run this workflow periodically to identify stale packages that may impact stability or performance.

**Task Progress:**
- [ ] Run `dart pub outdated`.
- [ ] Review the **Upgradable** column to identify packages that can be updated without modifying `pubspec.yaml`.
- [ ] Review the **Resolvable** column to identify packages that require constraint modifications in `pubspec.yaml` to update.
- [ ] Identify any packages marked as retracted or discontinued.

## Workflow: Upgrading Dependencies

Use conditional logic based on the audit results to upgrade dependencies.

**Task Progress:**
- [ ] **If updating to "Upgradable" versions:**
  - [ ] Run `dart pub upgrade`.
  - [ ] Run `dart pub upgrade --tighten` to automatically update the lower bounds in `pubspec.yaml` to match the newly resolved versions.
- [ ] **If updating to "Resolvable" versions (Major updates):**
  - [ ] Manually edit `pubspec.yaml` to bump the version constraint to match the "Resolvable" column (e.g., change `^0.11.0` to `^0.12.1`).
  - [ ] Run `dart pub upgrade` to resolve the new constraints and update `pubspec.lock`.
- [ ] **Feedback Loop:**
  - [ ] Run `dart analyze` -> review errors -> fix breaking API changes.
  - [ ] Run `dart test` -> review failures -> fix regressions.

## Workflow: Resolving Version Conflicts

When `pub` cannot find a set of concrete versions that satisfy all constraints, or when dealing with a retracted package version, manipulate the lockfile surgically.

**NEVER** delete the entire `pubspec.lock` file and run `dart pub get`. This causes uncontrolled upgrades across the entire dependency graph.

**Task Progress:**
- [ ] Open `pubspec.lock`.
- [ ] Locate the specific YAML block for the conflicting or retracted package.
- [ ] Delete ONLY that package's entry from the lockfile.
- [ ] Run `dart pub get` to fetch the newest compatible, non-retracted version for that specific package.
- [ ] **Feedback Loop:**
  - [ ] Run `dart pub deps` -> verify the dependency graph resolves correctly.
  - [ ] If resolution fails, identify the transitive dependency causing the lock, update its constraint in `pubspec.yaml`, and retry.

## Examples

### Tightening Constraints
When `dart pub outdated` shows a package is resolvable to a higher minor/patch version, use the `--tighten` flag to update the `pubspec.yaml` automatically.

**Input (`pubspec.yaml`):**
```yaml
dependencies:
  http: ^0.13.0
```

**Command:**
```bash
dart pub upgrade --tighten http
```

**Output (`pubspec.yaml`):**
```yaml
dependencies:
  http: ^0.13.5
```

### Surgical Lockfile Removal
If `package_a` is retracted or locked in a conflict, remove only its block from `pubspec.lock`.

**Before (`pubspec.lock`):**
```yaml
packages:
  package_a:
    dependency: "direct main"
    description:
      name: package_a
      url: "https://pub.dev"
    source: hosted
    version: "1.0.0" # Retracted version
  package_b:
    dependency: "direct main"
    # ...
```

**Action:** Delete the `package_a` block entirely. Leave `package_b` untouched. Run `dart pub get`.

© dart-lang · BSD-3-Clause · dart-lang/skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой