Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    jwbaldwin

    morning-report

    jwbaldwin/morning-report
    Productivity
    1 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Generate a morning MR status report. Use when the user says "morning report", "mr status", "what needs my attention", or similar morning standup queries.

    SKILL.md

    Morning Report

    Generate a GitLab MR status report for James. This is an AI assistant giving a morning briefing - use natural language, not terse shorthand.

    When to Use This Skill

    Activate this skill when:

    • The user says "morning report" or "morning"
    • The user asks "what MRs need my attention?"
    • The user asks about their MR status
    • The user wants to know what to review

    Workflow

    1. Fetch My Open MRs

    Use Zapier MCP to get all open MRs created by James:

    zapier-mcp_gitlab_find_all_merge_requests({
      instructions: "Find all open merge requests that I created",
      scope: "created_by_me",
      state: "opened"
    })
    

    2. Fetch MRs Needing My Review

    Use Zapier MCP raw API to get MRs where James is a reviewer:

    zapier-mcp_gitlab_api_request_beta({
      instructions: "Get all open merge requests where I am a reviewer",
      method: "GET",
      url: "https://gitlab.com/api/v4/merge_requests?state=opened&reviewer_username=james.baldwin.z&scope=all"
    })
    

    3. For Each of My MRs, Gather Approval Status and Discussions

    Fetch approval status and discussions in parallel for all of James's MRs:

    zapier-mcp_gitlab_api_request_beta({
      instructions: "Get approval status for MR [iid] in project [project_id]",
      method: "GET",
      url: "https://gitlab.com/api/v4/projects/[project_id]/merge_requests/[iid]/approvals"
    })
    
    zapier-mcp_gitlab_api_request_beta({
      instructions: "Get discussions for MR [iid] in project [project_id]",
      method: "GET",
      url: "https://gitlab.com/api/v4/projects/[project_id]/merge_requests/[iid]/discussions"
    })
    

    4. Analyze Discussions for Feedback

    For each of James's MRs, analyze the discussions to determine:

    1. Unresolved threads count - threads where resolvable === true && resolved === false
    2. Recent feedback - look for notes from other users (not James) in the last 24-48 hours
    3. Feedback summary - extract key points from recent comments

    When summarizing feedback:

    • If there are 1-2 short comments, include the actual feedback text
    • If there are many comments or long discussions, summarize as "X unresolved threads to address"
    • Always attribute feedback to the reviewer (e.g., "Lucas asked about...")
    • Focus on actionable items and questions

    5. Generate Report

    Use the indented hierarchy format below. Write like an AI assistant giving a morning briefing - natural language, not terse keywords.

    Output Rules

    1. Indented hierarchy, not tables - Tables don't render well in the terminal
    2. Natural language - Write "rebase with main" not "rebase". Write "From Lucas, opened 9 days ago" not "Lucas, 9d"
    3. Include the repo - Show which repo each MR is in (e.g., mcp or ai-command-center)
    4. Bold the MR titles - Use **[TICKET] title (!XXX)** format
    5. Truncate titles - If MR title is long, shorten it but keep the ticket ID
    6. Skip most labels - Only include labels that convey review urgency (like "review-in-depth")
    7. No branches - James knows his branches
    8. Relative time - "opened 9 days ago" not "2025-12-22"
    9. Stacked MRs - Note when MRs are stacked/dependent so James knows review order
    10. Links at the bottom - Keep the main report clean, put all URLs in a Links section at the end
    11. Summary line - End with a count of MRs waiting on action and MRs in review queue
    12. Greeting - Start with "Good morning, James" and the date
    13. Show reviewer feedback - For James's MRs with new comments or unresolved threads:
      • Show unresolved thread count in Status line
      • Add a "Feedback:" line with summary of what reviewers said
      • If feedback is short (1-2 sentences), quote it directly
      • If feedback is long or there are many threads, summarize (e.g., "3 unresolved threads - Lucas asked about error handling, Nate suggested refactoring")
      • Attribute feedback to the reviewer who left it

    Status Determination Logic

    For each MR, determine status by checking:

    1. Has Conflicts: has_conflicts === true or detailed_merge_status === "conflict" -> "has conflicts"
    2. Draft: draft === true -> "draft"
    3. Unresolved Discussions: Count threads where resolvable === true && resolved === false -> "X unresolved threads"
    4. Not Approved: Check approvals endpoint -> "X/Y approvals"
    5. Ready to Merge: detailed_merge_status === "mergeable" AND no unresolved threads -> "ready to merge"

    IMPORTANT: An MR is NOT ready to merge if it has unresolved discussions, even if it has all required approvals.

    Important Notes

    • For MRs to review, exclude any authored by James himself
    • Group stacked MRs together and note the dependency chain
    • If an MR is blocked by another MR, note that in the action
    • When an MR is fully approved but has conflicts, the action is "rebase with main, then ready to merge"
    • When an MR has unresolved discussions, it is NOT ready to merge even if fully approved
    • Only fetch discussions for James's MRs (not the review queue) to minimize API calls
    • When summarizing feedback, focus on questions and actionable items, skip "looks good" or approval-only comments
    • System notes (like "added X commits") are not feedback - filter these out

    Example Output

    Good morning, James. Here's your MR status for Monday, January 5th.
    
    ## Your MRs
    
    **[AGP-1028] oxfmt (!229)** in `mcp`
      Status: has conflicts, 2/2 approved
      Action: rebase with main, then ready to merge
    
    **[AGP-760] entitlements api (!225)** in `mcp`
      Status: 1/2 approvals, 2 unresolved threads
      Feedback: Lucas asked about the error handling in the feature flag check; Nate suggested adding a test for the edge case
      Action: address feedback, get second approval
    
    **[AGP-1027] oxlint (!223)** in `mcp`
      Status: has conflicts, 0/2 approvals
      Action: rebase with main, request reviews
    
    **[AGP-966] params fix (!4887)** in `ai-command-center`
      Status: 1/1 approved, 1 unresolved thread
      Feedback: Lucas asked "should we also handle the case where resolvedParams is empty?"
      Action: address feedback, then ready to merge
    
    ## To Review
    
    **[AGP-973] redirect fix (!4922)** in `ai-command-center`
      From Lucas, opened 9 days ago
    
    **[AGP-1031] MCP self-serve (!4913)** in `ai-command-center`
      From Dylan, opened 17 days ago
      Note: stacked on !4906, review that first
    
    **[AGP-1003] agents self-serve (!4906)** in `ai-command-center`
      From Dylan, opened 17 days ago
    
    **[AGP-953] hashedSecret verify (!224)** in `mcp`
      From Nate, opened 18 days ago
      Note: blocked by !4894, can't merge until that lands
    
    **[AGP-1019] backfill hashed (!4894)** in `ai-command-center`
      From Nate, opened 18 days ago
      Note: stacked on !4890, review that first
    
    **[AGP-952] longer secrets (!4890)** in `ai-command-center`
      From Nate, opened 19 days ago
      Label: review-in-depth
    
    ## Priority Actions
    
    1. Rebase your 3 MCP repo MRs - all have conflicts with main
    2. Review Nate's secret hashing stack starting at !4890, then !4894, then !224
    3. Review Dylan's self-serve stack starting at !4906, then !4913
    
    You have 4 MRs waiting on action and 6 MRs in your review queue.
    
    ---
    
    **Links**
    
    Your MRs:
    - !229: https://gitlab.com/zapier/team-agents-platform/mcp/-/merge_requests/229
    - !225: https://gitlab.com/zapier/team-agents-platform/mcp/-/merge_requests/225
    - !223: https://gitlab.com/zapier/team-agents-platform/mcp/-/merge_requests/223
    - !4887: https://gitlab.com/zapier/zapai/ai-command-center/-/merge_requests/4887
    
    To Review:
    - !4922: https://gitlab.com/zapier/zapai/ai-command-center/-/merge_requests/4922
    - !4913: https://gitlab.com/zapier/zapai/ai-command-center/-/merge_requests/4913
    - !4906: https://gitlab.com/zapier/zapai/ai-command-center/-/merge_requests/4906
    - !224: https://gitlab.com/zapier/team-agents-platform/mcp/-/merge_requests/224
    - !4894: https://gitlab.com/zapier/zapai/ai-command-center/-/merge_requests/4894
    - !4890: https://gitlab.com/zapier/zapai/ai-command-center/-/merge_requests/4890
    

    Future Consideration

    GitLab CLI (glab) may be faster than Zapier MCP for fetching data. Worth exploring if report generation feels slow.

    Recommended Servers
    AurelianFlo
    AurelianFlo
    Gemini
    Gemini
    Repository
    jwbaldwin/dotfiles
    Files