mirror of
https://github.com/wshobson/agents.git
synced 2026-03-18 09:37:15 +00:00
style: format all files with prettier
This commit is contained in:
@@ -15,6 +15,7 @@ GitHub Issue ID or URL: $ARGUMENTS
|
||||
### 1. Issue Analysis and Triage
|
||||
|
||||
**Initial Investigation**
|
||||
|
||||
```bash
|
||||
# Get complete issue details
|
||||
gh issue view $ISSUE_NUMBER --comments
|
||||
@@ -27,6 +28,7 @@ gh issue view $ISSUE_NUMBER --json linkedBranches,closedByPullRequests
|
||||
```
|
||||
|
||||
**Triage Assessment Framework**
|
||||
|
||||
- **Priority Classification**:
|
||||
- P0/Critical: Production breaking, security vulnerability, data loss
|
||||
- P1/High: Major feature broken, significant user impact
|
||||
@@ -34,6 +36,7 @@ gh issue view $ISSUE_NUMBER --json linkedBranches,closedByPullRequests
|
||||
- P3/Low: Cosmetic issue, enhancement request
|
||||
|
||||
**Context Gathering**
|
||||
|
||||
```bash
|
||||
# Search for similar resolved issues
|
||||
gh issue list --search "similar keywords" --state closed --limit 10
|
||||
@@ -48,6 +51,7 @@ gh pr list --search "related_component" --state merged --limit 5
|
||||
### 2. Investigation and Root Cause Analysis
|
||||
|
||||
**Code Archaeology**
|
||||
|
||||
```bash
|
||||
# Find when the issue was introduced
|
||||
git bisect start
|
||||
@@ -62,6 +66,7 @@ git blame -L <start>,<end> path/to/file.js
|
||||
```
|
||||
|
||||
**Codebase Investigation**
|
||||
|
||||
```bash
|
||||
# Search for all occurrences of problematic function
|
||||
rg "functionName" --type js -A 3 -B 3
|
||||
@@ -74,18 +79,21 @@ grep -r "methodName(" . --include="*.py" | head -20
|
||||
```
|
||||
|
||||
**Dependency Analysis**
|
||||
|
||||
```javascript
|
||||
// Check for version conflicts
|
||||
const checkDependencies = () => {
|
||||
const package = require('./package.json');
|
||||
const lockfile = require('./package-lock.json');
|
||||
const package = require("./package.json");
|
||||
const lockfile = require("./package-lock.json");
|
||||
|
||||
Object.keys(package.dependencies).forEach(dep => {
|
||||
Object.keys(package.dependencies).forEach((dep) => {
|
||||
const specVersion = package.dependencies[dep];
|
||||
const lockVersion = lockfile.dependencies[dep]?.version;
|
||||
|
||||
if (lockVersion && !satisfies(lockVersion, specVersion)) {
|
||||
console.warn(`Version mismatch: ${dep} - spec: ${specVersion}, lock: ${lockVersion}`);
|
||||
console.warn(
|
||||
`Version mismatch: ${dep} - spec: ${specVersion}, lock: ${lockVersion}`,
|
||||
);
|
||||
}
|
||||
});
|
||||
};
|
||||
@@ -94,6 +102,7 @@ const checkDependencies = () => {
|
||||
### 3. Branch Strategy and Setup
|
||||
|
||||
**Branch Naming Conventions**
|
||||
|
||||
```bash
|
||||
# Feature branches
|
||||
git checkout -b feature/issue-${ISSUE_NUMBER}-short-description
|
||||
@@ -109,6 +118,7 @@ git checkout -b spike/issue-${ISSUE_NUMBER}-investigation
|
||||
```
|
||||
|
||||
**Branch Configuration**
|
||||
|
||||
```bash
|
||||
# Set upstream tracking
|
||||
git push -u origin feature/issue-${ISSUE_NUMBER}-feature-name
|
||||
@@ -123,28 +133,33 @@ gh issue develop ${ISSUE_NUMBER} --checkout
|
||||
### 4. Implementation Planning and Task Breakdown
|
||||
|
||||
**Task Decomposition Framework**
|
||||
|
||||
```markdown
|
||||
## Implementation Plan for Issue #${ISSUE_NUMBER}
|
||||
|
||||
### Phase 1: Foundation (Day 1)
|
||||
|
||||
- [ ] Set up development environment
|
||||
- [ ] Create failing test cases
|
||||
- [ ] Implement data models/schemas
|
||||
- [ ] Add necessary migrations
|
||||
|
||||
### Phase 2: Core Logic (Day 2)
|
||||
|
||||
- [ ] Implement business logic
|
||||
- [ ] Add validation layers
|
||||
- [ ] Handle edge cases
|
||||
- [ ] Add logging and monitoring
|
||||
|
||||
### Phase 3: Integration (Day 3)
|
||||
|
||||
- [ ] Wire up API endpoints
|
||||
- [ ] Update frontend components
|
||||
- [ ] Add error handling
|
||||
- [ ] Implement retry logic
|
||||
|
||||
### Phase 4: Testing & Polish (Day 4)
|
||||
|
||||
- [ ] Complete unit test coverage
|
||||
- [ ] Add integration tests
|
||||
- [ ] Performance optimization
|
||||
@@ -152,6 +167,7 @@ gh issue develop ${ISSUE_NUMBER} --checkout
|
||||
```
|
||||
|
||||
**Incremental Commit Strategy**
|
||||
|
||||
```bash
|
||||
# After each subtask completion
|
||||
git add -p # Partial staging for atomic commits
|
||||
@@ -163,9 +179,10 @@ git commit -m "docs(auth): update API documentation (#${ISSUE_NUMBER})"
|
||||
### 5. Test-Driven Development
|
||||
|
||||
**Unit Test Implementation**
|
||||
|
||||
```javascript
|
||||
// Jest example for bug fix
|
||||
describe('Issue #123: User authentication', () => {
|
||||
describe("Issue #123: User authentication", () => {
|
||||
let authService;
|
||||
|
||||
beforeEach(() => {
|
||||
@@ -173,7 +190,7 @@ describe('Issue #123: User authentication', () => {
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
test('should handle expired tokens gracefully', async () => {
|
||||
test("should handle expired tokens gracefully", async () => {
|
||||
// Arrange
|
||||
const expiredToken = generateExpiredToken();
|
||||
|
||||
@@ -182,20 +199,21 @@ describe('Issue #123: User authentication', () => {
|
||||
|
||||
// Assert
|
||||
expect(result.valid).toBe(false);
|
||||
expect(result.error).toBe('TOKEN_EXPIRED');
|
||||
expect(mockLogger.warn).toHaveBeenCalledWith('Token validation failed', {
|
||||
reason: 'expired',
|
||||
tokenId: expect.any(String)
|
||||
expect(result.error).toBe("TOKEN_EXPIRED");
|
||||
expect(mockLogger.warn).toHaveBeenCalledWith("Token validation failed", {
|
||||
reason: "expired",
|
||||
tokenId: expect.any(String),
|
||||
});
|
||||
});
|
||||
|
||||
test('should refresh token automatically when near expiry', async () => {
|
||||
test("should refresh token automatically when near expiry", async () => {
|
||||
// Test implementation
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
**Integration Test Pattern**
|
||||
|
||||
```python
|
||||
# Pytest integration test
|
||||
import pytest
|
||||
@@ -235,27 +253,28 @@ class TestIssue123Integration:
|
||||
```
|
||||
|
||||
**End-to-End Testing**
|
||||
|
||||
```typescript
|
||||
// Playwright E2E test
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { test, expect } from "@playwright/test";
|
||||
|
||||
test.describe('Issue #123: Authentication Flow', () => {
|
||||
test('user can complete full authentication cycle', async ({ page }) => {
|
||||
test.describe("Issue #123: Authentication Flow", () => {
|
||||
test("user can complete full authentication cycle", async ({ page }) => {
|
||||
// Navigate to login
|
||||
await page.goto('/login');
|
||||
await page.goto("/login");
|
||||
|
||||
// Fill credentials
|
||||
await page.fill('[data-testid="email-input"]', 'user@example.com');
|
||||
await page.fill('[data-testid="password-input"]', 'password123');
|
||||
await page.fill('[data-testid="email-input"]', "user@example.com");
|
||||
await page.fill('[data-testid="password-input"]', "password123");
|
||||
|
||||
// Submit and wait for navigation
|
||||
await Promise.all([
|
||||
page.waitForNavigation(),
|
||||
page.click('[data-testid="login-button"]')
|
||||
page.click('[data-testid="login-button"]'),
|
||||
]);
|
||||
|
||||
// Verify successful login
|
||||
await expect(page).toHaveURL('/dashboard');
|
||||
await expect(page).toHaveURL("/dashboard");
|
||||
await expect(page.locator('[data-testid="user-menu"]')).toBeVisible();
|
||||
});
|
||||
});
|
||||
@@ -264,6 +283,7 @@ test.describe('Issue #123: Authentication Flow', () => {
|
||||
### 6. Code Implementation Patterns
|
||||
|
||||
**Bug Fix Pattern**
|
||||
|
||||
```javascript
|
||||
// Before (buggy code)
|
||||
function calculateDiscount(price, discountPercent) {
|
||||
@@ -273,14 +293,16 @@ function calculateDiscount(price, discountPercent) {
|
||||
// After (fixed code with validation)
|
||||
function calculateDiscount(price, discountPercent) {
|
||||
// Validate inputs
|
||||
if (typeof price !== 'number' || price < 0) {
|
||||
throw new Error('Invalid price');
|
||||
if (typeof price !== "number" || price < 0) {
|
||||
throw new Error("Invalid price");
|
||||
}
|
||||
|
||||
if (typeof discountPercent !== 'number' ||
|
||||
discountPercent < 0 ||
|
||||
discountPercent > 100) {
|
||||
throw new Error('Invalid discount percentage');
|
||||
if (
|
||||
typeof discountPercent !== "number" ||
|
||||
discountPercent < 0 ||
|
||||
discountPercent > 100
|
||||
) {
|
||||
throw new Error("Invalid discount percentage");
|
||||
}
|
||||
|
||||
// Fix: Properly calculate discount
|
||||
@@ -292,6 +314,7 @@ function calculateDiscount(price, discountPercent) {
|
||||
```
|
||||
|
||||
**Feature Implementation Pattern**
|
||||
|
||||
```python
|
||||
# Implementing new feature with proper architecture
|
||||
from typing import Optional, List
|
||||
@@ -348,6 +371,7 @@ class IssueFeatureService:
|
||||
### 7. Pull Request Creation
|
||||
|
||||
**PR Preparation Checklist**
|
||||
|
||||
```bash
|
||||
# Run all tests locally
|
||||
npm test -- --coverage
|
||||
@@ -365,6 +389,7 @@ npm run docs:generate
|
||||
```
|
||||
|
||||
**PR Creation with GitHub CLI**
|
||||
|
||||
```bash
|
||||
# Create PR with comprehensive description
|
||||
gh pr create \
|
||||
@@ -408,6 +433,7 @@ EOF
|
||||
```
|
||||
|
||||
**Link PR to Issue Automatically**
|
||||
|
||||
```yaml
|
||||
# .github/pull_request_template.md
|
||||
---
|
||||
@@ -440,6 +466,7 @@ Closes #___
|
||||
### 8. Post-Implementation Verification
|
||||
|
||||
**Deployment Verification**
|
||||
|
||||
```bash
|
||||
# Check deployment status
|
||||
gh run list --workflow=deploy
|
||||
@@ -456,6 +483,7 @@ gh api /repos/org/repo/issues/${ISSUE_NUMBER}/comments \
|
||||
```
|
||||
|
||||
**Issue Closure Protocol**
|
||||
|
||||
```bash
|
||||
# Add resolution comment
|
||||
gh issue comment ${ISSUE_NUMBER} \
|
||||
@@ -473,6 +501,7 @@ gh issue close ${ISSUE_NUMBER} \
|
||||
**Purpose**: Fix authentication failure affecting all users
|
||||
|
||||
**Investigation and Implementation**:
|
||||
|
||||
```bash
|
||||
# 1. Immediate triage
|
||||
gh issue view 456 --comments
|
||||
@@ -509,6 +538,7 @@ gh pr create --title "Hotfix #456: Fix token validation logic" \
|
||||
**Purpose**: Implement user profile customization feature
|
||||
|
||||
**Complete Implementation**:
|
||||
|
||||
```python
|
||||
# Task breakdown in issue comment
|
||||
"""
|
||||
@@ -564,6 +594,7 @@ def test_profile_update():
|
||||
**Purpose**: Resolve slow query performance issue
|
||||
|
||||
**Investigation Workflow**:
|
||||
|
||||
```sql
|
||||
-- 1. Identify slow query from issue report
|
||||
EXPLAIN ANALYZE
|
||||
@@ -598,16 +629,19 @@ class UserService {
|
||||
// }
|
||||
|
||||
// New: Single optimized query
|
||||
const result = await sequelize.query(`
|
||||
const result = await sequelize.query(
|
||||
`
|
||||
SELECT u.*, COUNT(o.id) as order_count
|
||||
FROM users u
|
||||
LEFT JOIN orders o ON u.id = o.user_id
|
||||
WHERE u.created_at > :since
|
||||
GROUP BY u.id
|
||||
`, {
|
||||
replacements: { since },
|
||||
type: QueryTypes.SELECT
|
||||
});
|
||||
`,
|
||||
{
|
||||
replacements: { since },
|
||||
type: QueryTypes.SELECT,
|
||||
},
|
||||
);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -628,9 +662,10 @@ Upon successful issue resolution, deliver:
|
||||
8. **Rollback Plan**: Steps to revert if issues arise post-deployment
|
||||
|
||||
Success Criteria:
|
||||
|
||||
- Issue thoroughly investigated with root cause identified
|
||||
- Fix implemented with comprehensive test coverage
|
||||
- Pull request created following team standards
|
||||
- All CI/CD checks passing
|
||||
- Issue properly closed with reference to PR
|
||||
- Knowledge captured for future reference
|
||||
- Knowledge captured for future reference
|
||||
|
||||
@@ -9,10 +9,12 @@ Modern remote-first teams rely on async standup notes to maintain visibility, co
|
||||
## Requirements
|
||||
|
||||
**Arguments:** `$ARGUMENTS` (optional)
|
||||
|
||||
- If provided: Use as context about specific work areas, projects, or tickets to highlight
|
||||
- If empty: Automatically discover work from all available sources
|
||||
|
||||
**Required MCP Integrations:**
|
||||
|
||||
- `mcp-obsidian`: Vault access for daily notes and project updates
|
||||
- `atlassian`: Jira ticket queries (graceful fallback if unavailable)
|
||||
- Optional: Calendar integrations for meeting context
|
||||
@@ -20,12 +22,14 @@ Modern remote-first teams rely on async standup notes to maintain visibility, co
|
||||
## Data Source Orchestration
|
||||
|
||||
**Primary Sources:**
|
||||
|
||||
1. **Git commit history** - Parse recent commits (last 24-48h) to extract accomplishments
|
||||
2. **Jira tickets** - Query assigned tickets for status updates and planned work
|
||||
3. **Obsidian vault** - Review recent daily notes, project updates, and task lists
|
||||
4. **Calendar events** - Include meeting context and time commitments
|
||||
|
||||
**Collection Strategy:**
|
||||
|
||||
```
|
||||
1. Get current user context (Jira username, Git author)
|
||||
2. Fetch recent Git commits:
|
||||
@@ -45,22 +49,26 @@ Modern remote-first teams rely on async standup notes to maintain visibility, co
|
||||
## Standup Note Structure
|
||||
|
||||
**Standard Format:**
|
||||
|
||||
```markdown
|
||||
# Standup - YYYY-MM-DD
|
||||
|
||||
## Yesterday / Last Update
|
||||
|
||||
• [Completed task 1] - [Jira ticket link if applicable]
|
||||
• [Shipped feature/fix] - [Link to PR or deployment]
|
||||
• [Meeting outcomes or decisions made]
|
||||
• [Progress on ongoing work] - [Percentage complete or milestone reached]
|
||||
|
||||
## Today / Next
|
||||
|
||||
• [Continue work on X] - [Jira ticket] - [Expected completion: end of day]
|
||||
• [Start new feature Y] - [Jira ticket] - [Goal: complete design phase]
|
||||
• [Code review for Z] - [PR link]
|
||||
• [Meetings: Team sync 2pm, Design review 4pm]
|
||||
|
||||
## Blockers / Notes
|
||||
|
||||
• [Blocker description] - **Needs:** [Specific help needed] - **From:** [Person/team]
|
||||
• [Dependency or waiting on] - **ETA:** [Expected resolution date]
|
||||
• [Important context or risk] - [Impact if not addressed]
|
||||
@@ -70,6 +78,7 @@ Modern remote-first teams rely on async standup notes to maintain visibility, co
|
||||
```
|
||||
|
||||
**Formatting Guidelines:**
|
||||
|
||||
- Use bullet points for scanability
|
||||
- Include links to tickets, PRs, docs for quick navigation
|
||||
- Bold blockers and key information
|
||||
@@ -80,6 +89,7 @@ Modern remote-first teams rely on async standup notes to maintain visibility, co
|
||||
## Yesterday's Accomplishments Extraction
|
||||
|
||||
**AI-Assisted Commit Analysis:**
|
||||
|
||||
```
|
||||
For each commit in the last 24-48 hours:
|
||||
1. Extract commit message and parse for:
|
||||
@@ -101,6 +111,7 @@ For each commit in the last 24-48 hours:
|
||||
```
|
||||
|
||||
**Obsidian Task Completion Parsing:**
|
||||
|
||||
```
|
||||
Search vault for completed tasks (last 24-48h):
|
||||
- Pattern: `- [x] Task description` with recent modification date
|
||||
@@ -110,6 +121,7 @@ Search vault for completed tasks (last 24-48h):
|
||||
```
|
||||
|
||||
**Accomplishment Quality Criteria:**
|
||||
|
||||
- Focus on delivered value, not just activity ("Shipped user auth" vs "Worked on auth")
|
||||
- Include impact when known ("Fixed bug affecting 20% of users")
|
||||
- Connect to team goals or sprint objectives
|
||||
@@ -118,6 +130,7 @@ Search vault for completed tasks (last 24-48h):
|
||||
## Today's Plans and Priorities
|
||||
|
||||
**Priority-Based Planning:**
|
||||
|
||||
```
|
||||
1. Urgent blockers for others (unblock teammates first)
|
||||
2. Sprint/iteration commitments (tickets in current sprint)
|
||||
@@ -128,12 +141,14 @@ Search vault for completed tasks (last 24-48h):
|
||||
```
|
||||
|
||||
**Capacity-Aware Planning:**
|
||||
|
||||
- Calculate available hours (8h - meetings - expected interruptions)
|
||||
- Flag overcommitment if planned work exceeds capacity
|
||||
- Include time for code reviews, testing, deployment tasks
|
||||
- Note partial day availability (half-day due to appointments, etc.)
|
||||
|
||||
**Clear Outcomes:**
|
||||
|
||||
- Define success criteria for each task ("Complete API integration" vs "Work on API")
|
||||
- Include ticket status transitions expected ("Move JIRA-123 to Code Review")
|
||||
- Set realistic completion targets ("Finish by EOD" or "Rough draft by lunch")
|
||||
@@ -143,33 +158,40 @@ Search vault for completed tasks (last 24-48h):
|
||||
**Blocker Categorization:**
|
||||
|
||||
**Hard Blockers (work completely stopped):**
|
||||
|
||||
- Waiting on external API access or credentials
|
||||
- Blocked by failed CI/CD or infrastructure issues
|
||||
- Dependent on another team's incomplete work
|
||||
- Missing requirements or design decisions
|
||||
|
||||
**Soft Blockers (work slowed but not stopped):**
|
||||
|
||||
- Need clarification on requirements (can proceed with assumptions)
|
||||
- Waiting on code review (can start next task)
|
||||
- Performance issues impacting development workflow
|
||||
- Missing nice-to-have resources or tools
|
||||
|
||||
**Blocker Escalation Format:**
|
||||
|
||||
```markdown
|
||||
## Blockers
|
||||
|
||||
• **[CRITICAL]** [Description] - Blocked since [date]
|
||||
- **Impact:** [What work is stopped, team/customer impact]
|
||||
- **Need:** [Specific action required]
|
||||
- **From:** [@person or @team]
|
||||
- **Tried:** [What you've already attempted]
|
||||
- **Next step:** [What will happen if not resolved by X date]
|
||||
|
||||
- **Impact:** [What work is stopped, team/customer impact]
|
||||
- **Need:** [Specific action required]
|
||||
- **From:** [@person or @team]
|
||||
- **Tried:** [What you've already attempted]
|
||||
- **Next step:** [What will happen if not resolved by X date]
|
||||
|
||||
• **[NORMAL]** [Description] - [When it became a blocker]
|
||||
- **Need:** [What would unblock]
|
||||
- **Workaround:** [Current alternative approach if any]
|
||||
|
||||
- **Need:** [What would unblock]
|
||||
- **Workaround:** [Current alternative approach if any]
|
||||
```
|
||||
|
||||
**Dependency Tracking:**
|
||||
|
||||
- Call out cross-team dependencies explicitly
|
||||
- Include expected delivery dates for dependent work
|
||||
- Tag relevant stakeholders with @mentions
|
||||
@@ -178,6 +200,7 @@ Search vault for completed tasks (last 24-48h):
|
||||
## AI-Assisted Note Generation
|
||||
|
||||
**Automated Generation Workflow:**
|
||||
|
||||
```bash
|
||||
# Generate standup notes from Git commits (last 24h)
|
||||
git log --author="$(git config user.name)" --since="24 hours ago" \
|
||||
@@ -198,6 +221,7 @@ obsidian_get_recent_periodic_notes --period daily --limit 2 | \
|
||||
```
|
||||
|
||||
**AI Summarization Techniques:**
|
||||
|
||||
- Group related commits/tasks under single accomplishment bullets
|
||||
- Translate technical commit messages to business value statements
|
||||
- Identify patterns across multiple changes (e.g., "Refactored auth module" from 5 commits)
|
||||
@@ -205,6 +229,7 @@ obsidian_get_recent_periodic_notes --period daily --limit 2 | \
|
||||
- Flag potential blockers or risks from context clues
|
||||
|
||||
**Manual Override:**
|
||||
|
||||
- Always review AI-generated content for accuracy
|
||||
- Add personal context AI cannot infer (conversations, planning thoughts)
|
||||
- Adjust priorities based on team needs or changed circumstances
|
||||
@@ -213,6 +238,7 @@ obsidian_get_recent_periodic_notes --period daily --limit 2 | \
|
||||
## Communication Best Practices
|
||||
|
||||
**Async-First Principles:**
|
||||
|
||||
- Post standup notes at consistent time daily (e.g., 9am local time)
|
||||
- Don't wait for synchronous standup meeting to share updates
|
||||
- Include enough context for readers in different timezones
|
||||
@@ -220,6 +246,7 @@ obsidian_get_recent_periodic_notes --period daily --limit 2 | \
|
||||
- Make blockers actionable (specific requests, not vague concerns)
|
||||
|
||||
**Visibility and Transparency:**
|
||||
|
||||
- Share wins and progress, not just problems
|
||||
- Be honest about challenges and timeline concerns early
|
||||
- Call out dependencies proactively before they become blockers
|
||||
@@ -227,6 +254,7 @@ obsidian_get_recent_periodic_notes --period daily --limit 2 | \
|
||||
- Include learning moments or process improvements
|
||||
|
||||
**Team Coordination:**
|
||||
|
||||
- Read teammates' standup notes before posting yours (adjust plans accordingly)
|
||||
- Offer help when you see blockers you can resolve
|
||||
- Tag people when their input or action is needed
|
||||
@@ -234,6 +262,7 @@ obsidian_get_recent_periodic_notes --period daily --limit 2 | \
|
||||
- Update throughout day if priorities shift significantly
|
||||
|
||||
**Writing Style:**
|
||||
|
||||
- Use active voice and clear action verbs
|
||||
- Avoid ambiguous terms ("soon", "later", "eventually")
|
||||
- Be specific about timeline and scope
|
||||
@@ -243,41 +272,49 @@ obsidian_get_recent_periodic_notes --period daily --limit 2 | \
|
||||
## Async Standup Patterns
|
||||
|
||||
**Written-Only Standup (No Sync Meeting):**
|
||||
|
||||
```markdown
|
||||
# Post daily in #standup-team-name Slack channel
|
||||
|
||||
**Posted:** 9:00 AM PT | **Read time:** ~2min
|
||||
|
||||
## ✅ Yesterday
|
||||
|
||||
• Shipped user profile API endpoints (JIRA-234) - Live in staging
|
||||
• Fixed critical bug in payment flow - PR merged, deploying at 2pm
|
||||
• Reviewed PRs from @teammate1 and @teammate2
|
||||
|
||||
## 🎯 Today
|
||||
|
||||
• Migrate user database to new schema (JIRA-456) - Target: EOD
|
||||
• Pair with @teammate3 on webhook integration - 11am session
|
||||
• Write deployment runbook for profile API
|
||||
|
||||
## 🚧 Blockers
|
||||
|
||||
• Need staging database access for migration testing - @infra-team
|
||||
|
||||
## 📎 Links
|
||||
|
||||
• [PR #789](link) | [JIRA Sprint Board](link)
|
||||
```
|
||||
|
||||
**Thread-Based Standup:**
|
||||
|
||||
- Post standup as Slack thread parent message
|
||||
- Teammates reply in thread with questions or offers to help
|
||||
- Keep discussion contained, surface key decisions to channel
|
||||
- Use emoji reactions for quick acknowledgment (👀 = read, ✅ = noted, 🤝 = I can help)
|
||||
|
||||
**Video Async Standup:**
|
||||
|
||||
- Record 2-3 minute Loom video walking through work
|
||||
- Post video link with text summary (for skimmers)
|
||||
- Useful for demoing UI work, explaining complex technical issues
|
||||
- Include automatic transcript for accessibility
|
||||
|
||||
**Rolling 24-Hour Standup:**
|
||||
|
||||
- Post update anytime within 24h window
|
||||
- Mark as "posted" when shared (use emoji status)
|
||||
- Accommodates distributed teams across timezones
|
||||
@@ -286,6 +323,7 @@ obsidian_get_recent_periodic_notes --period daily --limit 2 | \
|
||||
## Follow-Up Tracking
|
||||
|
||||
**Action Item Extraction:**
|
||||
|
||||
```
|
||||
From standup notes, automatically extract:
|
||||
1. Blockers requiring follow-up → Create reminder tasks
|
||||
@@ -295,12 +333,14 @@ From standup notes, automatically extract:
|
||||
```
|
||||
|
||||
**Progress Tracking Over Time:**
|
||||
|
||||
- Link today's "Yesterday" section to previous day's "Today" plan
|
||||
- Flag items that remain in "Today" for 3+ days (potential stuck work)
|
||||
- Celebrate completed multi-day efforts when finally done
|
||||
- Review weekly to identify recurring blockers or process improvements
|
||||
|
||||
**Retrospective Data:**
|
||||
|
||||
- Monthly review of standup notes reveals patterns:
|
||||
- How often are estimates accurate?
|
||||
- Which types of blockers are most common?
|
||||
@@ -309,8 +349,10 @@ From standup notes, automatically extract:
|
||||
- Use insights for sprint planning and capacity estimation
|
||||
|
||||
**Integration with Task Systems:**
|
||||
|
||||
```markdown
|
||||
## Follow-Up Tasks (Auto-generated from standup)
|
||||
|
||||
- [ ] Follow up with @infra-team on staging access (from blocker) - Due: Today EOD
|
||||
- [ ] Review PR #789 feedback from @teammate (from yesterday's post) - Due: Tomorrow
|
||||
- [ ] Document deployment process (from today's plan) - Due: End of week
|
||||
@@ -325,12 +367,14 @@ From standup notes, automatically extract:
|
||||
# Standup - 2025-10-11
|
||||
|
||||
## Yesterday
|
||||
|
||||
• **Completed JIRA-892:** User authentication with OAuth2 - PR #445 merged and deployed to staging
|
||||
• **Fixed prod bug:** Payment retry logic wasn't handling timeouts - Hotfix deployed, monitoring for 24h
|
||||
• **Code review:** Reviewed 3 PRs from @sarah and @mike - All approved with minor feedback
|
||||
• **Meeting outcomes:** Design sync on Q4 roadmap - Agreed to prioritize mobile responsiveness
|
||||
|
||||
## Today
|
||||
|
||||
• **Continue JIRA-903:** Implement user profile edit flow - Target: Complete API integration by EOD
|
||||
• **Deploy:** Roll out auth changes to production during 2pm deploy window
|
||||
• **Pairing:** Work with @chris on webhook error handling - 11am-12pm session
|
||||
@@ -338,12 +382,15 @@ From standup notes, automatically extract:
|
||||
• **Code review:** Review @sarah's notification service refactor (PR #451)
|
||||
|
||||
## Blockers
|
||||
|
||||
• **Need:** QA environment refresh for profile testing - Database is 2 weeks stale
|
||||
- **From:** @qa-team or @devops
|
||||
- **Impact:** Can't test full user flow until refreshed
|
||||
- **Workaround:** Testing with mock data for now, but need real data before production
|
||||
|
||||
- **From:** @qa-team or @devops
|
||||
- **Impact:** Can't test full user flow until refreshed
|
||||
- **Workaround:** Testing with mock data for now, but need real data before production
|
||||
|
||||
## Notes
|
||||
|
||||
• Taking tomorrow afternoon off (dentist appointment) - Will post morning standup but limited availability after 12pm
|
||||
• Mobile responsiveness research doc started: [Link to Notion doc]
|
||||
|
||||
@@ -356,32 +403,39 @@ From standup notes, automatically extract:
|
||||
# Standup - 2025-10-11 (Auto-generated from Git commits)
|
||||
|
||||
## Yesterday (12 commits analyzed)
|
||||
|
||||
• **Feature work:** Implemented caching layer for API responses
|
||||
- Added Redis integration (3 commits)
|
||||
- Implemented cache invalidation logic (2 commits)
|
||||
- Added monitoring for cache hit rates (1 commit)
|
||||
- *Related tickets:* JIRA-567, JIRA-568
|
||||
|
||||
- Added Redis integration (3 commits)
|
||||
- Implemented cache invalidation logic (2 commits)
|
||||
- Added monitoring for cache hit rates (1 commit)
|
||||
- _Related tickets:_ JIRA-567, JIRA-568
|
||||
|
||||
• **Bug fixes:** Resolved 3 production issues
|
||||
- Fixed null pointer exception in user service (JIRA-601)
|
||||
- Corrected timezone handling in reports (JIRA-615)
|
||||
- Patched memory leak in background job processor (JIRA-622)
|
||||
|
||||
- Fixed null pointer exception in user service (JIRA-601)
|
||||
- Corrected timezone handling in reports (JIRA-615)
|
||||
- Patched memory leak in background job processor (JIRA-622)
|
||||
|
||||
• **Maintenance:** Updated dependencies and improved testing
|
||||
- Upgraded Node.js to v20 LTS (2 commits)
|
||||
- Added integration tests for payment flow (2 commits)
|
||||
- Refactored error handling in API gateway (1 commit)
|
||||
|
||||
- Upgraded Node.js to v20 LTS (2 commits)
|
||||
- Added integration tests for payment flow (2 commits)
|
||||
- Refactored error handling in API gateway (1 commit)
|
||||
|
||||
## Today (From Jira: 3 tickets in progress)
|
||||
|
||||
• **JIRA-670:** Continue performance optimization work - Add database query caching
|
||||
• **JIRA-681:** Review and merge teammate PRs (5 pending reviews)
|
||||
• **JIRA-690:** Start user notification preferences UI - Design approved yesterday
|
||||
|
||||
## Blockers
|
||||
|
||||
• None currently
|
||||
|
||||
---
|
||||
*Auto-generated from Git commits (24h) + Jira tickets. Reviewed and approved by human.*
|
||||
|
||||
_Auto-generated from Git commits (24h) + Jira tickets. Reviewed and approved by human._
|
||||
```
|
||||
|
||||
### Example 3: Async Standup Template (Slack/Discord)
|
||||
@@ -402,13 +456,15 @@ From standup notes, automatically extract:
|
||||
|
||||
**🚧 Blockers**
|
||||
• ⚠️ Need @product approval on permissions UX before I can finish JIRA-501
|
||||
- I've posted in #product-questions, following up in standup if no response by 11am
|
||||
|
||||
- I've posted in #product-questions, following up in standup if no response by 11am
|
||||
|
||||
**📅 Schedule notes**
|
||||
• OOO 2-3pm for doctor appointment
|
||||
• Available for pairing this afternoon if anyone needs help!
|
||||
|
||||
---
|
||||
|
||||
React with 👀 when read | Reply in thread with questions
|
||||
```
|
||||
|
||||
@@ -418,11 +474,13 @@ React with 👀 when read | Reply in thread with questions
|
||||
# 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
|
||||
@@ -432,27 +490,32 @@ React with 👀 when read | Reply in thread with questions
|
||||
**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
|
||||
@@ -526,6 +589,7 @@ jira issues list --assignee currentUser() --status "In Progress"
|
||||
• [Active PRs](link) | [Sprint Board](link) | [Migration Runbook](link)
|
||||
|
||||
---
|
||||
|
||||
👀 = I've read this | 🤝 = I can help with something | 💬 = Reply in thread
|
||||
```
|
||||
|
||||
@@ -533,16 +597,21 @@ jira issues list --assignee currentUser() --status "In Progress"
|
||||
|
||||
```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
|
||||
@@ -553,6 +622,7 @@ Add to tomorrow's "Today" section:
|
||||
|
||||
```markdown
|
||||
# Review week of standup notes
|
||||
|
||||
Patterns observed:
|
||||
• ✅ Completed all 5 sprint stories
|
||||
• ⚠️ Database blocker cost 1.5 days - need faster SRE response process
|
||||
|
||||
Reference in New Issue
Block a user