flutter/dart-skills-lint-validation
|- 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.
npx skills add https://github.com/flutter/agent-plugins --skill dart-skills-lint-validation
This skill covers day-to-day use: running the linter, walking
through a failing run, and writing a custom rule when defaults
aren't enough. For first-time wiring (adding the dep, creating the
config file, generating a baseline) see
dart-skills-lint-setup. The
full rule reference (default severities, diagnostic shapes,
fixability) lives in RULES.md.
If dart_skills_lint is in pubspec.yaml:
dart run dart_skills_lint:cli -d .agents/skills
If it's installed globally with dart pub global activate:
dart pub global run dart_skills_lint:cli -d .agents/skills
Run dart run dart_skills_lint:cli --help for the full flag list
(skip the inline duplicate so it never goes stale).
the offending value, and a suggested fix when one applies.
(check-absolute-paths, check-trailing-whitespace,
invalid-skill-name), pass --fix to write the corrections
to disk; add --dry-run to preview the diff first.
--fix / --fix --dry-run)Extend SkillRule and pass the rule into validateSkills:
import 'package:dart_skills_lint/dart_skills_lint.dart';
class DeprecatedSkillRule extends SkillRule {
@override
final String name = 'deprecated-skill';
@override
final AnalysisSeverity severity = AnalysisSeverity.warning;
@override
Future<List<ValidationError>> validate(SkillContext context) async {
final errors = <ValidationError>[];
final yaml = context.parsedYaml;
if (yaml == null) return errors;
if (yaml['metadata']?['deprecated'] == true) {
errors.add(ValidationError(
ruleId: name,
severity: severity,
file: 'SKILL.md',
message: 'This skill is marked as deprecated.',
));
}
return errors;
}
}
Wire it up in a Dart test:
import 'package:dart_skills_lint/dart_skills_lint.dart';
import 'package:test/test.dart';
void main() {
test('skills pass with deprecated-skill custom rule', () async {
final config = await ConfigParser.loadConfig();
expect(
config.directoryConfigs,
isNotEmpty,
reason: 'Configuration directoryConfigs should not be empty.',
);
await validateSkills(
config: config,
customRules: [DeprecatedSkillRule()],
);
});
}
dart-skills-lint-setup —first-time wiring.
RULES.md — canonical rule reference.README.md — installation, configuration,integration recipes.
Take flutter/dart-skills-lint-validation from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.