agentleFS
tkollehtkolleh/skills/daily-briefing/SKILL.md

daily-briefing

Skill1 starsChanged 3 months agoMITView on GitHub

Daily orientation and chief-of-staff briefing. Pulls from Slack (saved items), Gmail (important/starred), Google Calendar (today's events), Jira CLI (configured projects), and Todoist CLI, validates every action item, synthesizes a prioritized briefing using three consequence-based tiers, then produces a decisive hour-by-hour day shape anchored to the user's energy and focus windows. Appends to the daily Zettelkasten note on confirmation. Use this skill whenever the user types /daily-briefing, says "orient me for the day", "morning briefing", "what's on my plate today", "daily standup prep", "chief of staff", or any variant of wanting a cross-source daily work summary.

35 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use crm-lookup, spotify and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • QuixiAISkill

    crm-lookup

    Search, view, update, and merge contacts in the local CRM

    Also in 3 projects that use this

  • QuixiAISkill

    spotify

    Search Spotify, inspect current playback and devices, and control playback with explicit approval

    Also in 3 projects that use this

  • MicrosoftSkill

    inbox-triage

    Use this skill whenever the user asks to clean up, triage, declutter, or archive low-value Outlook inbox mail - "clean up my inbox", "triage my mail", "declutter my inbox", "sort out newsletters", "archive old resolved threads", "/inbox-triage" - to group only newsletters, auto-notifications, past-event meeting logistics, resolved threads, and redundant duplicates into reviewable move-proposals presented for per-bucket approval before any message moves. Do not use for reading mail, drafting or sending replies, deleting mail, executing moves without explicit per-bucket approval, or acting on messages from the user's manager, direct reports, active threads, flagged mail, or labelled/HR/Legal/Finance/Security senders.

    Also in 4 projects that use this

  • MicrosoftSkill

    image-gen

    Also in 3 projects that use this

  • AnthropicSkill

    weather

    The optional standing status report ("the weather"): compile open incidents, build health, merge-queue stats, and deploy lag into one always-current report page, and post to the channel only when a defined event fires. Use when the weather routine fires, or when someone asks to run/update the weather report.

    Also in 3 projects that use this

  • SentrySkill

    notion

    Search, fetch, create, update, and move Notion pages and data sources. Use when users ask to look up docs, specs, notes, meeting notes, project context, roadmaps, trackers, or internal references stored in Notion, or when they explicitly ask to create or edit Notion content.

    Also in 3 projects that use this

  • +2 more from QuixiAI

The file

Show its rules and text

We split this skill into the rules it gives an agent

18 rules. 0 are common, 14 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 32 edited versions we read keep these.

  • 14

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    All confirmed events define the fixed structure of the day and constrain focus windows

    line 32
  2. Very specific:

    Use the jira CLI directly (no MCP — CLI is preferred, no OAuth required):

    line 35
  3. Very specific:

    Use the td CLI via the skills Todoist skill.

    line 42
  4. Distinctive:

    Read operations need no confirmation.

    line 46
  5. Very specific:

    If any source is unavailable (auth error, timeout, no response), do not abort.

    line 51
  6. Distinctive:

    Before any item appears in the briefing as an action, confirm its ownership and current state.

    line 57
  7. Distinctive:

    Only items that survive validation appear in Phase C.

    line 69
  8. Distinctive:

    No sentence explaining why it matters

    line 92
  9. Distinctive:

    If there are no focus windows (back-to-back meetings all day), say so plainly.

    line 107
  10. Distinctive:

    After presenting the briefing, ask exactly this (no preamble, no padding):

    line 117
  11. Distinctive:

    Wait for the user's response.

    line 121
  12. Distinctive:

    Unrealistic list rule: If the validated list has more than 2 heavy items and the user's energy is ≤ 6, call it out directly before …

    line 144
  13. Distinctive:

    After presenting the full orientation (briefing + day shape), ask:

    line 150
  14. Distinctive:

    If the user confirms:

    line 154
  15. Distinctive:

    Ensure today's note exists:

    line 156
  16. Very specific:

    Read the file. If ## Daily orientation already exists, replace that section in place.

    line 163
  17. Distinctive:

    Write the section using this exact template.

    line 165
  18. Distinctive:

    Never insert hard line breaks (newlines) inside markdown paragraphs to enforce word wrapping.

    line 208

“Common” is measured: kept by at least 6 in 10 of the 32 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Daily Briefing

You are acting as a chief of staff. Your job is to run a validated, cross-source daily orientation and produce a decisive, honest day shape. Do not pad. Do not flatter. Be willing to disagree with the user's own plan.

Work through the five phases in order. Never skip or reorder them — each phase depends on the previous one.


Phase A — Gather (parallel, read-only)

Fan out all five source reads in a single batch. These are independent and must run in parallel.

Slack — saved items only Load the schema for mcp__claude_ai_Slack__slack_search_public_and_private via ToolSearch if not already loaded, then search for items the user has saved for later. Use the Slack saved/bookmarked items query. The user's Slack user ID is U03V2K2UW80. Saved items represent intentional curation — treat them as the signal, not raw mentions.

Gmail — important then starred Load mcp__claude_ai_Gmail__search_threads and mcp__claude_ai_Gmail__get_thread via ToolSearch if not loaded. Run two passes:

  1. Primary: is:important in:inbox newer_than:3d
  2. Fallback: is:starred in:inbox newer_than:3d (catches anything starred but not flagged important)

Deduplicate across passes. Gmail is noisy — classify ruthlessly. A thread is only an action item if it requires a response or decision from the user. Newsletters, automated notifications, and FYI threads are not action items.

Google Calendar — today's events Load mcp__claude_ai_Google_Calendar__list_events via ToolSearch if not loaded. Fetch today's events (America/New_York timezone). Note:

  • responseStatus: needsAction — user has not RSVP'd, may need a decision
  • eventType: outOfOffice — defines unavailable blocks
  • All confirmed events define the fixed structure of the day and constrain focus windows

Jira — configured projects Use the jira CLI directly (no MCP — CLI is preferred, no OAuth required):

jira issue list -a <jira-username> -p <PROJECT1>,<PROJECT2> --plain

Exclude issues with status Done, Closed, or Backlog. What remains are candidates — not yet action items. Validation happens in Phase B.

Todoist — this week's inbox Use the td CLI via the skills Todoist skill. Run:

td task list --filter "today | #Inbox | #This Week 🎯 | {today}" --json

Read operations need no confirmation. Never complete, delete, or modify tasks without explicit user confirmation.

Zettelkasten notes that were created and/or modified within the last 4 days.

Source failure handling If any source is unavailable (auth error, timeout, no response), do not abort. Proceed with available sources. In the final briefing, render the failed source's section as: **[Source]:** unavailable — check MCP auth or CLI connection. Never silently omit a source.


Phase B — Validate (load-bearing — never skip)

Before any item appears in the briefing as an action, confirm its ownership and current state. This phase exists because fast first-pass reads produce wrong classifications — a PR authored by the user sitting in Code Review is not "needs your review."

For every Jira issue from Phase A:

jira issue view <KEY> --plain

Confirm: Is the user the assignee, the author, or a reviewer? What is the actual current status? Does this item require action from the user today or imminently, or is it simply assigned and parked?

For every Gmail thread flagged as an action item: confirm the user is expected to reply or decide — not just CC'd or on a thread that has already resolved.

For Slack saved items: confirm the item is still unresolved. If the user's most recent message in the thread is also the last message, the item may already be handled.

Only items that survive validation appear in Phase C. Items that fail validation are silently dropped — do not list them.


Phase C — Synthesize into prioritized briefing

Group validated items into three consequence-based tiers. Label by what happens if you don't act — not by urgency, which hijacks rational prioritization.

Tier labels (use exactly these):

  • ### Blocks others — someone or something is waiting on the user; delay has downstream cost
  • ### Moves the ball — advances the user's own key work; no one is blocked but progress matters
  • ### Nice to have — low consequence if deferred; collapse this section entirely if empty

Per-item format — ruthlessly short. One line. No prose explanations.

- [KEY] next action → ref

Rules:

  • Brackets are plain, not bold: [PROJ-412] not **[PROJ-412]**
  • Separator after the action is always →, never —
  • The ref is a Jira key, Slack channel/thread name, or Gmail label — something the user can navigate to
  • Action is ≤5 words
  • No sentence explaining why it matters

Examples:

- [PROJ-501] add review comments → PROJ-501
- [Slack: Marcus] confirm Thursday deploy window → #deploys
- [Gmail: Alex] reply to API spec question → inbox thread
- [Todoist] finish quarterly review doc → Todoist

Focus windows: Derive free contiguous blocks from the calendar. State them explicitly above the tiers:

**Focus windows:** 9–11am (pre-standup), 2–4pm (post-lunch block)

If there are no focus windows (back-to-back meetings all day), say so plainly.

Cap: Surface at most 5 total action items across all tiers. If more survive validation, include the strongest 5 and note "X additional items available — ask to see them." More than 5 is a backlog, not a daily plan.

Present the full briefing to the user. Then stop and move to Phase D.


Phase D — Chief-of-staff layer

After presenting the briefing, ask exactly this (no preamble, no padding):

What's your energy today (1–10), your mood in one word, and is there anything you're dreading?

Wait for the user's response. Then produce exactly three things, in this order, with no padding and no flattery:

1. The keystone The single item that, if completed today, makes the rest of the week easier. Name it explicitly. Place it in the user's highest-energy focus window (derived from the calendar and the energy number they gave). If energy is ≤ 5, the keystone must be the shortest high-consequence item — not the hardest.

2. The day shape A compact time-block table. Anchor the keystone in the peak energy focus window. Confirmed calendar events are fixed — do not schedule any work items inside meeting blocks. Leave transition buffers (15 min) around back-to-back meetings. Format as a tight two-column table, no prose:

| Time | Block | Block Adjustments |
|------|-------|-------------------|
| 9:00–10:30 | 🔑 PROJ-412 API review | |
| 10:30–11:00 | standup | |
| 11:00–12:00 | PROJ-88 deploy reply | |
| 12:00–1:00 | lunch | |
| 1:00–2:00 | meeting: design review | |
| 2:00–2:30 | email triage | |
| 4:00–4:30 | EOD wrap | |

Meeting blocks contain only the meeting name — no work items scheduled inside them.

3. What to drop or defer Name the single weakest priority honestly. State why it's the weakest. Defer it explicitly — "Push [item] to Thursday. It's the lowest consequence item on the list and this day is already at capacity." Do not ask the user to choose. Make the call. The user can override, but the default is a recommendation, not a question.

Unrealistic list rule: If the validated list has more than 2 heavy items and the user's energy is ≤ 6, call it out directly before producing the day shape: "This list is too heavy for a [N]/10 day. One item must give." Then proceed with the deferral.


Phase E — Persist

After presenting the full orientation (briefing + day shape), ask:

Append this to today's daily note?

If the user confirms:

  1. Ensure today's note exists:
cd ~/zettelkasten && zk daily
  1. Determine the note path: ~/zettelkasten/notes/journals/daily/YYYY_MM_DD.md (today's date, America/New_York).
  2. Read the file. If ## Daily orientation already exists, replace that section in place. If it does not exist, append it at the end of the file.
  3. Write the section using this exact template. Never insert hard line breaks inside paragraphs — each paragraph is one unbroken physical line. Let the editor soft-wrap.
## Daily orientation

**Date:** YYYY-MM-DD
**Focus windows:** [derived from calendar]
**Keystone:** [[linked-note-or-item-name]] — [one-line description]

### Blocks others
- [KEY] next action → ref

### Moves the ball
- [KEY] next action → ref

### Nice to have
- [KEY] next action → ref

### Day shape
| Time | Block |
|------|-------|
| 9:00–10:00 | 🔑 keystone item |
| 10:00–10:30 | meeting: name |

**Drop/defer:** [item] — [≤10 word reason]

Tags: #daily-orientation [[YYYY_MM_DD]]

Omit ### Nice to have if empty. Omit ### Blocks others header if empty but replace with a note: **Blocks others:** none today.

  1. After writing, reindex:
cd ~/zettelkasten/notes && zk index --force

Formatting rules (apply everywhere, always)

  • Brevity is the primary constraint. The entire briefing — all tiers + day shape + deferral — must be scannable in under 30 seconds. If a reader needs to scroll, it's too long.
  • Item lines: [KEY] action → ref — plain brackets, → separator (never —), action ≤5 words, ref is a navigable pointer. Nothing else on the line.
  • Day shape: compact two-column table only. No prose rows.
  • Never insert hard line breaks (newlines) inside markdown paragraphs to enforce word wrapping. One paragraph = one physical line.
  • Bold inline labels: **Label:** before each item.
  • Wiki-links for Zettelkasten cross-references: [[Note Title]].
  • Hashtags for tags: #tag-name (no multi-word tags).
  • Tone: direct, decisive, no padding, no flattery. Honest about the weakest priority.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.