with one click
lint
Contextual linting
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Contextual linting
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
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).