jackchuka/skills

p-daily-standup

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".

First seen Apr 15, 2026

Installation

$ npx skills add jackchuka/skills --skill p-daily-standup

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from jackchuka/skills · top by installs.

npx skills add jackchuka/skills

Browse all from jackchuka/skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 15
License LICENSE
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

LicenseMIT
CompatibilityRequires gh CLI, gws CLI, and Slack MCP server. Fireflies MCP server optional.
More metadata
author
jackchuka
scope
personal
layer
workflow
confirms
["post message to Slack"]
skillctx
{"version":"0.1.0"}

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,548 B
  • docs SUMMARY.md 201 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

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-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>

<!-- 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

  • gh CLI authenticated (gh auth status)
  • gws CLI 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

  1. Parse arguments for --lang and --dry-run.
  2. If language not specified, ask: "Japanese or English for today's standup? (default: Japanese)"
  3. 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.

  1. Call slackreaduser_profile() (no args) to get the current user's Slack ID.

Phase 2: Find Today's Thread

  1. Call slackreadchannel on channel {channel_id} with limit: 20.
  2. Filter messages to only those from user USLACKBOT whose timestamp falls on today's date (convert Unix ts to date and compare).
  3. From the filtered messages, find the one whose text contains "share your status in the thread" — this is the daily standup reminder thread.
  4. Save the ts of that message as thread_ts for posting later.
  5. 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):

  • PREVBIZDAY: previous business day (YYYY-MM-DD)
  • TODAY: today's date (YYYY-MM-DD)
  • LANG: output language (ja | en)
  • USERID: Slack user ID (from slackreaduserprofile in 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

  1. Compose the standup message in the chosen language (translate if needed).
  2. Format:
やったこと
• [item 1]
• [item 2]
やること
• [item 1]
• [item 2]
  1. 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

  1. Ordering:

- やったこと: PRs first, then meetings, then other Slack activity - やること: Open PRs first, then reviews requested, then today's meetings

  1. Keep bullets concise — one line per item, no sub-bullets.

Phase 6: Confirm and Post

  1. Present the draft to the user:
Here's your standup draft:

---
やったこと
• ...
やること
• ...
---

Post to {channel_name} thread? (yes/edit/cancel)
  1. If user says edit: ask what to change, revise, re-confirm.
  2. 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>")
  1. If user says cancel or --dry-run was set: output the draft and stop.
  2. 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