К основному содержанию
скилл CX Codex

dart-collect-coverage — скилл для Claude Code: как настроить

Настраивает сбор тестового покрытия в проектах на Dart и Flutter через пакет coverage и генерирует отчёт в формате LCOV. Помогает отслеживать метрики тестов.

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

Что делает dart-collect-coverage

Скилл автоматизирует получение метрик покрытия для Dart и Flutter. Он добавляет пакет coverage в блок dev_dependencies через команду dart pub add или flutter pub add, после чего запускает скрипт coverage:test_with_coverage. На выходе формируются сырые данные coverage/coverage.json и готовый отчёт coverage/lcov.info. В монорепозиториях утилита позволяет передавать пути к отдельным пакетам явно.

Для детального контроля доступен ручной сбор. Тесты запускаются с флагом --pause-isolates-on-exit и открытым портом VM service (например, 8181). Команда coverage:collect_coverage забирает данные из работающего процесса, а coverage:format_coverage преобразует результат в LCOV. Для сбора покрытия веток и функций требуется Dart VM 2.17.0 или новее.

Исключать файлы или блоки кода можно комментариями // coverage:ignore-file, // coverage:ignore-start и // coverage:ignore-line. Флаг --check-ignore учитывает эти директивы при форматировании отчёта.

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

  • Добавить coverage в зависимости разработки проекта на Dart или Flutter
  • Запустить тесты и собрать готовый отчёт LCOV через test_with_coverage
  • Настроить ручной сбор метрик через Dart VM service на порту 8181
  • Исключить нетестируемые участки кода с помощью комментариев игнорирования

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

  • Собери LCOV-отчёт о покрытии тестами для текущего Dart-проекта
  • Добавь пакет coverage в dev_dependencies и запусти тесты с генерацией coverage/lcov.info
  • Собери покрытие по веткам и функциям через VM service на порту 8181

Как установить dart-collect-coverage

1Через Skills CLI (Vercel)

npx skills add dart-lang/skills --skill dart-collect-coverage -a claude-code

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

~/.claude/skills/dart-collect-coverage/SKILL.md

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

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о dart-collect-coverage

Как установить dart-collect-coverage в Claude Code?

Выполните команду npx skills add dart-lang/skills --skill dart-collect-coverage -a claude-code. Конфигурация сохранится в файле ~/.claude/skills/dart-collect-coverage/SKILL.md.

Что делает dart-collect-coverage?

Скилл координирует запуск тестов Dart и Flutter, извлекает данные покрытия из виртуальной машины и сохраняет их в формате LCOV.

Что требуется для сбора покрытия по функциям и веткам?

Для анализа веток и функций нужна версия Dart VM 2.17.0 или новее. Сбор выполняется утилитой coverage:collect_coverage с флагами --function-coverage и --branch-coverage.

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

SKILL.md · BSD-3-Clause
---
name: dart-collect-coverage
description: Collect coverage using the coverage packge and create an LCOV report
metadata:
  model: models/gemini-3.1-pro-preview
  last_modified: Fri, 24 Apr 2026 15:14:32 GMT
---
# Implementing Dart and Flutter Test Coverage

