# Standup

> Daily standup digest for a Huly project team. Default is project-level: groups in-progress work, yesterday's logged time, and blockers per assignee — paste-ready for Slack. Trigger on: /standup, 'daily standup', 'team standup', 'what did the team do yesterday', 'standup for PROJ'.

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

---


# /standup

Daily standup digest for a Huly project — **project mode is default**. Output is plain text ready to paste into Slack / a standup doc / a meeting summary.

**Requires** the `huly` MCP server to be connected.

## Args

```
/standup <PROJECT> [--since 24h|48h|7d] [--by me|EMAIL]
```

- `PROJECT` — identifier or `_id`. **Required.** If missing, call `huly_list_projects` and ask the user to pick (remember within the conversation).
- `--since` — lookback window for "yesterday". Default `24h`. Use `72h` after a long weekend.
- `--by` — restrict to a single person. `me` resolves via `HULY_EMAIL`. Without `--by`, generate per-assignee blocks for every active member.

## Steps (project mode — default)

1. `huly_list_issues` `{ project, status: "in-progress" }` — today's plate. (For the status filter, first call `huly_list_statuses` `{ project }` and pass the `_id` of the status whose name matches "in progress" / "started" category.)
2. `huly_get_detailed_time_report` `{ project, from: now − since }` — yesterday's effort grouped by `createdBy`.
3. `huly_list_issues` `{ project, limit: 200 }` filtered locally to `status` name in {done, completed} AND `modifiedOn` within window — yesterday's closed issues.
4. For each in-progress issue, `huly_list_issue_relations` `{ identifier }` — collect `is-blocked-by` relations whose target is not in a done/cancelled status.

(Tools 1–3 can run in parallel; tool 4 fans out per issue.)

## Steps (--by mode — individual)

1. `huly_get_detailed_time_report` `{ project, from: now − since, assignee: <email or me> }` — yesterday for one person.
2. `huly_list_issues` `{ project, assignee, status: "in-progress" }` — today for that person.
3. Per in-progress issue: `huly_list_issue_relations` for blockers.
4. `huly_list_notifications` `{ unread_only: true }` — mentions / requests targeted at the user.

## Computation

- **Group by assignee.** Use email or display name; fall back to `unassigned` for null.
- **Per-person block:**
  - Yesterday — sum hours from time report (minutes → hours, 1 decimal), list closed issues with hours per issue, list in-progress issues touched yesterday with hours.
  - Today — all currently in-progress issues (deduped vs yesterday).
  - Blockers — for each in-progress issue with active `is-blocked-by` relations, flag with the blocker identifier and (if cross-project) note that.
- **Stuck flag (⚠ stuck Nd):** in-progress issue whose `modifiedOn` is older than 7 days.
- **No-activity flag:** assignee has in-progress issues but logged 0h in window.

## Output format

```
🟢 Standup — [project identifier] · [YYYY-MM-DD] (last [since])

[assignee] — yesterday [h]h
  ✓ [PROJ-N] [title] (closed, [h]h)
  • [PROJ-N] [title] ([h]h)
  Today: [PROJ-N] [short verb], [PROJ-N] [short verb]
  ⚠ [PROJ-N] blocked by [BLOCKER-N] ([reason if known])
  ⚠ stuck [N]d on [PROJ-N]

[assignee] — yesterday [h]h
  ...

[assignee] — no time logged
  Today: [PROJ-N] [short verb]

Summary: [total]h logged · [n] active · [n] blockers
```

## Edge cases

- **No project arg, no remembered project** — list projects, ask. Once chosen, reuse for the rest of the conversation.
- **No `huly_list_statuses` match for "in-progress" name** — fall back to any status whose category is `tracker:statusCategory:Started` (you may need to call `huly_get_project` to inspect categories) OR show all non-done/cancelled issues with a footnote.
- **Title brevity:** if titles are long (>50 chars), truncate with `…`. The "short verb" Today line should be 4–8 words, paraphrased from the title — not the raw title.
- **No `HULY_EMAIL` for `--by me`** — error out with: "Set `HULY_EMAIL` in the MCP env to use `--by me`, or pass an explicit email."

## Don't

- Don't write to Huly (no comments, no status changes).
- Don't include cancelled or backlog issues in "Today" unless the user explicitly asks.
- Don't expand every assignee's full backlog — only what's `in-progress` right now.
- Don't dump raw JSON.

