# Meridian:dashboard

> Use when you need Meridian to project Dashboard.

- Skill: `mattjaikaran/meridian-dashboard` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mattjaikaran/meridian-dashboard`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mattjaikaran/meridian-dashboard/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: mattjaikaran (https://skillmd.com/u/mattjaikaran)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mattjaikaran/meridian-dashboard

---


# /meridian:dashboard — Project Dashboard

Single-view status + metrics: health, progress, velocity, stalls, remote dispatches, and next action.

## Procedure

### Step 1: Load Metrics and State
```bash
PYTHONPATH=$MERIDIAN_HOME uv run --project $MERIDIAN_HOME -- python -c "
import json
from scripts.db import connect, get_db_path
from scripts.state import get_status, compute_next_action
from scripts.metrics import compute_velocity, compute_progress, detect_stalls, forecast_completion
from scripts.sync import get_dispatch_summary

conn = connect(get_db_path('.'))
status = get_status(conn)
velocity = compute_velocity(conn)
progress = compute_progress(conn)
stalls = detect_stalls(conn)
forecast = forecast_completion(conn)
dispatches = get_dispatch_summary(conn)

print(json.dumps({
    'status': status,
    'velocity': velocity,
    'progress': progress,
    'stalls': stalls,
    'forecast': forecast,
    'dispatches': dispatches,
}, indent=2, default=str))
conn.close()
"
```

### Step 2: Determine Health

Compute project health from metrics:
- **ON TRACK**: No stalls, velocity > 0, milestone ETA exists
- **AT RISK**: 1-2 stalls OR velocity dropped to 0 recently
- **STALLED**: 3+ stalls OR no plans completed in 3+ days

### Step 3: Format Output

Display in this format:

```
# Project Dashboard — {project_name}
## Health: {ON TRACK | AT RISK | STALLED}

Milestone: {name} ({status}) — {pct}% complete{, ETA {date} if available}
Phase {N}/{total}: {name} [{status}] — {done}/{total} plans done
Velocity: {velocity} plans/day (7d avg)

### Stalls
- Plan "{name}" stuck in {status} for {hours}h
- Phase "{name}" stuck in {status} for {hours}h
(or "None" if no stalls)

### Remote dispatches
- Plan "{name}" → remote agent ({status}{, PR #N if available})
(or "None" if no dispatches)

### Next Action
→ {computed_next_action}
```

### Step 4: Priority Items (if any)

If any phases or plans have `priority` set, show a priority summary:

```
### Priority Items
- [critical] Plan: "{name}" — {status}
- [high] Phase: "{name}" — {status}
```

## Options
- `--json` — Output raw JSON instead of formatted dashboard
- `--html [path]` — Generate standalone HTML dashboard (default: .meridian/dashboard.html)
- `--no-sync` — Skip pulling remote dispatch status before rendering

### HTML Dashboard

If `--html` is specified:
```bash
PYTHONPATH=$MERIDIAN_HOME uv run --project $MERIDIAN_HOME -- python -c "
from scripts.db import open_project
from scripts.html_dashboard import write_dashboard
with open_project('.') as conn:
    path = write_dashboard(conn, '<output_path>')
    print(f'Dashboard written to {path}')
"
```

Opens in browser automatically if on macOS: `open <output_path>`

