mcpbeat Sign in

Dart Skills Lint Integration Agent Skill

> How to integrate, update, and configure the dart_skills_lint validation tool within a repository. Make sure to use this skill whenever the user asks to update dart_skills_lint, configure skills validation tests, fix skills linter dependency drifts, verify repository state before editing, optimize lint rules execution, or draft pull request submission commands.

2k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
2776
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/flutter/agent-plugins --skill dart-skills-lint-integration

The instruction itself

13 sections, as written by the author

Integrating and Configuring dart_skills_lint

Use this skill to verify repository state, update pinned references, manage

centralized configurations, implement efficient validation test suites, and

output clean pull request commands for dart_skills_lint.

Pre-Flight Repository Verification

Before initiating any modifications or executing dependency updates, ensure

the repository is in a clean, safe state:

  • Run git status to confirm the repository has no active work in progress.
  • If clean, check out the primary tracking branch (e.g., main or master).
  • Fast-forward update from the remote owned by the authoritative org.
  • If post-checkout hooks report engine updates, run necessary sync utilities

(such as gclient sync) to guarantee consistency before proceeding.

Dependency Management Workflow

When updating dart_skills_lint within a workspace or standalone project:

  • Locate the target pubspec.yaml defining the dependency.
  • Update the pinned Git commit reference directly in the ref field.
  • Synchronize the lockfile natively using the environment's package manager.

Example: Pinned Git Dependency

  dart_skills_lint:
    git:
      url: https://github.com/flutter/skills
      path: tool/dart_skills_lint
      ref: e4497873950727ee781fa411c1a2f624b1ec50c6

Centralized Configuration Schema

Configure rules and target paths globally via dart_skills_lint.yaml. Always

define paths relative to the repository root execution context. Ensure that

rules at the directory level are properly oriented within a nested rules map.

Standard Schema Implementation

dart_skills_lint:
  rules:
    check-relative-paths: error
    check-absolute-paths: error
    check-trailing-whitespace: error
  directories:
    - path: ".agents/skills"

Validation Test Implementation Patterns

To centralize rule management, load Configuration dynamically via

ConfigParser.loadConfig and supply it to validateSkills.

If test suites execute under simple environments with stable execution roots,

omit the skillDirPaths parameter entirely to natively inherit target paths

defined within the YAML configuration.

Absolute Isolation Pattern: If test harnesses manipulate runtime

execution working directories (such as CI frameworks running tests inside

sub-package folders), guarantee path resilience by resolving configuration

files absolutely using dynamic directory contexts (e.g., repoRoot.path).

Explicitly inject absolute skillDirPaths targeting; global rules defined

under rules: map unconditionally regardless of explicit target path usage.

When updating an existing validation block, explicitly audit any adjacent

TODO or tracker comments. If the comment describes refactoring config

loading or references issues resolved by this update, delete the comment

block entirely.

Core Validation Workflow

import 'package:path/path.dart' as path;
import 'package:dart_skills_lint/dart_skills_lint.dart';

const String _configFileName = 'dart_skills_lint.yaml';

test('Validate Repository Skills', () async {
  // Use dynamic absolute resolution references to guarantee CI stability
  final Configuration config = await ConfigParser.loadConfig(
    path: path.join(repoRoot.path, 'path', 'to', _configFileName),
  );
  expect(
    config.directoryConfigs,
    isNotEmpty,
    reason: 'Configuration directoryConfigs should not be empty.',
  );
  final bool isValid = await validateSkills(
    skillDirPaths: [skillsDirectory], // Explicit absolute targeting
    config: config,
  );
  expect(isValid, isTrue);
});

Eliminating Duplicate Overhead in Secondary Blocks

Secondary test blocks enforcing specialized custom rules without loading the

shared configuration must supply target paths explicitly. To prevent

duplicate execution overhead, explicitly map all default registered

built-in rules to AnalysisSeverity.disabled.

