gantt-board/scripts/README.md

7.2 KiB

Gantt Board CLI

A comprehensive command-line interface for managing tasks, projects, and sprints in the Gantt Board system.

Scripts

  • task.sh - Full CRUD operations for tasks
  • project.sh - Project management
  • sprint.sh - Sprint management

Installation

  1. Make scripts executable:
chmod +x task.sh project.sh sprint.sh
  1. Ensure dependencies are installed:
brew install jq

Configuration

Scripts use the following defaults:

  • Supabase URL: https://qnatchrjlpehiijwtreh.supabase.co
  • Default Project: OpenClaw iOS
  • Default Assignee: Max

Task Management (task.sh)

Create Task

# Minimal task
./task.sh create --title "Fix bug"

# Full task with all fields
./task.sh create \
  --title "Implement OAuth" \
  --description "Add OAuth2 login support" \
  --type task \
  --status todo \
  --priority high \
  --project "Gantt Board" \
  --sprint "current" \
  --assignee "Max" \
  --due-date "2026-03-01" \
  --tags "auth,security" \
  --comments "Starting implementation"

# Create from JSON file
./task.sh create --file task.json

# Interactive mode
./task.sh create --interactive

# Auto-create project if not found
./task.sh create --title "New Feature" --project "New Project" --auto-create

List Tasks

# List all tasks
./task.sh list

# Filter by status
./task.sh list --status todo

# Filter by priority
./task.sh list --priority high

# Filter by project (auto-resolves name)
./task.sh list --project "Gantt Board"

# Filter by assignee
./task.sh list --assignee "Max"

# Filter by type
./task.sh list --type bug

# JSON output
./task.sh list --json

# Limit results
./task.sh list --limit 10

Get Task

./task.sh get <task-id>

Update Task

# Update status
./task.sh update <task-id> --status in-progress

# Update multiple fields
./task.sh update <task-id> \
  --status done \
  --priority low \
  --add-comment "Task completed"

# Update assignee
./task.sh update <task-id> --assignee "Matt"

# Clear tags
./task.sh update <task-id> --clear-tags

# Update tags
./task.sh update <task-id> --tags "new-tag,another-tag"

Delete Task

./task.sh delete <task-id>

Bulk Create

# From JSON file
./task.sh bulk-create tasks.json

# With auto-create for projects
./task.sh bulk-create tasks.json --auto-create

JSON Format:

[
  {
    "title": "Task 1",
    "description": "Description",
    "type": "task",
    "status": "todo",
    "priority": "high",
    "project": "Project Name",
    "sprint": "Sprint 1",
    "assignee": "Max",
    "due_date": "2026-03-01",
    "tags": "tag1,tag2",
    "comments": "Initial comment"
  }
]

Project Management (project.sh)

Create Project

./project.sh create --name "New Project" --description "Project description" --color "#3b82f6"

List Projects

# List all projects
./project.sh list

# JSON output
./project.sh list --json

Get Project

# By ID
./project.sh get <project-id>

# By name (auto-resolves)
./project.sh get "Gantt Board"

Update Project

./project.sh update <project-id-or-name> \
  --name "Updated Name" \
  --description "Updated description" \
  --color "#ff0000"

Delete Project

./project.sh delete <project-id-or-name>

Sprint Management (sprint.sh)

Create Sprint

./sprint.sh create \
  --name "Sprint 3" \
  --project "Gantt Board" \
  --goal "Complete API integration" \
  --start-date "2026-02-24" \
  --end-date "2026-03-07"

List Sprints

# List all sprints
./sprint.sh list

# List active sprints
./sprint.sh list --active

# Filter by project
./sprint.sh list --project "Gantt Board"

# JSON output
./sprint.sh list --json

Get Sprint

# By ID
./sprint.sh get <sprint-id>

# By name
./sprint.sh get "Sprint 1"

Update Sprint

./sprint.sh update <sprint-id-or-name> \
  --name "Updated Sprint" \
  --goal "Updated goal" \
  --status active \
  --start-date "2026-02-25" \
  --end-date "2026-03-10"

Close Sprint

./sprint.sh close <sprint-id-or-name>

Delete Sprint

./sprint.sh delete <sprint-id-or-name>

Name Resolution

All scripts support automatic name-to-ID resolution:

  • Projects: "Gantt Board" → 68d05855-a399-44a4-9c36-3ee78257c2c9
  • Sprints: "Sprint 1" → b2c3d4e5-0001-0000-0000-000000000001
  • Assignees:
    • "Max" → 9c29cc99-81a1-4e75-8dff-cd7cc5ceb5aa
    • "Matt" → 0a3e400c-3932-48ae-9b65-f3f9c6f26fe9
  • Special: Use "current" for the most recent active sprint

Task Types

  • task - Standard task
  • bug - Bug fix
  • research - Research spike
  • plan - Planning task
  • idea - Idea/backlog item

Task Statuses

  • open - Newly created
  • todo - Ready to start
  • blocked - Blocked
  • in-progress - Currently working
  • review - Ready for review
  • validate - Needs validation
  • done - Completed

Priorities

  • low
  • medium
  • high
  • urgent

Examples

Daily Workflow

# Create a new task
./task.sh create --title "Fix login bug" --type bug --priority urgent --project "Gantt Board"

# List my high priority tasks
./task.sh list --assignee "Max" --priority high

# Update task status
./task.sh update <task-id> --status in-progress

# Add progress comment
./task.sh update <task-id> --add-comment "Working on reproduction steps"

# Mark as done
./task.sh update <task-id> --status done --add-comment "Fixed in commit abc123"

Sprint Planning

# Create new sprint
./sprint.sh create --name "Sprint 5" --project "Gantt Board" --start-date 2026-03-01 --end-date 2026-03-14

# Create multiple tasks for the sprint
./task.sh bulk-create sprint-tasks.json

# Close previous sprint
./sprint.sh close "Sprint 4"

Project Setup

# Create new project
./project.sh create --name "Mobile App" --description "iOS and Android app" --color "#8b5cf6"

# Create initial sprint
./sprint.sh create --name "Sprint 1" --project "Mobile App" --goal "MVP release"

# Create starter tasks
./task.sh create --title "Setup repo" --project "Mobile App" --sprint "Sprint 1"
./task.sh create --title "Design system" --project "Mobile App" --sprint "Sprint 1"

Exit Codes

  • 0 - Success
  • 1 - Error (invalid input, API failure, not found)

Environment Variables

Scripts use hardcoded configuration at the top of each file. To customize, edit:

  • SUPABASE_URL - Supabase instance URL
  • SERVICE_KEY - Supabase service role key
  • DEFAULT_PROJECT_ID - Default project for tasks
  • DEFAULT_ASSIGNEE_ID - Default assignee for tasks
  • MATT_ID - Matt's user ID

Troubleshooting

"Project not found"

  • Use --auto-create flag to create project automatically
  • Check project name spelling
  • Use ./project.sh list to see available projects

"Sprint not found"

  • Use "current" to reference the most recent active sprint
  • Check sprint name with ./sprint.sh list

"jq parse error"

  • Ensure jq is installed: brew install jq
  • Check JSON file syntax

Empty response on create

  • This is normal - Supabase returns empty on successful POST
  • Check list command to verify creation: ./task.sh list --limit 5

License

Part of the OpenClaw Gantt Board project.