6 KiB
6 KiB
Lot 3 : WebFetch, TodoWrite et Task
Implémentation complète du lot 3 avec trois outils : gestion des requêtes HTTP, gestion simple des listes TODO, et gestion hiérarchique des tâches avec priorités et assignations.
WebFetch
Récupère le contenu d'une URL via HTTP/HTTPS. Retourne le statut, les en-têtes et le corps de la réponse.
Utilisation
{
"url": "https://api.example.com/data",
"method": "GET", // optionnel : GET, POST, PUT, DELETE, etc.
"headers": {...}, // optionnel : en-têtes personnalisés
"body": "...", // optionnel : corps pour POST/PUT
"timeout": 30000 // optionnel : timeout en ms (30s par défaut)
}
Exemples
GET simple
{
"url": "https://github.com"
}
POST JSON
{
"url": "https://api.example.com/submit",
"method": "POST",
"headers": {
"Authorization": "Bearer token123"
},
"body": "{\"name\": \"Alice\", \"age\": 30}"
}
Comportement
- Réponse JSON : formatée avec indentation
- Réponse texte/XML : retournée directe
- Contenu binaire : résumé avec taille
- Timeout : par défaut 30 secondes
- Troncature : sortie limitée à 100 KB
Permissions
- "ask" : confirmation requise avant chaque appel (sécurité)
TodoWrite
Gère une liste TODO persistante au format JSON avec exportation markdown.
Actions
| Action | Description |
|---|---|
add |
Ajoute une nouvelle tâche |
list |
Affiche toutes les tâches groupées par statut |
done |
Marque une tâche comme complète |
undone |
Remet une tâche à "À faire" |
block |
Marque une tâche comme bloquée |
unblock |
Débloque une tâche |
remove |
Supprime une tâche |
update |
Modifie une tâche existante |
export-markdown |
Exporte en fichier markdown |
Structure
{
"version": 1,
"items": [
{
"id": "1",
"status": "todo", // "todo" | "done" | "blocked"
"title": "Ma tâche",
"description": "...", // optionnel
"tags": ["urgent"], // optionnel
"createdAt": "2024-...",
"dueAt": "2024-..." // optionnel
}
],
"lastModified": "2024-..."
}
Exemples
Ajouter une tâche simple
{
"file": ".todos.json",
"action": "add",
"title": "Implement WebFetch",
"tags": ["feature", "http"]
}
Lister les tâches
{
"file": ".todos.json",
"action": "list"
}
Task
Gère une arborescence hiérarchique de tâches avec priorités, assignations et statuts avancés.
Actions
| Action | Description |
|---|---|
add |
Crée une tâche principale |
subtask |
Crée une sous-tâche (requiert parent) |
list |
Affiche les tâches principales |
tree |
Affiche l'arborescence complète |
status |
Change le statut (todo, in-progress, done, blocked) |
assign |
Assigne une tâche à une personne |
update |
Modifie les détails d'une tâche |
remove |
Supprime une tâche |
Statuts
- todo : À faire
- in-progress : En cours
- done : Complétée
- blocked : Bloquée
Priorités
- low : Basse
- normal : Normal
- high : Haute
- critical : Critique
Structure
{
"version": 1,
"tasks": [
{
"id": "1",
"title": "Projet principal",
"status": "todo",
"priority": "high",
"description": "Description optionnelle",
"assignee": "alice",
"dueAt": "2024-12-31T23:59:59Z",
"tags": ["backend", "urgent"],
"createdAt": "2024-...",
"updatedAt": "2024-...",
"subtasks": [
{
"id": "1-1",
"title": "Étape 1",
"status": "in-progress",
"priority": "high",
"parent": "1"
}
]
}
],
"lastModified": "2024-..."
}
Exemples
Créer une tâche avec priorité
{
"file": "tasks.json",
"action": "add",
"title": "Implémenter WebFetch",
"priority": "high",
"assignee": "alice",
"dueAt": "2024-12-15T17:00:00Z"
}
Créer une sous-tâche
{
"file": "tasks.json",
"action": "subtask",
"parent": "1",
"title": "Configurer authentification",
"priority": "high"
}
Voir l'arborescence
{
"file": "tasks.json",
"action": "tree"
}
Résultat :
○ [1] Implémenter WebFetch [HIGH] (@alice)
├─ → [1-1] Configurer authentification [HIGH]
├─ ○ [1-2] Tester API externe [NORMAL]
└─ ✓ [1-3] Documentation [LOW]
Changer le statut
{
"file": "tasks.json",
"action": "status",
"id": "1",
"status": "in-progress"
}
Assigner à quelqu'un
{
"file": "tasks.json",
"action": "assign",
"id": "1",
"assignee": "bob"
}
Intégration avec le LLM
Les trois outils sont automatiquement disponibles dans le mode ClaudeCode et peuvent être utilisés par le LLM pour :
WebFetch
- Récupérer des API externes
- Valider des URLs
- Tester des endpoints API
- Scraper des données publiques
TodoWrite
- Créer des listes TODO simples
- Tracker des tâches de projet
- Exporter le backlog en markdown
Task
- Gérer des projets complexes avec hiérarchies
- Assigner du travail à des équipes
- Tracker les dépendances par la structure arborescente
- Gérer les priorités et blocages
Tests
Exécutez les tests avec :
pnpm test -- lot3
Les tests couvrent :
- ✅ WebFetch : GET/POST, gestion d'erreurs, types de contenu
- ✅ TodoWrite : CRUD complet, statuts, export markdown
- ✅ Task : hiérarchies, assignations, arborescence
Reste à faire
- WebFetch streaming : support des gros fichiers
- Task dépendances : relations parent-enfant avancées
- Task dépendances circulaires : détection et avertissements
- Hooks : système de rappels sur les transitions de tâches
- MCP : intégration du Model Context Protocol
- Sous-agents : délégation de tâches à des sous-agents
- Synchronisation externe : GitHub Issues, Jira, Trello