@boostecom/provider 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +90 -0
  2. package/dist/index.cjs +2522 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +848 -0
  5. package/dist/index.d.ts +848 -0
  6. package/dist/index.js +2484 -0
  7. package/dist/index.js.map +1 -0
  8. package/docs/content/README.md +337 -0
  9. package/docs/content/agent-teams.mdx +324 -0
  10. package/docs/content/api.mdx +757 -0
  11. package/docs/content/best-practices.mdx +624 -0
  12. package/docs/content/examples.mdx +675 -0
  13. package/docs/content/guide.mdx +516 -0
  14. package/docs/content/index.mdx +99 -0
  15. package/docs/content/installation.mdx +246 -0
  16. package/docs/content/skills.mdx +548 -0
  17. package/docs/content/troubleshooting.mdx +588 -0
  18. package/docs/examples/README.md +499 -0
  19. package/docs/examples/abort-signal.ts +125 -0
  20. package/docs/examples/agent-teams.ts +122 -0
  21. package/docs/examples/basic-usage.ts +73 -0
  22. package/docs/examples/check-cli.ts +51 -0
  23. package/docs/examples/conversation-history.ts +69 -0
  24. package/docs/examples/custom-config.ts +90 -0
  25. package/docs/examples/generate-object-constraints.ts +209 -0
  26. package/docs/examples/generate-object.ts +211 -0
  27. package/docs/examples/hooks-callbacks.ts +63 -0
  28. package/docs/examples/images.ts +76 -0
  29. package/docs/examples/integration-test.ts +241 -0
  30. package/docs/examples/limitations.ts +150 -0
  31. package/docs/examples/logging-custom-logger.ts +99 -0
  32. package/docs/examples/logging-default.ts +55 -0
  33. package/docs/examples/logging-disabled.ts +74 -0
  34. package/docs/examples/logging-verbose.ts +64 -0
  35. package/docs/examples/long-running-tasks.ts +179 -0
  36. package/docs/examples/message-injection.ts +210 -0
  37. package/docs/examples/mid-stream-injection.ts +126 -0
  38. package/docs/examples/run-all-examples.sh +48 -0
  39. package/docs/examples/sdk-tools-callbacks.ts +49 -0
  40. package/docs/examples/skills-discovery.ts +144 -0
  41. package/docs/examples/skills-management.ts +140 -0
  42. package/docs/examples/stream-object.ts +80 -0
  43. package/docs/examples/streaming.ts +52 -0
  44. package/docs/examples/structured-output-repro.ts +227 -0
  45. package/docs/examples/tool-management.ts +215 -0
  46. package/docs/examples/tool-streaming.ts +132 -0
  47. package/docs/examples/zod4-compatibility-test.ts +290 -0
  48. package/docs/src/claude-code-language-model.test.ts +3883 -0
  49. package/docs/src/claude-code-language-model.ts +2586 -0
  50. package/docs/src/claude-code-provider.test.ts +97 -0
  51. package/docs/src/claude-code-provider.ts +179 -0
  52. package/docs/src/convert-to-claude-code-messages.images.test.ts +104 -0
  53. package/docs/src/convert-to-claude-code-messages.test.ts +193 -0
  54. package/docs/src/convert-to-claude-code-messages.ts +419 -0
  55. package/docs/src/errors.test.ts +213 -0
  56. package/docs/src/errors.ts +216 -0
  57. package/docs/src/index.test.ts +49 -0
  58. package/docs/src/index.ts +98 -0
  59. package/docs/src/logger.integration.test.ts +164 -0
  60. package/docs/src/logger.test.ts +184 -0
  61. package/docs/src/logger.ts +65 -0
  62. package/docs/src/map-claude-code-finish-reason.test.ts +120 -0
  63. package/docs/src/map-claude-code-finish-reason.ts +60 -0
  64. package/docs/src/mcp-helpers.test.ts +71 -0
  65. package/docs/src/mcp-helpers.ts +123 -0
  66. package/docs/src/message-injection.test.ts +460 -0
  67. package/docs/src/types.ts +447 -0
  68. package/docs/src/validation.test.ts +558 -0
  69. package/docs/src/validation.ts +360 -0
  70. package/package.json +124 -0
