Agent Skillsflutter/agent-plugins › dart-skills-lint-validation

dart-skills-lint-validation

GitHub

使用 dart_skills_lint 工具对 AI Agent 技能进行验证,包括运行 Linter、分析失败原因、修复违规项以及编写自定义规则。

tool/dart_skills_lint/skills/dart-skills-lint-validation/SKILL.md flutter/agent-plugins

Trigger Scenarios

需要验证 AI Agent 技能的合规性 Linter 报告了技能文件违规错误 需要为技能检查编写自定义规则

Install

npx skills add flutter/agent-plugins --skill dart-skills-lint-validation -g -y
More Options

Non-standard path

npx skills add https://github.com/flutter/agent-plugins/tree/main/tool/dart_skills_lint/skills/dart-skills-lint-validation -g -y

Use without installing

npx skills use flutter/agent-plugins@dart-skills-lint-validation

指定 Agent (Claude Code)

npx skills add flutter/agent-plugins --skill dart-skills-lint-validation -a claude-code -g -y

安装 repo 全部 skill

npx skills add flutter/agent-plugins --all -g -y

预览 repo 内 skill

npx skills add flutter/agent-plugins --list

SKILL.md

Frontmatter
{
    "name": "dart-skills-lint-validation",
    "metadata": {
        "internal": true
    },
    "description": "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."
}

Validating Skills with dart_skills_lint

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.

Running the linter

If dart_skills_lint is in pubspec.yaml:

dart run dart_skills_lint:cli -d .agents/skills

If it's installed globally with dart install:

dart_skills_lint -d .agents/skills

If it's activated 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 (or dart_skills_lint --help) for the full flag list (skip the inline duplicate so it never goes stale).

Workflow for a failing run

  1. Run the validator.
  2. Read the errors. Each diagnostic names the rule that fired, the offending value, and a suggested fix when one applies.
  3. Fix the violations. For fixable rules (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.
  4. Re-run to confirm the run is clean.

Task progress

  • Run validator
  • Read errors
  • Fix violations (manual or --fix / --fix --dry-run)
  • Verify clean run

Authoring a custom rule

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()],
    );
  });
}

Related

Version History

  • c3c71cf Current 2026-08-20 07:12

Same Skill Collection

.agents/agents/reidbaker-agent/skills/api-review/SKILL.md
.agents/agents/reidbaker-agent/skills/code-documentation/SKILL.md
.agents/agents/reidbaker-agent/skills/code-review/SKILL.md
.agents/agents/reidbaker-agent/skills/grill-with-docs/SKILL.md
.agents/agents/reidbaker-agent/skills/natural-writing/SKILL.md
.agents/agents/reidbaker-agent/skills/unix-cli-best-practices/SKILL.md
skills/dart-add-unit-test/SKILL.md
skills/dart-build-cli-app/SKILL.md
skills/dart-collect-coverage/SKILL.md
skills/dart-fix-runtime-errors/SKILL.md
skills/dart-generate-test-mocks/SKILL.md
skills/dart-migrate-to-checks-package/SKILL.md
skills/dart-resolve-package-conflicts/SKILL.md
skills/dart-run-static-analysis/SKILL.md
skills/dart-use-ffigen/SKILL.md
skills/dart-use-pattern-matching/SKILL.md
skills/dart-use-primary-constructors/SKILL.md
skills/flutter-add-integration-test/SKILL.md
skills/flutter-add-widget-preview/SKILL.md
skills/flutter-add-widget-test/SKILL.md
skills/flutter-apply-architecture-best-practices/SKILL.md
skills/flutter-build-responsive-layout/SKILL.md
skills/flutter-fix-layout-issues/SKILL.md
skills/flutter-implement-json-serialization/SKILL.md
skills/flutter-setup-declarative-routing/SKILL.md
skills/flutter-setup-localization/SKILL.md
skills/flutter-use-http-package/SKILL.md
tool/dart_skills_lint/.agents/skills/add-dart-lint-validation-rule/SKILL.md
tool/dart_skills_lint/.agents/skills/check-downstream-consumers/SKILL.md
tool/dart_skills_lint/.agents/skills/contributor-pr-description/SKILL.md
tool/dart_skills_lint/.agents/skills/dart-skills-lint-integration/SKILL.md
tool/dart_skills_lint/.agents/skills/definition-of-done/SKILL.md
tool/dart_skills_lint/.agents/skills/run-evals/SKILL.md
tool/dart_skills_lint/example/skills/invalid/SKILL.md
tool/dart_skills_lint/example/skills/valid/SKILL.md
tool/dart_skills_lint/skills/dart-skills-lint-setup/SKILL.md
skills/dart-setup-ffi-assets/SKILL.md

Metadata

Files
0
Version
c3c71cf
Hash
69283236
Indexed
2026-08-20 07:12

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-25 16:55
浙ICP备14020137号-1 $방문자$