# Standup Notes

> ---

- Skill: `itsimonfredlingjack-codex-dev-plugin/standup-notes` (Agent Skill)
- Install (CLI): `npx skillmds@latest add itsimonfredlingjack-codex-dev-plugin/standup-notes`
- Raw SKILL.md: https://api.skillmd.com/api/skills/itsimonfredlingjack-codex-dev-plugin/standup-notes/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: itsimonfredlingjack (https://skillmd.com/u/itsimonfredlingjack-codex-dev-plugin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/itsimonfredlingjack-codex-dev-plugin/standup-notes

---

﻿---
name: standup-notes
description: You are an expert team communication specialist focused on async-first standup practices, AI-assisted note generation from commit history, and effective remote team coordination patterns.
---
React with 👀 when read | Reply in thread with questions
```

### Example 4: Blocker Escalation Format

```markdown
# Standup - 2025-10-11

## Yesterday

• Continued work on data migration pipeline (JIRA-777)
• Investigated blocker with database permissions (see below)
• Updated migration runbook with new error handling

## Today

• **BLOCKED:** Cannot progress on JIRA-777 until permissions resolved
• Will pivot to JIRA-802 (refactor user service) as backup work
• Review PRs and help unblock teammates

## 🚨 CRITICAL BLOCKER

**Issue:** Production database read access for migration dry-run
**Blocked since:** Tuesday (3 days)
**Impact:**

- Cannot test migration on real data before production cutover
- Risk of data loss if migration fails in production
- Blocking sprint goal (migration scheduled for Monday)

**What I need:**

- Read-only credentials for production database replica
- Alternative: Sanitized production data dump in staging

**From:** @database-team (pinged @john and @maria)

**What I've tried:**

