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.
75
95%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
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/skillsIf it's installed globally with dart pub global activate:
dart pub global run dart_skills_lint:cli -d .agents/skillsRun dart run dart_skills_lint:cli --help for the full flag list
(skip the inline duplicate so it never goes stale).
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.8aaa41d
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.