2.8 KiB
2.8 KiB
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
!commandeou!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 principalpackages/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() asyncpackages/cli/src/index.ts- Intégration de l'expansion shellpackages/ext-claudecode/src/commands.ts- Support async avec renderCommandAsync()packages/ext-claudecode/src/mode.ts- Passage des options cwd/envpackages/ext-claudecode/src/index.ts- Exports des fonctions shellpackages/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<string>
- Impact minimal : rétrocompatible avec les commandes synchrones
- Migration : ajouter
awaitpour les appels decommand.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