From daily-meeting-update
Generates interactive daily standup updates by pulling activity from GitHub, Jira, and Claude Code history, interviewing on yesterday/today/blockers/topics, and formatting as Markdown.
npx claudepluginhub softaworks/agent-toolkit --plugin daily-meeting-updateThis skill uses the workspace's default tool permissions.
Generate a daily standup/meeting update through an **interactive interview**. Never assume tools are configured—ask first.
Generates standup updates summarizing recent commits, PRs, ticket changes, and activity into yesterday/today/blockers format. Works with connected source control/project tools or standalone notes.
Generates async standup notes from Git commit history, Jira tickets, Obsidian vaults, and calendars for remote team coordination and visibility.
Generates daily standup notes from Git commit history, Jira tickets, Obsidian vaults, and calendars for async-first remote teams.
Share bugs, ideas, or general feedback.
Generate a daily standup/meeting update through an interactive interview. Never assume tools are configured—ask first.
START
│
▼
┌─────────────────────────────────────────────────────┐
│ Phase 1: DETECT & OFFER INTEGRATIONS │
│ • Check: Claude Code history? gh CLI? jira CLI? │
│ • Claude Code → Pull yesterday's session digest │
│ → User selects relevant items via multiSelect │
│ • GitHub/Jira → Ask user, pull if approved │
│ • Pull data NOW (before interview) │
├─────────────────────────────────────────────────────┤
│ Phase 2: INTERVIEW (with insights) │
│ • Show pulled data as context │
│ • Yesterday: "I see you merged PR #123, what else?" │
│ • Today: What will you work on? │
│ • Blockers: Anything blocking you? │
│ • Topics: Anything to discuss at end of meeting? │
├─────────────────────────────────────────────────────┤
│ Phase 3: GENERATE UPDATE │
│ • Combine interview answers + tool data │
│ • Format as clean Markdown │
│ • Present to user │
└─────────────────────────────────────────────────────┘
Check for available integrations silently (suppress errors, don't show to user):
| Integration | Detection |
|---|---|
| Claude Code History | ~/.claude/projects directory exists with .jsonl files |
| GitHub CLI | gh auth status succeeds |
| Jira CLI | jira command exists |
| Atlassian MCP | mcp__atlassian__* tools available |
| Git | Inside a git repository |
Claude Code users: Use
AskUserQuestionTooltool for all questions in this phase.
GitHub/Git:
If HAS_GH or HAS_GIT:
"I detected you have GitHub/Git configured. Want me to pull your recent activity (commits, PRs, reviews)?"
Options:
- "Yes, pull the info"
- "No, I'll provide everything manually"
If yes:
"Which repositories/projects should I check?"
Options:
- "Just the current directory" (if in a git repo)
- "I'll list the repos" → user provides list
Jira:
If HAS_JIRA_CLI or HAS_ATLASSIAN_MCP:
"I detected you have Jira configured. Want me to pull your tickets?"
Options:
- "Yes, pull my tickets"
- "No, I'll provide everything manually"
GitHub/Git — For each approved repo:
Jira — Tickets assigned to user, updated in last 24h
Key insight: Store results to use as context in Phase 2 interview.
This integration captures everything you worked on with Claude Code — useful for recalling work that isn't in git or Jira.
Detection:
ls ~/.claude/projects/*/*.jsonl 2>/dev/null | head -1
If Claude Code history exists, ask:
"I can also pull your Claude Code session history from yesterday. This can help recall work that isn't in git/Jira (research, debugging, planning). Want me to check?"
Options:
- "Yes, pull my Claude Code sessions"
- "No, I have everything I need"
If yes, run the digest script:
python3 ~/.claude/skills/daily-meeting-update/scripts/claude_digest.py --format json
Then present sessions with multiSelect:
Use AskUserQuestionTool with multiSelect: true to let user pick relevant items:
"Here are your Claude Code sessions from yesterday. Select the ones relevant to your standup:"
Options (multiSelect):
- "Fix authentication bug (backend-api)"
- "Implement OAuth flow (backend-api)"
- "Update homepage styles (frontend-app)"
- "Research payment providers (docs)"
Key insight: User selects which sessions are work-related. Personal projects or experiments can be excluded.
Do NOT run digest script when:
~/.claude/projects directory doesn't existIf digest script fails:
Claude Code users: Use
AskUserQuestionTooltool to conduct the interview. This provides a better UX with structured options.
Use pulled data as context to make questions smarter.
If data was pulled, show it first:
"Here's what I found from your activity:
- Merged PR #123: fix login timeout
- 3 commits in backend-api
- Reviewed PR #456 (approved)
Anything else you worked on yesterday that I missed?"
If no data pulled:
"What did you work on yesterday/since the last standup?"
If user response is vague, ask follow-up:
"What will you work on today?"
Options:
- [Text input - user types freely]
If Jira data was pulled, you can suggest:
"I see you have these tickets assigned:
- PROJ-123: Implement OAuth flow (In Progress)
- PROJ-456: Fix payment bug (To Do)
Will you work on any of these today?"
"Do you have any blockers or impediments?"
Options:
- "No blockers"
- "Yes, I have blockers" → follow-up for details
"Any topic you want to bring up at the end of the daily?"
Options:
- "No, nothing to discuss"
- "Yes" → follow-up for details
Examples of topics:
- Technical decision that needs input
- Alignment with another team
- Question about prioritization
- Announcement or info for the team
Combine all information into clean Markdown:
# Daily Update - [DATE]
## Yesterday
- [Items from interview]
- [Items from GitHub/Jira if pulled]
## Today
- [Items from interview]
## Blockers
- [Blockers or "No blockers"]
## PRs & Reviews (if pulled from GitHub)
- [PRs opened]
- [PRs merged]
- [Reviews done]
## Jira (if pulled from Jira)
- [Tickets updated]
## Topics for Discussion
- [Topics or "None"]
---
*Links:*
- [PR links]
- [Ticket links]
| Phase | Action | Tool |
|---|---|---|
| 1. Detect & Offer | Check gh/jira/claude history, ask user, pull data | Bash (silent), AskUserQuestionTool* |
| 2. Interview | Ask 4 questions with insights | AskUserQuestionTool* |
| 3. Generate | Format Markdown | Output text |
*Claude Code only: Use AskUserQuestionTool tool for structured questions.
# Get yesterday's sessions as JSON
python3 ~/.claude/skills/daily-meeting-update/scripts/claude_digest.py --format json
# Get today's sessions
python3 ~/.claude/skills/daily-meeting-update/scripts/claude_digest.py --date today --format json
# Filter to specific project
python3 ~/.claude/skills/daily-meeting-update/scripts/claude_digest.py --project ~/my-app --format json
Claude: "Let's prepare your daily! I detected GitHub configured. Want me to pull your recent activity?"
User: "Yes"
Claude: "Which repos should I check?"
User: "backend-api and frontend-app"
[Claude pulls GitHub data silently]
Claude: "I can also pull your Claude Code session history from yesterday. Want me to check?"
User: "Yes"
[Claude runs digest script, gets 5 sessions]
Claude: "Here are your Claude Code sessions from yesterday. Select the ones relevant to your standup:"
☑ Fix authentication timeout bug (backend-api)
☑ Implement OAuth flow (backend-api)
☐ Update personal blog (blog) - [user unchecks personal project]
☑ Research payment providers (docs)
☐ Debugging test failures (experiments)
User: [selects 3 relevant items]
Claude: "Here's what I found from your activity:
- Merged PR #120: fix login timeout
- Opened PR #125: feat: add OAuth flow
- Reviewed PR #123 (approved), PR #456 (changes requested)
- 5 commits in backend-api
- [From Claude Code] Fix authentication timeout bug
- [From Claude Code] Implement OAuth flow
- [From Claude Code] Research payment providers
Anything else you worked on yesterday that I missed?"
User: "No, that covers it"
Claude: "What will you work on today?"
User: "Continue the OAuth feature and deploy to staging"
Claude: "Any blockers?"
User: "No"
Claude: "Any topic to bring up at the end of the daily?"
User: "Yes, I want to discuss the architecture of the new payments module"
[Claude generates update]
# Daily Update - 2026-01-22
## Yesterday
- Worked on authentication feature
- Research on payment providers
- Merged PR #120 (fix: login timeout)
- Opened PR #125 (feat: add OAuth flow)
## Today
- Continue OAuth feature
- Deploy to staging
## Blockers
- No blockers
## PRs & Reviews
- **Opened:** PR #125 - feat: add OAuth flow
- **Merged:** PR #120 - fix: login timeout
- **Reviews:** PR #123 (approved), PR #456 (changes requested)
## Topics for Discussion
- Architecture of the new payments module
---
*Links:*
- https://github.com/org/repo/pull/125
- https://github.com/org/repo/pull/120
| Avoid | Why (Expert Knowledge) | Instead |
|---|---|---|
| Run gh/jira without asking | Users may have personal repos visible, or be in a sensitive project context they don't want exposed | Always ask first, let user choose repos |
| Assume current directory is the only project | Developers often work on 2-5 repos simultaneously (frontend, backend, infra) | Ask "Which projects are you working on?" |
| Skip interview even with tool data | Tools capture WHAT happened but miss WHY and context (research, meetings, planning) | Interview is primary, tools supplement |
| Generate update before all 4 questions | User might have critical blocker or discussion topic that changes the narrative | Complete interview, then generate |
| Include raw commit messages | Commit messages are often cryptic ("fix", "wip") and don't tell the story | Summarize into human-readable outcomes |
| Ask for data after interview | Showing insights during interview makes questions smarter ("I see you merged PR #123, anything else?") | Pull data first, then interview with context |