Le suivi des tâches à faire fournit une façon structurée de gérer les tâches et d’afficher les progrès aux utilisateurs. Le SDK Claude Code inclut une fonctionnalité de tâches à faire intégrée qui aide à organiser les flux de travail complexes et à tenir les utilisateurs informés de la progression des tâches.

Cycle de vie des tâches à faire

Les tâches à faire suivent un cycle de vie prévisible :
  1. Créées comme pending lorsque les tâches sont identifiées
  2. Activées à in_progress lorsque le travail commence
  3. Terminées lorsque la tâche se termine avec succès
  4. Supprimées lorsque toutes les tâches d’un groupe sont terminées

Quand les tâches à faire sont utilisées

Le SDK crée automatiquement des tâches à faire pour :
  • Les tâches complexes en plusieurs étapes nécessitant 3 actions distinctes ou plus
  • Les listes de tâches fournies par l’utilisateur lorsque plusieurs éléments sont mentionnés
  • Les opérations non triviales qui bénéficient du suivi des progrès
  • Les demandes explicites lorsque les utilisateurs demandent une organisation des tâches à faire

Exemples

Surveillance des changements de tâches à faire

import { query } from "@anthropic-ai/claude-code";

for await (const message of query({
  prompt: "Optimisez les performances de mon application React et suivez les progrès avec des tâches à faire",
  options: { maxTurns: 15 }
})) {
  // Les mises à jour des tâches à faire sont reflétées dans le flux de messages
  if (message.type === "tool_use" && message.name === "TodoWrite") {
    const todos = message.input.todos;
    
    console.log("Mise à jour du statut des tâches à faire :");
    todos.forEach((todo, index) => {
      const status = todo.status === "completed" ? "✅" : 
                    todo.status === "in_progress" ? "🔧" : "❌";
      console.log(`${index + 1}. ${status} ${todo.content}`);
    });
  }
}

Affichage des progrès en temps réel

import { query } from "@anthropic-ai/claude-code";

class TodoTracker {
  private todos: any[] = [];
  
  displayProgress() {
    if (this.todos.length === 0) return;
    
    const completed = this.todos.filter(t => t.status === "completed").length;
    const inProgress = this.todos.filter(t => t.status === "in_progress").length;
    const total = this.todos.length;
    
    console.log(`\nProgrès : ${completed}/${total} terminées`);
    console.log(`Travail en cours sur : ${inProgress} tâche(s)\n`);
    
    this.todos.forEach((todo, index) => {
      const icon = todo.status === "completed" ? "✅" : 
                  todo.status === "in_progress" ? "🔧" : "❌";
      const text = todo.status === "in_progress" ? todo.activeForm : todo.content;
      console.log(`${index + 1}. ${icon} ${text}`);
    });
  }
  
  async trackQuery(prompt: string) {
    for await (const message of query({
      prompt,
      options: { maxTurns: 20 }
    })) {
      if (message.type === "tool_use" && message.name === "TodoWrite") {
        this.todos = message.input.todos;
        this.displayProgress();
      }
    }
  }
}

// Utilisation
const tracker = new TodoTracker();
await tracker.trackQuery("Construisez un système d'authentification complet avec des tâches à faire");

Documentation connexe