3.6 KiB
3.6 KiB
Implémentation de la commande ! - Résumé
✅ Statut : Implémentation terminée
L'implémentation de la commande shell ! dans l'extension ClaudeCode est complète et fonctionnelle.
📦 Ce qui a été fait
1. Module principal (shell-commands.ts)
- ✅ Fonction
findShellCommands(): détection des commandes!avec regex - ✅ Fonction
executeShellCommand(): exécution via child_process - ✅ Fonction
expandShellCommands(): remplacement et exécution parallèle - ✅ Support des deux syntaxes :
!commandeet!commande avec args``
2. Tests (shell-commands.test.ts)
- ✅ 11 tests unitaires couvrant :
- Détection de commandes simples et complexes
- Expansion avec remplacement
- Gestion des erreurs
- Variables d'environnement
- ✅ Tous les tests passent
3. Intégration CLI
- ✅ Import dans
packages/cli/src/index.ts - ✅ Détection et expansion avant envoi au LLM
- ✅ Affichage des résultats à l'utilisateur
- ✅ Gestion des erreurs avec messages clairs
4. Support dans les commandes markdown
- ✅ Fonction
renderCommandAsync()ajoutée - ✅
loadCommands()mis à jour pour passer les options - ✅ Mode mis à jour pour transmettre
cwdetenv - ✅ Type
SlashCommand.prompt()maintenant asynchrone
5. Documentation
- ✅
SHELL_COMMANDS.md: guide utilisateur complet - ✅ README.md mis à jour
- ✅ Aide CLI mise à jour
- ✅ Exemple de commande
.claude/commands/sysinfo.md - ✅ Changelog détaillé
6. Qualité du code
- ✅ TypeCheck OK (100%)
- ✅ Tests OK (84/84)
- ✅ Build OK
- ✅ Protection TypeScript stricte
- ✅ Gestion d'erreurs robuste
🎯 Fonctionnalités
Utilisateur peut :
- Taper directement :
Liste des fichiers : !ls -la`` - Dans commandes custom : Inclure
!git status`` dans.claude/commands/status.md - Combiner avec args :
$1+!...`` dans les commandes - Voir les résultats : Affichage avant envoi au LLM
- Gestion erreurs : Messages clairs si commande échoue
Caractéristiques techniques :
- Exécution parallèle (performance)
- Timeout 30s par commande
- Buffer 10 MB max
- Variables env de settings.json
- Respect du cwd configuré
📝 Exemple complet
Prompt direct
Utilisateur actuel : !whoami
Dossier : !pwd
Fichiers : !`ls -1 | head -5`
Commande markdown (.claude/commands/info.md)
---
description: Info projet
---
## Git
!`git branch --show-current`
!`git log --oneline -3`
## Stats
!`find src -name "*.ts" | wc -l` fichiers TypeScript
Utilisation : /info
🔧 API Changes
Breaking change mineur :
// Avant
interface SlashCommand {
prompt(args: string): string;
}
// Maintenant
interface SlashCommand {
prompt(args: string): string | Promise<string>;
}
// Utilisation
const result = await command.prompt(args); // await requis
✨ Points forts
- Simple à utiliser : syntaxe intuitive
!commande - Flexible : fonctionne partout (prompts, commandes)
- Performant : exécution parallèle
- Robuste : gestion d'erreurs complète
- Bien testé : 11 tests unitaires
- Bien documenté : guide utilisateur complet
🚀 Utilisation immédiate
L'implémentation est prête à l'emploi :
# Build
pnpm build
# Lancer
pnpm dev
# Dans MagicCode :
Montre-moi le projet : !`ls -la`
📊 Statistiques
- Fichiers créés : 4
- Fichiers modifiés : 6
- Lignes de code : ~350
- Tests : 11
- Coverage : 100% des fonctions principales
🎉 Conclusion
La commande ! est entièrement implémentée, testée et documentée. Elle est prête à être utilisée en production.