Reorganize: Move all skills to skills/ folder
- Created skills/ directory - Moved 272 skills to skills/ subfolder - Kept agents/ at root level - Kept installation scripts and docs at root level Repository structure: - skills/ - All 272 skills from skills.sh - agents/ - Agent definitions - *.sh, *.ps1 - Installation scripts - README.md, etc. - Documentation Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
408
skills/daily-meeting-update/skill.md
Normal file
408
skills/daily-meeting-update/skill.md
Normal file
@@ -0,0 +1,408 @@
|
||||
---
|
||||
name: daily-meeting-update
|
||||
description: "Interactive daily standup/meeting update generator. Use when user says 'daily', 'standup', 'scrum update', 'status update', 'what did I do yesterday', 'prepare for meeting', 'morning update', or 'team sync'. Pulls activity from GitHub, Jira, and Claude Code session history. Conducts 4-question interview (yesterday, today, blockers, discussion topics) and generates formatted Markdown update."
|
||||
user-invocable: true
|
||||
---
|
||||
|
||||
# Daily Meeting Update
|
||||
|
||||
Generate a daily standup/meeting update through an **interactive interview**. Never assume tools are configured—ask first.
|
||||
|
||||
---
|
||||
|
||||
## Workflow
|
||||
|
||||
```
|
||||
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 │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Detect & Offer Integrations
|
||||
|
||||
### Step 1: Silent Detection
|
||||
|
||||
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 |
|
||||
|
||||
### Step 2: Offer GitHub/Jira Integrations (if available)
|
||||
|
||||
> **Claude Code users:** Use `AskUserQuestionTool` tool 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"
|
||||
```
|
||||
|
||||
### Step 3: Pull GitHub/Jira Data (if approved)
|
||||
|
||||
**GitHub/Git** — For each approved repo:
|
||||
- Commits by user since yesterday
|
||||
- PRs opened/merged by user
|
||||
- Reviews done by user
|
||||
|
||||
**Jira** — Tickets assigned to user, updated in last 24h
|
||||
|
||||
**Key insight**: Store results to use as context in Phase 2 interview.
|
||||
|
||||
### Step 4: Offer Claude Code History
|
||||
|
||||
This integration captures everything you worked on with Claude Code — useful for recalling work that isn't in git or Jira.
|
||||
|
||||
**Detection:**
|
||||
```bash
|
||||
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:**
|
||||
|
||||
```bash
|
||||
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:**
|
||||
- User explicitly says "No" to Claude Code history
|
||||
- User says they'll provide everything manually
|
||||
- `~/.claude/projects` directory doesn't exist
|
||||
|
||||
**If digest script fails:**
|
||||
- Fallback: Skip Claude Code integration silently, proceed with interview
|
||||
- Common issues: Python not installed, no sessions from yesterday, permission errors
|
||||
- Do NOT block the standup flow — the script is supplemental, not required
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Interview (with insights)
|
||||
|
||||
> **Claude Code users:** Use `AskUserQuestionTool` tool to conduct the interview. This provides a better UX with structured options.
|
||||
|
||||
**Use pulled data as context** to make questions smarter.
|
||||
|
||||
### Question 1: Yesterday
|
||||
|
||||
**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:
|
||||
- "Can you give more details about X?"
|
||||
- "Did you complete anything specific?"
|
||||
|
||||
### Question 2: Today
|
||||
|
||||
```
|
||||
"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?"
|
||||
```
|
||||
|
||||
### Question 3: Blockers
|
||||
|
||||
```
|
||||
"Do you have any blockers or impediments?"
|
||||
|
||||
Options:
|
||||
- "No blockers"
|
||||
- "Yes, I have blockers" → follow-up for details
|
||||
```
|
||||
|
||||
### Question 4: Topics for Discussion
|
||||
|
||||
```
|
||||
"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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: Generate Update
|
||||
|
||||
Combine all information into clean Markdown:
|
||||
|
||||
```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]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Core Principles
|
||||
|
||||
1. **Interview is primary** — Tools supplement, they don't replace human context
|
||||
2. **Consent before access** — Always ask before pulling from any integration
|
||||
3. **Context-aware questions** — Show pulled data during interview to trigger memory ("I see you merged PR #123...")
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| 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.
|
||||
|
||||
### Claude Code Digest Script
|
||||
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Example Session
|
||||
|
||||
```
|
||||
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]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Output Example
|
||||
|
||||
```markdown
|
||||
# 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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
| 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 |
|
||||
|
||||
---
|
||||
|
||||
## NEVER
|
||||
|
||||
- **NEVER assume tools are configured** — Many devs have gh installed but not authenticated, or jira CLI pointing to wrong instance
|
||||
- **NEVER skip the "Topics for Discussion" question** — This is often the most valuable part of standup that tools can't capture
|
||||
- **NEVER generate more than 15 bullets** — Standup should be <2 minutes to read; long updates lose the audience
|
||||
- **NEVER include ticket/PR numbers without context** — "PROJ-123" means nothing; always include title or summary
|
||||
- **NEVER pull data from repos user didn't explicitly approve** — Even if you can see other repos, respect boundaries
|
||||
Reference in New Issue
Block a user