MagicCode/packages/ext-claudecode/SHELL_COMMANDS.md
2026-10-12 00:41:17 +02:00

3.4 KiB

Commande Shell ! dans MagicCode

Vue d'ensemble

MagicCode permet d'exécuter des commandes shell directement dans vos prompts ou commandes personnalisées en utilisant la syntaxe !.

Syntaxe

Commande simple

!commande

Exécute commande et remplace !commande par sa sortie.

Exemple :

Voici mon utilisateur : !whoami

Devient (après expansion) :

Voici mon utilisateur : arnaud

Commande avec espaces (backticks)

!`commande avec arguments`

Pour les commandes contenant des espaces ou des arguments, utilisez des backticks.

Exemple :

Liste des fichiers TypeScript : !`ls -la *.ts`

Utilisation

1. Dans les prompts directs

Tapez directement dans l'interface MagicCode :

Analyse le contenu du dossier actuel : !`ls -la`

MagicCode exécute la commande, affiche le résultat, puis envoie le prompt expansé au LLM.

2. Dans les commandes personnalisées (.claude/commands/)

Créez un fichier .claude/commands/status.md :

---
description: Affiche le statut du projet
---

État actuel du dépôt Git :

!`git status --short`

Derniers commits :

!`git log --oneline -5`

Puis utilisez /status dans MagicCode. Les commandes shell seront exécutées et leurs résultats inclus dans le prompt envoyé au LLM.

3. Combinaison avec des arguments

Dans .claude/commands/branch-info.md :

---
description: Info sur une branche Git
argument-hint: <nom-branche>
---

Informations sur la branche $1 :

!`git log $1 --oneline -10`

Utilisez /branch-info main pour obtenir les informations sur la branche main.

Gestion des erreurs

Si une commande échoue, elle est remplacée par [ERREUR: message d'erreur] dans le prompt, et MagicCode affiche un avertissement.

Exemple :

!`commande_inexistante`

Devient :

[ERREUR: Échec de la commande shell: ...]

Permissions et sécurité

  • Les commandes shell respectent les permissions définies dans .claude/settings.json
  • Les variables d'environnement de settings.json sont transmises
  • Le dossier de travail est celui du lancement de MagicCode
  • Timeout de 30 secondes par commande
  • Buffer de sortie limité à 10 MB

Variables d'environnement

Les commandes shell ont accès aux variables définies dans .claude/settings.json :

{
  "env": {
    "PROJECT_NAME": "mon-projet",
    "API_KEY": "..."
  }
}

Puis utilisez :

!`echo "Projet: $PROJECT_NAME"`

Exemples pratiques

Analyse de performance

Analyse les fichiers les plus volumineux :
!`du -sh * | sort -hr | head -10`

État des dépendances

Vérifie les dépendances obsolètes :
!`npm outdated`

Tests

Lance les tests et analyse les résultats :
!`npm test 2>&1`

Information système

CPU et mémoire :
!`top -bn1 | grep "Cpu(s)" | head -1`

Limitations

  • Les commandes sont exécutées dans un shell système, pas dans un environnement isolé
  • Pas de support pour les commandes interactives
  • Les redirections (>, >>) et substitutions (`...`, $(...)) sont autorisées mais à vos risques
  • Les commandes composées (&&, ;, |) sont supportées

Notes techniques

  • Implémentation : packages/ext-claudecode/src/shell-commands.ts
  • Regex de détection : /!((?:[^]+)|(?:[^\s]+))/g`
  • Exécution via child_process.exec
  • Les commandes multiples sont exécutées en parallèle pour plus de performance