Skills
Skill 3 of 31
Collect coverage using the coverage packge and create an LCOV report
2 minutes · 416 words · 15 sections
Install
npx skills add flutter/agent-plugins --skill dart-collect-coveragenpx skills add flutter/agent-plugins/plugin marketplace add flutter/agent-pluginsThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
Structure your test suites using the standard Dart testing paradigms. Use package:test for Dart projects and flutter_test for Flutter projects.
package:mockito).Exclude specific lines, blocks, or entire files from coverage metrics using inline comments. Pass the --check-ignore flag during formatting to enforce these directives.
// coverage:ignore-line// coverage:ignore-start and // coverage:ignore-end// coverage:ignore-fileFollow this sequential workflow to add the coverage package, execute tests, and generate an LCOV report.
Task Progress Checklist:
coverage as a dev_dependency.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:coverageIf working in a Flutter project:
flutter pub add dev:coverageUse 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_coverageNote: 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:
coverage/ directory was created in the project root.coverage/coverage.json (raw data) and coverage/lcov.info (formatted report) exist.// 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-isolatesOptional: 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-ignorepubspec.yaml ConfigurationEnsure 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.0Use 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
}
}main, last pushed 17 September 2026.SKILL.md, not by matching a directory convention. 2 distinct layouts observed: .agents/agents/reidbaker-agent/skills/*/SKILL.md, skills/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by Dart and Flutter Team, declaring 1 plugin. It is read for editorial metadata only — never as the skill index, which is always the repository tree./flutter/agent-plugins.md, and each skill at its own .md URL.