[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69953F9VQ40RN4T4WYDMQPC":3,"skill-same:01M69953F9VQ40RN4T4WYDMQPC":71},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M69953F9VQ40RN4T4WYDMQPC","dart-doc-validation",null,"Best practices for validating Dart documentation comments.\nCovers using `dart doc` to catch unresolved references and macros.","google\u002Fskills_lint.dart","google","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1342004?v=4","01M698VYEFDM0VJBZDYYJ2T83S","Google","01M69948DMEXSF9KS5Y4DBBN4D",8,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills_lint.dart\u002Fblob\u002Fmain\u002Fthird_party\u002Fskill-repos\u002Fkevmoo-dash-skills\u002F.agents\u002Fskills\u002Fdart-doc-validation\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"dart doc validation","validation","doc","dart","documentation","best practices","verification","macro","reference","references","macros","comments","for","catch","2026-11-10 10:12:30",false,"---\nname: dart-doc-validation\ndescription: |-\n  Best practices for validating Dart documentation comments.\n  Covers using `dart doc` to catch unresolved references and macros.\nlicense: Apache-2.0\nkey_features:\n  - Documentation comment validation\n  - Unresolved reference checking\n  - Dart doc macro verification\n---\n\n# Dart Doc Validation\n\n## 1. When to use this skill\n\nUse this skill when:\n\n- Writing or updating documentation comments (`\u002F\u002F\u002F`) in Dart code.\n- Checking for broken documentation links, references, or macros.\n- Preparing a package for publishing to pub.dev.\n\n### When NOT to use (Abstention Guardrails)\n\nDo NOT apply this skill or refactor doc comments when:\n\n- **Illustrative Pseudo-Code & Non-Dart Code Fences**: Comments contain\n  pseudo-code, non-Dart language identifiers (e.g. ``yaml`, ``json`, ````bash`,\n  ````text`), or abstract conceptual fragments intentionally not designed to\n  compile as valid Dart.\n- **Generated Code**: Files generated by tools (e.g. `*.g.dart`, `*.mocks.dart`,\n  `*.freezed.dart`) where comments are synthesized.\n- **External Markdown Hyperlinks**: Text in square brackets followed by a link\n  target (e.g. `[External Guide](https:\u002F\u002F...)`), which is standard Markdown\n  hyperlink syntax rather than an unresolved Dart doc reference.\n\n## Discovery\n\nTo find documentation issues:\n\n### Missing Lint\n\nVerify if the `comment_references` lint is enabled:\n\n- **Target**: `analysis_options.yaml`\n- **Search Query**: `comment_references`\n\n### Automated Validation\n\nRun the documentation generator to surface warnings:\n\n- **Command**: `dart doc -o $(mktemp -d)`\n- **Keywords to look for**: `warning:`, `unresolved doc reference`,\n  `undefined macro`\n\n## 2. Best Practices\n\n### Enable the doc validation lint\n\nIn your `analysis_options.yaml`, enable the `comment_references` lint.\n\n```yaml\nlinter:\n  rules:\n    - comment_references\n```\n\n### Validating Documentation Locally\n\nUse the `dart doc` command with a temporary output directory to validate\ndocumentation comments without polluting the local project workspace.\n\nThis command parses all documentation comments and reports warnings such as:\n\n- `warning: unresolved doc reference`\n- `warning: undefined macro`\n\n**Command to run:**\n\n```bash\ndart doc -o $(mktemp -d)\n```\n\n_This will work on Mac and Linux._\n\nThis ensures that the generated HTML files are stored in a temporary location\nand don't clutter the package directory, while still surfacing all validation\nwarnings in the terminal output.\n\n**Browsing the docs:**\n\nOur docs use features designed to be run on a web server. If you want to browse\nthe generated docs locally, install the `dhttpd` package.\n\n```shell\ndart install dhttpd\nTMP_DIR=$(mktemp -d) && dart doc -o \"$TMP_DIR\" &&  dhttpd --path \"$TMP_DIR\"\n```\n\n_(Or use another HTTP server, such as `python3 -m http.server`.)_\n\n### Fixing Common Warnings\n\n- **Unresolved doc reference**: Ensure that any identifier wrapped in square\n  brackets (`[Identifier]`) correctly points to an existing class, method,\n  property, or parameter in the current scope or imported libraries.\n- **Undefined macro**: If using `{@macro macro_name}`, ensure that the template\n  `{@template macro_name}` is defined in the same file or a file that is\n  imported and visible to the documentation generator.\n","# Dart Doc Validation\n\n## 1. When to use this skill\n\nUse this skill when:\n\n- Writing or updating documentation comments (`\u002F\u002F\u002F`) in Dart code.\n- Checking for broken documentation links, references, or macros.\n- Preparing a package for publishing to pub.dev.\n\n### When NOT to use (Abstention Guardrails)\n\nDo NOT apply this skill or refactor doc comments when:\n\n- **Illustrative Pseudo-Code & Non-Dart Code Fences**: Comments contain\n  pseudo-code, non-Dart language identifiers (e.g. ``yaml`, ``json`, ````bash`,\n  ````text`), or abstract conceptual fragments intentionally not designed to\n  compile as valid Dart.\n- **Generated Code**: Files generated by tools (e.g. `*.g.dart`, `*.mocks.dart`,\n  `*.freezed.dart`) where comments are synthesized.\n- **External Markdown Hyperlinks**: Text in square brackets followed by a link\n  target (e.g. `[External Guide](https:\u002F\u002F...)`), which is standard Markdown\n  hyperlink syntax rather than an unresolved Dart doc reference.\n\n## Discovery\n\nTo find documentation issues:\n\n### Missing Lint\n\nVerify if the `comment_references` lint is enabled:\n\n- **Target**: `analysis_options.yaml`\n- **Search Query**: `comment_references`\n\n### Automated Validation\n\nRun the documentation generator to surface warnings:\n\n- **Command**: `dart doc -o $(mktemp -d)`\n- **Keywords to look for**: `warning:`, `unresolved doc reference`,\n  `undefined macro`\n\n## 2. Best Practices\n\n### Enable the doc validation lint\n\nIn your `analysis_options.yaml`, enable the `comment_references` lint.\n\n```yaml\nlinter:\n  rules:\n    - comment_references\n```\n\n### Validating Documentation Locally\n\nUse the `dart doc` command with a temporary output directory to validate\ndocumentation comments without polluting the local project workspace.\n\nThis command parses all documentation comments and reports warnings such as:\n\n- `warning: unresolved doc reference`\n- `warning: undefined macro`\n\n**Command to run:**\n\n```bash\ndart doc -o $(mktemp -d)\n```\n\n_This will work on Mac and Linux._\n\nThis ensures that the generated HTML files are stored in a temporary location\nand don't clutter the package directory, while still surfacing all validation\nwarnings in the terminal output.\n\n**Browsing the docs:**\n\nOur docs use features designed to be run on a web server. If you want to browse\nthe generated docs locally, install the `dhttpd` package.\n\n```shell\ndart install dhttpd\nTMP_DIR=$(mktemp -d) && dart doc -o \"$TMP_DIR\" &&  dhttpd --path \"$TMP_DIR\"\n```\n\n_(Or use another HTTP server, such as `python3 -m http.server`.)_\n\n### Fixing Common Warnings\n\n- **Unresolved doc reference**: Ensure that any identifier wrapped in square\n  brackets (`[Identifier]`) correctly points to an existing class, method,\n  property, or parameter in the current scope or imported libraries.\n- **Undefined macro**: If using `{@macro macro_name}`, ensure that the template\n  `{@template macro_name}` is defined in the same file or a file that is\n  imported and visible to the documentation generator.\n",{"name":5,"license":15,"description":7,"key_features":38},[39,40,41],"Documentation comment validation","Unresolved reference checking","Dart doc macro verification","main","d7c70923cbbe95b86a590fa0fa4e914d15695e4d","third_party\u002Fskill-repos\u002Fkevmoo-dash-skills\u002F.agents\u002Fskills\u002Fdart-doc-validation",7,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills_lint.dart","https:\u002F\u002Fgithub.com\u002Fgoogle","https:\u002F\u002Fopensource.google\u002F","Google ❤️ Open Source","2026-11-11 03:34:13",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add google\u002Fskills_lint.dart --skill dart-doc-validation",{"tool":57,"command":58},"bunx","bunx skills add google\u002Fskills_lint.dart --skill dart-doc-validation",{"tool":60,"command":61},"pnpm","pnpm dlx skills add google\u002Fskills_lint.dart --skill dart-doc-validation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills_lint.dart\u002Fblob\u002Fmain\u002Fthird_party\u002Fskill-repos\u002Fkevmoo-dash-skills\u002F.agents\u002Fskills\u002Fdart-doc-validation\u002FSKILL.md",true,[65],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"evals\u002Fevals.json","REFERENCE","参考文档",2203,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills_lint.dart\u002Fblob\u002Fmain\u002Fthird_party\u002Fskill-repos\u002Fkevmoo-dash-skills\u002F.agents\u002Fskills\u002Fdart-doc-validation\u002Fevals\u002Fevals.json",[72,95,110,128,146,170],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":83,"publishedAt":33},"01M6995BQ87JV2EG35BC0BGH3E","dart-test-fundamentals","Core concepts and best practices for `package:test`.\nCovers `test`, `group`, lifecycle methods (`setUp`, `tearDown`), and\nconfiguration (`dart_test.yaml`).","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills_lint.dart\u002Fblob\u002Fmain\u002Fthird_party\u002Fskill-repos\u002Fkevmoo-dash-skills\u002F.agents\u002Fskills\u002Fdart-test-fundamentals\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[84,85,22,86,31,87,88,89,90,91,92,93,24,94],"test","dart test fundamentals","core","concepts","teardown","methods","configuration","lifecycle","yaml","package","setup",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":102,"publishedAt":33},"01M699560NWTQKV9VMQYQR4P9S","dart-matcher-best-practices","Best practices for using `expect` and `package:matcher`.\nFocuses on readable assertions, proper matcher selection, and avoiding\ncommon pitfalls.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills_lint.dart\u002Fblob\u002Fmain\u002Fthird_party\u002Fskill-repos\u002Fkevmoo-dash-skills\u002F.agents\u002Fskills\u002Fdart-matcher-best-practices\u002FSKILL.md",[101],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},[24,103,22,104,84,93,105,31,106,107,108,109],"dart matcher best practices","pitfalls","assertions","common pitfalls","selection","common","refactoring",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":33},"01M69954NHT0DAFYE2SZPN6KF0","dart-long-lines","Guidelines for handling long lines in Dart code to adhere to the 80-column\nrule. The `lines_longer_than_80_chars` lint.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills_lint.dart\u002Fblob\u002Fmain\u002Fthird_party\u002Fskill-repos\u002Fkevmoo-dash-skills\u002F.agents\u002Fskills\u002Fdart-long-lines\u002FSKILL.md",[],[117,118,22,119,109,120,121,122,123,124,125,31,126,127],"long","dart long lines","column","compliance","code","linter","line","lint","rule","enforcement","guidelines",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":33},"01M699529EEJD1Z9AJ15GXAS7N","dart-best-practices","General best practices for Dart development.\nCovers code style, effective Dart, and language features.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills_lint.dart\u002Fblob\u002Fmain\u002Fthird_party\u002Fskill-repos\u002Fkevmoo-dash-skills\u002F.agents\u002Fskills\u002Fdart-best-practices\u002FSKILL.md",[],[135,24,22,136,137,138,31,139,140,141,142,143,121,144,127,145],"dart best practices","language","development","features","style","feature","recommendations","general","idioms","general best practices","code style",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":33},"01M6994Q5SB4RRW1EHQGFGEYM2","triage-github-issues","Sorts new GitHub issues by type and priority, asks for missing details, and closes duplicates. Use when asked to triage, label or clean up the issue tracker.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills_lint.dart\u002Fblob\u002Fmain\u002Fpackages\u002Fskills_lint\u002Fbenchmark\u002Fsample_skills\u002Ftriage-github-issues\u002FSKILL.md",[],[153,154,155,156,157,158,159,160,161,162,163,164,165,31,166,167,168,169],"issues","github issues","triage","triage github issues","github","tracker","issue","duplicates","up","use","clean","new","when","true","issue tracker","missing","type",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":33},"01M6994NJCFZQXX8XKRE8BWHEM","release-dart-package","Prepares and publishes a new version of a Dart package to pub.dev, from the version bump to the GitHub release. Use when asked to cut, tag or publish a release.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fskills_lint.dart\u002Fblob\u002Fmain\u002Fpackages\u002Fskills_lint\u002Fbenchmark\u002Fsample_skills\u002Frelease-dart-package\u002FSKILL.md",[],[93,177,178,22,179,164,165,166,180,181,182,183,184,162,185,186,187,188,157,189],"release dart package","release","github cli","rights","with","version bump","bump","version","Bash","publish","dev","sdk","cli"]