
morning-report
by jwbaldwin
My dotfiles, tracked in a bare git repository. No magic, no ceremony.
SKILL.md
name: morning-report description: Generate a morning MR status report. Use when the user says "morning report", "mr status", "what needs my attention", or similar morning standup queries. license: MIT allowed-tools:
- read
- write metadata: version: "1.3"
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:
- Unresolved threads count - threads where
resolvable === true && resolved === false - Recent feedback - look for notes from other users (not James) in the last 24-48 hours
- 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
- Indented hierarchy, not tables - Tables don't render well in the terminal
- Natural language - Write "rebase with main" not "rebase". Write "From Lucas, opened 9 days ago" not "Lucas, 9d"
- Include the repo - Show which repo each MR is in (e.g.,
mcporai-command-center) - Bold the MR titles - Use
**[TICKET] title (!XXX)**format - Truncate titles - If MR title is long, shorten it but keep the ticket ID
- Skip most labels - Only include labels that convey review urgency (like "review-in-depth")
- No branches - James knows his branches
- Relative time - "opened 9 days ago" not "2025-12-22"
- Stacked MRs - Note when MRs are stacked/dependent so James knows review order
- Links at the bottom - Keep the main report clean, put all URLs in a Links section at the end
- Summary line - End with a count of MRs waiting on action and MRs in review queue
- Greeting - Start with "Good morning, James" and the date
- 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:
- Has Conflicts:
has_conflicts === trueordetailed_merge_status === "conflict"-> "has conflicts" - Draft:
draft === true-> "draft" - Unresolved Discussions: Count threads where
resolvable === true && resolved === false-> "X unresolved threads" - Not Approved: Check approvals endpoint -> "X/Y approvals"
- 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.
スコア
総合スコア
リポジトリの品質指標に基づく評価
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
レビュー
レビュー機能は近日公開予定です