Configuration de la validation des Skills avec dart_skills_lint
Sommaire
- Configuration pour les développeurs Dart
- Intégration initiale dans un dépôt
- Configuration du workflow GitHub
Configuration pour les développeurs Dart
Configurez la validation dans votre projet Dart :
-
Ajoutez
dart_skills_lintà votrepubspec.yamlen tant quedev_dependency. S'il est publié sur pub.dev :dev_dependencies: dart_skills_lint: ^0.2.0S'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_lintNote : L'exemple de test ci-dessous nécessite également que
package:loggingetpackage:testsoient ajoutés à vosdev_dependenciess'ils ne sont pas déjà présents. -
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écutezdart 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(); } }); } -
(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 utilisezvalidateSkillsdirectement dans les tests, le fichierdart_skills_lint.yamlest 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 laref(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