# Pm Overview

> Quick project health snapshot for PMs. One-screen summary of issues (status/priority/assignee), milestones, components, and recent activity. Trigger on: /pm-overview, 'overview of PROJ', 'how is project X', 'project health snapshot', 'project status quick'.

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

---


# /pm-overview

Single-screen health snapshot of a Huly tracker project. Reads only — no writes.

**Requires** the `huly` MCP server to be connected. If `huly_list_projects` is unavailable, tell the user to install `mcp/huly.mcpb` in Claude Desktop.

## Args

```
/pm-overview <PROJECT> [--window 7d|14d|30d]
```

- `PROJECT` — identifier (e.g. `PROJ`) or workspace `_id`. **Required.** If missing, run `huly_list_projects` and ask the user to pick.
- `--window` — recent-activity lookback for time/created/closed counts. Default `7d`.

## Steps

Run these 5 MCP tools (call in parallel where possible — they don't depend on each other):

1. `huly_get_project` — confirm project, get name, statuses, archived flag.
2. `huly_list_issues` `{ project, limit: 200 }` — full dataset for cross-tabs.
3. `huly_list_milestones` `{ project }` — sprint state.
4. `huly_list_components` `{ project }` — module breakdown.
5. `huly_get_detailed_time_report` `{ project, from: now - window }` — recent effort.

Also call `huly_list_statuses` `{ project }` to map status `_id` → human name (needed for the by-status bucketing).

## Computation (local, after tools return)

- **Status buckets:** group issues by `status` (use the lookup map). Order: as returned by `huly_list_statuses`.
- **Priority buckets:** group by `priority` value — `1=urgent, 2=high, 3=medium, 4=low, 0=none`.
- **Top assignees:** top 5 by issue count + `unassigned` (where `assignee == null`).
- **Stale:** `modifiedOn` older than 14 days AND status name not in (`done`, `cancelled`, `completed`).
- **Milestones:** split by status (0=planned, 1=in-progress, 2=completed, 3=cancelled). For in-progress, count open issues whose `milestone == m._id`.
- **Activity (window):** sum `value` (minutes → hours) from detailed report; count `createdOn` within window; count issues closed (status transitioned to done) within window — approximate via `modifiedOn` + status name.

## Output format

```
Project [name] ([identifier]) — snapshot [YYYY-MM-DD]
[Archived ⚠ if true]

Issues [total] (open [n] / done [n])
  Status:    backlog [n] · in-progress [n] · in-review [n] · done [n] · cancelled [n]
  Priority:  urgent [n] · high [n] · medium [n] · low [n] · none [n]
  Top owners: [name] [n] · [name] [n] · ... · unassigned [n]
  Stale (>14d): [n]

Milestones
  ✓ [label] — completed [date]
  ◐ [label] — target [date], [n] open
  ○ [label] — target [date]

Activity (last [window])
  Time: [h]h · created [n] · closed [n]
  Top: [name] [h]h · [name] [h]h · [name] [h]h

Flags
  [n] urgent issues unassigned
  [n] stale
```

## Edge cases

- **No project arg** — list projects, ask which one.
- **Multiple matches** — show the matches, ask user to disambiguate.
- **Archived project** — proceed but add `⚠ archived` next to the project name.
- **Empty project (0 issues)** — short-circuit with a 3-line "no activity yet" message.
- **MCP errors** — surface the message; for auth errors point at the bundle install dialog.

## Don't

- Don't dump raw JSON — always render the formatted snapshot above.
- Don't write anything to Huly (no `huly_create_*`, no `huly_update_*`).
- Don't call `huly_search` — that's broader than this skill needs.

