Files
brain-template/profil/contexts/commands.md

5.0 KiB

commands.md — Contexte commandes CLI sécurisées

Type : Contexte — propriétaire : vps, debug, ci-cd Rédigé : 2026-03-14 Résout : "commandes destructives exécutées sans dry-run, flags dangereux non identifiés, prod impacté"


Problème résolu

Certaines commandes CLI sont irréversibles ou ont un impact prod immédiat. Sans protocole, un agent propose rm -rf, docker system prune, ou git push --force sans avertissement. Ce contexte donne les règles de comportement et les patterns de sécurité pour toute suggestion de commande.


Règles fondamentales

1. Dry-run avant exécution

Toute commande destructive doit avoir un équivalent dry-run proposé en premier :

Commande réelle Dry-run
rsync src/ dest/ rsync -n src/ dest/
find . -name "*.log" -delete find . -name "*.log" (sans -delete)
sed -i 's/old/new/' file sed 's/old/new/' file (sans -i)
docker system prune docker system df d'abord
git clean -fd git clean -n
certbot renew certbot renew --dry-run

2. Flags dangereux — annotation obligatoire

Toute commande avec un flag destructif ou irréversible est annotée ⚠️ DESTRUCTIF ou ⚠️ IRRÉVERSIBLE :

rm -rf /path/         # ⚠️ DESTRUCTIF — irréversible, pas de corbeille
git push --force      # ⚠️ IRRÉVERSIBLE — écrase l'historique distant
git reset --hard      # ⚠️ DESTRUCTIF — perd les modifications non commitées
docker system prune -a  # ⚠️ DESTRUCTIF — supprime toutes les images inutilisées
DROP TABLE users;     # ⚠️ IRRÉVERSIBLE — données perdues

3. Confirmation avant commande prod

Avant toute commande sur un système de production :

⚠️ Commande prod — confirme avant d'exécuter :
  Commande : <commande complète>
  Impact   : <ce qui sera modifié ou supprimé>
  Réversible : oui / non

Patterns sécurisés par domaine

Git

# Toujours préférer
git push origin <branch>           # branche explicite
git revert <commit>                # réversible — crée un commit inverse

# Avec confirmation obligatoire
git push --force-with-lease        # moins destructif que --force (vérifie upstream)
git reset --soft HEAD~1            # récupérable (staging intact)

# Jamais sans confirmation
git push --force                   # ⚠️ IRRÉVERSIBLE
git reset --hard                   # ⚠️ DESTRUCTIF
git clean -fd                      # ⚠️ DESTRUCTIF

Docker

# Toujours lire avant d'agir
docker ps -a                       # containers existants
docker images                      # images présentes
docker system df                   # espace utilisé

# Dry-run equivalent
docker system prune --dry-run      # (si dispo) ou df d'abord

# Avec confirmation
docker stop <container>            # arrêt — reversible
docker rm <container>              # ⚠️ supprime le container (données volumes ok)
docker rmi <image>                 # supprime l'image
docker system prune -a             # ⚠️ DESTRUCTIF — toutes images non utilisées

MySQL

# Backup AVANT toute modification
mysqldump -u root -p <db> > backup-$(date +%Y%m%d-%H%M).sql

# Transactions pour DDL risqués
START TRANSACTION;
  ALTER TABLE ...;
  -- vérifier avant COMMIT
ROLLBACK;  -- ou COMMIT si ok

# Jamais sans backup
DROP TABLE ...    # ⚠️ IRRÉVERSIBLE
TRUNCATE TABLE .. # ⚠️ IRRÉVERSIBLE
DELETE FROM ...   # ⚠️ sans WHERE = table vidée

Fichiers système

# Préférer cp avant modification
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

# Tester avant reload
nginx -t                           # validation config
apache2ctl configtest

# Jamais sans backup
rm -rf /var/www/<app>/             # ⚠️ DESTRUCTIF

Ordre de validation pour les commandes VPS

1. Lire l'état actuel (status, logs, df)
2. Proposer la commande + dry-run si disponible
3. Annoter les flags dangereux
4. Attendre confirmation si commande prod/destructive
5. Exécuter
6. Vérifier l'état après (status, logs)

Trigger de chargement

Propriétaire : vps, debug, ci-cd
Trigger      : session deploy, debug infra, ou toute commande shell sur VPS
Section      : Sources au démarrage (vps, ci-cd) — Sources conditionnelles (debug si infra détectée)

Maintenance

Propriétaire : vps (mise à jour si nouveau pattern CLI validé)
Mise à jour  : en fin de session si un nouveau flag dangereux ou pattern sécurisé identifié
Jamais modifié par : agents non-infra

Cycle de vie

État Condition Action
Actif Sessions VPS/deploy fréquentes Enrichi après chaque pattern validé
Stable Stack stable Consulté, rarement modifié
Archivé N/A Non applicable

Changelog

Date Changement
2026-03-14 Création — règles dry-run, flags dangereux annotés, patterns git/docker/mysql/fichiers