606 lines
13 KiB
Markdown
606 lines
13 KiB
Markdown
---
|
|
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**:
|
|
```bash
|
|
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**:
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
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
|
|
|
|
```markdown
|
|
# 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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```markdown
|
|
# 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:
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# Count sections starting with ### in knowledge_base.md
|
|
grep -c "^### " "${TASK_DIR}/knowledge_base.md"
|
|
```
|
|
|
|
## Disk Usage
|
|
|
|
```bash
|
|
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:
|
|
|
|
```markdown
|
|
## 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
|
|
```
|