p-daily-standup
Daily Standup
Setup
Locate this skill's directory (the folder containing this SKILL.md), then run the resolver script from there:
python <skill-dir>/scripts/skillctx-resolve.py resolve p-daily-standup
The resolver outputs each binding as key: value (one per line). Substitute each {binding_key} placeholder below with the resolved value.
If any values are missing or the user requests changes, use:
python <skill-dir>/scripts/skillctx-resolve.py set p-daily-standup <key> <value>
Aggregate activity from the previous business day (GitHub, Slack, Calendar, Meetings) and post a status update to the {channel_name} Slack thread.
When to Use
- User says "standup", "daily standup", "post status update", "status update"
- User invokes
/daily-standup
Prerequisites
ghCLI authenticated (gh auth status)gwsCLI installed (Google Calendar)- Slack MCP connected
- Fireflies MCP connected (optional — skip gracefully if unavailable)
Arguments
--lang ja|en— Language for bullet points. Default:ja. Ask user if not specified.--dry-run— Draft only, do not post to Slack.
Workflow
Phase 1: Initialize
- Parse arguments for
--langand--dry-run. - If language not specified, ask: "Japanese or English for today's standup? (default: Japanese)"
- Compute dates:
- Previous business day: If today is Monday, use last Friday. Otherwise use yesterday. Format as
YYYY-MM-DD. - Today: Format as
YYYY-MM-DD.
- Previous business day: If today is Monday, use last Friday. Otherwise use yesterday. Format as
- Call
slack_read_user_profile()(no args) to get the current user's Slack ID.
Phase 2: Find Today's Thread
- Call
slack_read_channelon channel{channel_id}withlimit: 20. - Filter messages to only those from user
USLACKBOTwhose timestamp falls on today's date (convert Unixtsto date and compare). - From the filtered messages, find the one whose text contains "share your status in the thread" — this is the daily standup reminder thread.
- Save the
tsof that message asthread_tsfor posting later. - If no matching thread found: warn user and offer to output draft only.
Phase 3: Aggregate やったこと (parallelize if possible)
Shared context (passed to all sub-tasks):
PREV_BIZ_DAY: previous business day (YYYY-MM-DD)TODAY: today's date (YYYY-MM-DD)LANG: output language (ja | en)USER_ID: Slack user ID (fromslack_read_user_profilein Phase 1)THREAD_TS: standup thread timestamp from Phase 2
Dispatch all four sub-tasks (3a–3d) concurrently. If your platform supports parallel subagents, launch one per source. Otherwise, query each sequentially. Wait for all four to return before Phase 5.
3a. GitHub Activity
→ See references/agent-gather-github-prev-day.md
3b. Slack Activity
→ See references/agent-gather-slack-prev-day.md
3c. Calendar (gws CLI)
→ See references/agent-gather-calendar-prev-day.md
3d. Meetings (Fireflies MCP)
→ See references/agent-gather-fireflies-prev-day.md
Phase 4: Aggregate やること (parallelize if possible)
Run in parallel:
4a. Open GitHub Work
→ See references/agent-gather-github-open-work.md
4b. Today's Calendar
gws calendar +agenda --today
Extract meeting names for today.
Phase 5: Draft Message
- Compose the standup message in the chosen language (translate if needed).
- Format:
やったこと
• [item 1]
• [item 2]
やること
• [item 1]
• [item 2]
-
Deduplication rules:
- A PR that appears in both "authored" and "merged" → show once as merged
- A meeting that overlaps with a GitHub PR discussion → keep both but don't repeat the same topic
- Slack messages about a PR already listed → skip
-
Ordering:
- やったこと: PRs first, then meetings, then other Slack activity
- やること: Open PRs first, then reviews requested, then today's meetings
-
Keep bullets concise — one line per item, no sub-bullets.
Phase 6: Confirm and Post
- Present the draft to the user:
Here's your standup draft:
---
やったこと
• ...
やること
• ...
---
Post to {channel_name} thread? (yes/edit/cancel)
- If user says edit: ask what to change, revise, re-confirm.
- If user says yes: post via Slack MCP:
slack_send_message(channel_id="{channel_id}", message="<the message>", thread_ts="<thread_ts from Phase 2>")
- If user says cancel or
--dry-runwas set: output the draft and stop. - After posting, confirm with the permalink.
Error Handling
| Error | Action |
|---|---|
| No Slackbot thread today | Warn user, offer draft-only mode |
gws not installed |
Skip calendar, note in output |
| Fireflies unavailable | Skip meeting summaries, note in output |
gh auth failure |
Warn user, suggest gh auth login |
| No activity found | Tell user "no activity found for [date]" |
| Slack send fails | Show error, output draft for manual posting |
More from jackchuka/skills
restaurant-search
Search for Japanese restaurants using the `hpp` CLI (HotPepper Gourmet API). Use when the user wants to find a restaurant, plan a dinner, search for izakayas, or book a group meal in Japan. Triggers on requests like "find a restaurant near Shibuya", "search for izakayas in 新宿", "restaurant for 10 people in 浜松町", "dinner spot near Tokyo station".
61software-design
Opinionated guide to software design principles and architectural patterns. Use when reviewing code design, planning feature architecture, asking "is this the right design?", "how should I structure this?", or requesting design philosophy guidance. Triggers on questions about SOLID, DRY, KISS, YAGNI, Clean Architecture, DDD, hexagonal architecture, composition vs inheritance, coupling, cohesion, or any software design trade-off discussion.
11gh-oss-release-prep
>
11dev-code-quality
>
10dev-software-design
Opinionated guide to software design principles and architectural patterns. Use when reviewing code design, planning feature architecture, asking "is this the right design?", "how should I structure this?", or requesting design philosophy guidance. Triggers on questions about SOLID, DRY, KISS, YAGNI, Clean Architecture, DDD, hexagonal architecture, composition vs inheritance, coupling, cohesion, or any software design trade-off discussion.
2p-daily-report
Use when reviewing what you worked on, creating standups, writing status updates, tracking daily/weekly progress, or asking "what did I do today
1