dot-do avatar

workflow-status

Display current workflow state across discovery.db and beads. Shows active briefs, open epics, block

by dot-do|Open Source

Workflow Status Skill

Purpose

Provide a comprehensive view of the current state of all workflow activities, combining data from both discovery.db (pre-approval pipeline) and .beads/ (post-approval execution). This skill helps users understand where they left off and what to do next.

When to Use

  • User asks "What's the status?", "Where did I leave off?", "What should I work on?"
  • Resuming work after an interruption or break
  • Getting oriented on overall project state
  • Understanding what's blocked or needs attention
  • Checking on progress across multiple features

Process

Step 0: Path Detection

Determine the location of discovery.db to support both new .parade/ structure and legacy project root:

# Path detection for .parade/ structure
if [ -f ".parade/discovery.db" ]; then
  DISCOVERY_DB=".parade/discovery.db"
else
  DISCOVERY_DB="./discovery.db"
fi

All subsequent database operations in this skill use $DISCOVERY_DB instead of hardcoded discovery.db.

Step 1: Query Discovery Pipeline

Check for briefs in the pre-approval workflow:

sqlite3 -json "$DISCOVERY_DB" "
SELECT
  id,
  title,
  status,
  priority,
  datetime(updated_at, 'localtime') as updated_at,
  datetime(created_at, 'localtime') as created_at
FROM briefs
WHERE status IN ('draft', 'in_discovery', 'spec_ready')
ORDER BY
  CASE priority
    WHEN 1 THEN 1
    WHEN 2 THEN 2
    WHEN 3 THEN 3
    WHEN 4 THEN 4
  END,
  updated_at DESC;
"

Step 2: Query Beads for Active Epics

Get all open and in-progress epics with task counts:

bd list --status open --json
bd list --status in_progress --json

For each epic, get child task breakdown:

# Count tasks by status for each epic
bd list --json | jq '[.[] | select(.parent_id == "<epic-id>") | group_by(.status) | {status: .[0].status, count: length}]'

Step 3: Identify Blocked Tasks

Find all tasks that are blocked:

bd list --status blocked --json

Step 4: Get Ready Work

Show what's available to work on right now:

bd ready --json

Step 5: Query Recent Activity

Get the last 10 workflow events:

sqlite3 -json "$DISCOVERY_DB" "
SELECT
  brief_id,
  event_type,
  details,
  datetime(created_at, 'localtime') as created_at
FROM workflow_events
ORDER BY created_at DESC
LIMIT 10;
"

Step 6: Format and Display

Present information in a structured format:

## Workflow Status

### Discovery Pipeline
- [brief-id]: Title (status: draft) - Priority: High - Last updated: 2 hours ago
- [brief-id]: Title (status: in_discovery) - Priority: Medium - Last updated: 1 day ago
- [brief-id]: Title (status: spec_ready) - Priority: High - Created: 3 days ago

### Active Epics
- [epic-id]: Epic Title (status: in_progress)
  - Tasks: 3 open, 2 in_progress, 1 completed, 0 blocked

- [epic-id]: Another Epic (status: open)
  - Tasks: 5 open, 0 in_progress, 0 completed, 0 blocked

### Blocked Tasks
- [task-id]: Task Title - Epic: [epic-id]
  - Reason: Dependency on [other-task-id]
  - Blocked since: 2 hours ago

### Ready to Work
- [task-id]: Task Title (epic: [epic-id])
- [task-id]: Another Task (epic: [epic-id])

### Recent Activity (Last 10 Events)
- 2 hours ago: spec_approved for brief-id
- 1 day ago: discovery_completed for brief-id
- 2 days ago: created for brief-id

Step 7: Suggest Next Actions

Based on the current state, provide actionable recommendations:

If there are draft briefs:

Suggested Actions:
- Run /start-discovery <brief-id> to begin discovery for "<title>"

If there are spec_ready briefs:

Suggested Actions:
- Run /approve-spec <brief-id> to export "<title>" to beads

If there are ready tasks:

Suggested Actions:
- Run /run-tasks to begin execution on <N> ready tasks

If there are blocked tasks but no ready work:

Suggested Actions:
- Review blocked tasks: bd show <task-id>
- Resolve dependencies or blockers manually

If everything is idle:

Suggested Actions:
- Run /create-brief to start a new feature
- Review completed work: bd list --status closed --json

Implementation Details

SQL Queries

Get Briefs by Status

