dart-skills-lint-setup

Par flutter · skills

Utilisez cette skill lorsque vous devez mettre en place la validation des skills d'un agent IA dans un projet Dart pour la première fois. Cela inclut l'ajout de dépendances, la configuration du linter, la mise en place des tests et la création d'un workflow CI.

npx skills add https://github.com/flutter/skills --skill dart-skills-lint-setup

Configuration de la validation des Skills avec dart_skills_lint

Sommaire

Configuration pour les développeurs Dart

Configurez la validation dans votre projet Dart :

  1. Ajoutez dart_skills_lint à votre pubspec.yaml en tant que dev_dependency. S'il est publié sur pub.dev :

    dev_dependencies:
      dart_skills_lint: ^0.2.0

    S'il s'agit d'un package local ou hébergé sur Git, utilisez une dépendance de chemin ou de Git :

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

    Note : L'exemple de test ci-dessous nécessite également que package:logging et package:test soient ajoutés à vos dev_dependencies s'ils ne sont pas déjà présents.

  2. Intégrez le linter dans vos tests automatisés en important le package et en appelant validateSkills. Cela garantit que vos skills sont automatiquement validés chaque fois que vous exécutez dart test.

    Exemple test/lint_skills_test.dart :

    import 'dart:async';
    import 'package:dart_skills_lint/dart_skills_lint.dart';
    import 'package:logging/logging.dart';
    import 'package:test/test.dart';
    
    void main() {
      test('Run skills linter', () async {
        final Level oldLevel = Logger.root.level;
        Logger.root.level = Level.ALL;
        final StreamSubscription<LogRecord> subscription =
            Logger.root.onRecord.listen((record) => print(record.message));
    
        try {
          final isValid = await validateSkills(
            skillDirPaths: ['.agents/skills'],
            resolvedRules: {
              'check-relative-paths': AnalysisSeverity.error,
              'check-trailing-whitespace': AnalysisSeverity.error,
            },
          );
          expect(isValid, isTrue, reason: 'Skills validation failed. See above for details.');
        } finally {
          Logger.root.level = oldLevel;
          await subscription.cancel();
        }
      });
    }
  3. (Optionnel) Créez un fichier de configuration dart_skills_lint.yaml à la racine de votre projet pour personnaliser les règles et répertoires pour la CLI : Note : Si vous utilisez validateSkills directement dans les tests, le fichier dart_skills_lint.yaml est ignoré par défaut, et vous devez transmettre la configuration par programme si nécessaire.

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

    Note : Les règles suivantes sont activées par défaut et n'ont pas besoin d'être listées sauf si vous souhaitez modifier leur sévérité ou les désactiver : check-absolute-paths, valid-yaml-metadata, invalid-skill-name, description-too-long.

Intégration initiale dans un dépôt

Lors de l'ajout de dart_skills_lint à un dépôt pour la première fois, suivez ces bonnes pratiques :

  • Isolez la dépendance : Ajoutez-la à un package spécifique qui gère l'outillage ou les tests (par exemple, tool/pubspec.yaml) plutôt qu'à la racine.
  • Synchronisez les hashes : Si vous devez l'ajouter à plusieurs fichiers pubspec.yaml (par exemple, racine et package d'outil), assurez-vous que la ref (commit hash) est identique pour éviter les conflits de résolution.
  • Générer une baseline : Si vous intégrez dans un dépôt avec des skills existants présentant des erreurs héritées, utilisez la fonctionnalité de baseline :
    dart run dart_skills_lint:cli --skills-directory=.agents/skills --generate-baseline

Configuration du workflow GitHub

Pour appliquer la validation des skills dans la CI, ajoutez un fichier de workflow GitHub (par exemple, .github/workflows/dart_skills_validation.yaml) :

name: dart_skills_validation
permissions: read-all

on:
  pull_request:
    paths:
      - '.agents/skills/**'
      - 'tool/**' # Ajustez au chemin de votre package d'outil
  push:
    branches: [ main ]
    paths:
      - '.agents/skills/**'
      - 'tool/**'

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dart-lang/setup-dart@v1
    - name: Install dependencies
      run: dart pub get
      working-directory: tool # Ajustez au chemin de votre package d'outil
    - name: Run skills validation
      run: dart test
      working-directory: tool # Ajustez au chemin de votre package d'outil

Skills similaires