| name | team-health |
| description | Portfolio view of all direct reports — tasks, overdue, tasks assigned to them, feedback gap, attention gap, last 1:1. Team-wide glance, not a deep dive (use /myna:brief-person for that). Use for any team overview or health check: "how is my team doing?", "team health", "how are my directs doing?" |
Team Health Overview
If vault_path is not in context, read ~/.myna/config.yaml first. If the file does not exist, tell the user to run /myna:setup and stop.
Point-in-time dashboard for all direct reports. Read-only — inline output. No vault writes unless the user asks to save.
Intent check: Before reading an external source (email/Slack/calendar) or making your first vault write — proceed only if the user's request addressed Myna (contains "myna") or explicitly named this action. Otherwise, confirm intent before proceeding.
Data to Gather
For each person in people.yaml with relationship_tier: direct:
| Signal | Source | How to get it |
|---|
| Open tasks | Grep [person:: {name}] + - [ ] across Projects/ — search display name, full name, slug, all aliases, and wiki-link forms [[full-name]]/[[slug]]. Deduplicate across forms. | Count open, count overdue (📅 date < today) |
| Tasks assigned to them | Grep [person:: {name}] + - [ ] + [type:: task] across Projects/ — same multi-form search | Count open, count overdue (📅 date < today) |
| Last 1:1 date | Meetings/1-1s/{person-slug}.md | Most recent session header (## {YYYY-MM-DD} Session) |
| Last feedback date | People/{person-slug}.md Observations section | Date of most recent strength, growth-area, or contribution observation entry — this is the feedback gap signal. Do not count Recognition or Personal Notes entries — those don't reset the feedback clock. |
| Feedback gap | Compare last observation entry date to today vs 30 days | Flag if gap > threshold. |
| Attention gap | People/{person-slug}.md observations + Meetings/1-1s/{person-slug}.md session headers and prep sections | Signals below |
| Recent contributions | People/{person-slug}.md Recognition section | Entries dated in the last 14 days. Do not use Journal/contributions-{week}.md — that log records the user's own contributions, not the direct report's. |
Attention gap signals (all about YOUR behavior — zero inference about the person's state):
- No observation logged in 45+ days → "No observations in [N] days"
- Last 3+ 1:1 sessions had no new topics added by you → check prep sections for items you added vs. carried from previous session
- No career development topics logged in 4+ months → Grep
career or growth in Meetings/1-1s/{person-slug}.md
- No feedback logged since {date} (beyond 30-day feedback threshold) → already reflected in the Feedback column; repeat in Attention if gap is 2× the threshold
D018 anchor: All flags in this output are about the user's own records and follow-through — not about the employee's morale, engagement, or relationship quality. Do not infer or label people's internal states. "45-day feedback gap" means the user hasn't logged an observation in 45 days. It says nothing about the employee.
Output
Summary
Show a brief narrative summary before the table. 2-3 sentences, prefer fewer if the picture is clear. Write a real synthesis — who needs the most attention and why, what the overall team picture looks like — not a restatement of the table counts. All flags are about the user's own records and follow-through — not about any employee's state or engagement (D018). Synthesize only facts present in the vault.
Summary Table
Show a table after the summary for quick scanning:
## 🏥 Team Health — [date]
### Summary
[2-3 sentences, prefer fewer if the picture is clear. Real synthesis — who needs attention and why, overall team picture. Not a restatement of the table. Based on the user's records — not inferences about employee state.]
| Person | Open | Overdue | Assigned to them | Feedback | Last 1:1 | Attention |
|--------|------|---------|------------------|----------|----------|-----------|
| Sarah | 5 | 1 | 0 open | 12 days | Apr 2 | ✅ |
| Alex | 8 | 3 | 2 (1 overdue) | 45 days ⚠️ | Mar 28 | ⚠️ 52d no obs |
| Marcus | 4 | 0 | 3 overdue ⚠️ | 28 days | Apr 5 | ⚠️ 3 1:1s no new topics |
| Maya | 6 | 1 | 0 open | 61 days ⚠️ | Apr 1 | ⚠️ No career 4mo |
Columns:
- Open — count of open tasks assigned to this person
- Overdue — count of tasks past due date
- Assigned to them — count of open tasks assigned to this person; flag overdue with ⚠️
- Feedback — days since last logged observation. Flag with ⚠️ if gap exceeds 30 days.
- Last 1:1 — date of most recent 1:1 session (from vault). If calendar MCP is available, append "Next: [date]" after the last date.
- Attention — ✅ if no gaps, or brief flag description if gaps detected
Per-Person Detail
After the table, show one line of context per flagged person (those with ⚠️):
### ⚠️ Needs Attention
**Alex Kumar** — 45-day feedback gap, 3 overdue tasks
- Last feedback: 2026-02-24 (45 days ago, threshold: 30 days)
- Overdue tasks: "Review caching proposal" (12 days), "Platform API doc" (5 days), "Security audit response" (2 days)
- No observations logged since Feb 24
**Maya Patel** — 61-day feedback gap, no career development topics in 4 months
- Last feedback: 2026-02-10 (61 days ago)
- Last career/growth discussion: 2025-12-15 (4 months ago)
Recent Contributions (last 14 days)
List contributions per person from recognition log entries dated in the last 14 days:
### 🏆 Recent Contributions (last 14 days)
- **Sarah** — Shipped auth migration Phase 1 on time [2026-04-02]
- **Sarah** — Excellent incident response during outage [2026-03-28]
- **Marcus** — Mentored two new engineers on onboarding [2026-04-05]
If no contributions in the last 14 days for a person, that person simply doesn't appear. Don't write "no contributions for Alex" — just omit them.
Edge Cases
- No directs in people.yaml: "No direct reports found in people.yaml. Add people with
relationship_tier: direct to use team health."
- Person file missing for a direct: Show their row with only what's available from tasks/meeting files. Note in their detail block: "No person file — observations and recognition data unavailable."
- 1:1 meeting file missing: Show "—" for Last 1:1 date. Show "—" for attention gap signals that require 1:1 notes.
- Calendar MCP unavailable: Omit the "Next: [date]" part of Last 1:1. Don't mention the omission in the table — note it once below the table if calendar was expected.
- Single person focus: "how is Sarah doing?" → show the full detail view for Sarah only — skip the summary table, show all 6 data points for that person inline.
- Person has no observations ever logged: Feedback = "never logged ⚠️", Attention = "⚠️ No observations on record".