13 KiB
description
| description |
|---|
| Display comprehensive status of TEDS tasks |
TEDS Status Agent
You are displaying the status of TEDS tasks to help users understand their current work state.
Load Configuration
Determine workspace location:
-
Check CLAUDE.md:
if test -f "CLAUDE.md"; then grep -A 2 "## TEDS Configuration" CLAUDE.md | grep "Workspace Directory" | sed 's/.*`\([^`]*\)`.*/\1/' fi -
Check .teds-config.yaml:
if test -f ".teds-config.yaml"; then grep "path:" .teds-config.yaml | awk '{print $2}' fi -
Error if neither exists:
❌ TEDS not initialized in this project. Please run: /teds-init
Store workspace path as WORKSPACE.
Determine Mode
Command format: /teds-status [optional-task-id]
Mode A: No task-id provided → Show all tasks summary Mode B: Task-id provided → Show detailed single task status
Mode A: All Tasks Summary
Step 1: Scan for Tasks
# List active tasks
ls -1 "${WORKSPACE}/active_tasks/" 2>/dev/null
# List archived tasks (recent ones)
ls -1t "${WORKSPACE}/archived_tasks/" 2>/dev/null | head -10
Step 2: Gather Task Information
For each task directory:
TASK_ID="${dir_name}"
# Read manifest
NAME=$(grep "name:" "${WORKSPACE}/active_tasks/${TASK_ID}/manifest.yaml" | cut -d: -f2 | tr -d ' ')
CREATED=$(grep "created_at:" "${WORKSPACE}/active_tasks/${TASK_ID}/manifest.yaml" | cut -d: -f2-)
# Read status
PHASE=$(grep "current_phase:" "${WORKSPACE}/active_tasks/${TASK_ID}/status.yaml" | cut -d: -f2- | tr -d ' "')
PROGRESS=$(grep "progress_percentage:" "${WORKSPACE}/active_tasks/${TASK_ID}/status.yaml" | cut -d: -f2 | tr -d ' ')
BLOCKED=$(grep "blocked:" "${WORKSPACE}/active_tasks/${TASK_ID}/status.yaml" | cut -d: -f2 | tr -d ' ')
Step 3: Present Summary Table
# TEDS Tasks Status
**Workspace**: `{WORKSPACE}/`
**Configuration**: {CLAUDE.md | .teds-config.yaml}
## Active Tasks ({count})
{If no active tasks:}
No active tasks.
Use `/teds-start [name] "[description]"` to create your first task.
{If has active tasks:}
| ID | Name | Phase | Progress | Status |
|----|------|-------|----------|--------|
| {task-id (short)} | {name} | {phase (short)} | {X}% | {active/🔴blocked} |
| {task-id (short)} | {name} | {phase (short)} | {X}% | {active/🔴blocked} |
| ... | ... | ... | ... | ... |
{If any tasks are blocked:}
⚠️ {count} task(s) blocked. Use `/teds-status [task-id]` for details.
## Recently Archived ({count from last 10})
{If no archived tasks:}
No archived tasks yet.
{If has archived tasks:}
| ID | Name | Completed | Duration |
|----|------|-----------|----------|
| {task-id (short)} | {name} | {time ago} | {duration} |
| ... | ... | ... | ... |
## Quick Actions
- **View task details**: `/teds-status [task-id]`
- **Continue a task**: `/teds-continue [task-id]`
- **Start new task**: `/teds-start [name]`
- **Complete a task**: `/teds-complete [task-id]`
## Workspace Statistics
- **Total Active**: {count}
- **Total Archived**: {count}
- **Knowledge Entries**: {count files in knowledge_index/}
- **Disk Usage**: {du -sh workspace}
---
Run `/teds-status [task-id]` for detailed information about a specific task.
Formatting Notes
Task ID Display:
- Show shortened version:
20250116-1430-refactor-auth→0116-1430-refactor - Or just last part:
refactor-auth - Include hover/full ID if possible
Phase Display:
- Truncate long phases:
Phase 2: Implementation→Implementation - Or show as:
P2: Implementation
Time Ago:
- < 1 hour:
45 minutes ago - < 1 day:
5 hours ago - < 1 week:
3 days ago - < 1 month:
2 weeks ago - Older:
2025-01-10
Duration:
- Calculate from created_at to completed_at (for archived)
- Format:
2.5 hours,3 days,1 week
Mode B: Single Task Detailed Status
Step 1: Validate Task Exists
TASK_ID="${provided_id}"
if ! test -d "${WORKSPACE}/active_tasks/${TASK_ID}"; then
# Check if it's archived
if test -d "${WORKSPACE}/archived_tasks/${TASK_ID}"; then
TASK_DIR="${WORKSPACE}/archived_tasks/${TASK_ID}"
ARCHIVED=true
else
echo "❌ Task not found: ${TASK_ID}"
echo ""
echo "Available tasks:"
ls "${WORKSPACE}/active_tasks/"
exit 1
fi
else
TASK_DIR="${WORKSPACE}/active_tasks/${TASK_ID}"
ARCHIVED=false
fi
Step 2: Load Task Data
# Read all key files
MANIFEST=$(cat "${TASK_DIR}/manifest.yaml")
STATUS=$(cat "${TASK_DIR}/status.yaml")
PLAN=$(cat "${TASK_DIR}/plan.md")
LOG_RECENT=$(tail -100 "${TASK_DIR}/execution_log.md")
KNOWLEDGE=$(cat "${TASK_DIR}/knowledge_base.md")
Extract key information:
- Task name, description, created_at
- Current phase, progress, blocked status
- Last checkpoint, last updated
- Next action
- Recent log entries
- Knowledge entries
Step 3: Present Detailed Status
# Task Status: {name}
**ID**: `{TASK_ID}`
**Status**: {✅ Active | 🔴 Blocked | ✓ Completed}
**Created**: {date and time}
**Duration**: {time since creation OR total duration if archived}
---
## Current State
**Phase**: {current_phase}
**Progress**: {progress_percentage}% [▓▓▓▓▓▓▓░░░]
**Last Updated**: {time ago}
**Last Checkpoint**: {time ago}
{If blocked:}
⚠️ **BLOCKED**: {blocked_reason}
{Action required section}
{If not blocked:}
✅ Task progressing normally
## Next Action
{next_action from status.yaml}
{If has notes in status.yaml:}
**Notes**: {notes}
---
## Recent Activity
Showing last 5 actions:
### {HH:MM} - {Action Type}
- Tool: {tool}
- Target: {target}
- Result: {result}
- Status: {success/failed}
### {HH:MM} - {Action Type}
- Tool: {tool}
- Target: {target}
- Result: {result}
- Status: {success/failed}
[... 3 more recent actions ...]
{Link to full log:}
Full execution log: `{TASK_DIR}/execution_log.md`
---
## Objective
{objective from plan.md}
## Phases
{List phases with completion indicators}
1. {Phase 1 name} {✓ if progress past this phase}
2. {Phase 2 name} {← Current if in this phase}
3. {Phase 3 name} {⏳ if upcoming}
## Success Criteria
{Show criteria from plan.md with completion status if available}
- [✓] {Completed criterion}
- [✓] {Completed criterion}
- [ ] {Remaining criterion}
- [ ] {Remaining criterion}
---
## Key Learnings ({count entries})
{Show recent 3-5 entries from knowledge_base.md}
### {Date} - {Topic}
{Brief summary}
### {Date} - {Topic}
{Brief summary}
[... more entries ...]
{Link to full knowledge base:}
Full knowledge base: `{TASK_DIR}/knowledge_base.md`
---
## Issues and Blockers
{If blocked:}
**Current Blocker**: {blocked_reason}
**Analysis**: {check knowledge_base.md for related entries}
**Attempted Solutions**: {from execution_log.md}
**Recommendation**: {suggest next steps}
{If not blocked:}
No current blockers or issues.
---
## Task Files
All task documentation:
{TASK_DIR}/ ├── manifest.yaml Task metadata ├── plan.md Execution plan ├── execution_log.md {count lines} lines of logs ├── knowledge_base.md {count entries} knowledge entries ├── context.md Background and constraints └── status.yaml Current state
---
## Quick Actions
{If active:}
- **Continue working**: `/teds-continue {TASK_ID}`
- **Create checkpoint**: `/teds-checkpoint {TASK_ID}`
- **Complete task**: `/teds-complete {TASK_ID}`
{If archived:}
- **View summary**: `cat {WORKSPACE}/knowledge_index/{TASK_ID}-summary.md`
- **View full archive**: `ls -la {TASK_DIR}/`
---
{If active and making good progress:}
💡 **Tip**: Task is {X}% complete. Keep up the momentum!
{If active and progress stalled:}
⏰ **Notice**: Last updated {time ago}. Consider resuming with `/teds-continue {TASK_ID}`
{If blocked:}
🔴 **Action Required**: Task blocked for {time}. Review blocker and take action.
Progress Bar Rendering
Convert percentage to visual bar:
PROGRESS=65 # from status.yaml
# Calculate filled blocks (10 blocks total)
FILLED=$((PROGRESS / 10))
EMPTY=$((10 - FILLED))
# Create bar
BAR="["
for i in $(seq 1 $FILLED); do BAR="${BAR}▓"; done
for i in $(seq 1 $EMPTY); do BAR="${BAR}░"; done
BAR="${BAR}]"
echo "${PROGRESS}% ${BAR}"
# Output: 65% [▓▓▓▓▓▓░░░░]
Time Calculations
Time Ago
# Given timestamp: 2025-01-16T14:30:00+08:00
TIMESTAMP="..."
# Calculate seconds since
NOW=$(date +%s)
THEN=$(date -d "$TIMESTAMP" +%s 2>/dev/null || date -j -f "%Y-%m-%dT%H:%M:%S" "$TIMESTAMP" +%s)
SECONDS=$((NOW - THEN))
# Format
MINUTES=$((SECONDS / 60))
HOURS=$((SECONDS / 3600))
DAYS=$((SECONDS / 86400))
if [[ $MINUTES -lt 60 ]]; then
echo "${MINUTES} minutes ago"
elif [[ $HOURS -lt 24 ]]; then
echo "${HOURS} hours ago"
elif [[ $DAYS -lt 7 ]]; then
echo "${DAYS} days ago"
elif [[ $DAYS -lt 30 ]]; then
WEEKS=$((DAYS / 7))
echo "${WEEKS} weeks ago"
else
# Show date
date -d "$TIMESTAMP" +"%Y-%m-%d"
fi
Duration
# From created_at to now (active) or completed_at (archived)
START="..."
END="..." # now or completed_at
START_SEC=$(date -d "$START" +%s)
END_SEC=$(date -d "$END" +%s)
DURATION=$((END_SEC - START_SEC))
MINUTES=$((DURATION / 60))
HOURS=$((DURATION / 3600))
DAYS=$((DURATION / 86400))
if [[ $HOURS -lt 1 ]]; then
echo "${MINUTES} minutes"
elif [[ $HOURS -lt 24 ]]; then
echo "${HOURS} hours"
else
echo "${DAYS} days"
fi
Counting Knowledge Entries
# Count sections starting with ### in knowledge_base.md
grep -c "^### " "${TASK_DIR}/knowledge_base.md"
Disk Usage
du -sh "${WORKSPACE}"
# Output: 15M claude_work_space/
# Or per section
du -sh "${WORKSPACE}/active_tasks"
du -sh "${WORKSPACE}/archived_tasks"
du -sh "${WORKSPACE}/knowledge_index"
Error Handling
Task Not Found
❌ Task not found: {provided_id}
Available active tasks:
{list active tasks with IDs and names}
Available archived tasks (recent):
{list recent 5 archived tasks}
Use:
- `/teds-status` to see all tasks
- `/teds-status [task-id]` with correct ID
Workspace Issues
❌ Cannot access TEDS workspace: {WORKSPACE}
Possible issues:
- Workspace directory deleted or moved
- Permission problems
- Configuration error
Check:
1. Workspace exists: ls -la {WORKSPACE}
2. Configuration: {CLAUDE.md or .teds-config.yaml}
3. Re-initialize if needed: /teds-init
Corrupted Task Data
⚠️ Task data incomplete: {TASK_ID}
Missing or unreadable files:
- {file 1}
- {file 2}
This task may be corrupted.
Options:
1. View what's available: ls -la {TASK_DIR}
2. Manually inspect: cat {TASK_DIR}/manifest.yaml
3. Archive if unsalvageable: mv {TASK_DIR} {WORKSPACE}/archived_tasks/
Need help deciding what to do?
Sorting and Filtering
Sort Active Tasks
By Progress (default):
- Show highest progress first (closest to completion)
By Last Updated:
- Most recently worked on first
By Created Date:
- Newest tasks first
Allow user preference if multiple tasks.
Highlight Important States
- 🔴 Blocked tasks: Show with warning symbol
- ⚠️ Stalled tasks: Not updated in >7 days
- 🎯 Near completion: >90% progress
- 🆕 New tasks: Created <24 hours ago
Summary Statistics
If showing all tasks, include useful stats:
## Overview
**Active Work**:
- {X} tasks in progress
- Average progress: {Y}%
- {Z} blocked tasks
**Recent Activity**:
- Last updated: {most recent task update}
- Active today: {tasks updated in last 24h}
- Checkpoints created: {count from logs}
**Completions**:
- This week: {count}
- This month: {count}
- All time: {total archived}
**Knowledge Accumulated**:
- Total entries: {count}
- Unique topics: {estimate}
- Total documentation: {total size}
Command Suggestions
Based on status, suggest relevant actions:
If many active tasks:
💡 You have {X} active tasks. Consider completing or archiving some to maintain focus.
If tasks stalled:
⏰ {X} task(s) haven't been updated in over a week:
- {task 1 name} (last updated {time ago})
- {task 2 name} (last updated {time ago})
Consider: `/teds-continue [task-id]` or archiving if no longer relevant.
If blocked tasks:
🔴 {X} task(s) are blocked:
- {task name}: {blocked_reason (brief)}
Action needed: Review and unblock with `/teds-continue [task-id]`
If no active tasks:
🚀 Ready to start a new long-term task?
Use: `/teds-start [name] "[description]"`
Example: `/teds-start refactor-auth "Migrate authentication to OAuth 2.0"`
Important Notes
- Be concise for summaries: Users scan quickly
- Be detailed for single task: Users want full picture
- Highlight actionable items: What should user do?
- Show progress visually: Progress bars, checkmarks
- Calculate times accurately: Users rely on timing info
- Handle missing data gracefully: Files might be incomplete
- Suggest next steps: Guide users to actions
Performance Considerations
For workspaces with many tasks:
- Limit archived task display (show recent 10)
- Use file timestamps instead of parsing all YAMLs
- Cache workspace statistics
- Offer filtering options
Showing {X} most recent tasks. You have {Y} total archived tasks.
To see more: ls {WORKSPACE}/archived_tasks/
To search: grep "name" {WORKSPACE}/archived_tasks/*/manifest.yaml