Source profileQuality 91/100Review permissions

jackchuka/skills/p-daily-standup/SKILL.md

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

Source repository stars
15
Declared platforms
0
Static risk flags
1
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

Aggregate previous business day activity and post standup update to Slack.

Best for

  • User says "standup", "daily standup", "post status update", "status update"
  • User invokes /daily-standup

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/jackchuka/skills --skill "p-daily-standup"
Safe inspection promptEditorial

Inspect the Agent Skill "p-daily-standup" from https://github.com/jackchuka/skills/blob/7b0b33f68b8f11522e43622e5cb3bacd802999d2/p-daily-standup/SKILL.md at commit 7b0b33f68b8f11522e43622e5cb3bacd802999d2. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Setup

    Locate this skill's directory (the folder containing this SKILL.md), then run the resolver script from there:

    Locate this skill's directory (the folder containing this SKILL.md), then run the resolver script from there:The resolver outputs each binding as key: value (one per line). Substitute each {bindingkey} placeholder below with the resolved value.If any values are missing or the user requests changes, use:
  2. 02

    Workflow

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

    Parse arguments for --lang and --dry-run.If language not specified, ask: "Japanese or English for today's standup? (default: Japanese)"Compute dates:
  3. 03

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

    Parse arguments for --lang and --dry-run.If language not specified, ask: "Japanese or English for today's standup? (default: Japanese)"Compute dates:
  4. 04

    Phase 2: Find Today's Thread

    1. Call slackreadchannel on channel {channelid} 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…

    Call slackreadchannel on channel {channelid} with limit: 20.Filter messages to only those from user USLACKBOT whose timestamp falls on today's date (convert Unix ts to 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.
  5. 05

    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) - THREADTS: standup thread timestamp from Phase 2

    PREVBIZDAY: previous business day (YYYY-MM-DD)TODAY: today's date (YYYY-MM-DD)LANG: output language (ja | en)

Permission review

Static risk signals and limitations

Runs scripts

medium · line 9

The documentation asks the agent to run terminal commands or scripts.

python <skill-dir>/scripts/skillctx-resolve.py resolve p-daily-standup

Runs scripts

medium · line 16

The documentation asks the agent to run terminal commands or scripts.

python <skill-dir>/scripts/skillctx-resolve.py set p-daily-standup <key> <value>

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars15SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
jackchuka/skills
Skill path
p-daily-standup/SKILL.md
Commit
7b0b33f68b8f11522e43622e5cb3bacd802999d2
License
MIT
Collected
2026-07-28
Default branch
main
View the original SKILL.md

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

  • 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.
  4. Call slack_read_user_profile() (no args) to get the current user's Slack ID.

Phase 2: Find Today's Thread

  1. Call slack_read_channel 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):

  • 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 (from slack_read_user_profile 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
  2. Ordering:

    • やったこと: PRs first, then meetings, then other Slack activity
    • やること: Open PRs first, then reviews requested, then today's meetings
  3. 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

ErrorAction
No Slackbot thread todayWarn user, offer draft-only mode
gws not installedSkip calendar, note in output
Fireflies unavailableSkip meeting summaries, note in output
gh auth failureWarn user, suggest gh auth login
No activity foundTell user "no activity found for [date]"
Slack send failsShow error, output draft for manual posting

Alternatives

Compare before choosing