test('Custom Rule Validation', () async {
  final bool isValid = await validateSkills(
    skillDirPaths: ['path/to/skills'],
    customRules: [MyCustomRule()],
    resolvedRuleConfigs: {
      'check-absolute-paths': const RuleConfigPatch(severity: AnalysisSeverity.disabled),
      'check-relative-paths': const RuleConfigPatch(severity: AnalysisSeverity.disabled),
      'check-trailing-whitespace': const RuleConfigPatch(severity: AnalysisSeverity.disabled),
      'description-too-long': const RuleConfigPatch(severity: AnalysisSeverity.disabled),
      'disallowed-field': const RuleConfigPatch(severity: AnalysisSeverity.disabled),
      'invalid-skill-name': const RuleConfigPatch(severity: AnalysisSeverity.disabled),
      'valid-yaml-metadata': const RuleConfigPatch(severity: AnalysisSeverity.disabled),
    },
  );
  expect(isValid, isTrue);
});

Expected Final Output: Pull Request Creation Command

Conclude tasks by staging verified work on a descriptive local branch

(suffixed with the date in YYYY-MM-DD format), committing the changes with

a concise, standard commit message, and outputting a fully executable

gh pr create command.

Discovering and Populating the Pull Request Template

To ensure formatting compliance, always look up the target repository's native

pull request template before generating the submission body:

  • Locate Template: Search for template files within .github/,

.github/PULL_REQUEST_TEMPLATE/, or the project root. Common filenames

include PULL_REQUEST_TEMPLATE.md or pull_request_template.md.

  • Extract Structure: Read the discovered file to identify required

markdown headers, description placeholders, issue citation rules, and

checklists.

  • Populate Content: Replace placeholders with clear context summarizing

the dependency rolls, configurations created, and rule blocks optimized.

Check all applicable verification boxes ([x]).

  • Fallback: If no native template exists, construct a clean submission

body containing a brief summary of modifications, relevant issue links,

and static analysis/testing outcomes.

Output Command Structure

gh pr create \
  --title "Update dart_skills_lint dependency to <hash> and centralize config" \
  --body "<populated repository template content>"

Tips for the Flutter Repository (flutter/flutter)

When operating directly within the main Flutter codebase:

  • Package Resolution: Run bin/flutter pub get at the repository root

instead of dart pub get to prevent SDK version mismatch errors.

  • Checksum Integrity: Updating dependencies natively breaks autogenerated

pubspec checksum hashes. Always recalculate and update stale hashes by

running bin/flutter update-packages --update-hashes.

  • Test Orchestration: Run repository unit tests from the root context:

bin/flutter test dev/tools/test/validate_skills_test.dart.

  • Verification: Ensure zero static analysis warnings using `dart analyze

--fatal-infos and format all source code cleanly with dart format`.

Other skills for the same job

different authors, same section of the catalogue
Receiving Code Review
by ZhanlinCui
×7

Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation

2k tokens
Requesting Code Review
by ZhanlinCui
×6

Use when completing tasks, implementing major features, or before merging to verify work meets requirements

2k tokens
Git Commit
by github
vendor ×3

Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions "/commit". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff, (3) Interactive commit with optional type/scope/description overrides, (4) Intelligent file staging for logical grouping

799 tokens
Github Code Review
by ComeOnOliver
×3

Comprehensive GitHub code review with AI-powered swarm coordination

13k tokens
Karpathy Guidelines
by hyyhf
×3

Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid overcomplication, make surgical changes, surface assumptions, and define verifiable success criteria.

629 tokens
Code Reviewer
by google-gemini
vendor ×2

Use this skill to review code. It supports both local changes (staged or working tree) and remote Pull Requests (by ID or URL). It focuses on correctness, maintainability, and adherence to project standards.

795 tokens
Agent MD Refactor
by softaworks
×2

Refactor bloated AGENTS.md, CLAUDE.md, or similar agent instruction files to follow progressive disclosure principles. Splits monolithic files into organized, linked documentation.

4k tokens
Commit Work
by softaworks
×2

Create high-quality git commits: review/stage intended changes, split into logical commits, and write clear commit messages (including Conventional Commits). Use when the user asks to commit, craft a commit message, stage changes, or split work into multiple commits.

2k tokens

How to use it

Copy the folder

Take flutter/dart-skills-lint-integration from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

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.