task-schema.md 4.3 KB

Standard: Task JSON Schema

Purpose: JSON schema reference for task management files

Last Updated: 2026-01-11


Core Concepts

Task management uses two JSON file types:

  • task.json - Feature-level metadata and tracking
  • subtask_NN.json - Individual atomic tasks with dependencies

Location: .tmp/tasks/{feature-slug}/ (at project root)


task.json Schema

Field Type Required Description
id string Yes kebab-case identifier
name string Yes Human-readable name (max 100)
status enum Yes active / completed / blocked / archived
objective string Yes One-line objective (max 200)
context_files array No Standards paths only — coding conventions, patterns, security rules to follow
reference_files array No Source material only — project files to look at (existing code, config, schemas)
exit_criteria array No Completion conditions
subtask_count int No Total subtasks
completed_count int No Done subtasks
created_at datetime Yes ISO 8601
completed_at datetime No ISO 8601

subtask_NN.json Schema

Field Type Required Description
id string Yes {feature}-{seq}
seq string Yes 2-digit (01, 02)
title string Yes Task title (max 100)
status enum Yes pending / in_progress / completed / blocked
depends_on array No Sequence numbers of dependencies
parallel bool No True if can run alongside others
context_files array No Standards paths only — conventions and patterns to follow
reference_files array No Source material only — existing files to reference
suggested_agent string No Recommended agent for this task (e.g., OpenFrontendSpecialist)
acceptance_criteria array No Binary pass/fail conditions
deliverables array No Files to create/modify
agent_id string No Set when in_progress
started_at datetime No ISO 8601
completed_at datetime No ISO 8601
completion_summary string No What was done (max 200)

Status Transitions

pending → in_progress   (by working agent, when deps satisfied)
in_progress → completed (by TaskManager, after verification)
* → blocked             (by either, when issue found)
blocked → pending       (when unblocked)

Parallel Flag

  • parallel: true = Isolated task, can run alongside others
  • parallel: false = May affect shared state, run sequentially

Use task-cli.ts parallel to find all parallelizable tasks ready to run.


context_files vs reference_files — The Rule

These two fields serve fundamentally different purposes. Never mix them.

Field Answers Contains Agent behavior
context_files "What rules do I follow?" Standards, conventions, patterns from .opencode/context/ Load and apply as coding guidelines
reference_files "What existing code do I look at?" Project source files, configs, schemas Read to understand existing patterns

Wrong ❌ — mixing standards and source files:

"context_files": [
  ".opencode/context/core/standards/code-quality.md",
  "package.json",
  "src/existing-auth.ts"
]

Right ✅ — clean separation:

"context_files": [
  ".opencode/context/core/standards/code-quality.md",
  ".opencode/context/core/standards/security-patterns.md"
],
"reference_files": [
  "package.json",
  "src/existing-auth.ts"
]

Example

{
  "id": "auth-system-02",
  "seq": "02",
  "title": "Create JWT service",
  "status": "pending",
  "depends_on": ["01"],
  "parallel": false,
  "context_files": [
    ".opencode/context/core/standards/code-quality.md",
    ".opencode/context/core/standards/security-patterns.md"
  ],
  "reference_files": [
    "src/auth/token-utils.ts"
  ],
  "acceptance_criteria": ["JWT tokens signed with RS256", "Tests pass"],
  "deliverables": ["src/auth/jwt.service.ts"]
}

Related

  • ../guides/splitting-tasks.md - How to decompose features
  • ../guides/managing-tasks.md - Lifecycle workflow
  • ../lookup/task-commands.md - CLI reference