## Contents
- [Testing Fundamentals](#testing-fundamentals)
- [Coverage Directives](#coverage-directives)
- [Workflow: Configuring and Generating Coverage Reports](#workflow-configuring-and-generating-coverage-reports)
- [Workflow: Advanced Manual Coverage Collection](#workflow-advanced-manual-coverage-collection)
- [Examples](#examples)

## Testing Fundamentals

Structure your test suites using the standard Dart testing paradigms. Use `package:test` for Dart projects and `flutter_test` for Flutter projects.

- **Unit Tests:** Verify individual functions, methods, or classes.
- **Component/Widget Tests:** Verify component behavior, layout, and interaction using mock objects (`package:mockito`).
- **Integration Tests:** Verify entire app flows on simulated or real devices.

## Coverage Directives

Exclude specific lines, blocks, or entire files from coverage metrics using inline comments. Pass the `--check-ignore` flag during formatting to enforce these directives.

- Ignore a single line: `// coverage:ignore-line`
- Ignore a block of code: `// coverage:ignore-start` and `// coverage:ignore-end`
- Ignore an entire file: `// coverage:ignore-file`

## Workflow: Configuring and Generating Coverage Reports

Follow this sequential workflow to add the coverage package, execute tests, and generate an LCOV report.

**Task Progress Checklist:**
- [ ] 1. Add `coverage` as a `dev_dependency`.
- [ ] 2. Execute the automated coverage script.
- [ ] 3. Validate the LCOV output.

### 1. Add Dependencies
Add the `coverage` package as a `dev_dependency` to your project. Do not add it to standard dependencies.

If working in a standard Dart project:
```bash
dart pub add dev:coverage
```

If working in a Flutter project:
```bash
flutter pub add dev:coverage
```

### 2. Collect Coverage and Generate LCOV
Use the bundled `test_with_coverage` script. This script automatically runs all tests, collects the JSON coverage data from the Dart VM, and formats it into an LCOV report.

```bash
dart run coverage:test_with_coverage
```
*Note: If working within a Dart workspace (monorepo), specify the test directories explicitly (e.g., `dart run coverage:test_with_coverage -- pkgs/foo/test pkgs/bar/test`).*

### 3. Feedback Loop: Validate Output
**Run validator -> review errors -> fix:**
1. Verify that the `coverage/` directory was created in the project root.
2. Ensure `coverage/coverage.json` (raw data) and `coverage/lcov.info` (formatted report) exist.
3. If coverage is missing for specific files, ensure they are imported and executed by your test files, or add `// coverage:ignore-file` if they are intentionally excluded.

## Workflow: Advanced Manual Coverage Collection

If you require granular control over the VM service, isolate pausing, or need branch/function-level coverage, use the manual collection workflow.

**Task Progress Checklist:**
- [ ] 1. Run tests with VM service enabled.
- [ ] 2. Collect raw JSON coverage.
- [ ] 3. Format JSON to LCOV.

### 1. Run Tests with VM Service
Execute tests while pausing isolates on exit and exposing the VM service on a specific port (e.g., 8181).

```bash
dart run --pause-isolates-on-exit --disable-service-auth-codes --enable-vm-service=8181 test &
```

### 2. Collect Raw Coverage
Extract the coverage data from the running VM service and output it to a JSON file.

```bash
dart run coverage:collect_coverage --wait-paused --uri=http://127.0.0.1:8181/ -o coverage/coverage.json --resume-isolates
```
*Optional: Append `--function-coverage` and `--branch-coverage` to gather deeper metrics (requires Dart VM 2.17.0+).*

### 3. Format to LCOV
Convert the raw JSON data into the standard LCOV format.

```bash
dart run coverage:format_coverage --packages=.dart_tool/package_config.json --lcov -i coverage/coverage.json -o coverage/lcov.info --check-ignore
```

## Examples

### Example: `pubspec.yaml` Configuration
Ensure your `pubspec.yaml` reflects the `coverage` package strictly under `dev_dependencies`.

```yaml
name: my_dart_app
environment:
  sdk: ^3.0.0

dependencies:
  path: ^1.8.0

dev_dependencies:
  test: ^1.24.0
  coverage: ^1.15.0
```

### Example: Applying Ignore Directives
Use ignore directives to prevent generated code or untestable edge cases from lowering coverage scores.

```dart
// coverage:ignore-file
import 'package:meta/meta.dart';

class SystemConfig {
  final String env;

  SystemConfig(this.env);

  // coverage:ignore-start
  void legacyInit() {
    print('Deprecated initialization');
  }
  // coverage:ignore-end

  bool isProduction() {
    if (env == 'prod') return true;
    return false; // coverage:ignore-line
  }
}
```

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

Похожие скиллы

Всё по теме «Тесты и QA» →
improve-codebase-architecture Matt Pocock Скилл ищет архитектурные узкие места в кодовой базе и показывает варианты углубления модулей в HTML-отчёте. Подойдёт для ревью перед рефакторингом. 1 163 035установок design-taste-frontend Leonxlnx Скилл задаёт арт-дирекцию для публичных страниц и рабочих экранов, а затем проверяет результат в браузере по скриншотам. Нужен, когда интерфейс выглядит шаблонным или недоработанным. CX Codex +1 678 700установок tdd Matt Pocock Скилл управляет циклом красный-зелёный в TDD: проверяет, что тесты пишутся до кода, держит их на уровне публичных интерфейсов и не завязывает на внутреннюю структуру. 1 141 062установок skill-creator официальный anthropics Помогает создать новый скилл, доработать существующий и проверить результат через тестовые промпты и оценки. 414 180установок agent-browser vercel-labs Скилл управляет браузером через CLI: открывает страницы, заполняет формы, нажимает кнопки и проверяет веб-приложения. Подходит для задач, где агенту нужно действовать в интерфейсе. CX Codex +1 1 200 000установок prototype Matt Pocock Создаёт временный прототип, чтобы проверить логику, модель состояния или вид интерфейса до работы над основным кодом. 986 201установок

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

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

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

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