/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)
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.)
huly_get_detailed_time_report { project, from: now − since } — yesterday's effort grouped by createdBy.
huly_list_issues { project, limit: 200 } filtered locally to status name in {done, completed} AND modifiedOn within window — yesterday's closed issues.
- 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)
huly_get_detailed_time_report { project, from: now − since, assignee: <email or me> } — yesterday for one person.
huly_list_issues { project, assignee, status: "in-progress" } — today for that person.
- Per in-progress issue:
huly_list_issue_relations for blockers.
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.
1---2name: standup3description: 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'.4---56# /standup78Daily 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.910**Requires** the `huly` MCP server to be connected.1112## Args1314```15/standup <PROJECT> [--since 24h|48h|7d] [--by me|EMAIL]16```1718- `PROJECT` — identifier or `_id`. **Required.** If missing, call `huly_list_projects` and ask the user to pick (remember within the conversation).19- `--since` — lookback window for "yesterday". Default `24h`. Use `72h` after a long weekend.20- `--by` — restrict to a single person. `me` resolves via `HULY_EMAIL`. Without `--by`, generate per-assignee blocks for every active member.2122## Steps (project mode — default)23241. `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.)252. `huly_get_detailed_time_report` `{ project, from: now − since }` — yesterday's effort grouped by `createdBy`.263. `huly_list_issues` `{ project, limit: 200 }` filtered locally to `status` name in {done, completed} AND `modifiedOn` within window — yesterday's closed issues.274. For each in-progress issue, `huly_list_issue_relations` `{ identifier }` — collect `is-blocked-by` relations whose target is not in a done/cancelled status.2829(Tools 1–3 can run in parallel; tool 4 fans out per issue.)3031## Steps (--by mode — individual)32331. `huly_get_detailed_time_report` `{ project, from: now − since, assignee: <email or me> }` — yesterday for one person.342. `huly_list_issues` `{ project, assignee, status: "in-progress" }` — today for that person.353. Per in-progress issue: `huly_list_issue_relations` for blockers.364. `huly_list_notifications` `{ unread_only: true }` — mentions / requests targeted at the user.3738## Computation3940- **Group by assignee.** Use email or display name; fall back to `unassigned` for null.41- **Per-person block:**42 - 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.43 - Today — all currently in-progress issues (deduped vs yesterday).44 - Blockers — for each in-progress issue with active `is-blocked-by` relations, flag with the blocker identifier and (if cross-project) note that.45- **Stuck flag (⚠ stuck Nd):** in-progress issue whose `modifiedOn` is older than 7 days.46- **No-activity flag:** assignee has in-progress issues but logged 0h in window.4748## Output format4950```51🟢 Standup — [project identifier] · [YYYY-MM-DD] (last [since])5253[assignee] — yesterday [h]h54 ✓ [PROJ-N] [title] (closed, [h]h)55 • [PROJ-N] [title] ([h]h)56 Today: [PROJ-N] [short verb], [PROJ-N] [short verb]57 ⚠ [PROJ-N] blocked by [BLOCKER-N] ([reason if known])58 ⚠ stuck [N]d on [PROJ-N]5960[assignee] — yesterday [h]h61 ...6263[assignee] — no time logged64 Today: [PROJ-N] [short verb]6566Summary: [total]h logged · [n] active · [n] blockers67```6869## Edge cases7071- **No project arg, no remembered project** — list projects, ask. Once chosen, reuse for the rest of the conversation.72- **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.73- **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.74- **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."7576## Don't7778- Don't write to Huly (no comments, no status changes).79- Don't include cancelled or backlog issues in "Today" unless the user explicitly asks.80- Don't expand every assignee's full backlog — only what's `in-progress` right now.81- Don't dump raw JSON.