Git Hooks
AIDF inclut des git hooks qui valident automatiquement votre workflow au moment du commit et du push.
Ce que Font les Hooks
Section intitulée « Ce que Font les Hooks »| Hook | Objectif |
|---|---|
pre-commit | Valide les fichiers staged par rapport aux portées des tâches actives (chemins interdits) |
commit-msg | Valide le format de message de commit conventionnel |
pre-push | Exécute les commandes de validation configurées (lint, typecheck, tests) |
Démarrage Rapide
Section intitulée « Démarrage Rapide »# Install hooks (auto-detects husky if present)aidf hooks install
# Remove hooksaidf hooks uninstallMéthodes d’Installation
Section intitulée « Méthodes d’Installation »Git Hooks Directs
Section intitulée « Git Hooks Directs »Si votre projet n’utilise pas husky ou pre-commit, AIDF installe les hooks directement dans .git/hooks/ :
aidf hooks installCela crée des scripts exécutables dans .git/hooks/pre-commit, .git/hooks/commit-msg et .git/hooks/pre-push.
Utilisez --force pour écraser les hooks existants :
aidf hooks install --forceIntégration Husky
Section intitulée « Intégration Husky »AIDF détecte automatiquement husky en vérifiant :
- Un répertoire
.husky/ huskydans les dépendances depackage.json- Un script
preparecontenanthusky
Lorsque husky est détecté, les hooks sont installés dans .husky/ au lieu de .git/hooks/.
Vous pouvez également forcer le mode husky :
aidf hooks install --huskyConfigurer husky depuis zéro
Section intitulée « Configurer husky depuis zéro »Si votre projet n’a pas encore husky :
npm install --save-dev huskynpx husky initaidf hooks install --huskyExemple : husky + lint-staged + AIDF
Section intitulée « Exemple : husky + lint-staged + AIDF »Une configuration courante combine husky, lint-staged et les hooks AIDF :
{ "scripts": { "prepare": "husky" }, "lint-staged": { "*.{ts,tsx}": ["eslint --fix", "prettier --write"], "*.{json,md}": ["prettier --write"] }}.husky/pre-commit :
npx lint-staged# AIDF - scope and format validationnpx aidf-hook-pre-commitLorsque AIDF détecte des hooks existants, il ajoute sa validation à la suite plutôt que de remplacer le fichier.
Framework pre-commit (Python)
Section intitulée « Framework pre-commit (Python) »Pour les projets utilisant le framework pre-commit :
aidf hooks install --pre-commitCela génère un .pre-commit-config.yaml (ou s’ajoute à un fichier existant) :
repos: - repo: local hooks: - id: aidf-scope-check name: AIDF Scope Validation entry: npx aidf-hook-pre-commit language: system always_run: true - id: aidf-commit-msg name: AIDF Commit Message Format entry: npx aidf-hook-commit-msg language: system stages: [commit-msg]Puis activez avec :
pre-commit installDétails des Hooks
Section intitulée « Détails des Hooks »pre-commit : Validation de Portée
Section intitulée « pre-commit : Validation de Portée »Le hook pre-commit lit tous les fichiers de tâches actives (non terminées) dans .ai/tasks/ et vérifie les fichiers staged par rapport à leurs patterns de chemins interdits.
Le comportement dépend du paramètre scopeEnforcement dans .ai/config.yml :
| Mode | Comportement |
|---|---|
strict | Bloque le commit si un fichier staged correspond à un pattern interdit |
ask | Affiche un avertissement mais autorise le commit |
permissive | Ignore complètement la validation |
commit-msg : Validation du Format
Section intitulée « commit-msg : Validation du Format »Valide que les messages de commit suivent les Conventional Commits :
type(scope?): descriptionTypes valides : feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert
Exemples :
feat: add user authenticationfix(api): resolve timeout issuedocs: update READMErefactor(auth): simplify token validationLes commits de merge et de revert sont autorisés sans validation.
Le hook avertit également (mais ne bloque pas) si l’en-tête dépasse 72 caractères.
pre-push : Commandes de Validation
Section intitulée « pre-push : Commandes de Validation »Exécute les commandes de validation depuis .ai/config.yml avant le push :
validation: lint: npm run lint typecheck: npm run typecheck test: npm run testSi une commande échoue, le push est bloqué.
Désinstallation
Section intitulée « Désinstallation »aidf hooks uninstallCela supprime uniquement les hooks générés par AIDF. Si AIDF a été ajouté à un hook husky existant, seul le bloc AIDF est supprimé.