[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-flutter-dart-collect-coverage":3,"mdc--xt95t4-key":32,"related-repo-flutter-dart-collect-coverage":1166,"related-org-flutter-dart-collect-coverage":1239},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":30,"mdContent":31},"dart-collect-coverage","collect Dart test coverage reports","Collect coverage using the coverage packge and create an LCOV report",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"flutter","Flutter (Google)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fflutter.png",[12,16,19],{"name":13,"slug":14,"type":15},"Reporting","reporting","tag",{"name":17,"slug":18,"type":15},"Dart","dart",{"name":20,"slug":21,"type":15},"Testing","testing",2664,"https:\u002F\u002Fgithub.com\u002Fflutter\u002Fagent-plugins","2026-07-15T05:22:21.38636",null,155,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":25},[],"https:\u002F\u002Fgithub.com\u002Fflutter\u002Fagent-plugins\u002Ftree\u002FHEAD\u002Fskills\u002Fdart-collect-coverage","---\nname: dart-collect-coverage\ndescription: Collect coverage using the coverage packge and create an LCOV report\nmetadata:\n  model: models\u002Fgemini-3.1-pro-preview\n  last_modified: Fri, 24 Apr 2026 15:14:32 GMT\n---\n# Implementing Dart and Flutter Test Coverage\n\n## Contents\n- [Testing Fundamentals](#testing-fundamentals)\n- [Coverage Directives](#coverage-directives)\n- [Workflow: Configuring and Generating Coverage Reports](#workflow-configuring-and-generating-coverage-reports)\n- [Workflow: Advanced Manual Coverage Collection](#workflow-advanced-manual-coverage-collection)\n- [Examples](#examples)\n\n## Testing Fundamentals\n\nStructure your test suites using the standard Dart testing paradigms. Use `package:test` for Dart projects and `flutter_test` for Flutter projects.\n\n- **Unit Tests:** Verify individual functions, methods, or classes.\n- **Component\u002FWidget Tests:** Verify component behavior, layout, and interaction using mock objects (`package:mockito`).\n- **Integration Tests:** Verify entire app flows on simulated or real devices.\n\n## Coverage Directives\n\nExclude specific lines, blocks, or entire files from coverage metrics using inline comments. Pass the `--check-ignore` flag during formatting to enforce these directives.\n\n- Ignore a single line: `\u002F\u002F coverage:ignore-line`\n- Ignore a block of code: `\u002F\u002F coverage:ignore-start` and `\u002F\u002F coverage:ignore-end`\n- Ignore an entire file: `\u002F\u002F coverage:ignore-file`\n\n## Workflow: Configuring and Generating Coverage Reports\n\nFollow this sequential workflow to add the coverage package, execute tests, and generate an LCOV report.\n\n**Task Progress Checklist:**\n- [ ] 1. Add `coverage` as a `dev_dependency`.\n- [ ] 2. Execute the automated coverage script.\n- [ ] 3. Validate the LCOV output.\n\n### 1. Add Dependencies\nAdd the `coverage` package as a `dev_dependency` to your project. Do not add it to standard dependencies.\n\nIf working in a standard Dart project:\n```bash\ndart pub add dev:coverage\n```\n\nIf working in a Flutter project:\n```bash\nflutter pub add dev:coverage\n```\n\n### 2. Collect Coverage and Generate LCOV\nUse 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.\n\n```bash\ndart run coverage:test_with_coverage\n```\n*Note: If working within a Dart workspace (monorepo), specify the test directories explicitly (e.g., `dart run coverage:test_with_coverage -- pkgs\u002Ffoo\u002Ftest pkgs\u002Fbar\u002Ftest`).*\n\n### 3. Feedback Loop: Validate Output\n**Run validator -> review errors -> fix:**\n1. Verify that the `coverage\u002F` directory was created in the project root.\n2. Ensure `coverage\u002Fcoverage.json` (raw data) and `coverage\u002Flcov.info` (formatted report) exist.\n3. If coverage is missing for specific files, ensure they are imported and executed by your test files, or add `\u002F\u002F coverage:ignore-file` if they are intentionally excluded.\n\n## Workflow: Advanced Manual Coverage Collection\n\nIf you require granular control over the VM service, isolate pausing, or need branch\u002Ffunction-level coverage, use the manual collection workflow.\n\n**Task Progress Checklist:**\n- [ ] 1. Run tests with VM service enabled.\n- [ ] 2. Collect raw JSON coverage.\n- [ ] 3. Format JSON to LCOV.\n\n### 1. Run Tests with VM Service\nExecute tests while pausing isolates on exit and exposing the VM service on a specific port (e.g., 8181).\n\n```bash\ndart run --pause-isolates-on-exit --disable-service-auth-codes --enable-vm-service=8181 test &\n```\n\n### 2. Collect Raw Coverage\nExtract the coverage data from the running VM service and output it to a JSON file.\n\n```bash\ndart run coverage:collect_coverage --wait-paused --uri=http:\u002F\u002F127.0.0.1:8181\u002F -o coverage\u002Fcoverage.json --resume-isolates\n```\n*Optional: Append `--function-coverage` and `--branch-coverage` to gather deeper metrics (requires Dart VM 2.17.0+).*\n\n### 3. Format to LCOV\nConvert the raw JSON data into the standard LCOV format.\n\n```bash\ndart run coverage:format_coverage --packages=.dart_tool\u002Fpackage_config.json --lcov -i coverage\u002Fcoverage.json -o coverage\u002Flcov.info --check-ignore\n```\n\n## Examples\n\n### Example: `pubspec.yaml` Configuration\nEnsure your `pubspec.yaml` reflects the `coverage` package strictly under `dev_dependencies`.\n\n```yaml\nname: my_dart_app\nenvironment:\n  sdk: ^3.0.0\n\ndependencies:\n  path: ^1.8.0\n\ndev_dependencies:\n  test: ^1.24.0\n  coverage: ^1.15.0\n```\n\n### Example: Applying Ignore Directives\nUse ignore directives to prevent generated code or untestable edge cases from lowering coverage scores.\n\n```dart\n\u002F\u002F coverage:ignore-file\nimport 'package:meta\u002Fmeta.dart';\n\nclass SystemConfig {\n  final String env;\n\n  SystemConfig(this.env);\n\n  \u002F\u002F coverage:ignore-start\n  void legacyInit() {\n    print('Deprecated initialization');\n  }\n  \u002F\u002F coverage:ignore-end\n\n  bool isProduction() {\n    if (env == 'prod') return true;\n    return false; \u002F\u002F coverage:ignore-line\n  }\n}\n```\n",{"data":33,"body":37},{"name":4,"description":6,"metadata":34},{"model":35,"last_modified":36},"models\u002Fgemini-3.1-pro-preview","Fri, 24 Apr 2026 15:14:32 GMT",{"type":38,"children":39},"root",[40,49,56,107,112,135,177,182,195,239,244,249,257,309,316,335,340,378,383,409,415,428,452,468,474,482,532,537,542,549,580,586,591,635,641,646,694,717,723,728,784,789,803,829,985,991,996,1160],{"type":41,"tag":42,"props":43,"children":45},"element","h1",{"id":44},"implementing-dart-and-flutter-test-coverage",[46],{"type":47,"value":48},"text","Implementing Dart and Flutter Test Coverage",{"type":41,"tag":50,"props":51,"children":53},"h2",{"id":52},"contents",[54],{"type":47,"value":55},"Contents",{"type":41,"tag":57,"props":58,"children":59},"ul",{},[60,71,80,89,98],{"type":41,"tag":61,"props":62,"children":63},"li",{},[64],{"type":41,"tag":65,"props":66,"children":68},"a",{"href":67},"#testing-fundamentals",[69],{"type":47,"value":70},"Testing Fundamentals",{"type":41,"tag":61,"props":72,"children":73},{},[74],{"type":41,"tag":65,"props":75,"children":77},{"href":76},"#coverage-directives",[78],{"type":47,"value":79},"Coverage Directives",{"type":41,"tag":61,"props":81,"children":82},{},[83],{"type":41,"tag":65,"props":84,"children":86},{"href":85},"#workflow-configuring-and-generating-coverage-reports",[87],{"type":47,"value":88},"Workflow: Configuring and Generating Coverage Reports",{"type":41,"tag":61,"props":90,"children":91},{},[92],{"type":41,"tag":65,"props":93,"children":95},{"href":94},"#workflow-advanced-manual-coverage-collection",[96],{"type":47,"value":97},"Workflow: Advanced Manual Coverage Collection",{"type":41,"tag":61,"props":99,"children":100},{},[101],{"type":41,"tag":65,"props":102,"children":104},{"href":103},"#examples",[105],{"type":47,"value":106},"Examples",{"type":41,"tag":50,"props":108,"children":110},{"id":109},"testing-fundamentals",[111],{"type":47,"value":70},{"type":41,"tag":113,"props":114,"children":115},"p",{},[116,118,125,127,133],{"type":47,"value":117},"Structure your test suites using the standard Dart testing paradigms. Use ",{"type":41,"tag":119,"props":120,"children":122},"code",{"className":121},[],[123],{"type":47,"value":124},"package:test",{"type":47,"value":126}," for Dart projects and ",{"type":41,"tag":119,"props":128,"children":130},{"className":129},[],[131],{"type":47,"value":132},"flutter_test",{"type":47,"value":134}," for Flutter projects.",{"type":41,"tag":57,"props":136,"children":137},{},[138,149,167],{"type":41,"tag":61,"props":139,"children":140},{},[141,147],{"type":41,"tag":142,"props":143,"children":144},"strong",{},[145],{"type":47,"value":146},"Unit Tests:",{"type":47,"value":148}," Verify individual functions, methods, or classes.",{"type":41,"tag":61,"props":150,"children":151},{},[152,157,159,165],{"type":41,"tag":142,"props":153,"children":154},{},[155],{"type":47,"value":156},"Component\u002FWidget Tests:",{"type":47,"value":158}," Verify component behavior, layout, and interaction using mock objects (",{"type":41,"tag":119,"props":160,"children":162},{"className":161},[],[163],{"type":47,"value":164},"package:mockito",{"type":47,"value":166},").",{"type":41,"tag":61,"props":168,"children":169},{},[170,175],{"type":41,"tag":142,"props":171,"children":172},{},[173],{"type":47,"value":174},"Integration Tests:",{"type":47,"value":176}," Verify entire app flows on simulated or real devices.",{"type":41,"tag":50,"props":178,"children":180},{"id":179},"coverage-directives",[181],{"type":47,"value":79},{"type":41,"tag":113,"props":183,"children":184},{},[185,187,193],{"type":47,"value":186},"Exclude specific lines, blocks, or entire files from coverage metrics using inline comments. Pass the ",{"type":41,"tag":119,"props":188,"children":190},{"className":189},[],[191],{"type":47,"value":192},"--check-ignore",{"type":47,"value":194}," flag during formatting to enforce these directives.",{"type":41,"tag":57,"props":196,"children":197},{},[198,209,228],{"type":41,"tag":61,"props":199,"children":200},{},[201,203],{"type":47,"value":202},"Ignore a single line: ",{"type":41,"tag":119,"props":204,"children":206},{"className":205},[],[207],{"type":47,"value":208},"\u002F\u002F coverage:ignore-line",{"type":41,"tag":61,"props":210,"children":211},{},[212,214,220,222],{"type":47,"value":213},"Ignore a block of code: ",{"type":41,"tag":119,"props":215,"children":217},{"className":216},[],[218],{"type":47,"value":219},"\u002F\u002F coverage:ignore-start",{"type":47,"value":221}," and ",{"type":41,"tag":119,"props":223,"children":225},{"className":224},[],[226],{"type":47,"value":227},"\u002F\u002F coverage:ignore-end",{"type":41,"tag":61,"props":229,"children":230},{},[231,233],{"type":47,"value":232},"Ignore an entire file: ",{"type":41,"tag":119,"props":234,"children":236},{"className":235},[],[237],{"type":47,"value":238},"\u002F\u002F coverage:ignore-file",{"type":41,"tag":50,"props":240,"children":242},{"id":241},"workflow-configuring-and-generating-coverage-reports",[243],{"type":47,"value":88},{"type":41,"tag":113,"props":245,"children":246},{},[247],{"type":47,"value":248},"Follow this sequential workflow to add the coverage package, execute tests, and generate an LCOV report.",{"type":41,"tag":113,"props":250,"children":251},{},[252],{"type":41,"tag":142,"props":253,"children":254},{},[255],{"type":47,"value":256},"Task Progress Checklist:",{"type":41,"tag":57,"props":258,"children":261},{"className":259},[260],"contains-task-list",[262,291,300],{"type":41,"tag":61,"props":263,"children":266},{"className":264},[265],"task-list-item",[267,273,275,281,283,289],{"type":41,"tag":268,"props":269,"children":272},"input",{"disabled":270,"type":271},true,"checkbox",[],{"type":47,"value":274}," 1. Add ",{"type":41,"tag":119,"props":276,"children":278},{"className":277},[],[279],{"type":47,"value":280},"coverage",{"type":47,"value":282}," as a ",{"type":41,"tag":119,"props":284,"children":286},{"className":285},[],[287],{"type":47,"value":288},"dev_dependency",{"type":47,"value":290},".",{"type":41,"tag":61,"props":292,"children":294},{"className":293},[265],[295,298],{"type":41,"tag":268,"props":296,"children":297},{"disabled":270,"type":271},[],{"type":47,"value":299}," 2. Execute the automated coverage script.",{"type":41,"tag":61,"props":301,"children":303},{"className":302},[265],[304,307],{"type":41,"tag":268,"props":305,"children":306},{"disabled":270,"type":271},[],{"type":47,"value":308}," 3. Validate the LCOV output.",{"type":41,"tag":310,"props":311,"children":313},"h3",{"id":312},"_1-add-dependencies",[314],{"type":47,"value":315},"1. Add Dependencies",{"type":41,"tag":113,"props":317,"children":318},{},[319,321,326,328,333],{"type":47,"value":320},"Add the ",{"type":41,"tag":119,"props":322,"children":324},{"className":323},[],[325],{"type":47,"value":280},{"type":47,"value":327}," package as a ",{"type":41,"tag":119,"props":329,"children":331},{"className":330},[],[332],{"type":47,"value":288},{"type":47,"value":334}," to your project. Do not add it to standard dependencies.",{"type":41,"tag":113,"props":336,"children":337},{},[338],{"type":47,"value":339},"If working in a standard Dart project:",{"type":41,"tag":341,"props":342,"children":347},"pre",{"className":343,"code":344,"language":345,"meta":346,"style":346},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","dart pub add dev:coverage\n","bash","",[348],{"type":41,"tag":119,"props":349,"children":350},{"__ignoreMap":346},[351],{"type":41,"tag":352,"props":353,"children":356},"span",{"class":354,"line":355},"line",1,[357,362,368,373],{"type":41,"tag":352,"props":358,"children":360},{"style":359},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[361],{"type":47,"value":18},{"type":41,"tag":352,"props":363,"children":365},{"style":364},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[366],{"type":47,"value":367}," pub",{"type":41,"tag":352,"props":369,"children":370},{"style":364},[371],{"type":47,"value":372}," add",{"type":41,"tag":352,"props":374,"children":375},{"style":364},[376],{"type":47,"value":377}," dev:coverage\n",{"type":41,"tag":113,"props":379,"children":380},{},[381],{"type":47,"value":382},"If working in a Flutter project:",{"type":41,"tag":341,"props":384,"children":386},{"className":343,"code":385,"language":345,"meta":346,"style":346},"flutter pub add dev:coverage\n",[387],{"type":41,"tag":119,"props":388,"children":389},{"__ignoreMap":346},[390],{"type":41,"tag":352,"props":391,"children":392},{"class":354,"line":355},[393,397,401,405],{"type":41,"tag":352,"props":394,"children":395},{"style":359},[396],{"type":47,"value":8},{"type":41,"tag":352,"props":398,"children":399},{"style":364},[400],{"type":47,"value":367},{"type":41,"tag":352,"props":402,"children":403},{"style":364},[404],{"type":47,"value":372},{"type":41,"tag":352,"props":406,"children":407},{"style":364},[408],{"type":47,"value":377},{"type":41,"tag":310,"props":410,"children":412},{"id":411},"_2-collect-coverage-and-generate-lcov",[413],{"type":47,"value":414},"2. Collect Coverage and Generate LCOV",{"type":41,"tag":113,"props":416,"children":417},{},[418,420,426],{"type":47,"value":419},"Use the bundled ",{"type":41,"tag":119,"props":421,"children":423},{"className":422},[],[424],{"type":47,"value":425},"test_with_coverage",{"type":47,"value":427}," script. This script automatically runs all tests, collects the JSON coverage data from the Dart VM, and formats it into an LCOV report.",{"type":41,"tag":341,"props":429,"children":431},{"className":343,"code":430,"language":345,"meta":346,"style":346},"dart run coverage:test_with_coverage\n",[432],{"type":41,"tag":119,"props":433,"children":434},{"__ignoreMap":346},[435],{"type":41,"tag":352,"props":436,"children":437},{"class":354,"line":355},[438,442,447],{"type":41,"tag":352,"props":439,"children":440},{"style":359},[441],{"type":47,"value":18},{"type":41,"tag":352,"props":443,"children":444},{"style":364},[445],{"type":47,"value":446}," run",{"type":41,"tag":352,"props":448,"children":449},{"style":364},[450],{"type":47,"value":451}," coverage:test_with_coverage\n",{"type":41,"tag":113,"props":453,"children":454},{},[455],{"type":41,"tag":456,"props":457,"children":458},"em",{},[459,461,467],{"type":47,"value":460},"Note: If working within a Dart workspace (monorepo), specify the test directories explicitly (e.g., ",{"type":41,"tag":119,"props":462,"children":464},{"className":463},[],[465],{"type":47,"value":466},"dart run coverage:test_with_coverage -- pkgs\u002Ffoo\u002Ftest pkgs\u002Fbar\u002Ftest",{"type":47,"value":166},{"type":41,"tag":310,"props":469,"children":471},{"id":470},"_3-feedback-loop-validate-output",[472],{"type":47,"value":473},"3. Feedback Loop: Validate Output",{"type":41,"tag":113,"props":475,"children":476},{},[477],{"type":41,"tag":142,"props":478,"children":479},{},[480],{"type":47,"value":481},"Run validator -> review errors -> fix:",{"type":41,"tag":483,"props":484,"children":485},"ol",{},[486,499,520],{"type":41,"tag":61,"props":487,"children":488},{},[489,491,497],{"type":47,"value":490},"Verify that the ",{"type":41,"tag":119,"props":492,"children":494},{"className":493},[],[495],{"type":47,"value":496},"coverage\u002F",{"type":47,"value":498}," directory was created in the project root.",{"type":41,"tag":61,"props":500,"children":501},{},[502,504,510,512,518],{"type":47,"value":503},"Ensure ",{"type":41,"tag":119,"props":505,"children":507},{"className":506},[],[508],{"type":47,"value":509},"coverage\u002Fcoverage.json",{"type":47,"value":511}," (raw data) and ",{"type":41,"tag":119,"props":513,"children":515},{"className":514},[],[516],{"type":47,"value":517},"coverage\u002Flcov.info",{"type":47,"value":519}," (formatted report) exist.",{"type":41,"tag":61,"props":521,"children":522},{},[523,525,530],{"type":47,"value":524},"If coverage is missing for specific files, ensure they are imported and executed by your test files, or add ",{"type":41,"tag":119,"props":526,"children":528},{"className":527},[],[529],{"type":47,"value":238},{"type":47,"value":531}," if they are intentionally excluded.",{"type":41,"tag":50,"props":533,"children":535},{"id":534},"workflow-advanced-manual-coverage-collection",[536],{"type":47,"value":97},{"type":41,"tag":113,"props":538,"children":539},{},[540],{"type":47,"value":541},"If you require granular control over the VM service, isolate pausing, or need branch\u002Ffunction-level coverage, use the manual collection workflow.",{"type":41,"tag":113,"props":543,"children":544},{},[545],{"type":41,"tag":142,"props":546,"children":547},{},[548],{"type":47,"value":256},{"type":41,"tag":57,"props":550,"children":552},{"className":551},[260],[553,562,571],{"type":41,"tag":61,"props":554,"children":556},{"className":555},[265],[557,560],{"type":41,"tag":268,"props":558,"children":559},{"disabled":270,"type":271},[],{"type":47,"value":561}," 1. Run tests with VM service enabled.",{"type":41,"tag":61,"props":563,"children":565},{"className":564},[265],[566,569],{"type":41,"tag":268,"props":567,"children":568},{"disabled":270,"type":271},[],{"type":47,"value":570}," 2. Collect raw JSON coverage.",{"type":41,"tag":61,"props":572,"children":574},{"className":573},[265],[575,578],{"type":41,"tag":268,"props":576,"children":577},{"disabled":270,"type":271},[],{"type":47,"value":579}," 3. Format JSON to LCOV.",{"type":41,"tag":310,"props":581,"children":583},{"id":582},"_1-run-tests-with-vm-service",[584],{"type":47,"value":585},"1. Run Tests with VM Service",{"type":41,"tag":113,"props":587,"children":588},{},[589],{"type":47,"value":590},"Execute tests while pausing isolates on exit and exposing the VM service on a specific port (e.g., 8181).",{"type":41,"tag":341,"props":592,"children":594},{"className":343,"code":593,"language":345,"meta":346,"style":346},"dart run --pause-isolates-on-exit --disable-service-auth-codes --enable-vm-service=8181 test &\n",[595],{"type":41,"tag":119,"props":596,"children":597},{"__ignoreMap":346},[598],{"type":41,"tag":352,"props":599,"children":600},{"class":354,"line":355},[601,605,609,614,619,624,629],{"type":41,"tag":352,"props":602,"children":603},{"style":359},[604],{"type":47,"value":18},{"type":41,"tag":352,"props":606,"children":607},{"style":364},[608],{"type":47,"value":446},{"type":41,"tag":352,"props":610,"children":611},{"style":364},[612],{"type":47,"value":613}," --pause-isolates-on-exit",{"type":41,"tag":352,"props":615,"children":616},{"style":364},[617],{"type":47,"value":618}," --disable-service-auth-codes",{"type":41,"tag":352,"props":620,"children":621},{"style":364},[622],{"type":47,"value":623}," --enable-vm-service=8181",{"type":41,"tag":352,"props":625,"children":626},{"style":364},[627],{"type":47,"value":628}," test",{"type":41,"tag":352,"props":630,"children":632},{"style":631},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[633],{"type":47,"value":634}," &\n",{"type":41,"tag":310,"props":636,"children":638},{"id":637},"_2-collect-raw-coverage",[639],{"type":47,"value":640},"2. Collect Raw Coverage",{"type":41,"tag":113,"props":642,"children":643},{},[644],{"type":47,"value":645},"Extract the coverage data from the running VM service and output it to a JSON file.",{"type":41,"tag":341,"props":647,"children":649},{"className":343,"code":648,"language":345,"meta":346,"style":346},"dart run coverage:collect_coverage --wait-paused --uri=http:\u002F\u002F127.0.0.1:8181\u002F -o coverage\u002Fcoverage.json --resume-isolates\n",[650],{"type":41,"tag":119,"props":651,"children":652},{"__ignoreMap":346},[653],{"type":41,"tag":352,"props":654,"children":655},{"class":354,"line":355},[656,660,664,669,674,679,684,689],{"type":41,"tag":352,"props":657,"children":658},{"style":359},[659],{"type":47,"value":18},{"type":41,"tag":352,"props":661,"children":662},{"style":364},[663],{"type":47,"value":446},{"type":41,"tag":352,"props":665,"children":666},{"style":364},[667],{"type":47,"value":668}," coverage:collect_coverage",{"type":41,"tag":352,"props":670,"children":671},{"style":364},[672],{"type":47,"value":673}," --wait-paused",{"type":41,"tag":352,"props":675,"children":676},{"style":364},[677],{"type":47,"value":678}," --uri=http:\u002F\u002F127.0.0.1:8181\u002F",{"type":41,"tag":352,"props":680,"children":681},{"style":364},[682],{"type":47,"value":683}," -o",{"type":41,"tag":352,"props":685,"children":686},{"style":364},[687],{"type":47,"value":688}," coverage\u002Fcoverage.json",{"type":41,"tag":352,"props":690,"children":691},{"style":364},[692],{"type":47,"value":693}," --resume-isolates\n",{"type":41,"tag":113,"props":695,"children":696},{},[697],{"type":41,"tag":456,"props":698,"children":699},{},[700,702,708,709,715],{"type":47,"value":701},"Optional: Append ",{"type":41,"tag":119,"props":703,"children":705},{"className":704},[],[706],{"type":47,"value":707},"--function-coverage",{"type":47,"value":221},{"type":41,"tag":119,"props":710,"children":712},{"className":711},[],[713],{"type":47,"value":714},"--branch-coverage",{"type":47,"value":716}," to gather deeper metrics (requires Dart VM 2.17.0+).",{"type":41,"tag":310,"props":718,"children":720},{"id":719},"_3-format-to-lcov",[721],{"type":47,"value":722},"3. Format to LCOV",{"type":41,"tag":113,"props":724,"children":725},{},[726],{"type":47,"value":727},"Convert the raw JSON data into the standard LCOV format.",{"type":41,"tag":341,"props":729,"children":731},{"className":343,"code":730,"language":345,"meta":346,"style":346},"dart run coverage:format_coverage --packages=.dart_tool\u002Fpackage_config.json --lcov -i coverage\u002Fcoverage.json -o coverage\u002Flcov.info --check-ignore\n",[732],{"type":41,"tag":119,"props":733,"children":734},{"__ignoreMap":346},[735],{"type":41,"tag":352,"props":736,"children":737},{"class":354,"line":355},[738,742,746,751,756,761,766,770,774,779],{"type":41,"tag":352,"props":739,"children":740},{"style":359},[741],{"type":47,"value":18},{"type":41,"tag":352,"props":743,"children":744},{"style":364},[745],{"type":47,"value":446},{"type":41,"tag":352,"props":747,"children":748},{"style":364},[749],{"type":47,"value":750}," coverage:format_coverage",{"type":41,"tag":352,"props":752,"children":753},{"style":364},[754],{"type":47,"value":755}," --packages=.dart_tool\u002Fpackage_config.json",{"type":41,"tag":352,"props":757,"children":758},{"style":364},[759],{"type":47,"value":760}," --lcov",{"type":41,"tag":352,"props":762,"children":763},{"style":364},[764],{"type":47,"value":765}," -i",{"type":41,"tag":352,"props":767,"children":768},{"style":364},[769],{"type":47,"value":688},{"type":41,"tag":352,"props":771,"children":772},{"style":364},[773],{"type":47,"value":683},{"type":41,"tag":352,"props":775,"children":776},{"style":364},[777],{"type":47,"value":778}," coverage\u002Flcov.info",{"type":41,"tag":352,"props":780,"children":781},{"style":364},[782],{"type":47,"value":783}," --check-ignore\n",{"type":41,"tag":50,"props":785,"children":787},{"id":786},"examples",[788],{"type":47,"value":106},{"type":41,"tag":310,"props":790,"children":792},{"id":791},"example-pubspecyaml-configuration",[793,795,801],{"type":47,"value":794},"Example: ",{"type":41,"tag":119,"props":796,"children":798},{"className":797},[],[799],{"type":47,"value":800},"pubspec.yaml",{"type":47,"value":802}," Configuration",{"type":41,"tag":113,"props":804,"children":805},{},[806,808,813,815,820,822,828],{"type":47,"value":807},"Ensure your ",{"type":41,"tag":119,"props":809,"children":811},{"className":810},[],[812],{"type":47,"value":800},{"type":47,"value":814}," reflects the ",{"type":41,"tag":119,"props":816,"children":818},{"className":817},[],[819],{"type":47,"value":280},{"type":47,"value":821}," package strictly under ",{"type":41,"tag":119,"props":823,"children":825},{"className":824},[],[826],{"type":47,"value":827},"dev_dependencies",{"type":47,"value":290},{"type":41,"tag":341,"props":830,"children":834},{"className":831,"code":832,"language":833,"meta":346,"style":346},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name: my_dart_app\nenvironment:\n  sdk: ^3.0.0\n\ndependencies:\n  path: ^1.8.0\n\ndev_dependencies:\n  test: ^1.24.0\n  coverage: ^1.15.0\n","yaml",[835],{"type":41,"tag":119,"props":836,"children":837},{"__ignoreMap":346},[838,857,871,889,898,911,929,937,949,967],{"type":41,"tag":352,"props":839,"children":840},{"class":354,"line":355},[841,847,852],{"type":41,"tag":352,"props":842,"children":844},{"style":843},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[845],{"type":47,"value":846},"name",{"type":41,"tag":352,"props":848,"children":849},{"style":631},[850],{"type":47,"value":851},":",{"type":41,"tag":352,"props":853,"children":854},{"style":364},[855],{"type":47,"value":856}," my_dart_app\n",{"type":41,"tag":352,"props":858,"children":860},{"class":354,"line":859},2,[861,866],{"type":41,"tag":352,"props":862,"children":863},{"style":843},[864],{"type":47,"value":865},"environment",{"type":41,"tag":352,"props":867,"children":868},{"style":631},[869],{"type":47,"value":870},":\n",{"type":41,"tag":352,"props":872,"children":874},{"class":354,"line":873},3,[875,880,884],{"type":41,"tag":352,"props":876,"children":877},{"style":843},[878],{"type":47,"value":879},"  sdk",{"type":41,"tag":352,"props":881,"children":882},{"style":631},[883],{"type":47,"value":851},{"type":41,"tag":352,"props":885,"children":886},{"style":364},[887],{"type":47,"value":888}," ^3.0.0\n",{"type":41,"tag":352,"props":890,"children":892},{"class":354,"line":891},4,[893],{"type":41,"tag":352,"props":894,"children":895},{"emptyLinePlaceholder":270},[896],{"type":47,"value":897},"\n",{"type":41,"tag":352,"props":899,"children":901},{"class":354,"line":900},5,[902,907],{"type":41,"tag":352,"props":903,"children":904},{"style":843},[905],{"type":47,"value":906},"dependencies",{"type":41,"tag":352,"props":908,"children":909},{"style":631},[910],{"type":47,"value":870},{"type":41,"tag":352,"props":912,"children":914},{"class":354,"line":913},6,[915,920,924],{"type":41,"tag":352,"props":916,"children":917},{"style":843},[918],{"type":47,"value":919},"  path",{"type":41,"tag":352,"props":921,"children":922},{"style":631},[923],{"type":47,"value":851},{"type":41,"tag":352,"props":925,"children":926},{"style":364},[927],{"type":47,"value":928}," ^1.8.0\n",{"type":41,"tag":352,"props":930,"children":932},{"class":354,"line":931},7,[933],{"type":41,"tag":352,"props":934,"children":935},{"emptyLinePlaceholder":270},[936],{"type":47,"value":897},{"type":41,"tag":352,"props":938,"children":940},{"class":354,"line":939},8,[941,945],{"type":41,"tag":352,"props":942,"children":943},{"style":843},[944],{"type":47,"value":827},{"type":41,"tag":352,"props":946,"children":947},{"style":631},[948],{"type":47,"value":870},{"type":41,"tag":352,"props":950,"children":952},{"class":354,"line":951},9,[953,958,962],{"type":41,"tag":352,"props":954,"children":955},{"style":843},[956],{"type":47,"value":957},"  test",{"type":41,"tag":352,"props":959,"children":960},{"style":631},[961],{"type":47,"value":851},{"type":41,"tag":352,"props":963,"children":964},{"style":364},[965],{"type":47,"value":966}," ^1.24.0\n",{"type":41,"tag":352,"props":968,"children":970},{"class":354,"line":969},10,[971,976,980],{"type":41,"tag":352,"props":972,"children":973},{"style":843},[974],{"type":47,"value":975},"  coverage",{"type":41,"tag":352,"props":977,"children":978},{"style":631},[979],{"type":47,"value":851},{"type":41,"tag":352,"props":981,"children":982},{"style":364},[983],{"type":47,"value":984}," ^1.15.0\n",{"type":41,"tag":310,"props":986,"children":988},{"id":987},"example-applying-ignore-directives",[989],{"type":47,"value":990},"Example: Applying Ignore Directives",{"type":41,"tag":113,"props":992,"children":993},{},[994],{"type":47,"value":995},"Use ignore directives to prevent generated code or untestable edge cases from lowering coverage scores.",{"type":41,"tag":341,"props":997,"children":1000},{"className":998,"code":999,"language":18,"meta":346,"style":346},"language-dart shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F coverage:ignore-file\nimport 'package:meta\u002Fmeta.dart';\n\nclass SystemConfig {\n  final String env;\n\n  SystemConfig(this.env);\n\n  \u002F\u002F coverage:ignore-start\n  void legacyInit() {\n    print('Deprecated initialization');\n  }\n  \u002F\u002F coverage:ignore-end\n\n  bool isProduction() {\n    if (env == 'prod') return true;\n    return false; \u002F\u002F coverage:ignore-line\n  }\n}\n",[1001],{"type":41,"tag":119,"props":1002,"children":1003},{"__ignoreMap":346},[1004,1012,1020,1027,1035,1043,1050,1058,1065,1073,1081,1090,1099,1108,1116,1125,1134,1143,1151],{"type":41,"tag":352,"props":1005,"children":1006},{"class":354,"line":355},[1007],{"type":41,"tag":352,"props":1008,"children":1009},{},[1010],{"type":47,"value":1011},"\u002F\u002F coverage:ignore-file\n",{"type":41,"tag":352,"props":1013,"children":1014},{"class":354,"line":859},[1015],{"type":41,"tag":352,"props":1016,"children":1017},{},[1018],{"type":47,"value":1019},"import 'package:meta\u002Fmeta.dart';\n",{"type":41,"tag":352,"props":1021,"children":1022},{"class":354,"line":873},[1023],{"type":41,"tag":352,"props":1024,"children":1025},{"emptyLinePlaceholder":270},[1026],{"type":47,"value":897},{"type":41,"tag":352,"props":1028,"children":1029},{"class":354,"line":891},[1030],{"type":41,"tag":352,"props":1031,"children":1032},{},[1033],{"type":47,"value":1034},"class SystemConfig {\n",{"type":41,"tag":352,"props":1036,"children":1037},{"class":354,"line":900},[1038],{"type":41,"tag":352,"props":1039,"children":1040},{},[1041],{"type":47,"value":1042},"  final String env;\n",{"type":41,"tag":352,"props":1044,"children":1045},{"class":354,"line":913},[1046],{"type":41,"tag":352,"props":1047,"children":1048},{"emptyLinePlaceholder":270},[1049],{"type":47,"value":897},{"type":41,"tag":352,"props":1051,"children":1052},{"class":354,"line":931},[1053],{"type":41,"tag":352,"props":1054,"children":1055},{},[1056],{"type":47,"value":1057},"  SystemConfig(this.env);\n",{"type":41,"tag":352,"props":1059,"children":1060},{"class":354,"line":939},[1061],{"type":41,"tag":352,"props":1062,"children":1063},{"emptyLinePlaceholder":270},[1064],{"type":47,"value":897},{"type":41,"tag":352,"props":1066,"children":1067},{"class":354,"line":951},[1068],{"type":41,"tag":352,"props":1069,"children":1070},{},[1071],{"type":47,"value":1072},"  \u002F\u002F coverage:ignore-start\n",{"type":41,"tag":352,"props":1074,"children":1075},{"class":354,"line":969},[1076],{"type":41,"tag":352,"props":1077,"children":1078},{},[1079],{"type":47,"value":1080},"  void legacyInit() {\n",{"type":41,"tag":352,"props":1082,"children":1084},{"class":354,"line":1083},11,[1085],{"type":41,"tag":352,"props":1086,"children":1087},{},[1088],{"type":47,"value":1089},"    print('Deprecated initialization');\n",{"type":41,"tag":352,"props":1091,"children":1093},{"class":354,"line":1092},12,[1094],{"type":41,"tag":352,"props":1095,"children":1096},{},[1097],{"type":47,"value":1098},"  }\n",{"type":41,"tag":352,"props":1100,"children":1102},{"class":354,"line":1101},13,[1103],{"type":41,"tag":352,"props":1104,"children":1105},{},[1106],{"type":47,"value":1107},"  \u002F\u002F coverage:ignore-end\n",{"type":41,"tag":352,"props":1109,"children":1111},{"class":354,"line":1110},14,[1112],{"type":41,"tag":352,"props":1113,"children":1114},{"emptyLinePlaceholder":270},[1115],{"type":47,"value":897},{"type":41,"tag":352,"props":1117,"children":1119},{"class":354,"line":1118},15,[1120],{"type":41,"tag":352,"props":1121,"children":1122},{},[1123],{"type":47,"value":1124},"  bool isProduction() {\n",{"type":41,"tag":352,"props":1126,"children":1128},{"class":354,"line":1127},16,[1129],{"type":41,"tag":352,"props":1130,"children":1131},{},[1132],{"type":47,"value":1133},"    if (env == 'prod') return true;\n",{"type":41,"tag":352,"props":1135,"children":1137},{"class":354,"line":1136},17,[1138],{"type":41,"tag":352,"props":1139,"children":1140},{},[1141],{"type":47,"value":1142},"    return false; \u002F\u002F coverage:ignore-line\n",{"type":41,"tag":352,"props":1144,"children":1146},{"class":354,"line":1145},18,[1147],{"type":41,"tag":352,"props":1148,"children":1149},{},[1150],{"type":47,"value":1098},{"type":41,"tag":352,"props":1152,"children":1154},{"class":354,"line":1153},19,[1155],{"type":41,"tag":352,"props":1156,"children":1157},{},[1158],{"type":47,"value":1159},"}\n",{"type":41,"tag":1161,"props":1162,"children":1163},"style",{},[1164],{"type":47,"value":1165},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1167,"total":1238},[1168,1177,1188,1194,1205,1214,1226],{"slug":1169,"name":1169,"fn":1170,"description":1171,"org":1172,"tags":1173,"stars":22,"repoUrl":23,"updatedAt":1176},"dart-add-unit-test","write unit tests for Dart code","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 correct and regression-free.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1174,1175],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},"2026-07-15T05:22:40.104823",{"slug":1178,"name":1178,"fn":1179,"description":1180,"org":1181,"tags":1182,"stars":22,"repoUrl":23,"updatedAt":1187},"dart-build-cli-app","build Dart command line applications","Entrypoint structure, exit codes, cross-platform scripts. Use when building command line utilities, scripts, or applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1183,1186],{"name":1184,"slug":1185,"type":15},"CLI","cli",{"name":17,"slug":18,"type":15},"2026-07-15T05:22:18.863572",{"slug":4,"name":4,"fn":5,"description":6,"org":1189,"tags":1190,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1191,1192,1193],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"slug":1195,"name":1195,"fn":1196,"description":1197,"org":1198,"tags":1199,"stars":22,"repoUrl":23,"updatedAt":1204},"dart-fix-runtime-errors","debug and fix Dart runtime errors","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.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1200,1201],{"name":17,"slug":18,"type":15},{"name":1202,"slug":1203,"type":15},"Debugging","debugging","2026-07-15T05:22:22.622501",{"slug":1206,"name":1206,"fn":1207,"description":1208,"org":1209,"tags":1210,"stars":22,"repoUrl":23,"updatedAt":1213},"dart-generate-test-mocks","generate mock objects for Dart tests","Define and generate mock objects for external dependencies using `package:mockito` and `build_runner`. Use when unit testing classes that depend on complex external services like APIs or databases.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1211,1212],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},"2026-07-15T05:22:42.607449",{"slug":1215,"name":1215,"fn":1216,"description":1217,"org":1218,"tags":1219,"stars":22,"repoUrl":23,"updatedAt":1225},"dart-migrate-to-checks-package","migrate test matchers to checks package","Replace the usage of `expect` and similar functions from `package:matcher`\nto `package:checks` equivalents.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1220,1221,1224],{"name":17,"slug":18,"type":15},{"name":1222,"slug":1223,"type":15},"Migration","migration",{"name":20,"slug":21,"type":15},"2026-07-15T05:22:31.276564",{"slug":1227,"name":1227,"fn":1228,"description":1229,"org":1230,"tags":1231,"stars":22,"repoUrl":23,"updatedAt":1237},"dart-resolve-package-conflicts","resolve Dart package version conflicts","Workflow for fixing package version conflicts. Use this when `pub get` fails due to incompatible package versions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1232,1233,1234],{"name":17,"slug":18,"type":15},{"name":1202,"slug":1203,"type":15},{"name":1235,"slug":1236,"type":15},"Engineering","engineering","2026-07-15T05:22:30.059335",24,{"items":1240,"total":1336},[1241,1246,1251,1257,1262,1267,1273,1279,1291,1303,1317,1327],{"slug":1169,"name":1169,"fn":1170,"description":1171,"org":1242,"tags":1243,"stars":22,"repoUrl":23,"updatedAt":1176},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1244,1245],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"slug":1178,"name":1178,"fn":1179,"description":1180,"org":1247,"tags":1248,"stars":22,"repoUrl":23,"updatedAt":1187},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1249,1250],{"name":1184,"slug":1185,"type":15},{"name":17,"slug":18,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":1252,"tags":1253,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1254,1255,1256],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"slug":1195,"name":1195,"fn":1196,"description":1197,"org":1258,"tags":1259,"stars":22,"repoUrl":23,"updatedAt":1204},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1260,1261],{"name":17,"slug":18,"type":15},{"name":1202,"slug":1203,"type":15},{"slug":1206,"name":1206,"fn":1207,"description":1208,"org":1263,"tags":1264,"stars":22,"repoUrl":23,"updatedAt":1213},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1265,1266],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"slug":1215,"name":1215,"fn":1216,"description":1217,"org":1268,"tags":1269,"stars":22,"repoUrl":23,"updatedAt":1225},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1270,1271,1272],{"name":17,"slug":18,"type":15},{"name":1222,"slug":1223,"type":15},{"name":20,"slug":21,"type":15},{"slug":1227,"name":1227,"fn":1228,"description":1229,"org":1274,"tags":1275,"stars":22,"repoUrl":23,"updatedAt":1237},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1276,1277,1278],{"name":17,"slug":18,"type":15},{"name":1202,"slug":1203,"type":15},{"name":1235,"slug":1236,"type":15},{"slug":1280,"name":1280,"fn":1281,"description":1282,"org":1283,"tags":1284,"stars":22,"repoUrl":23,"updatedAt":1290},"dart-run-static-analysis","run static analysis and apply fixes","Execute `dart analyze` to identify warnings and errors, and use `dart fix --apply` to automatically resolve mechanical lint issues. Use during development to ensure code quality and before committing changes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1285,1288,1289],{"name":1286,"slug":1287,"type":15},"Code Analysis","code-analysis",{"name":17,"slug":18,"type":15},{"name":1202,"slug":1203,"type":15},"2026-07-15T05:22:23.861119",{"slug":1292,"name":1292,"fn":1293,"description":1294,"org":1295,"tags":1296,"stars":22,"repoUrl":23,"updatedAt":1302},"dart-setup-ffi-assets","package C\u002FC++ assets for Dart","Guides agents in compiling and packaging C\u002FC++ source code into dynamic or static libraries (Code Assets) using Dart's Native Assets hook system (via hook\u002Fbuild.dart and hook\u002Flink.dart utilizing package:hooks and package:native_toolchain_c). Use when a user asks to: 'setup native assets', 'compile C\u002FC++ source code', 'bundle dynamic libraries', 'build native C code', 'link native assets', 'implement build.dart or link.dart hooks', or 'integrate C\u002FC++ interop in Dart\u002FFlutter'. Helps agents avoid manual toolchain orchestration and configures secure hash-validated binary downloads or advanced linker tree-shaking with package:record_use mapping.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1297,1298,1301],{"name":17,"slug":18,"type":15},{"name":1299,"slug":1300,"type":15},"Deployment","deployment",{"name":1235,"slug":1236,"type":15},"2026-07-15T05:22:20.138636",{"slug":1304,"name":1304,"fn":1305,"description":1306,"org":1307,"tags":1308,"stars":22,"repoUrl":23,"updatedAt":1316},"dart-skills-lint-setup","configure dart_skills_lint for Dart projects","Use this skill when you need to set up validation for AI agent skills in a Dart project for the first time.\nAdds the linter as a dev_dependency, creates a configuration file, and generates a baseline for legacy repos.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1309,1310,1313],{"name":17,"slug":18,"type":15},{"name":1311,"slug":1312,"type":15},"Plugin Development","plugin-development",{"name":1314,"slug":1315,"type":15},"QA","qa","2026-07-15T05:22:47.488998",{"slug":1318,"name":1318,"fn":1319,"description":1320,"org":1321,"tags":1322,"stars":22,"repoUrl":23,"updatedAt":1326},"dart-skills-lint-validation","validate agent skills with dart_skills_lint","Use this skill when you need to validate AI agent skills with dart_skills_lint — running the linter, interpreting failures, fixing violations, and authoring custom rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1323,1324,1325],{"name":17,"slug":18,"type":15},{"name":1311,"slug":1312,"type":15},{"name":1314,"slug":1315,"type":15},"2026-07-21T05:38:34.451024",{"slug":1328,"name":1328,"fn":1329,"description":1330,"org":1331,"tags":1332,"stars":22,"repoUrl":23,"updatedAt":1335},"dart-use-ffigen","generate FFI bindings with ffigen","Guide agents to use `package:ffigen` to automatically generate FFI bindings instead of writing them manually. Use this skill when a task involves writing new FFI bindings, extending C\u002FObjective-C\u002FSwift integrations, or replacing hand-crafted `dart:ffi` setups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1333,1334],{"name":17,"slug":18,"type":15},{"name":1235,"slug":1236,"type":15},"2026-07-15T05:22:17.592351",27]