157 lines
4.4 KiB
Markdown
157 lines
4.4 KiB
Markdown
# Commande Shell `!` - Liste complète des modifications
|
||
|
||
## 📁 Nouveaux fichiers créés
|
||
|
||
### Code source
|
||
1. **`packages/ext-claudecode/src/shell-commands.ts`** (118 lignes)
|
||
- Logique principale d'exécution des commandes shell
|
||
- 3 fonctions exportées : `findShellCommands`, `executeShellCommand`, `expandShellCommands`
|
||
- Gestion timeout, buffer, erreurs
|
||
|
||
2. **`packages/ext-claudecode/src/shell-commands.test.ts`** (83 lignes)
|
||
- 11 tests unitaires (2 suites)
|
||
- Coverage : détection, expansion, erreurs, env
|
||
|
||
### Documentation
|
||
3. **`packages/ext-claudecode/SHELL_COMMANDS.md`** (3422 octets)
|
||
- Guide utilisateur complet
|
||
- Syntaxe, exemples, cas d'usage
|
||
- Permissions et limitations
|
||
|
||
4. **`.claude/commands/sysinfo.md`** (440 octets)
|
||
- Exemple de commande utilisant `!`
|
||
- Démo fonctionnelle
|
||
|
||
5. **`CHANGELOG_SHELL_COMMANDS.md`** (3589 octets)
|
||
- Historique détaillé de l'implémentation
|
||
- Impact API, tests, notes techniques
|
||
|
||
6. **`IMPLEMENTATION_SUMMARY.md`** (3592 octets)
|
||
- Résumé exécutif
|
||
- Statut, fonctionnalités, exemples
|
||
|
||
## 📝 Fichiers modifiés
|
||
|
||
### Core
|
||
1. **`packages/core/src/types.ts`**
|
||
- Ligne 100 : `prompt(args: string): string | Promise<string>;`
|
||
- Breaking change mineur pour support async
|
||
|
||
### CLI
|
||
2. **`packages/cli/src/index.ts`**
|
||
- Import : ajout de `expandShellCommands, findShellCommands`
|
||
- Ligne 20-29 : HELP mis à jour avec mention commandes shell
|
||
- Ligne 230-246 : Logique d'expansion des commandes `!` avant envoi au LLM
|
||
- Ligne 226 : `await custom.prompt(args)` (async)
|
||
|
||
### Extension ClaudeCode
|
||
3. **`packages/ext-claudecode/src/index.ts`**
|
||
- Export des utilitaires shell : `expandShellCommands, findShellCommands, executeShellCommand`
|
||
|
||
4. **`packages/ext-claudecode/src/commands.ts`**
|
||
- Import : `expandShellCommands`
|
||
- Nouvelle fonction : `renderCommandAsync()` (lignes 39-50)
|
||
- `loadCommands()` : signature avec options, appel async (lignes 54-86)
|
||
|
||
5. **`packages/ext-claudecode/src/mode.ts`**
|
||
- Ligne 41 : `loadCommands(dirs, { cwd: ctx.cwd, env: {} })`
|
||
|
||
### Tests
|
||
6. **`packages/ext-claudecode/src/lot2.test.ts`**
|
||
- Ligne 121 : `await review?.prompt("a.ts")` (async)
|
||
|
||
### Documentation racine
|
||
7. **`README.md`**
|
||
- Section "Extension ClaudeCode" enrichie (lignes 95-108)
|
||
- Sous-section "Commandes shell `!`" ajoutée
|
||
- Note de statut mise à jour (ligne 124)
|
||
|
||
## 📊 Statistiques
|
||
|
||
### Code
|
||
- **Nouveau code** : ~350 lignes
|
||
- **Tests** : 11 tests (100% passing)
|
||
- **Fichiers TS créés** : 2
|
||
- **Fichiers TS modifiés** : 6
|
||
|
||
### Documentation
|
||
- **Nouveaux docs** : 4 fichiers markdown
|
||
- **Docs modifiés** : 1 (README)
|
||
- **Total documentation** : ~11 000 caractères
|
||
|
||
### Qualité
|
||
- ✅ TypeCheck : 0 erreur
|
||
- ✅ Tests : 84/84 passing
|
||
- ✅ Build : Success
|
||
- ✅ Linting : Conforme
|
||
|
||
## 🔄 Workflow d'utilisation
|
||
|
||
### 1. Prompt direct
|
||
```
|
||
Entrée utilisateur → Détection `!` → Exécution shell → Expansion → LLM
|
||
```
|
||
|
||
### 2. Commande markdown
|
||
```
|
||
/commande → Lecture .md → Expansion args ($1...) → Expansion shell (!) → LLM
|
||
```
|
||
|
||
## 🎯 Points d'entrée
|
||
|
||
### Pour les utilisateurs
|
||
- **CLI** : Taper directement `!commande` dans un prompt
|
||
- **Commandes** : Inclure `!`...`` dans `.claude/commands/*.md`
|
||
|
||
### Pour les développeurs
|
||
```typescript
|
||
import { expandShellCommands } from '@magiccode/ext-claudecode';
|
||
|
||
const { expanded, executed } = await expandShellCommands(
|
||
"User: !whoami",
|
||
{ cwd: process.cwd() }
|
||
);
|
||
```
|
||
|
||
## 🔐 Sécurité
|
||
|
||
- ⚠️ Exécution dans le shell système (pas de sandbox)
|
||
- ✅ Timeout 30s par commande
|
||
- ✅ Buffer limité 10 MB
|
||
- ✅ Respect des variables d'environnement settings.json
|
||
- ✅ Gestion d'erreurs avec messages clairs
|
||
- ℹ️ Les permissions Bash existantes s'appliquent
|
||
|
||
## 📋 Checklist de validation
|
||
|
||
- [x] Code écrit et documenté
|
||
- [x] Tests unitaires (11/11 passing)
|
||
- [x] Tests d'intégration mis à jour
|
||
- [x] TypeCheck OK
|
||
- [x] Build OK
|
||
- [x] Documentation utilisateur complète
|
||
- [x] Exemple fonctionnel créé
|
||
- [x] README mis à jour
|
||
- [x] Changelog rédigé
|
||
- [x] Pas de régression (84/84 tests)
|
||
|
||
## 🚀 Déploiement
|
||
|
||
Prêt pour :
|
||
- ✅ Commit
|
||
- ✅ Merge
|
||
- ✅ Release
|
||
- ✅ Production
|
||
|
||
Commande de test rapide :
|
||
```bash
|
||
cd magiccode
|
||
pnpm typecheck && pnpm test && pnpm build
|
||
```
|
||
|
||
## 📞 Support
|
||
|
||
Documentation complète disponible dans :
|
||
- `packages/ext-claudecode/SHELL_COMMANDS.md` (guide utilisateur)
|
||
- `IMPLEMENTATION_SUMMARY.md` (vue technique)
|
||
- `CHANGELOG_SHELL_COMMANDS.md` (historique)
|