7.9 KiB
7.9 KiB
Gantt Board CLI Tools
Complete command-line interface for the Gantt Board. All web UI operations available via CLI.
Quick Start
# List all tasks
./scripts/gantt.sh task list
# Create a task
./scripts/gantt.sh task create "Fix login bug" open high
# Create task with natural language
./scripts/gantt.sh task natural "Research TTS options by Friday, high priority"
# Update task
./scripts/gantt.sh task update <task-id> status done
# Add comment
./scripts/gantt.sh task comment <task-id> "Working on this now"
# Attach file
./scripts/gantt.sh task attach <task-id> ./notes.md
Main CLI: gantt.sh
A unified CLI that covers all API operations.
Task Commands
# List tasks (optionally filter by status)
./scripts/gantt.sh task list
./scripts/gantt.sh task list open
./scripts/gantt.sh task list in-progress
# Get specific task
./scripts/gantt.sh task get <task-id>
# Create task
./scripts/gantt.sh task create <title> [status] [priority] [project-id]
./scripts/gantt.sh task create "Fix bug" open high <project-uuid>
# Create from natural language
./scripts/gantt.sh task natural "Fix login bug by Friday, assign to Matt, high priority"
# Update any field
./scripts/gantt.sh task update <task-id> <field> <value>
./scripts/gantt.sh task update <task-uuid> status done
./scripts/gantt.sh task update <task-uuid> priority urgent
./scripts/gantt.sh task update <task-uuid> title "New title"
./scripts/gantt.sh task update <task-uuid> assigneeId <user-uuid>
# Delete task
./scripts/gantt.sh task delete <task-id>
# Add comment
./scripts/gantt.sh task comment <task-id> "Your comment here"
# Attach file
./scripts/gantt.sh task attach <task-id> <file-path>
./scripts/gantt.sh task attach <task-uuid> ./research.pdf
Project Commands
# List all projects
./scripts/gantt.sh project list
# Get specific project
./scripts/gantt.sh project get <project-id>
# Create project
./scripts/gantt.sh project create "Project Name" "Description" "#color"
# Update project field
./scripts/gantt.sh project update <project-id> <field> <value>
./scripts/gantt.sh project update <project-uuid> name "New Name"
./scripts/gantt.sh project update <project-uuid> description "New desc"
./scripts/gantt.sh project update <project-uuid> color "#ff0000"
# Delete project
./scripts/gantt.sh project delete <project-id>
Sprint Commands
# List all sprints
./scripts/gantt.sh sprint list
# Get specific sprint
./scripts/gantt.sh sprint get <sprint-id>
# Create sprint
./scripts/gantt.sh sprint create "Sprint 2" <project-id> "2026-02-23" "2026-03-01" "Sprint goal"
# Update sprint field
./scripts/gantt.sh sprint update <sprint-id> <field> <value>
./scripts/gantt.sh sprint update <sprint-uuid> name "New Sprint Name"
./scripts/gantt.sh sprint update <sprint-uuid> status active
./scripts/gantt.sh sprint update <sprint-uuid> startDate "2026-02-25"
# Delete sprint
./scripts/gantt.sh sprint delete <sprint-id>
Auth Commands
# Check current session
./scripts/gantt.sh auth session
# Log in
./scripts/gantt.sh auth login <email> <password>
# Log out
./scripts/gantt.sh auth logout
# Register new account
./scripts/gantt.sh auth register <email> <password> [name]
# Request password reset
./scripts/gantt.sh auth forgot-password <email>
# Reset password with token
./scripts/gantt.sh auth reset-password <token> <new-password>
# Update account
./scripts/gantt.sh auth account <field> <value>
# List all users
./scripts/gantt.sh auth users
Debug
# Call debug endpoint
./scripts/gantt.sh debug
Legacy Scripts (Supabase Direct)
These scripts use Supabase directly (not the API) and work without the web server running:
gantt-task-crud.sh - Direct Supabase Task Operations
Uses Supabase REST API directly with service role key.
./scripts/gantt-task-crud.sh list # List all tasks
./scripts/gantt-task-crud.sh list open # List open tasks
./scripts/gantt-task-crud.sh get <task-id> # Get specific task
./scripts/gantt-task-crud.sh create "Title" # Create task
./scripts/gantt-task-crud.sh update <id> field value # Update field
./scripts/gantt-task-crud.sh delete <task-id> # Delete task
attach-file.sh - Direct Supabase File Attachments
./scripts/attach-file.sh <task-id> <file-path>
Supports: md, txt, json, pdf, png, jpg, gif
view-attachment.sh - View Attached Files
./scripts/view-attachment.sh <task-id> [index]
Displays text files in terminal, saves binary files to /tmp/.
API Coverage Matrix
| Feature | Web UI | gantt.sh (API) | Legacy Scripts (Supabase) |
|---|---|---|---|
| List tasks | ✅ | ✅ | ✅ |
| Get task | ✅ | ✅ | ✅ |
| Create task | ✅ | ✅ | ✅ |
| Natural language create | ✅ | ✅ | ❌ |
| Update task | ✅ | ✅ | ✅ |
| Delete task | ✅ | ✅ | ✅ |
| Add comment | ✅ | ✅ | ❌ |
| Attach file | ✅ | ✅ | ✅ |
| List projects | ✅ | ✅ | ❌ |
| Get project | ✅ | ✅ | ❌ |
| Create project | ✅ | ✅ | ❌ |
| Update project | ✅ | ✅ | ❌ |
| Delete project | ✅ | ✅ | ❌ |
| List sprints | ✅ | ✅ | ❌ |
| Get sprint | ✅ | ✅ | ❌ |
| Create sprint | ✅ | ✅ | ❌ |
| Update sprint | ✅ | ✅ | ❌ |
| Delete sprint | ✅ | ✅ | ❌ |
| Auth login | ✅ | ✅ | ❌ |
| Auth logout | ✅ | ✅ | ❌ |
| Auth register | ✅ | ✅ | ❌ |
| Auth forgot-password | ✅ | ✅ | ❌ |
| Auth reset-password | ✅ | ✅ | ❌ |
| Auth account update | ✅ | ✅ | ❌ |
| Auth list users | ✅ | ✅ | ❌ |
| View attachments | ✅ | ❌ | ✅ |
Auditing Coverage
Use the audit script to verify CLI stays in sync with API:
./scripts/audit-cli-coverage.sh
This scans all API routes and checks that each has a matching CLI command. Run this before committing any API changes to ensure Rule 2.5 compliance.
Requirements
curl- HTTP requests (built into macOS)jq- JSON parsing:brew install jq
Environment Variables
# Override API URL
export API_URL=http://localhost:3001/api
./scripts/gantt.sh task list
Common Workflows
Create Task with Natural Language
./scripts/gantt.sh task natural "Fix the login bug by Friday, high priority, assign to Matt"
Complete Task with Documentation
# Add completion comment
./scripts/gantt.sh task comment <task-uuid> "Completed. See attached notes."
# Attach notes
./scripts/gantt.sh task attach <task-uuid> ./completion-notes.md
# Mark done
./scripts/gantt.sh task update <task-uuid> status done
Find Tasks
# All open tasks
./scripts/gantt.sh task list open
# Filter with jq
./scripts/gantt.sh task list | jq '.[] | select(.priority == "urgent") | {id, title}'
Which Script to Use?
Use gantt.sh (API) when:
- Web server is running
- You want natural language task creation
- You need to add comments
- You want to use the same API as the web UI
Use legacy scripts (Supabase) when:
- Web server is not running
- You need to view attachment content
- You want direct database access
Troubleshooting
"jq: command not found"
brew install jq
"API call failed (HTTP 401)"
- Check that you're logged in:
./scripts/gantt.sh auth session - Log in:
./scripts/gantt.sh auth login <email> <password>
"API call failed (HTTP 500)"
- Check that the dev server is running:
npm run dev - Check server logs for errors
Task ID format
Task IDs are UUIDs like 33ebc71e-7d40-456c-8f98-bb3578d2bb2b. Find them:
- In the URL when viewing a task
- From
task listoutput - From
task createoutput projectId,sprintId, andassigneeIdfields are UUID values as well.
Tips
- Tab completion: Add
source <(./scripts/gantt.sh completion bash)to your.bashrc - jq filtering: Pipe output to
jqfor precise data extraction - Task URLs:
https://gantt-board.vercel.app/tasks/<task-id> - Always verify: After attach/update, run
task getto confirm