Files
oh-my-openagent/docs/task-system.md
YeonGyu-Kim 1b7fd32bad docs: add Task system documentation
- Document TaskCreate, TaskGet, TaskList, TaskUpdate tools
- Note that these tools follow Claude Code internal specs but are not officially documented by Anthropic
- Include schema, dependency system, and usage examples
2026-02-03 16:35:49 +09:00

2.8 KiB

Task System

Oh My OpenCode's Task system provides structured task management with dependency tracking and parallel execution optimization.

Note on Claude Code Alignment

This implementation follows Claude Code's internal Task tool signatures (TaskCreate, TaskUpdate, TaskList, TaskGet) and field naming conventions (subject, blockedBy, blocks, etc.).

However, Anthropic has not published official documentation for these tools. The Task tools exist in Claude Code but are not documented on docs.anthropic.com or code.claude.com.

This is Oh My OpenCode's own implementation based on observed Claude Code behavior and internal specifications.

Tools

Tool Purpose
TaskCreate Create a task with auto-generated ID (T-{uuid})
TaskGet Retrieve full task details by ID
TaskList List active tasks with unresolved blockers
TaskUpdate Update status, dependencies, or metadata

Task Schema

interface Task {
  id: string              // T-{uuid}
  subject: string         // Imperative: "Run tests"
  description: string
  status: "pending" | "in_progress" | "completed" | "deleted"
  activeForm?: string     // Present continuous: "Running tests"
  blocks: string[]        // Tasks this blocks
  blockedBy: string[]     // Tasks blocking this
  owner?: string          // Agent name
  metadata?: Record<string, unknown>
  threadID: string        // Session ID (auto-set)
}

Dependencies and Parallel Execution

[Build Frontend]    ──┐
                      ├──→ [Integration Tests] ──→ [Deploy]
[Build Backend]     ──┘
  • Tasks with empty blockedBy run in parallel
  • Dependent tasks wait until blockers complete

Example Workflow

TaskCreate({ subject: "Build frontend" })                    // T-001
TaskCreate({ subject: "Build backend" })                     // T-002
TaskCreate({ subject: "Run integration tests",
             blockedBy: ["T-001", "T-002"] })                 // T-003
TaskList()
// T-001 [pending] Build frontend        blockedBy: []
// T-002 [pending] Build backend         blockedBy: []
// T-003 [pending] Integration tests     blockedBy: [T-001, T-002]
TaskUpdate({ id: "T-001", status: "completed" })
TaskUpdate({ id: "T-002", status: "completed" })
// T-003 now unblocked

Storage

Tasks are stored as JSON files:

.sisyphus/tasks/

Difference from TodoWrite

Feature TodoWrite Task System
Storage Session memory File system
Persistence Lost on close Survives restart
Dependencies None Full support (blockedBy)
Parallel execution Manual Automatic optimization

When to Use

Use Tasks when:

  • Work has multiple steps with dependencies
  • Multiple subagents will collaborate
  • Progress should persist across sessions