SELECT
  id,
  title,
  status,
  priority,
  problem_statement,
  datetime(updated_at, 'localtime') as updated_at,
  datetime(created_at, 'localtime') as created_at
FROM briefs
WHERE status IN ('draft', 'in_discovery', 'spec_ready')
ORDER BY priority, updated_at DESC;

Get Recent Workflow Events

SELECT
  brief_id,
  event_type,
  details,
  datetime(created_at, 'localtime') as created_at
FROM workflow_events
ORDER BY created_at DESC
LIMIT 10;

Count Briefs by Status

SELECT
  status,
  COUNT(*) as count,
  GROUP_CONCAT(id, ', ') as brief_ids
FROM briefs
WHERE status != 'archived'
GROUP BY status;

Beads Commands

List All Epics

bd list --json | jq '[.[] | select(.issue_type == "epic")]'

Get Task Counts for Epic

# For a specific epic ID
EPIC_ID="<epic-id>"
bd list --json | jq --arg epic "$EPIC_ID" '
  [.[] | select(.parent_id == $epic)] |
  group_by(.status) |
  map({status: .[0].status, count: length})
'

List Blocked Tasks with Details

bd list --status blocked --json | jq '.[] | {
  id: .id,
  title: .title,
  parent_id: .parent_id,
  updated_at: .updated_at
}'

Get Ready Work

bd ready --json

Display Format

Priority Levels

  • 1: Critical (🔴)
  • 2: High (🟠)
  • 3: Medium (🟡)
  • 4: Low (🟢)

Status Indicators

  • draft: Initial brief created
  • in_discovery: Discovery process running
  • spec_ready: Specification complete, ready for approval
  • open: Task/epic created but not started
  • in_progress: Actively being worked on
  • blocked: Cannot proceed due to dependency or issue
  • completed: Finished successfully

Time Formatting

Show relative time when recent (< 24h), otherwise show absolute:

  • "2 hours ago"
  • "Yesterday"
  • "Jan 2, 2026"

Example Output

## Workflow Status (as of Jan 2, 2026 2:30 PM)

### Discovery Pipeline (2 active)

- [athlete-experience-tracking]: Athlete Experience Level Tracking
  Status: spec_ready | Priority: High (2) | Updated: 3 hours ago

- [data-export-feature]: Export Training Data
  Status: in_discovery | Priority: Medium (3) | Updated: 1 day ago

### Active Epics (1)

- [customTaskTracker-xbi]: Workflow Orchestration System
  Status: in_progress | Tasks: 8 open, 2 in_progress, 3 completed, 1 blocked

### Blocked Tasks (1)

- [customTaskTracker-xbi.9]: Implement sub-agent spawning
  Epic: Workflow Orchestration System
  Blocked since: 2 hours ago
  Run: bd show customTaskTracker-xbi.9 for details

### Ready to Work (3 tasks)

- [customTaskTracker-xbi.12]: Create /workflow-status skill
- [customTaskTracker-xbi.13]: Add status update commands
- [customTaskTracker-xbi.14]: Create verification tests

### Recent Activity

- 2 hours ago: spec_approved for athlete-experience-tracking
- 4 hours ago: sme_review_completed for athlete-experience-tracking
- 1 day ago: discovery_started for data-export-feature
- 2 days ago: created for data-export-feature
- 3 days ago: task_completed for customTaskTracker-xbi.8

### Suggested Next Actions

1. Run /run-tasks to work on 3 ready tasks
2. Run /approve-spec athlete-experience-tracking to export to beads
3. Review blocked task: bd show customTaskTracker-xbi.9

Error Handling

Discovery DB Not Found

Warning: discovery.db not found at .parade/ or project root.
No discovery pipeline data available.

Run /create-brief to start a new feature.

Beads Not Initialized

Warning: Beads not initialized (.beads/ directory missing).
No task execution data available.

Tasks will appear here after running /approve-spec.

No Active Work

## Workflow Status

No active briefs, epics, or tasks found.

Suggested Actions:
- Run /create-brief to start a new feature
- Check archived work: sqlite3 "$DISCOVERY_DB" "SELECT * FROM briefs WHERE status = 'archived';"

Tips

  • Use this skill at the start of each session to get oriented
  • Combine with bd show <id> to drill into specific tasks
  • Check workflow status before running /run-tasks to ensure work is ready
  • Use recent activity to understand what happened while you were away
  • Suggested actions are prioritized by workflow stage (discovery → spec → execution)