Pelacakan todo menyediakan cara terstruktur untuk mengelola tugas dan menampilkan kemajuan kepada pengguna. Claude Code SDK menyertakan fungsionalitas todo bawaan yang membantu mengorganisir alur kerja yang kompleks dan menjaga pengguna tetap terinformasi tentang perkembangan tugas.

Siklus Hidup Todo

Todo mengikuti siklus hidup yang dapat diprediksi:
  1. Dibuat sebagai pending ketika tugas diidentifikasi
  2. Diaktifkan menjadi in_progress ketika pekerjaan dimulai
  3. Diselesaikan ketika tugas berhasil selesai
  4. Dihapus ketika semua tugas dalam grup telah selesai

Kapan Todo Digunakan

SDK secara otomatis membuat todo untuk:
  • Tugas multi-langkah yang kompleks yang memerlukan 3 atau lebih tindakan berbeda
  • Daftar tugas yang disediakan pengguna ketika beberapa item disebutkan
  • Operasi non-trivial yang mendapat manfaat dari pelacakan kemajuan
  • Permintaan eksplisit ketika pengguna meminta organisasi todo

Contoh

Memantau Perubahan Todo

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

for await (const message of query({
  prompt: "Optimalkan performa aplikasi React saya dan lacak kemajuan dengan todo",
  options: { maxTurns: 15 }
})) {
  // Pembaruan todo tercermin dalam aliran pesan
  if (message.type === "tool_use" && message.name === "TodoWrite") {
    const todos = message.input.todos;
    
    console.log("Pembaruan Status Todo:");
    todos.forEach((todo, index) => {
      const status = todo.status === "completed" ? "✅" : 
                    todo.status === "in_progress" ? "🔧" : "❌";
      console.log(`${index + 1}. ${status} ${todo.content}`);
    });
  }
}

Tampilan Kemajuan Real-time

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(`\nKemajuan: ${completed}/${total} selesai`);
    console.log(`Sedang mengerjakan: ${inProgress} tugas\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();
      }
    }
  }
}

// Penggunaan
const tracker = new TodoTracker();
await tracker.trackQuery("Bangun sistem autentikasi lengkap dengan todo");

Dokumentasi Terkait