Files
blackroad/scripts/memory-infinite-todos.sh
Alexa Amundson 78fbe80f2a Initial monorepo — everything BlackRoad in one place
bin/       230 CLI tools (ask-*, br-*, agent-*, roadid, carpool)
scripts/   99 automation scripts
fleet/     Node configs and deployment
workers/   Cloudflare Worker sources (roadpay, road-search, squad webhooks)
roadc/     RoadC programming language
roadnet/   Mesh network (5 APs, WireGuard)
operator/  Memory system scripts
config/    System configs
dotfiles/  Shell configs
docs/      Documentation

BlackRoad OS — Pave Tomorrow.

RoadChain-SHA2048: d1a24f55318d338b
RoadChain-Identity: alexa@sovereign
RoadChain-Full: d1a24f55318d338b24b60bad7be39286379c76ae5470817482100cb0ddbbcb97e147d07ac7243da0a9f0363e4e5c833d612b9c0df3a3cd20802465420278ef74875a5b77f55af6fe42a931b8b635b3d0d0b6bde9abf33dc42eea52bc03c951406d8cbe49f1a3d29b26a94dade05e9477f34a7d4d4c6ec4005c3c2ac54e73a68440c512c8e83fd9b1fe234750b898ef8f4032c23db173961fe225e67a0432b5293a9714f76c5c57ed5fdf35b9fb40fd73c03ebf88b7253c6a0575f5afb6a6b49b3bda310602fb1ef676859962dad2aebbb2875814b30eee0a8ba195e482d4cbc91d8819e7f38f6db53e8063401649c77bb994371473cabfb917fb53e8cbe73d60
2026-03-14 17:08:41 -05:00

616 lines
23 KiB
Bash
Executable File

