com um clique
lint
Contextual linting
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
Contextual linting
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
Create formatted branches
Generate deployment summary
Create conventional commits
Create pull requests
Pre-commit security validation
| description | Contextual linting |
| name | lint |
| version | 1.0.0 |
Exécute le linting contextuel selon les domaines modifiés (ESLint + SQLFluff).
/lint # Lint les domaines modifiés
/lint --fix # Lint avec auto-fix
/lint --all # Lint tout le monorepo
# Fichiers modifiés (staged + unstaged)
git diff --name-only HEAD
# Fichiers staged uniquement (si mode pre-commit)
git diff --cached --name-only
Parser les chemins pour déterminer les domaines :
api/**/*.{ts,js,tsx,jsx} → ESLint APIapp/**/*.{ts,js,tsx,jsx} → ESLint Appwidget/**/*.{ts,js,tsx,jsx} → ESLint Widgetanalytics/src/**/*.{ts,js} → ESLint Analyticsanalytics/dbt/models/**/*.sql → SQLFluff dbtExemple :
Fichiers modifiés :
- api/src/controllers/events.ts
- api/src/services/tracking.ts
- widget/components/Filter.tsx
- analytics/dbt/models/missions/active.sql
→ Domaines détectés :
- api (ESLint)
- widget (ESLint)
- analytics (SQLFluff)
Lint seulement les domaines avec fichiers modifiés.
Avantages :
Si aucun fichier lintable modifié :
→ Aucun fichier à linter détecté
→ Fichiers modifiés : 3
- README.md (documentation)
- docker-compose.yml (config)
- terraform/main.tf (infra)
→ Action : Aucun linting nécessaire
STOP : Exit code 0 (succès)
--all)Lint tous les domaines, même non modifiés.
/lint --all
Avantages :
Inconvénients :
Pour chaque domaine ESLint détecté :
# Lint API
cd api && npm run lint
Commande sous-jacente (voir api/package.json) :
eslint . --ext .ts,.js --max-warnings 0
Si flag --fix :
cd api && npm run lint:fix
# ou
cd api && eslint . --ext .ts,.js --fix
# Lint App
cd app && npm run lint
# Lint Widget
cd widget && npm run lint
Commande sous-jacente (Next.js) :
next lint --max-warnings 0
# Lint Analytics
cd analytics && npm run lint
Si fichiers SQL modifiés dans analytics/dbt/models/ :
# Lint dbt models
cd analytics/dbt && sqlfluff lint models/
Configuration : .sqlfluff (si existe dans analytics/dbt/)
Si flag --fix :
cd analytics/dbt && sqlfluff fix models/
Pour chaque domaine, collecter :
Parser la sortie ESLint :
Exemple sortie :
/path/to/file.ts
12:5 error 'foo' is not defined no-undef
24:10 warning Unexpected console statement no-console
✖ 2 problems (1 error, 1 warning)
Extraire :
file.tsParser la sortie SQLFluff :
Exemple sortie :
== [models/missions/active.sql] FAIL
L: 12 | P: 5 | L034 | Select wildcards not allowed
L: 24 | P: 10 | L010 | Inconsistent capitalisation
All Finished. FAIL: 1 files
Extraire :
models/missions/active.sql✅ Linting réussi
→ Domaines vérifiés : 3
- api : ✓ (45 fichiers)
- widget : ✓ (32 fichiers)
- analytics : ✓ (12 models SQL)
→ Erreurs : 0
→ Warnings : 0
Exit code 0
⚠️ Linting avec warnings
→ Domaines vérifiés : 2
- api : ⚠️ (2 warnings)
- widget : ✓
→ Warnings : 2
- api/src/controllers/events.ts:24 - Unexpected console statement
→ Action : Corriger les warnings ou exécuter /lint --fix
Exit code 0 (warnings non bloquants selon config)
❌ Linting échoué
→ Domaines vérifiés : 3
- api : ❌ (3 errors, 1 warning)
- widget : ✓
- analytics : ❌ (2 errors)
→ Erreurs : 5
→ Warnings : 1
→ Détails :
**API** :
- api/src/controllers/events.ts:12 - 'foo' is not defined
- api/src/controllers/events.ts:45 - Missing return type
- api/src/services/tracking.ts:8 - Unused variable 'bar'
**Analytics (SQLFluff)** :
- models/missions/active.sql:12 - Select wildcards not allowed
- models/missions/active.sql:24 - Inconsistent capitalisation
→ Action : Corriger les erreurs ou exécuter /lint --fix
Exit code 1
Si flag --fix activé :
/lint --fix
Exécuter avec auto-fix :
# ESLint
eslint . --ext .ts,.js --fix
# SQLFluff
sqlfluff fix models/
Afficher les corrections :
🔧 Linting avec auto-fix
→ Corrections appliquées : 8
- api : 5 fixes
- widget : 2 fixes
- analytics : 1 fix
→ Erreurs restantes : 2 (non auto-fixables)
→ Détails :
**Corrigé automatiquement** :
- api/src/controllers/events.ts:24 - Console statement supprimé
- api/src/services/tracking.ts:8 - Variable 'bar' supprimée
- analytics/dbt/models/missions/active.sql:24 - Capitalisation corrigée
**Erreurs restantes (manuel requis)** :
- api/src/controllers/events.ts:12 - 'foo' is not defined
- analytics/dbt/models/missions/active.sql:12 - Select wildcards not allowed
→ Action : Corriger manuellement les erreurs restantes
Vérifier les changements :
git diff
Proposer de commiter les fixes :
→ Voulez-vous commiter les corrections automatiques ? (y/n)
Si y :
git add <fichiers_corrigés>
# Utiliser /commit avec scope approprié
/commitLe skill /commit peut optionnellement exécuter /lint avant de commiter.
Workflow recommandé :
/lint (vérifier avant commit)/lint --fix/commit (créer le commit)Mode strict (optionnel) :
Dans /commit, ajouter une vérification :
# Exécuter /lint en mode check
/lint
# Si exit code != 0 (erreurs)
if [ $? -ne 0 ]; then
echo "❌ Linting échoué, commit bloqué"
echo "→ Action : Corriger les erreurs via /lint --fix"
exit 1
fi
Fichiers modifiés :
- api/src/controllers/events.ts
- api/src/services/tracking.ts
→ Commande : /lint
✅ Linting réussi
→ Domaines : api (✓)
→ Erreurs : 0
Fichiers modifiés :
- api/src/controllers/events.ts
- widget/components/Filter.tsx
- analytics/dbt/models/missions/active.sql
→ Commande : /lint
❌ Linting échoué
→ Domaines :
- api : ✓
- widget : ⚠️ (1 warning)
- analytics : ❌ (2 errors)
→ Erreurs : 2 (analytics)
Fichiers modifiés :
- api/src/controllers/events.ts (3 warnings)
→ Commande : /lint --fix
🔧 Corrections appliquées : 3
✅ Aucune erreur restante
→ Voulez-vous commiter les corrections ? (y/n)
→ Commande : /lint --all
✅ Linting réussi
→ Domaines : api, app, widget, analytics
→ Fichiers vérifiés : 342
→ Erreurs : 0
→ Durée : 12.5s
Exclure automatiquement :
**/*.generated.ts**/prisma/generated/**/dbt/target/**/.next/Configuration ESLint : .eslintignore
Chaque domaine a sa config :
api/.eslintrc.jsonapp/.eslintrc.jsonwidget/.eslintrc.jsonanalytics/.eslintrc.jsonanalytics/dbt/.sqlfluffPour ignorer temporairement (debugging) :
/lint --no-fail
Exécute le linting mais ne bloque pas (exit code 0 même avec erreurs).
Afficher les erreurs mais ne pas fail.
/lint --domain api
/lint --file api/src/controllers/events.ts
Lint seulement un domaine ou fichier spécifique.
Permissions requises dans .claude/settings.local.json :
Bash(npm run lint:*)Bash(git diff:*)Read(*)Le workflow .github/workflows/lint.yml :
Différence avec le skill :
/lint : Manuel, local, pré-commitLe skill permet de valider avant de pousser (évite échecs CI).