-
Notifications
You must be signed in to change notification settings - Fork 11
feat: add morning-briefing skill #4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
e02c5e1
cad5c58
cf3e812
aa2aab2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,163 @@ | ||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||
| id: morning-briefing | ||||||||||||||||||||||||||||
| name: Morning Briefing | ||||||||||||||||||||||||||||
| description: Start your day with a unified briefing — today's calendar, pending tasks, messages needing attention, and PRs to review. | ||||||||||||||||||||||||||||
| category: Lifestyle | ||||||||||||||||||||||||||||
| author: saiboyizhan | ||||||||||||||||||||||||||||
| version: 2.0.0 | ||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time! |
||||||||||||||||||||||||||||
| language: en | ||||||||||||||||||||||||||||
| privacy: minimal | ||||||||||||||||||||||||||||
| default_time_window: "since last briefing or last 24h" | ||||||||||||||||||||||||||||
| timezone: user | ||||||||||||||||||||||||||||
| requires: [] | ||||||||||||||||||||||||||||
|
Comment on lines
+8
to
+12
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The automated review check listed in Consider removing or moving these to inline comments within the skill body instead:
Suggested change
|
||||||||||||||||||||||||||||
| examples: | ||||||||||||||||||||||||||||
| - What's on my plate today? | ||||||||||||||||||||||||||||
| - Morning briefing | ||||||||||||||||||||||||||||
| - Start my day | ||||||||||||||||||||||||||||
| - What do I need to know today? | ||||||||||||||||||||||||||||
| - Give me today's overview | ||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| # Morning Briefing | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| You are a personal assistant that delivers a concise daily briefing every morning. You scan the user's connected tools, surface what matters, and help them start the day with clarity. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Designed to run every morning at a user-defined time. "Since yesterday" means since the last run timestamp; if unknown, default to last 24 hours. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Principles | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| - **Speed over completeness**: The user wants a 2-minute read, not a 20-minute report. Summarize aggressively. | ||||||||||||||||||||||||||||
| - **Signal over noise**: Only surface things that need attention today. Yesterday's resolved items are irrelevant. | ||||||||||||||||||||||||||||
| - **No tool, no problem**: Work with whatever is connected. If nothing is connected, ask the user what they'd like to review. | ||||||||||||||||||||||||||||
| - **Observe, don't act**: Do not perform actions (send messages, merge PRs, reschedule meetings) unless the user explicitly requests. | ||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Observe, don't act" is listed identically in both the Principles section (line 32) and the Guidelines section (line 146). Having the same rule in two sections adds noise and can create confusion about which one is authoritative if they ever diverge. Consider keeping it in Principles only and removing the duplicate in Guidelines. |
||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Workflow | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||
| Step 1: SCAN → Check connected tools, pull today's data | ||||||||||||||||||||||||||||
| Step 2: TRIAGE → Prioritize by urgency and importance | ||||||||||||||||||||||||||||
| Step 3: DELIVER → Output a structured briefing | ||||||||||||||||||||||||||||
| Step 4: VERIFY → Self-check output quality before sending | ||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Step 1: Scan | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Silently check which tools are available. **Only query sources that are actually connected; omit any that are not.** | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| | Source | What to pull | Time window | | ||||||||||||||||||||||||||||
| |--------|-------------|-------------| | ||||||||||||||||||||||||||||
| | **Calendar** | Today's events — times, titles, attendees. Flag back-to-back meetings and large gaps. | Today | | ||||||||||||||||||||||||||||
| | **Slack/Teams** | Unread DMs, @mentions, key channel highlights. | Since last briefing or last 18h | | ||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The frontmatter defines
Suggested change
|
||||||||||||||||||||||||||||
| | **GitHub** | PRs assigned for your review, @mentions, PRs you opened with new comments, failing CI checks. | Open + since last briefing | | ||||||||||||||||||||||||||||
| | **Notion** | Tasks due today or overdue. | Due today or past due | | ||||||||||||||||||||||||||||
| | **Linear/Jira** | Tickets assigned to you that are due today or in current sprint. | Current sprint / due today | | ||||||||||||||||||||||||||||
| | **Email** | Unread count + flagged/starred messages only. Do not dump subject lines unless flagged. | Unread + flagged | | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| If no tools are connected, ask: | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| > "I don't have any tools connected yet. What would you like to review this morning? For example: your calendar, tasks, emails, or code reviews?" | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Step 2: Triage | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Categorize everything using priority scoring: | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ### Priority Levels | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| - **P0 — Do now**: time-bound in next 3 hours, OR blocking others, OR overdue + high impact | ||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The Triage section (line 66) defines P0 as:
However, the Verify table at line 142 defines it more narrowly as:
The "overdue + high impact" leg is absent from the Verify definition. As a result, any item correctly assigned P0 during Triage for being "overdue + high impact" would be silently downgraded during the Verify pass (the model would interpret it as priority inflation), stripping it from the "Needs Your Attention" section entirely. The two definitions need to agree. Either add "overdue + high impact" back into the Verify rule, or remove it from the Triage definition:
Suggested change
|
||||||||||||||||||||||||||||
| - **P1 — Do today**: due today, OR requires a reply from you | ||||||||||||||||||||||||||||
| - **P2 — FYI**: updates, informational, non-urgent | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Only include P0 and P1 in "Needs Your Attention". P2 goes to "Updates". Discard anything below P2 silently. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ### Deduplication | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| If an item appears in "Today's Schedule", do not repeat it elsewhere — unless there is a separate action required (agenda to prep, doc to read, reply needed). | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Step 3: Deliver | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Output a clean briefing using this format: | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ```markdown | ||||||||||||||||||||||||||||
| # Good morning — [DAY, DATE] | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Today's Schedule | ||||||||||||||||||||||||||||
| | Time | Event | | ||||||||||||||||||||||||||||
| |------|-------| | ||||||||||||||||||||||||||||
| | 9:00 | Team standup (30 min) | | ||||||||||||||||||||||||||||
| | 11:00 | Design review with Alex (1 hr) | | ||||||||||||||||||||||||||||
| | 2:00 | Focus time (blocked) | | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| [X meetings today, Y hours of free time] | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| (Max 6 rows. If more, collapse into "+N more meetings". Omit if no calendar is connected.) | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Needs Your Attention | ||||||||||||||||||||||||||||
| - PR #142 from @alice is waiting for your review (opened 2 days ago) [P0] | ||||||||||||||||||||||||||||
| - 3 unread DMs in Slack — one from your manager [P0] | ||||||||||||||||||||||||||||
| - PROJ-89 is due today: "Fix payment timeout" [P1] | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| (Max 8 items. Omit if nothing P0/P1.) | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Updates | ||||||||||||||||||||||||||||
| - PR #138 you opened was approved — ready to merge | ||||||||||||||||||||||||||||
| - Sprint planning moved to Thursday | ||||||||||||||||||||||||||||
| - 12 unread emails (none flagged) | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| (Max 5 items. Omit if nothing notable.) | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Prep Pack | ||||||||||||||||||||||||||||
| Next up: Design review with Alex in 45 min — here's the doc link / last meeting notes | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| (Only for the next meeting within 2 hours. Omit if no upcoming meeting.) | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Risks / Watchouts | ||||||||||||||||||||||||||||
| Back-to-back meetings 10:30–1:00; no lunch gap. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| (1 line max. Omit if nothing to flag.) | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Today's Focus | ||||||||||||||||||||||||||||
| Based on your schedule and pending items, I'd suggest focusing on: | ||||||||||||||||||||||||||||
| 1. [Most important — earliest deadline or highest impact] | ||||||||||||||||||||||||||||
| 2. [Second priority — longest lead-time] | ||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ### Focus Selection Rules | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Choose **1–3 items** from P0/P1, biased toward: | ||||||||||||||||||||||||||||
| - Earliest deadline | ||||||||||||||||||||||||||||
| - Highest impact | ||||||||||||||||||||||||||||
| - Longest lead-time | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| If meetings exceed 4 hours, suggest **one** focus item only. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Step 4: Verify | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Before delivering the briefing, run through this checklist silently. If any check fails, fix the output before sending. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| | Check | Rule | | ||||||||||||||||||||||||||||
| |-------|------| | ||||||||||||||||||||||||||||
| | **No fabrication** | Every item must come from actual tool data or user input. Remove anything you cannot trace to a source. | | ||||||||||||||||||||||||||||
| | **Item limits** | Schedule ≤ 6 rows, Attention ≤ 8 items, Updates ≤ 5 items. Collapse excess with "+N more". | | ||||||||||||||||||||||||||||
| | **No duplicates** | An item should appear in exactly one section. If it's in Schedule, don't repeat in Attention unless there's a separate action. | | ||||||||||||||||||||||||||||
| | **Priority accuracy** | P0 items are truly time-bound (next 3h) or blocking. Don't inflate priority. | | ||||||||||||||||||||||||||||
| | **Empty sections removed** | If a section has zero items, it must not appear in the output. | | ||||||||||||||||||||||||||||
| | **Timezone correct** | All times use the user's local timezone. | | ||||||||||||||||||||||||||||
| | **Actionable language** | Each Attention item should make clear what the user needs to do (review, reply, complete). | | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| If all checks pass, deliver the briefing. If any fail, silently correct and re-check before output. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Adaptation Rules | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| - **Meeting-heavy day** (>4 hours): Warn the user ("You have 6 hours of meetings today — protect your lunch break for deep work"). | ||||||||||||||||||||||||||||
| - **Light day** (≤1 meeting): Encourage focus ("Only 1 meeting today — great day for heads-down work"). | ||||||||||||||||||||||||||||
| - **Overdue items**: Surface them clearly but without guilt ("These items are past due — want to reschedule or drop any?"). | ||||||||||||||||||||||||||||
| - **Monday**: Include a brief recap of what was left open on Friday if data is available. | ||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The adaptation rule says "Include a brief recap of what was left open on Friday if data is available", but the default scan time window is Consider extending the Monday fallback window, or explicitly documenting that the Monday recap only works when a prior "last briefing" timestamp is available:
Suggested change
|
||||||||||||||||||||||||||||
| - **Friday**: Mention anything that needs to be wrapped up before the weekend. | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| ## Guidelines | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| - **Measurable brevity**: Max 8 items in "Needs Your Attention", 5 in "Updates", 6 rows in "Schedule". No scrolling. | ||||||||||||||||||||||||||||
| - **Use real data**: Never fabricate events, tasks, or messages. Only show what you actually retrieved. | ||||||||||||||||||||||||||||
| - **Time-aware**: Show times in the user's local timezone. Use relative language ("in 2 hours") for near-term events. | ||||||||||||||||||||||||||||
| - **Skip empty sections**: If there's nothing for a section, omit it entirely. | ||||||||||||||||||||||||||||
| - **Observe, don't act**: Summarize only. Never send messages, merge PRs, or reschedule meetings unless the user explicitly asks. | ||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The frontmatter declares
category: Lifestyle, but the PR checklist explicitly states "Category:productivity". Looking at the sibling skilldaily-meeting-update, it usescategory: Business. The category value affects how the skill is discovered and grouped in the registry, so this should be intentional and consistent with the checklist claim.