@@ -0,0 +1,548 @@
1
+ ---
2
+ title: Skills (Compétences)
3
+ description: Créer et utiliser des compétences personnalisées avec Claude Code
4
+ ---
5
+
6
+ # Skills - Compétences personnalisées
7
+
8
+ Les Skills sont des outils personnalisés que vous pouvez définir pour étendre les capacités de Claude Code. Elles permettent d'ajouter des fonctionnalités spécifiques à votre domaine ou workflow.
9
+
10
+ ## Qu'est-ce qu'une Skill ?
11
+
12
+ Une Skill est essentiellement un outil personnalisé défini via un fichier Markdown (`SKILL.md`) qui décrit :
13
+
14
+ - **Ce que fait la skill** - Description et cas d'usage
15
+ - **Comment l'utiliser** - Paramètres et syntaxe
16
+ - **Exemples** - Démonstrations d'utilisation
17
+
18
+ Claude lit ces définitions et peut invoquer vos skills durant une conversation.
19
+
20
+ ## Configuration des Skills
21
+
22
+ Pour activer les Skills, vous devez configurer deux options :
23
+
24
+ ```typescript
25
+ import { claudeCode } from '@boostecom/provider';
26
+
27
+ const model = claudeCode('sonnet', {
28
+ settingSources: ['user', 'project'], // Charger les skills
29
+ allowedTools: ['Skill', 'Read', 'Write'], // 'Skill' requis
30
+ });
31
+ ```
32
+
33
+ <Note type="warning">
34
+ **Requis** : Les deux options sont nécessaires. Sans `settingSources`, les skills ne seront pas chargées. Sans `'Skill'` dans `allowedTools`, elles ne pourront pas être invoquées.
35
+ </Note>
36
+
37
+ ## Emplacements des Skills
38
+
39
+ ### Skills utilisateur (globales)
40
+
41
+ ```
42
+ ~/.claude/skills/
43
+ ├── ma-skill/
44
+ │ └── SKILL.md
45
+ └── autre-skill/
46
+ └── SKILL.md
47
+ ```
48
+
49
+ Disponibles pour tous vos projets.
50
+
51
+ ### Skills projet (locales)
52
+
53
+ ```
54
+ .claude/skills/
55
+ ├── projet-skill/
56
+ │ └── SKILL.md
57
+ └── custom-tool/
58
+ └── SKILL.md
59
+ ```
60
+
61
+ Disponibles uniquement dans le projet courant.
62
+
63
+ ## Créer une Skill
64
+
65
+ ### Structure du fichier SKILL.md
66
+
67
+ ```markdown title=".claude/skills/database-query/SKILL.md"
68
+ # Database Query Skill
69
+
70
+ Cette skill permet d'exécuter des requêtes SQL sur la base de données du projet.
71
+
72
+ ## Usage
73
+
74
+ /database-query <query>
75
+
76
+ ## Paramètres
77
+
78
+ - `query` (required) - La requête SQL à exécuter
79
+
80
+ ## Exemples
81
+
82
+ /database-query SELECT * FROM users WHERE active = true
83
+ /database-query SELECT COUNT(*) FROM orders WHERE status = 'pending'
84
+
85
+ ## Notes
86
+
87
+ - Seules les requêtes SELECT sont autorisées
88
+ - Les requêtes sont exécutées en lecture seule
89
+ - Les résultats sont limités à 100 lignes
90
+ ```
91
+
92
+ ### Exemple : Skill de validation
93
+
94
+ ```markdown title=".claude/skills/validate-email/SKILL.md"
95
+ # Validate Email Skill
96
+
97
+ Valide une adresse email et vérifie son format, domaine, et disponibilité.
98
+
99
+ ## Usage
100
+
101
+ /validate-email <email>
102
+
103
+ ## Paramètres
104
+
105
+ - `email` (required) - L'adresse email à valider
106
+
107
+ ## Comportement
108
+
109
+ 1. Vérifie le format de l'email (RFC 5322)
110
+ 2. Vérifie que le domaine existe (DNS lookup)
111
+ 3. Retourne un résultat structuré avec :
112
+ - `valid`: boolean
113
+ - `format_ok`: boolean
114
+ - `domain_exists`: boolean
115
+ - `suggestions`: string[] (si invalide)
116
+
117
+ ## Exemples
118
+
119
+ /validate-email user@example.com
120
+ /validate-email invalid.email@
121
+
122
+ ## Limites
123
+
124
+ - Ne vérifie pas si l'adresse existe réellement (SMTP)
125
+ - Timeout de 5 secondes pour la vérification DNS
126
+ ```
127
+
128
+ ### Exemple : Skill de calcul métier
129
+
130
+ ```markdown title=".claude/skills/calculate-shipping/SKILL.md"
131
+ # Calculate Shipping Skill
132
+
133
+ Calcule les frais de port en fonction du poids, destination, et type d'envoi.
134
+
135
+ ## Usage
136
+
137
+ /calculate-shipping <weight> <country> [express]
138
+
139
+ ## Paramètres
140
+
141
+ - `weight` (required) - Poids en kilogrammes
142
+ - `country` (required) - Code pays (ISO 3166-1 alpha-2)
143
+ - `express` (optional) - Ajoutez "express" pour expédition rapide
144
+
145
+ ## Tarification
146
+
147
+ ### Standard
148
+ - France (FR): 5€ + 0.50€/kg
149
+ - Europe (EU): 10€ + 1€/kg
150
+ - International: 20€ + 2€/kg
151
+
152
+ ### Express (×1.5)
153
+ Tous les tarifs standard multipliés par 1.5
154
+
155
+ ## Exemples
156
+
157
+ /calculate-shipping 2.5 FR
158
+ → 6.25€ (Standard France)
159
+
160
+ /calculate-shipping 5 DE express
161
+ → 22.50€ (Express Allemagne)
162
+
163
+ /calculate-shipping 10 US
164
+ → 40€ (Standard International)
165
+
166
+ ## Notes
167
+
168
+ - Poids maximum: 30kg
169
+ - Certains pays peuvent être restreints
170
+ - Les tarifs sont TTC
171
+ ```
172
+
173
+ ## Utiliser les Skills
174
+
175
+ Une fois configurées, utilisez les skills dans vos prompts :
176
+
177
+ ```typescript
178
+ import { streamText } from 'ai';
179
+ import { claudeCode } from '@boostecom/provider';
180
+
181
+ const result = streamText({
182
+ model: claudeCode('sonnet', {
183
+ settingSources: ['user', 'project'],
184
+ allowedTools: ['Skill', 'Read', 'Write'],
185
+ }),
186
+ prompt: 'Valide cet email: user@example.com et dis-moi s\'il est correct',
187
+ });
188
+
189
+ for await (const chunk of result.textStream) {
190
+ process.stdout.write(chunk);
191
+ }
192
+ ```
193
+
194
+ Claude détectera automatiquement qu'il doit utiliser la skill `/validate-email` et l'invoquera.
195
+
196
+ ## Skills complexes avec scripts
197
+
198
+ Pour des skills plus complexes, vous pouvez créer des scripts exécutables :
199
+
200
+ ### Structure avec script
201
+
202
+ ```
203
+ .claude/skills/api-client/
204
+ ├── SKILL.md
205
+ └── execute.js
206
+ ```
207
+
208
+ ```markdown title=".claude/skills/api-client/SKILL.md"
209
+ # API Client Skill
210
+
211
+ Effectue des requêtes HTTP vers l'API du projet.
212
+
213
+ ## Usage
214
+
215
+ /api-client <method> <endpoint> [body]
216
+
217
+ ## Paramètres
218
+
219
+ - `method` - GET, POST, PUT, DELETE
220
+ - `endpoint` - Chemin de l'endpoint (ex: /users)
221
+ - `body` - Corps de la requête (JSON, optionnel)
222
+
223
+ ## Exemples
224
+
225
+ /api-client GET /users
226
+ /api-client POST /users {"name":"Alice","email":"alice@example.com"}
227
+ /api-client DELETE /users/123
228
+
229
+ ## Implémentation
230
+
231
+ Cette skill exécute le script `execute.js` dans son répertoire.
232
+ ```
233
+
234
+ ```javascript title=".claude/skills/api-client/execute.js"
235
+ #!/usr/bin/env node
236
+
237
+ const [method, endpoint, bodyJson] = process.argv.slice(2);
238
+ const API_BASE_URL = process.env.API_BASE_URL || 'http://localhost:3000';
239
+
240
+ async function makeRequest() {
241
+ const options = {
242
+ method: method.toUpperCase(),
243
+ headers: {
244
+ 'Content-Type': 'application/json',
245
+ 'Authorization': `Bearer ${process.env.API_TOKEN}`,
246
+ },
247
+ };
248
+
249
+ if (bodyJson) {
250
+ options.body = bodyJson;
251
+ }
252
+
253
+ try {
254
+ const response = await fetch(`${API_BASE_URL}${endpoint}`, options);
255
+ const data = await response.json();
256
+
257
+ console.log(JSON.stringify({
258
+ status: response.status,
259
+ ok: response.ok,
260
+ data,
261
+ }, null, 2));
262
+ } catch (error) {
263
+ console.error(JSON.stringify({
264
+ error: error.message,
265
+ }));
266
+ process.exit(1);
267
+ }
268
+ }
269
+
270
+ makeRequest();
271
+ ```
272
+
273
+ ```bash
274
+ # Rendre le script exécutable
275
+ chmod +x .claude/skills/api-client/execute.js
276
+ ```
277
+
278
+ ## Best Practices
279
+
280
+ ### 1. Documentation claire
281
+
282
+ Documentez précisément le comportement attendu :
283
+
284
+ ```markdown
285
+ ## Comportement
286
+
287
+ 1. Valide les paramètres d'entrée
288
+ 2. Effectue l'opération demandée
289
+ 3. Retourne un résultat structuré
290
+ 4. Gère les erreurs avec messages explicites
291
+ ```
292
+
293
+ ### 2. Exemples concrets
294
+
295
+ Fournissez plusieurs exemples couvrant différents cas :
296
+
297
+ ```markdown
298
+ ## Exemples
299
+
300
+ ### Cas nominal
301
+ /ma-skill param1 param2
302
+
303
+ ### Avec paramètres optionnels
304
+ /ma-skill param1 param2 --option value
305
+
306
+ ### Cas d'erreur attendu
307
+ /ma-skill invalid-input
308
+ → Erreur : Format invalide
309
+ ```
310
+
311
+ ### 3. Gestion d'erreurs
312
+
313
+ Anticipez et documentez les erreurs possibles :
314
+
315
+ ```markdown
316
+ ## Erreurs possibles
317
+
318
+ - `INVALID_FORMAT` - Le format du paramètre est incorrect
319
+ - `NOT_FOUND` - La ressource n'existe pas
320
+ - `PERMISSION_DENIED` - Accès non autorisé
321
+ - `TIMEOUT` - L'opération a dépassé le délai
322
+ ```
323
+
324
+ ### 4. Limites et contraintes
325
+
326
+ Indiquez clairement les limitations :
327
+
328
+ ```markdown
329
+ ## Limites
330
+
331
+ - Maximum 100 résultats par requête
332
+ - Timeout de 30 secondes
333
+ - Certaines opérations nécessitent des permissions spécifiques
334
+ - Rate limit: 60 requêtes par minute
335
+ ```
336
+
337
+ ### 5. Sécurité
338
+
339
+ Pour les skills sensibles, documentez les aspects sécurité :
340
+
341
+ ```markdown
342
+ ## Sécurité
343
+
344
+ - Cette skill nécessite la variable d'environnement `API_SECRET_KEY`
345
+ - Les données sont chiffrées en transit
346
+ - Les logs ne contiennent jamais de données sensibles
347
+ - Accès restreint aux utilisateurs authentifiés
348
+ ```
349
+
350
+ ## Validation automatique
351
+
352
+ Le provider émet un warning si la configuration est incomplète :
353
+
354
+ ```typescript
355
+ // ⚠️ Warning: 'Skill' in allowedTools but no settingSources
356
+ const model = claudeCode('sonnet', {
357
+ allowedTools: ['Skill'], // 'Skill' présent
358
+ // Manque: settingSources
359
+ });
360
+ ```
361
+
362
+ Solution :
363
+
364
+ ```typescript
365
+ const model = claudeCode('sonnet', {
366
+ allowedTools: ['Skill'],
367
+ settingSources: ['user', 'project'], // ✅ Ajouté
368
+ });
369
+ ```
370
+
371
+ ## Debugging des Skills
372
+
373
+ ### Activer les logs verbeux
374
+
375
+ ```typescript
376
+ const model = claudeCode('sonnet', {
377
+ verbose: true, // Voir les invocations de skills
378
+ settingSources: ['user', 'project'],
379
+ allowedTools: ['Skill'],
380
+ });
381
+ ```
382
+
383
+ ### Observer les appels de skills
384
+
385
+ ```typescript
386
+ const result = streamText({
387
+ model: claudeCode('sonnet', {
388
+ settingSources: ['user', 'project'],
389
+ allowedTools: ['Skill'],
390
+ hooks: {
391
+ PreToolUse: [{
392
+ matcher: 'Skill',
393
+ hooks: [
394
+ async (toolName, input) => {
395
+ console.log('🎯 Skill invoquée:', toolName);
396
+ console.log('📥 Input:', JSON.stringify(input, null, 2));
397
+ },
398
+ ],
399
+ }],
400
+ PostToolUse: [{
401
+ matcher: 'Skill',
402
+ hooks: [
403
+ async (toolName, input, result) => {
404
+ console.log('✅ Skill terminée:', toolName);
405
+ console.log('📤 Résultat:', JSON.stringify(result, null, 2));
406
+ },
407
+ ],
408
+ }],
409
+ },
410
+ }),
411
+ prompt: 'Utilise la skill pour vérifier cet email',
412
+ });
413
+ ```
414
+
415
+ ## Exemples de Skills utiles
416
+
417
+ ### 1. Git Operations
418
+
419
+ ```markdown title=".claude/skills/git-status/SKILL.md"
420
+ # Git Status Skill
421
+
422
+ Affiche le statut Git du projet avec résumé structuré.
423
+
424
+ ## Usage
425
+
426
+ /git-status
427
+
428
+ ## Retour
429
+
430
+ Objet JSON avec :
431
+ - `branch` : branche courante
432
+ - `modified` : fichiers modifiés
433
+ - `staged` : fichiers en staging
434
+ - `untracked` : fichiers non suivis
435
+ - `ahead` : commits en avance
436
+ - `behind` : commits en retard
437
+
438
+ ## Exemple
439
+
440
+ /git-status
441
+ ```
442
+
443
+ ### 2. Environment Checker
444
+
445
+ ```markdown title=".claude/skills/check-env/SKILL.md"
446
+ # Environment Checker Skill
447
+
448
+ Vérifie que toutes les variables d'environnement requises sont définies.
449
+
450
+ ## Usage
451
+
452
+ /check-env [file]
453
+
454
+ ## Paramètres
455
+
456
+ - `file` (optional) - Fichier à vérifier (défaut: .env.example)
457
+
458
+ ## Comportement
459
+
460
+ 1. Lit les variables requises du fichier
461
+ 2. Vérifie leur présence dans l'environnement
462
+ 3. Retourne la liste des variables manquantes
463
+
464
+ ## Exemple
465
+
466
+ /check-env .env.example
467
+ ```
468
+
469
+ ### 3. Test Runner
470
+
471
+ ```markdown title=".claude/skills/run-tests/SKILL.md"
472
+ # Test Runner Skill
473
+
474
+ Exécute les tests du projet et retourne un résumé.
475
+
476
+ ## Usage
477
+
478
+ /run-tests [pattern]
479
+
480
+ ## Paramètres
481
+
482
+ - `pattern` (optional) - Pattern des tests à exécuter (ex: "auth/*")
483
+
484
+ ## Retour
485
+
486
+ - `passed` : nombre de tests réussis
487
+ - `failed` : nombre de tests échoués
488
+ - `duration` : durée totale en ms
489
+ - `failures` : détails des échecs
490
+
491
+ ## Exemples
492
+
493
+ /run-tests
494
+ /run-tests auth/*
495
+ /run-tests components/Button.test.ts
496
+ ```
497
+
498
+ ## Partager vos Skills
499
+
500
+ ### Organisation en packages
501
+
502
+ Pour partager des skills entre projets :
503
+
504
+ ```bash
505
+ # Créer un package de skills
506
+ mkdir my-claude-skills
507
+ cd my-claude-skills
508
+
509
+ # Structure
510
+ skills/
511
+ ├── skill-1/
512
+ │ └── SKILL.md
513
+ └── skill-2/
514
+ └── SKILL.md
515
+ package.json
516
+ README.md
517
+ ```
518
+
519
+ ```json title="package.json"
520
+ {
521
+ "name": "my-claude-skills",
522
+ "version": "1.0.0",
523
+ "description": "Collection de skills Claude personnalisées",
524
+ "files": ["skills/**/*"]
525
+ }
526
+ ```
527
+
528
+ ### Installation
529
+
530
+ ```bash
531
+ # Installer le package
532
+ npm install my-claude-skills
533
+
534
+ # Créer des liens symboliques
535
+ ln -s node_modules/my-claude-skills/skills/* .claude/skills/
536
+ ```
537
+
538
+ ## Ressources
539
+
540
+ - [Exemples de Skills](/docs/examples) - Voir les skills en action
541
+ - [API Reference](/docs/api) - Configuration détaillée
542
+ - [Agent Teams](/docs/agent-teams) - Combiner Skills avec des équipes d'agents
543
+
544
+ ## Prochaines étapes
545
+
546
+ - [Best Practices](/docs/best-practices) - Optimisations et patterns
547
+ - [Troubleshooting](/docs/troubleshooting) - Résoudre les problèmes courants
548
+ - [Agent Teams](/docs/agent-teams) - Créer des équipes d'agents spécialisés