- Submitted access request via IT portal (Ticket #12345) - No response
- Asked in #database-help channel - Referred to IT portal
- DM'd @john yesterday - Said he'd check today

**Escalation:**

- If not resolved by EOD today, will need to reschedule Monday migration
- Requesting manager (@sarah) to escalate to database team lead
- Backup plan: Proceed with staging data only (higher risk)

**Next steps:**

- Following up with @john at 10am
- Will update this thread when resolved
- If unblocked, can complete testing over weekend to stay on schedule

---

@sarah @john - Please prioritize, this is blocking sprint delivery
```

## Reference Examples

### Reference 1: Full Async Standup Workflow

**Scenario:** Distributed team across US, Europe, and Asia timezones. No synchronous standup meetings. Daily written updates in Slack #standup channel.

**Morning Routine (30 minutes):**

```bash
# 1. Generate draft standup from data sources
git log --author="$(git config user.name)" --since="24 hours ago" --oneline
# Review commits, note key accomplishments

# 2. Check Jira tickets
jira issues list --assignee currentUser() --status "In Progress"
# Identify today's priorities

# 3. Review Obsidian daily note from yesterday
# Check for completed tasks, meeting outcomes

# 4. Draft standup note in Obsidian
# File: Daily Notes/Standup/2025-10-11.md

# 5. Review teammates' standup notes (last 8 hours)
# Identify opportunities to help, dependencies to note

# 6. Post standup to Slack #standup channel (9:00 AM local time)
# Copy from Obsidian, adjust formatting for Slack

# 7. Set reminder to check thread responses by 11am
# Respond to questions, offers of help

# 8. Update task list with any new follow-ups from discussion
```

**Standup Note (Posted in Slack):**

```markdown
**🌄 Standup - Oct 11** | @team-backend | Read time: 2min

**✅ Yesterday**
• Shipped v2 API authentication (JIRA-234) → Production deployment successful, monitoring dashboards green
• Fixed race condition in job queue (JIRA-456) → Reduced error rate from 2% to 0.1%
• Code review marathon: Reviewed 4 PRs from @alice, @bob, @charlie → All merged
• Pair programming: Helped @diana debug webhook integration → Issue resolved, she's unblocked

**🎯 Today**
• **Priority 1:** Complete database migration script (JIRA-567) → Target: Code complete + tested by 3pm
• **Priority 2:** Security audit prep → Generate access logs report for compliance team
• **Priority 3:** Start API rate limiting implementation (JIRA-589) → Spike and design doc
• **Meetings:** Architecture review at 11am PT, sprint planning at 2pm PT

**🚧 Blockers**
• None! (Yesterday's staging env blocker was resolved by @sre-team 🙌)

**💡 Notes**
• Database migration is sprint goal - will update thread when complete
• Available for pairing this afternoon if anyone needs database help
• Heads up: Deploying migration to staging at noon, expect ~10min downtime

**🔗 Links**
• [Active PRs](link) | [Sprint Board](link) | [Migration Runbook](link)

---

👀 = I've read this | 🤝 = I can help with something | 💬 = Reply in thread
```

**Follow-Up Actions (Throughout Day):**

```markdown
# 11:00 AM - Check thread responses

Thread from @eve:

> "Can you review my DB schema changes PR before your migration? Want to make sure no conflicts"

Response:

> "Absolutely! I'll review by 1pm so you have feedback before sprint planning. Link?"

# 3:00 PM - Progress update in thread

> "✅ Update: Migration script complete and tested in staging. Dry-run successful, ready for prod deployment tomorrow. PR #892 up for review."

# EOD - Tomorrow's setup

Add to tomorrow's "Today" section:
• Deploy database migration to production (scheduled 9am maintenance window)
• Monitor migration + rollback plan ready
• Post production status update in #engineering-announcements
```

**Weekly Retrospective (Friday):**

```markdown
# Review week of standup notes

Patterns observed:
• ✅ Completed all 5 sprint stories
• ⚠️ Database blocker cost 1.5 days - need faster SRE response process
• 💪 Code review throughput improved (avg 2.5 reviews/day vs 1.5 last week)
• 🎯 Pairing sessions very productive (3 this week) - schedule more next sprint

Action items:
• Talk to @sre-lead about expedited access request process
• Continue pairing schedule (blocking 2hrs/week)
• Next week: Focus on rate limiting implementation and technical debt
```

### Reference 2: AI-Powered Standup Generation System

**System Architecture:**

```
┌─────────────────────────────────────────────────────────────┐
│ Data Collection Layer                                       │
├─────────────────────────────────────────────────────────────┤
│ • Git commits (last 24-48h)                                 │
│ • Jira ticket updates (status changes, comments)            │
│ • Obsidian vault changes (daily notes, task completions)    │
│ • Calendar events (meetings attended, upcoming)             │
│ • Slack activity (mentions, threads participated in)        │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│ AI Analysis & Correlation Layer                             │
├─────────────────────────────────────────────────────────────┤
│ • Link commits to Jira tickets (extract ticket IDs)         │
│ • Group related commits (same feature/bug)                  │
│ • Extract business value from technical changes             │
│ • Identify blockers from patterns (repeated attempts)       │
│ • Summarize meeting notes → extract action items            │
│ • Calculate work distribution (feature vs bug vs review)    │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│ Generation & Formatting Layer                               │
├─────────────────────────────────────────────────────────────┤
│ • Generate "Yesterday" from commits + completed tickets     │
│ • Generate "Today" from in-progress tickets + calendar      │
│ • Flag potential blockers from context clues                │
│ • Format for target platform (Slack/Discord/Email/Obsidian) │
│ • Add relevant links (PRs, tickets, docs)                   │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│ Human Review & Enhancement Layer                            │
├─────────────────────────────────────────────────────────────┤
│ • Present draft for review                                  │
│ • Human adds context AI cannot infer                        │
│ • Adjust priorities based on team needs                     │
│ • Add personal notes, schedule changes                      │
│ • Approve and post to team channel                          │
└─────────────────────────────────────────────────────────────┘
```

**Implementation Script:**

```bash
#!/bin/bash
# generate-standup.sh - AI-powered standup note generator

DATE=$(date +%Y-%m-%d)
USER=$(git config user.name)
USER_EMAIL=$(git config user.email)

echo "🤖 Generating standup note for $USER on $DATE..."

# 1. Collect Git commits
echo "📊 Analyzing Git history..."
COMMITS=$(git log --author="$USER" --since="24 hours ago" \
  --pretty=format:"%h|%s|%cr" --no-merges)

# 2. Query Jira (requires jira CLI)
echo "🎫 Fetching Jira tickets..."
JIRA_DONE=$(jira issues list --assignee currentUser() \
  --jql "status CHANGED TO 'Done' DURING (-1d, now())" \
  --template json)

JIRA_PROGRESS=$(jira issues list --assignee currentUser() \
  --jql "status = 'In Progress'" \
  --template json)

# 3. Get Obsidian recent changes (via MCP)
echo "📝 Checking Obsidian vault..."
OBSIDIAN_CHANGES=$(obsidian_get_recent_changes --days 2)

# 4. Get calendar events
echo "📅 Fetching calendar..."
MEETINGS=$(gcal --today --format=json)

# 5. Send to AI for analysis and generation
echo "🧠 Generating standup note with AI..."
cat << EOF > /tmp/standup-context.json
{
  "date": "$DATE",
  "user": "$USER",
  "commits": $(echo "$COMMITS" | jq -R -s -c 'split("\n")'),
  "jira_completed": $JIRA_DONE,
  "jira_in_progress": $JIRA_PROGRESS,
  "obsidian_changes": $OBSIDIAN_CHANGES,
  "meetings": $MEETINGS
}
EOF

# AI prompt for standup generation
STANDUP_NOTE=$(claude-ai << 'PROMPT'
Analyze the provided context and generate a concise daily standup note.

Instructions:
- Group related commits into single accomplishment bullets
- Link commits to Jira tickets where possible
- Extract business value from technical changes
- Format as: Yesterday / Today / Blockers
- Keep bullets concise (1-2 lines each)
- Include relevant links to PRs and tickets
- Flag any potential blockers based on context

Context: $(cat /tmp/standup-context.json)

Generate standup note in markdown format.
PROMPT
)

# 6. Save draft to Obsidian
echo "$STANDUP_NOTE" > ~/Obsidian/Standup\ Notes/$DATE.md

# 7. Present for human review
echo "✅ Draft standup note generated!"
echo ""
echo "$STANDUP_NOTE"
echo ""
read -p "Review the draft above. Post to Slack? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    # 8. Post to Slack
    slack-cli chat send --channel "#standup" --text "$STANDUP_NOTE"
    echo "📮 Posted to Slack #standup channel"
fi

echo "💾 Saved to: ~/Obsidian/Standup Notes/$DATE.md"
```

**AI Prompt Template for Standup Generation:**

```
You are an expert at synthesizing engineering work into clear, concise standup updates.

Given the following data sources:
- Git commits (last 24h)
- Jira ticket updates
- Obsidian daily notes
- Calendar events

Generate a daily standup note that:

1. **Yesterday Section:**
   - Group related commits into single accomplishment statements
   - Link commits to Jira tickets (extract ticket IDs from messages)
   - Transform technical commits into business value ("Implemented X to enable Y")
   - Include completed tickets with their status
   - Summarize meeting outcomes from notes

2. **Today Section:**
   - List in-progress Jira tickets with current status
   - Include planned meetings from calendar
   - Estimate completion for ongoing work based on commit history
   - Prioritize by ticket priority and sprint goals

3. **Blockers Section:**
   - Identify potential blockers from patterns:
     * Multiple commits attempting same fix (indicates struggle)
     * No commits on high-priority ticket (may be blocked)
     * Comments in code mentioning "TODO" or "FIXME"
   - Extract explicit blockers from daily notes
   - Flag dependencies mentioned in Jira comments

Format:
- Use markdown with clear headers
- Bullet points for each item
- Include hyperlinks to PRs, tickets, docs
- Keep each bullet 1-2 lines maximum
- Add emoji for visual scanning (✅ ⚠️ 🚀 etc.)

Tone: Professional but conversational, transparent about challenges

Output only the standup note markdown, no preamble.
```

**Cron Job Setup (Daily Automation):**

```bash
# Add to crontab: Run every weekday at 8:45 AM
45 8 * * 1-5 /usr/local/bin/generate-standup.sh

# Sends notification when draft is ready:
# "Your standup note is ready for review!"
# Opens Obsidian note and prepares Slack message
```

---

**Tool Version:** 2.0 (Upgraded 2025-10-11)
**Target Audience:** Remote-first engineering teams, async-first organizations, distributed teams
**Dependencies:** Git, Jira CLI, Obsidian MCP, optional calendar integration
**Estimated Setup Time:** 15 minutes initial setup, 5 minutes daily routine once automated

## Output Format

```xml
<result>
  <analysis>Brief analysis</analysis>
  <solution>Implementation</solution>
  <considerations>Trade-offs and notes</considerations>
</result>
```

