# Commit Message - Implémentation de la commande shell `!` ## 🎯 Feature: Ajout de la commande shell `!` dans ClaudeCode ### Description Implémentation complète de la fonctionnalité permettant d'exécuter des commandes shell directement dans les prompts et les commandes markdown via la syntaxe `!`. ### Fonctionnalités ajoutées - Exécution de commandes shell inline avec `!commande` ou `!`commande args`` - Support dans les prompts directs de l'utilisateur - Support dans les fichiers `.claude/commands/**/*.md` - Exécution parallèle de multiples commandes - Gestion robuste des erreurs et timeouts - Intégration avec les variables d'environnement de settings.json ### Changements techniques #### Nouveaux fichiers - `packages/ext-claudecode/src/shell-commands.ts` - Module principal - `packages/ext-claudecode/src/shell-commands.test.ts` - Tests (11 tests) - `packages/ext-claudecode/SHELL_COMMANDS.md` - Documentation utilisateur - `.claude/commands/sysinfo.md` - Exemple de commande #### Modifications - `packages/core/src/types.ts` - SlashCommand.prompt() async - `packages/cli/src/index.ts` - Intégration de l'expansion shell - `packages/ext-claudecode/src/commands.ts` - Support async avec renderCommandAsync() - `packages/ext-claudecode/src/mode.ts` - Passage des options cwd/env - `packages/ext-claudecode/src/index.ts` - Exports des fonctions shell - `packages/ext-claudecode/src/lot2.test.ts` - Test async ### Tests - ✅ 11 nouveaux tests unitaires (100% passing) - ✅ Tous les tests existants passent (84/84) - ✅ TypeCheck OK sur tous les packages - ✅ Build réussi ### Breaking Changes **Mineur** : `SlashCommand.prompt()` retourne maintenant `string | Promise` - Impact minimal : rétrocompatible avec les commandes synchrones - Migration : ajouter `await` pour les appels de `command.prompt()` ### Documentation - Guide utilisateur complet dans SHELL_COMMANDS.md - README.md mis à jour avec nouvelle section - 7 fichiers de documentation technique créés - Aide CLI mise à jour ### Exemples d'utilisation ``` # Prompt direct Utilisateur actuel : !whoami Fichiers du projet : !`ls -la` # Commande personnalisée (.claude/commands/status.md) État Git : !`git status --short` Derniers commits : !`git log --oneline -5` # Utilisation /status ``` ### Sécurité - Timeout 30s par commande - Buffer limité à 10 MB - Gestion d'erreurs complète - Variables d'environnement contrôlées - Note : Exécution dans shell système (pas de sandbox complet) ### Références - Issue: Implémentation de la commande `!` (lot 2+) - Documentation: README_IMPLEMENTATION.md pour index complet - Tests: TEST_SHELL_COMMANDS.md pour validation manuelle --- **Type**: feature **Scope**: ext-claudecode **Status**: ✅ Prêt pour production Co-authored-by: MagicCode AI Assistant