#!/bin/bash
# BlackRoad Infinite To-Do System
# For long-running projects that span hours, days, weeks, months, or forever
# Enables seamless Claude collaboration across time
MEMORY_DIR="$HOME/.blackroad/memory"
TODOS_DIR="$MEMORY_DIR/infinite-todos"
PROJECTS_DIR="$TODOS_DIR/projects"
DAILY_DIR="$TODOS_DIR/daily"
WEEKLY_DIR="$TODOS_DIR/weekly"
MONTHLY_DIR="$TODOS_DIR/monthly"
FOREVER_DIR="$TODOS_DIR/forever"
ACTIVE_DIR="$TODOS_DIR/active"
ARCHIVE_DIR="$TODOS_DIR/archive"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
BOLD='\033[1m'
NC='\033[0m'
# Initialize system
init_infinite_todos() {
mkdir -p "$TODOS_DIR" "$PROJECTS_DIR" "$DAILY_DIR" "$WEEKLY_DIR" "$MONTHLY_DIR" "$FOREVER_DIR" "$ACTIVE_DIR" "$ARCHIVE_DIR"
# Create index file
if [[ ! -f "$TODOS_DIR/index.json" ]]; then
cat > "$TODOS_DIR/index.json" << 'EOF'
{
"version": "1.0",
"created": "",
"total_projects": 0,
"active_projects": 0,
"completed_projects": 0,
"total_todos": 0
}
EOF
local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ")
jq --arg ts "$timestamp" '.created = $ts' "$TODOS_DIR/index.json" > "$TODOS_DIR/index.tmp" && mv "$TODOS_DIR/index.tmp" "$TODOS_DIR/index.json"
fi
echo -e "${GREEN}✅ Infinite To-Do System initialized!${NC}"
echo -e "${BLUE}Directories:${NC}"
echo -e " Daily: $DAILY_DIR"
echo -e " Weekly: $WEEKLY_DIR"
echo -e " Monthly: $MONTHLY_DIR"
echo -e " Forever: $FOREVER_DIR"
echo -e " Active: $ACTIVE_DIR"
}
# Create a new long-running project
create_project() {
local project_id="$1"
local title="$2"
local description="$3"
local timescale="${4:-forever}" # daily, weekly, monthly, forever
local owner="${MY_CLAUDE:-unknown}"
if [[ -z "$project_id" || -z "$title" ]]; then
echo -e "${RED}Usage: create <project-id> <title> <description> [timescale]${NC}"
echo -e "${YELLOW}Timescales: daily, weekly, monthly, forever${NC}"
return 1
fi
# Validate timescale
if [[ ! "$timescale" =~ ^(daily|weekly|monthly|forever)$ ]]; then
echo -e "${RED}Invalid timescale. Use: daily, weekly, monthly, or forever${NC}"
return 1
fi
local project_file="$PROJECTS_DIR/${project_id}.json"
local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ")
if [[ -f "$project_file" ]]; then
echo -e "${RED}Project already exists: $project_id${NC}"
return 1
fi
cat > "$project_file" << EOF
{
"project_id": "$project_id",
"title": "$title",
"description": "$description",
"timescale": "$timescale",
"status": "active",
"owner": "$owner",
"created_at": "$timestamp",
"updated_at": "$timestamp",
"started_at": "$timestamp",
"completed_at": null,
"progress": 0,
"todos": [],
"milestones": [],
"dependencies": [],
"collaborators": ["$owner"],
"handoffs": [],
"notes": []
}
EOF
# Link to timescale directory
local timescale_dir
case "$timescale" in
daily) timescale_dir="$DAILY_DIR" ;;
weekly) timescale_dir="$WEEKLY_DIR" ;;
monthly) timescale_dir="$MONTHLY_DIR" ;;
forever) timescale_dir="$FOREVER_DIR" ;;
esac
ln -sf "$project_file" "$timescale_dir/${project_id}.json"
# Link to active directory
ln -sf "$project_file" "$ACTIVE_DIR/${project_id}.json"
# Update index
local total=$(jq '.total_projects + 1' "$TODOS_DIR/index.json")
local active=$(jq '.active_projects + 1' "$TODOS_DIR/index.json")
jq --arg total "$total" --arg active "$active" \
'.total_projects = ($total | tonumber) | .active_projects = ($active | tonumber)' \
"$TODOS_DIR/index.json" > "$TODOS_DIR/index.tmp" && mv "$TODOS_DIR/index.tmp" "$TODOS_DIR/index.json"
# Log to memory
~/memory-system.sh log project-created "$project_id" "🎯 New $timescale project: $title (by $owner)"
echo -e "${GREEN}✅ Project created: ${CYAN}$project_id${NC}"
echo -e " ${BLUE}Title:${NC} $title"
echo -e " ${BLUE}Timescale:${NC} $timescale"
echo -e " ${BLUE}Owner:${NC} $owner"
echo -e ""
echo -e "${YELLOW}Next steps:${NC}"
echo -e " Add todos: $0 add-todo $project_id <todo-text>"
echo -e " Add milestone: $0 milestone $project_id <milestone-name>"
echo -e " View project: $0 show $project_id"
}
# Add a todo to a project
add_todo() {
local project_id="$1"
local todo_text="$2"
local priority="${3:-medium}" # low, medium, high, urgent
if [[ -z "$project_id" || -z "$todo_text" ]]; then
echo -e "${RED}Usage: add-todo <project-id> <todo-text> [priority]${NC}"
return 1
fi
local project_file="$PROJECTS_DIR/${project_id}.json"
if [[ ! -f "$project_file" ]]; then
echo -e "${RED}Project not found: $project_id${NC}"
return 1
fi
local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ")
local todo_id=$(echo "$todo_text" | shasum -a 256 | cut -c1-12)
local new_todo=$(cat << EOF
{
"id": "$todo_id",
"text": "$todo_text",
"priority": "$priority",
"status": "pending",
"created_at": "$timestamp",
"completed_at": null,
"assigned_to": "${MY_CLAUDE:-unknown}"
}
EOF
)
# Add todo to project
jq --argjson todo "$new_todo" \
--arg ts "$timestamp" \
'.todos += [$todo] | .updated_at = $ts | .total_todos = (.todos | length)' \
"$project_file" > "$project_file.tmp" && mv "$project_file.tmp" "$project_file"
# Update global index
local total_todos=$(jq '.total_todos + 1' "$TODOS_DIR/index.json")
jq --arg total "$total_todos" '.total_todos = ($total | tonumber)' \
"$TODOS_DIR/index.json" > "$TODOS_DIR/index.tmp" && mv "$TODOS_DIR/index.tmp" "$TODOS_DIR/index.json"
echo -e "${GREEN}✅ To-do added to ${CYAN}$project_id${NC}"
echo -e " ${BLUE}Text:${NC} $todo_text"
echo -e " ${BLUE}Priority:${NC} $priority"
echo -e " ${BLUE}ID:${NC} $todo_id"
}
# Complete a todo
complete_todo() {
local project_id="$1"
local todo_id="$2"
if [[ -z "$project_id" || -z "$todo_id" ]]; then
echo -e "${RED}Usage: complete-todo <project-id> <todo-id>${NC}"
return 1
fi
local project_file="$PROJECTS_DIR/${project_id}.json"
if [[ ! -f "$project_file" ]]; then
echo -e "${RED}Project not found: $project_id${NC}"
return 1
fi
local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ")
# Update todo status
jq --arg id "$todo_id" \
--arg ts "$timestamp" \
'(.todos[] | select(.id == $id)) |= (.status = "completed" | .completed_at = $ts) | .updated_at = $ts' \
"$project_file" > "$project_file.tmp" && mv "$project_file.tmp" "$project_file"
# Calculate progress
local completed=$(jq '[.todos[] | select(.status == "completed")] | length' "$project_file")
local total=$(jq '.todos | length' "$project_file")
local progress=$(( completed * 100 / total ))
jq --arg progress "$progress" '.progress = ($progress | tonumber)' \
"$project_file" > "$project_file.tmp" && mv "$project_file.tmp" "$project_file"
# Log to memory
local todo_text=$(jq -r --arg id "$todo_id" '.todos[] | select(.id == $id) | .text' "$project_file")
~/memory-system.sh log progress "${MY_CLAUDE:-unknown}" "✅ Completed in $project_id: $todo_text ($progress% done)"
echo -e "${GREEN}✅ To-do completed!${NC}"
echo -e " ${BLUE}Project:${NC} $project_id"
echo -e " ${BLUE}Progress:${NC} $progress% ($completed/$total)"
}
# Add a milestone
add_milestone() {
local project_id="$1"
local milestone_name="$2"
local target_date="$3"
if [[ -z "$project_id" || -z "$milestone_name" ]]; then
echo -e "${RED}Usage: milestone <project-id> <milestone-name> [target-date]${NC}"
return 1
fi
local project_file="$PROJECTS_DIR/${project_id}.json"
if [[ ! -f "$project_file" ]]; then
echo -e "${RED}Project not found: $project_id${NC}"
return 1
fi
local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ")
local milestone_id=$(echo "$milestone_name" | shasum -a 256 | cut -c1-12)
local new_milestone=$(cat << EOF
{
"id": "$milestone_id",
"name": "$milestone_name",
"target_date": "${target_date:-null}",
"status": "pending",
"created_at": "$timestamp",
"completed_at": null
}
EOF
)
jq --argjson milestone "$new_milestone" \
--arg ts "$timestamp" \
'.milestones += [$milestone] | .updated_at = $ts' \
"$project_file" > "$project_file.tmp" && mv "$project_file.tmp" "$project_file"
echo -e "${GREEN}✅ Milestone added to ${CYAN}$project_id${NC}"
echo -e " ${BLUE}Name:${NC} $milestone_name"
[[ -n "$target_date" ]] && echo -e " ${BLUE}Target:${NC} $target_date"
}
# Handoff project to another Claude
handoff_project() {
local project_id="$1"
local new_owner="$2"
local handoff_note="${3:-No notes provided}"
if [[ -z "$project_id" || -z "$new_owner" ]]; then
echo -e "${RED}Usage: handoff <project-id> <new-owner-claude> [note]${NC}"
return 1
fi
local project_file="$PROJECTS_DIR/${project_id}.json"
if [[ ! -f "$project_file" ]]; then
echo -e "${RED}Project not found: $project_id${NC}"
return 1
fi
local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ")
local old_owner=$(jq -r '.owner' "$project_file")
local handoff=$(cat << EOF
{
"from": "$old_owner",
"to": "$new_owner",
"timestamp": "$timestamp",
"note": "$handoff_note"
}
EOF
)
jq --arg new_owner "$new_owner" \
--argjson handoff "$handoff" \
--arg ts "$timestamp" \
'.owner = $new_owner | .handoffs += [$handoff] | .updated_at = $ts | .collaborators += [$new_owner] | .collaborators |= unique' \
"$project_file" > "$project_file.tmp" && mv "$project_file.tmp" "$project_file"
# Log to memory
local title=$(jq -r '.title' "$project_file")
~/memory-system.sh log handoff "$project_id" "🤝 Project '$title' handed off: $old_owner$new_owner. Note: $handoff_note"
echo -e "${GREEN}✅ Project handed off!${NC}"
echo -e " ${BLUE}From:${NC} $old_owner"
echo -e " ${BLUE}To:${NC} $new_owner"
echo -e " ${BLUE}Note:${NC} $handoff_note"
}
# Show project details
show_project() {
local project_id="$1"
if [[ -z "$project_id" ]]; then
echo -e "${RED}Usage: show <project-id>${NC}"
return 1
fi
local project_file="$PROJECTS_DIR/${project_id}.json"
if [[ ! -f "$project_file" ]]; then
echo -e "${RED}Project not found: $project_id${NC}"
return 1
fi
local title=$(jq -r '.title' "$project_file")
local description=$(jq -r '.description' "$project_file")
local timescale=$(jq -r '.timescale' "$project_file")
local status=$(jq -r '.status' "$project_file")
local owner=$(jq -r '.owner' "$project_file")
local progress=$(jq -r '.progress' "$project_file")
local created=$(jq -r '.created_at' "$project_file")
local updated=$(jq -r '.updated_at' "$project_file")
echo -e "${CYAN}╔════════════════════════════════════════════════════════════╗${NC}"
echo -e "${CYAN}║ 🎯 PROJECT: ${project_id}${NC}"
echo -e "${CYAN}╚════════════════════════════════════════════════════════════╝${NC}"
echo -e ""
echo -e "${BOLD}${title}${NC}"
echo -e "${description}"
echo -e ""
echo -e "${BLUE}Timescale:${NC} $timescale"
echo -e "${BLUE}Status:${NC} $status"
echo -e "${BLUE}Owner:${NC} $owner"
echo -e "${BLUE}Progress:${NC} $progress%"
echo -e "${BLUE}Created:${NC} $created"
echo -e "${BLUE}Updated:${NC} $updated"
echo -e ""
# Show todos
local todos_count=$(jq '.todos | length' "$project_file")
if [[ $todos_count -gt 0 ]]; then
echo -e "${PURPLE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${BOLD}To-Dos ($todos_count):${NC}"
echo -e ""
jq -r '.todos[] | "\(.status)|\(.priority)|\(.id)|\(.text)|\(.assigned_to)"' "$project_file" | while IFS='|' read -r status priority id text assigned; do
local status_icon="⏳"
local status_color="$YELLOW"
if [[ "$status" == "completed" ]]; then
status_icon="✅"
status_color="$GREEN"
elif [[ "$status" == "in_progress" ]]; then
status_icon="🔄"
status_color="$CYAN"
fi
local priority_badge=""
case "$priority" in
urgent) priority_badge="${RED}[URGENT]${NC}" ;;
high) priority_badge="${YELLOW}[HIGH]${NC}" ;;
medium) priority_badge="${BLUE}[MED]${NC}" ;;
low) priority_badge="${NC}[LOW]${NC}" ;;
esac
echo -e " ${status_color}${status_icon}${NC} ${priority_badge} ${text}"
echo -e " ${NC}ID: ${id} | Assigned: ${assigned}${NC}"
done
echo -e ""
fi
# Show milestones
local milestones_count=$(jq '.milestones | length' "$project_file")
if [[ $milestones_count -gt 0 ]]; then
echo -e "${PURPLE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${BOLD}Milestones ($milestones_count):${NC}"
echo -e ""
jq -r '.milestones[] | "\(.status)|\(.name)|\(.target_date)"' "$project_file" | while IFS='|' read -r status name target; do
local status_icon="🎯"
[[ "$status" == "completed" ]] && status_icon="🏆"
echo -e " ${status_icon} ${name}"
[[ "$target" != "null" ]] && echo -e " Target: ${target}"
done
echo -e ""
fi
# Show handoffs
local handoffs_count=$(jq '.handoffs | length' "$project_file")
if [[ $handoffs_count -gt 0 ]]; then
echo -e "${PURPLE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${BOLD}Handoff History ($handoffs_count):${NC}"
echo -e ""
jq -r '.handoffs[] | "\(.from)|\(.to)|\(.timestamp)|\(.note)"' "$project_file" | while IFS='|' read -r from to timestamp note; do
echo -e " 🤝 ${from}${to}"
echo -e " ${timestamp}"
echo -e " Note: ${note}"
done
echo -e ""
fi
}
# List all projects
list_projects() {
local filter_timescale="$1"
local filter_status="${2:-active}"
echo -e "${CYAN}╔════════════════════════════════════════════════════════════╗${NC}"
echo -e "${CYAN}║ 🎯 INFINITE TO-DO SYSTEM - PROJECTS 🎯 ║${NC}"
echo -e "${CYAN}╚════════════════════════════════════════════════════════════╝${NC}"
echo -e ""
local total=$(jq -r '.total_projects' "$TODOS_DIR/index.json")
local active=$(jq -r '.active_projects' "$TODOS_DIR/index.json")
local completed=$(jq -r '.completed_projects' "$TODOS_DIR/index.json")
local total_todos=$(jq -r '.total_todos' "$TODOS_DIR/index.json")
echo -e "${GREEN}Total Projects:${NC} $total ${BLUE}Active:${NC} $active ${PURPLE}Completed:${NC} $completed"
echo -e "${YELLOW}Total To-Dos:${NC} $total_todos"
echo -e ""
if [[ $total -eq 0 ]]; then
echo -e "${YELLOW}No projects yet. Create one with:${NC}"
echo -e " $0 create <project-id> <title> <description> [timescale]"
return
fi
echo -e "${PURPLE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
for project_file in "$PROJECTS_DIR"/*.json; do
[[ ! -f "$project_file" ]] && continue
local project_id=$(jq -r '.project_id' "$project_file")
local title=$(jq -r '.title' "$project_file")
local timescale=$(jq -r '.timescale' "$project_file")
local status=$(jq -r '.status' "$project_file")
local progress=$(jq -r '.progress' "$project_file")
local owner=$(jq -r '.owner' "$project_file")
local todos_count=$(jq '.todos | length' "$project_file")
local completed_count=$(jq '[.todos[] | select(.status == "completed")] | length' "$project_file")
# Apply filters
if [[ -n "$filter_timescale" && "$timescale" != "$filter_timescale" ]]; then
continue
fi
if [[ -n "$filter_status" && "$status" != "$filter_status" ]]; then
continue
fi
local timescale_badge=""
case "$timescale" in
daily) timescale_badge="${CYAN}[📅 DAILY]${NC}" ;;
weekly) timescale_badge="${BLUE}[📆 WEEKLY]${NC}" ;;
monthly) timescale_badge="${PURPLE}[📊 MONTHLY]${NC}" ;;
forever) timescale_badge="${YELLOW}[♾️ FOREVER]${NC}" ;;
esac
echo -e "${BOLD}${CYAN}$project_id${NC} $timescale_badge"
echo -e " ${title}"
echo -e " ${BLUE}Progress:${NC} $progress% ($completed_count/$todos_count todos) | ${BLUE}Owner:${NC} $owner"
echo -e ""
done
}
# Dashboard view
dashboard() {
echo -e "${CYAN}╔════════════════════════════════════════════════════════════╗${NC}"
echo -e "${CYAN}║ 🎯 INFINITE TO-DO SYSTEM - DASHBOARD 🎯 ║${NC}"
echo -e "${CYAN}╚════════════════════════════════════════════════════════════╝${NC}"
echo -e ""
# Summary stats
local total=$(jq -r '.total_projects' "$TODOS_DIR/index.json")
local active=$(jq -r '.active_projects' "$TODOS_DIR/index.json")
local completed=$(jq -r '.completed_projects' "$TODOS_DIR/index.json")
local total_todos=$(jq -r '.total_todos' "$TODOS_DIR/index.json")
echo -e "${BOLD}System Stats:${NC}"
echo -e " ${GREEN}Total Projects:${NC} $total"
echo -e " ${BLUE}Active Projects:${NC} $active"
echo -e " ${PURPLE}Completed Projects:${NC} $completed"
echo -e " ${YELLOW}Total To-Dos:${NC} $total_todos"
echo -e ""
# By timescale
echo -e "${PURPLE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${BOLD}Projects by Timescale:${NC}"
echo -e ""
for timescale in daily weekly monthly forever; do
local timescale_dir
case "$timescale" in
daily) timescale_dir="$DAILY_DIR" ;;
weekly) timescale_dir="$WEEKLY_DIR" ;;
monthly) timescale_dir="$MONTHLY_DIR" ;;
forever) timescale_dir="$FOREVER_DIR" ;;
esac
local count=$(ls -1 "$timescale_dir"/*.json 2>/dev/null | wc -l | tr -d ' ')
local icon=""
case "$timescale" in
daily) icon="📅" ;;
weekly) icon="📆" ;;
monthly) icon="📊" ;;
forever) icon="♾️" ;;
esac
local timescale_cap="$(echo ${timescale:0:1} | tr '[:lower:]' '[:upper:]')${timescale:1}"
echo -e " ${icon} ${timescale_cap}: ${count} projects"
done
echo -e ""
# My projects
echo -e "${PURPLE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${BOLD}My Active Projects (${MY_CLAUDE:-unknown}):${NC}"
echo -e ""
local my_count=0
for project_file in "$ACTIVE_DIR"/*.json; do
[[ ! -f "$project_file" ]] && continue
local owner=$(jq -r '.owner' "$project_file")
if [[ "$owner" == "${MY_CLAUDE:-unknown}" ]]; then
local project_id=$(jq -r '.project_id' "$project_file")
local title=$(jq -r '.title' "$project_file")
local progress=$(jq -r '.progress' "$project_file")
echo -e " ${CYAN}$project_id${NC} - $title (${progress}%)"
((my_count++))
fi
done
if [[ $my_count -eq 0 ]]; then
echo -e " ${YELLOW}No active projects. Create one!${NC}"
fi
}
# Main command router
case "$1" in
init)
init_infinite_todos
;;
create)
create_project "$2" "$3" "$4" "$5"
;;
add-todo)
add_todo "$2" "$3" "$4"
;;
complete-todo)
complete_todo "$2" "$3"
;;
milestone)
add_milestone "$2" "$3" "$4"
;;
handoff)
handoff_project "$2" "$3" "$4"
;;
show)
show_project "$2"
;;
list)
list_projects "$2" "$3"
;;
dashboard)
dashboard
;;
*)
echo -e "${CYAN}╔════════════════════════════════════════════════════════════╗${NC}"
echo -e "${CYAN}║ 🎯 BLACKROAD INFINITE TO-DO SYSTEM 🎯 ║${NC}"
echo -e "${CYAN}╚════════════════════════════════════════════════════════════╝${NC}"
echo -e ""
echo -e "${BOLD}Usage:${NC} $0 <command> [arguments]"
echo -e ""
echo -e "${BOLD}Commands:${NC}"
echo -e " ${GREEN}init${NC} - Initialize system"
echo -e " ${GREEN}create${NC} <id> <title> <desc> [time] - Create new project"
echo -e " ${GREEN}add-todo${NC} <id> <text> [priority] - Add to-do to project"
echo -e " ${GREEN}complete-todo${NC} <id> <todo-id> - Complete a to-do"
echo -e " ${GREEN}milestone${NC} <id> <name> [date] - Add milestone"
echo -e " ${GREEN}handoff${NC} <id> <new-owner> [note] - Hand off project"
echo -e " ${GREEN}show${NC} <id> - Show project details"
echo -e " ${GREEN}list${NC} [timescale] [status] - List all projects"
echo -e " ${GREEN}dashboard${NC} - Show dashboard"
echo -e ""
echo -e "${BOLD}Timescales:${NC} daily, weekly, monthly, forever"
echo -e "${BOLD}Priorities:${NC} low, medium, high, urgent"
echo -e ""
echo -e "${BOLD}Examples:${NC}"
echo -e " $0 create deploy-agents 'Deploy 30k agents' 'Scale infrastructure' forever"
echo -e " $0 add-todo deploy-agents 'Set up Kubernetes cluster' urgent"
echo -e " $0 milestone deploy-agents 'First 1000 agents deployed' 2025-12-31"
echo -e " $0 handoff deploy-agents claude-kubernetes-expert 'Handing off K8s setup'"
;;
esac