dart-add-unit-test
Write and organize unit tests for functions, methods, and classes using `package:test`. Use when creating new logic or fixing bugs to ensure code remains…
Collect coverage using the coverage packge and create an LCOV report
$ npx -y skills add flutter/agent-plugins --skill dart-collect-coverage --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/dart-collect-coverageContext preview
The summary Claude sees to decide when to auto-load this skill.
Collect coverage using the coverage packge and create an LCOV report
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
Structure your test suites using the standard Dart testing paradigms. Use `package:test` for Dart projects and `flutter_test` for Flutter projects.
Exclude specific lines, blocks, or entire files from coverage metrics using inline comments. Pass the `--check-ignore` flag during formatting to enforce these directives.
Follow this sequential workflow to add the coverage package, execute tests, and generate an LCOV report.
**Task Progress Checklist:**
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:
dart pub add dev:coverage
If working in a Flutter project:
flutter pub add dev:coverage
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.
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`).*
**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.
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:**
Execute tests while pausing isolates on exit and exposing the VM service on a specific port (e.g., 8181).
dart run --pause-isolates-on-exit --disable-service-auth-codes --enable-vm-service=8181 test &
Extract the coverage data from the running VM service and output it to a JSON file.
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+).*
Convert the raw JSON data into the standard LCOV format.
dart run coverage:format_coverage --packages=.dart_tool/package_config.json --lcov -i coverage/coverage.json -o coverage/lcov.info --check-ignore
Ensure your `pubspec.yaml` reflects the `coverage` package strictly under `dev_dependencies`.
name: my_dart_app environment: sdk: ^3.0.0 dependencies: path: ^1.8.0 dev_dependencies: test: ^1.24.0 coverage: ^1.15.0
Use ignore directives to prevent generated code or untestable edge cases from lowering coverage scores.
// 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
}
}Agent plugins for Flutter, maintained by the Flutter team. A collection of plugins designed to extend AI agent capabilities for Flutter development.
Write and organize unit tests for functions, methods, and classes using `package:test`. Use when creating new logic or fixing bugs to ensure code remains…
Entrypoint structure, exit codes, cross-platform scripts. Use when building command line utilities, scripts, or applications.
Uses get_runtime_errors and lsp to fetch an active stack trace, locate the failing line, apply a fix, and verify resolution via hot_reload.
Define and generate mock objects for external dependencies using `package:mockito` and `build_runner`. Use when unit testing classes that depend on complex…
Replace the usage of `expect` and similar functions from `package:matcher` to `package:checks` equivalents.
Workflow for fixing package version conflicts. Use this when `pub get` fails due to incompatible package versions.