AgentSkillsCN

safety-check

提交前的安全性校验

SKILL.md
--- frontmatter
description: "Pre-commit security validation"
name: "safety-check"

Skill: Safety Check

Valide la sécurité des fichiers avant commit (secrets, .env, schemas protégés, fichiers volumineux).

Usage

bash
/safety-check

Règles de Sécurité

  • Ne jamais ajouter de secrets en dur (tokens, credentials, DSN, clés)
  • Ne pas committer de .env / .env.*
  • Éviter de logguer des données personnelles
  • Schéma analytics Prisma : READ-ONLY (deprecated)

(Voir AGENTS.md pour détails)

Workflow

1. Détecter les Fichiers Staged

bash
git status --porcelain

Parser la sortie pour obtenir la liste des fichiers :

  • A : Fichier ajouté
  • M : Fichier modifié
  • D : Fichier supprimé
  • ?? : Fichier non tracké

2. Vérifications de Sécurité

3.1 Bloquer Fichiers .env

bash
git diff --cached --name-only | grep -E '\.env(\.|$)'

Si match trouvé :

code
❌ ERREUR: Fichiers .env détectés en staging
→ Fichiers : .env, api/.env.local
→ AGENTS.md: Ne pas committer de .env / .env.*
→ Action : Retirer ces fichiers du staging (git reset HEAD <file>)

Exit code 1 (bloque le commit)

3.2 Détecter Secrets Hardcodés

Patterns à rechercher dans les fichiers staged :

  • password\s*=\s*['"][^'"]+['"]
  • api[_-]?key\s*=\s*['"][^'"]+['"]
  • token\s*=\s*['"][^'"]+['"]
  • mongodb\+srv://[^'"]+
  • postgres://[^'"]+
  • Bearer\s+[A-Za-z0-9\-._~+/]+=*
bash
# Pour chaque fichier staged
git diff --cached -U0 <file> | grep -E '(password|api[_-]?key|token|mongodb\+srv|postgres://|Bearer\s+)'

Si match trouvé :

code
⚠️  WARNING: Potentiel secret hardcodé détecté
→ Fichier : api/src/config/database.ts:42
→ Pattern : mongodb+srv://...
→ AGENTS.md: Ne jamais ajouter de secrets en dur
→ Action : Remplacer par variable d'environnement (process.env.DATABASE_URL)

Demander confirmation utilisateur avant de continuer.

3.3 Bloquer Modifications du Schéma Analytics

bash
git diff --cached --name-only | grep 'api/prisma/analytics/schema.analytics.prisma'

Si match trouvé :

code
❌ ERREUR: Modification du schéma analytics interdite
→ Fichier : api/prisma/analytics/schema.analytics.prisma
→ api/AGENTS.md: Le schéma analytics est deprecated (lecture seule)
→ Action : Utiliser dbmate pour migrations analytics (analytics/migrations/)

Exit code 1 (bloque le commit)

3.4 Vérifier Taille des Fichiers

bash
# Pour chaque fichier staged
git diff --cached --stat <file> | awk '{print $NF}'

Extraire la taille. Si > 1MB :

code
⚠️  WARNING: Fichier volumineux détecté
→ Fichier : app/public/video.mp4 (12.5 MB)
→ Action : Considérer Git LFS ou hébergement externe

Demander confirmation utilisateur avant de continuer.

3. Résumé

Si aucune erreur bloquante :

code
✅ Safety checks passed
→ Fichiers vérifiés : 12
→ Warnings : 0
→ Erreurs : 0

Exit code 0

Si erreurs bloquantes :

code
❌ Safety checks failed
→ Fichiers vérifiés : 12
→ Warnings : 1
→ Erreurs : 2
→ Action : Corriger les erreurs avant de committer

Exit code 1

Intégration avec /commit

Le skill /commit doit toujours exécuter /safety-check avant de créer le commit.

markdown
## Workflow /commit

1. Détecter changements (git status, git diff)
2. **Exécuter /safety-check** ← CRITIQUE
3. Si safety-check échoue → STOP (ne pas créer le commit)
4. Analyser scope et type
5. Générer message
6. Valider avec commitlint
7. Créer commit

Configuration

Permissions requises dans .claude/settings.local.json :

  • Bash(git status:*)
  • Bash(git diff:*)
  • Bash(grep:*)
  • Read(*)

Notes

  • Ce skill est non-interactif pour les erreurs bloquantes (exit immédiat)
  • Pour les warnings, demander confirmation utilisateur
  • Les patterns de secrets peuvent être étendus selon les besoins du projet
  • Compatible avec hooks Git existants (Husky)