p-daily-standup
Skill15 starsChanged 9 days agoMITView on GitHub
Aggregate previous business day activity and post standup update to Slack. Use when the user says "standup", "daily standup", "post status", "status update", or "/daily-standup".
In this repository31 other files it gives its agents.
- claude-permissions-auditSkill
- claude-skill-orchestration-auditSkill
- claude-skill-prereq-auditSkill
- claude-skill-spec-auditSkill
- dev-cli-consistency-auditSkill
- dev-code-qualitySkill
- dev-new-toolSkill
- dev-software-designSkill
- gh-dep-pr-triageSkill
- gh-issue-reportSkill
- gh-org-chartSkill
- gh-oss-go-bumpSkill
- gh-oss-release-prepSkill
- gh-oss-releaseSkill
- gh-review-triageSkill
- git-conventional-commitSkill
- gws-meeting-schedulerSkill
- p-activity-digestSkill
- p-blog-post-miningSkill
- p-blog-writerSkill
- p-clipboard-copySkill
- p-daily-reflectionSkill
- p-daily-reportSkill
- p-ego-searchSkill
- p-md-to-slidesSkill
- p-meeting-prepSkill
- p-news-briefingSkill
- project-namerSkill
- p-slack-triageSkill
- p-violentmonkey-userscript-syncSkill
- restaurant-searchSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 7 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 30
If any values are missing or the user requests changes, use:
- Distinctive: line 60
If language not specified, ask: "Japanese or English for today's standup?
- Very specific: line 62
Previous business day: If today is Monday, use last Friday.
- Very specific: line 64
Call slack_read_user_profile() (no args) to get the current user's Slack ID.
- Very specific: line 68
Call slack_read_channel on channel {channel_id} with limit: 20.
- Distinctive: line 72
If no matching thread found: warn user and offer to output draft only.
- Distinctive: line 135
Keep bullets concise — one line per item, no sub-bullets.
- Distinctive: line 154
If user says edit: ask what to change, revise, re-confirm.
- Distinctive: line 155
If user says yes: post via Slack MCP:
- Very specific: line 161
If user says cancel or --dry-run was set: output the draft and stop.
- Distinctive: line 162
After posting, confirm with the permalink.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Daily Standup
<!-- skillctx:begin -->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-standupThe 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><!-- skillctx:end -->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 --todayExtract 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 |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

