Skip to main content

Overview

Task commands let you manage your Apollo tasks without opening the web app. All commands support fuzzy name resolution — you can reference tasks by title, partial match, or UUID.

Commands

List Tasks

# Your assigned tasks (shortcut)
apollo task mine

# All tasks in a project
apollo task list -p "Apollo"

# Filter by status
apollo task list -s todo,in_progress

# Combine filters
apollo task list -p "Apollo" -s in_progress -a me --limit 50

# Filter by release, specialty, or task type
apollo task list -p "Delfin One" --release "P3.1"
apollo task list -p "Delfin One" --specialty "frontend"
apollo task list -p "Delfin One" --unassigned --due-before 2026-03-01
Options:
FlagDescription
-p, --project <name>Filter by project name or ID
-s, --status <status>Filter by status: backlog, todo, in_progress, blocked, done
-a, --assignee <name>Filter by assignee (use me for yourself)
--release <name>Filter by release name (fuzzy-matched)
--specialty <name>Filter by specialty (e.g., frontend, back-end, ai)
--task-type <name>Filter by task type (e.g., feature, bug, chore)
--unassignedShow only tasks with no assignee
--due-before <date>Tasks due on or before a date (YYYY-MM-DD)
--limit <n>Max results (default: 50)

View Task Details

# By title (fuzzy match)
apollo task view "fix auth"

# By UUID
apollo task view 550e8400-e29b-41d4-a716-446655440000
Shows full task details: status, priority, assignee, project, description, dates, and dependencies.

Create a Task

# Basic
apollo task create -t "Add dark mode to CLI" -p "Apollo"

# Full options
apollo task create \
  -t "Implement token refresh" \
  -p "Delfin One" \
  --priority high \
  --assignee me \
  --description "Handle expired JWT tokens gracefully" \
  --due 2026-03-15
Options:
FlagDescription
-t, --title <title>Task title (required)
-p, --project <name>Project name or ID (required)
--priority <level>critical, high, medium, or low
--assignee <name>Assignee name or me
--description <text>Task description
--due <date>Due date (YYYY-MM-DD)
--hours <n>Estimated hours

Update a Task

# Change status
apollo task update <id> -s in_progress

# Change priority and assignee
apollo task update <id> --priority critical --assignee "carlos"

# Update description
apollo task update <id> --description "Updated requirements: also handle refresh tokens"

# Set due date and estimated hours
apollo task update <id> --due 2026-04-01 --hours 8
Options:
FlagDescription
-s, --status <status>New status
--priority <level>New priority
--assignee <name>New assignee
--description <text>New description
--due <date>New due date (YYYY-MM-DD)
--hours <n>New estimated hours

Quick Actions

# Mark as done
apollo task done <id-or-title>

# Assign to someone
apollo task assign <id-or-title> "Ian"

Bulk Operations

For managing multiple tasks at once, the CLI provides bulk commands that operate on sets of tasks filtered by project, status, or explicit IDs.

Bulk Status Update

Change the status of multiple tasks at once:
# By explicit IDs
apollo task bulk-status -s done --ids "id1,id2,id3"

# By project + current status filter
apollo task bulk-status -s in_progress -p "Apollo" --current-status todo

# Move all blocked tasks in a project to todo
apollo task bulk-status -s todo -p "Apollo" --current-status blocked
Options:
FlagDescription
-s, --status <status>New status to set (required)
--ids <id1,id2,...>Comma-separated task IDs
-p, --project <name>Filter by project
--current-status <status>Only update tasks with this current status

Bulk Assign

Assign multiple tasks to a team member:
# Assign specific tasks
apollo task bulk-assign -a me --ids "id1,id2"

# Assign all unassigned tasks in a project
apollo task bulk-assign -a "Ian" -p "Apollo" --unassigned-only
Options:
FlagDescription
-a, --assignee <name>Assignee name or me (required)
--ids <id1,id2,...>Comma-separated task IDs
-p, --project <name>Filter by project
--unassigned-onlyOnly assign tasks with no current assignee

Bulk Create

Create multiple tasks at once from a JSON file:
# From a JSON file
apollo task bulk-create -p "Apollo" --file tasks.json
The JSON file should contain an array of task objects:
[
  { "title": "Set up CI pipeline", "status": "todo", "priority": "high" },
  { "title": "Write unit tests", "status": "todo" },
  { "title": "Update documentation", "status": "backlog" }
]
Each task object can include: title, status, priority, description, due_date, estimated_hours.

JSON Output

All commands support --json for structured output:
apollo task list --json
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "title": "Fix authentication bug",
    "status": "in_progress",
    "priority": "high",
    "project_id": "...",
    "assigned_to": "..."
  }
]

Piping Examples

# Count tasks by status
apollo task list -p "Apollo" --json | jq 'group_by(.status) | map({status: .[0].status, count: length})'

# Get titles of blocked tasks
apollo task list -s blocked --json | jq '.[].title'