Files
gh-eternnoir-claude-tool-teds/agents/teds-status.md
2025-11-29 18:26:21 +08:00

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:

  1. Check CLAUDE.md:

    if test -f "CLAUDE.md"; then
      grep -A 2 "## TEDS Configuration" CLAUDE.md | grep "Workspace Directory" | sed 's/.*`\([^`]*\)`.*/\1/'
    fi
    
  2. Check .teds-config.yaml:

    if test -f ".teds-config.yaml"; then
      grep "path:" .teds-config.yaml | awk '{print $2}'
    fi
    
  3. 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-auth0116-1430-refactor
  • Or just last part: refactor-auth
  • Include hover/full ID if possible

Phase Display:

  • Truncate long phases: Phase 2: ImplementationImplementation
  • 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

  1. Be concise for summaries: Users scan quickly
  2. Be detailed for single task: Users want full picture
  3. Highlight actionable items: What should user do?
  4. Show progress visually: Progress bars, checkmarks
  5. Calculate times accurately: Users rely on timing info
  6. Handle missing data gracefully: Files might be incomplete
  7. 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