agentsclimarketplace

Daily brief

Skill daddia/my-assistant/skills/daily-brief

A short, scannable morning briefing — today's calendar, priority unread, follow-ups going cold, and what needs attention. Activate when the user says "/assistant:brief", "morning briefing", "what's my day look like", or on a morning schedule.From its SKILL.md

Install
npx -y skills add daddia/my-assistant --skill daily-brief

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

7.6 KB, as published. Nobody here has run it

Daily brief

One screen the user reads with their coffee that tells them exactly what today needs. This is the anchor of the scheduled-task setup — most users run it weekday mornings. Catalog entry: job_id: morning-briefing in scheduled/schedules.yaml.

Read the profile first

Load working hours from {assistantPath}/policies/calendar.policy.md, VIP tiers from {assistantPath}/policies/email.policy.md, and voice from the profile (the brief is written to the user, in their preferred style — tight, scannable, no filler).

Schedule health check (interactive runs only)

Before assembling the brief on an interactive run (/assistant:brief), check for a missed scheduled morning briefing. Do not run this block when the current session is the scheduled run recovering the job.

  1. Load {working-folder}/scheduled/morning-briefing.yaml if present. If missing, treat as "never scheduled" — suggest /assistant:schedules once, then proceed. If corrupt, note "health ledger unreadable — re-run /assistant:schedules" and proceed.
  2. Read the morning-briefing entry. Skip miss detection when surface is managed or cloud-code — local miss logic does not apply.
  3. On surface: local, on a weekday, when local time is past the expected run window (cron fire time + 90 minutes; default 08:00 + 90m = 09:30), detect a miss when either:
    • brief-{today}.md is absent in the working folder, or
    • last_run_at is stale (before today's expected window).
  4. On miss: increment miss_count_7d in the job file, persist it, then append one health block after normal brief output (see below). Do not auto-run a catch-up brief — the user may be intentionally running early or late.
  5. When miss_count_7d >= 2 for this critical job on local, add the escalation line to the health block.

Expected run window: cron from catalog (0 8 * * 1-5) + 90 minutes. Use profile working_hours.timezone when set; otherwise the user's stated local timezone.

Schedule health block (append when miss detected)

### Schedule health
- **Missed:** Morning briefing (expected ~08:00 weekdays on *local* surface)
- **Last success:** YYYY-MM-DD — `brief-YYYY-MM-DD.md`
- **Suggestion:** If this happens more than once a week, move this job to the managed-agent cookbook (`managed-agents/morning-briefing/agent.yaml`) or a Claude Code cloud schedule. Run `/assistant:schedules` to walk the decision tree.

When miss_count_7d >= 2, add:

This job has missed twice in the last seven days on a local schedule. Consider moving only this job to managed-agent or cloud-code — not your whole setup.

Max one health block per chat turn.

What it assembles

Pull from whatever is connected; degrade gracefully when something's missing.

  1. Today's calendar — meetings with times and attendees; flag anything external or VIP; note gaps and any conflict/no-buffer issues. When back-to-back meetings or missing buffers are detected, append one line: "Run /assistant:calendar protect to draft buffer blocks." When habits are configured in calendar.policy.md and a pasted agenda is already loaded for the calendar section, optionally footnote: habit: N gaps this week (cheap scan only — no extra connector round-trip). Optionally footnote: calendar: N buffer gaps. Hand scheduling detail to calendar-scheduling protect mode when the user confirms — default is offer, not silent inline scan (keeps brief under ~400 words).
  2. Priority unread — prefer today's sweep artefact over a live re-triage (see Sweep handoff below). Fall back to ~~email/~~chat top items or pasted unread when no recent sweep exists. VIP-first; only what matters before noon.
  3. Follow-ups going cold — from follow-up-tracking: what's silent past threshold.
  4. Due tasks — from TASKS.md: due or overdue today (via task-management).
  5. Needs attention before noon — the 1–3 things that will hurt if missed. Merge VIP/needs-reply lines from the sweep artefact when present.

Sweep handoff

Before scanning live mail for priority unread:

  1. Look for sweep-YYYY-MM-DD-{slot}.md files in the working folder for today's date (any slot: 0800, 1200, 1600).
  2. Use the most recent sweep file if its timestamp is within the last 12 hours (tolerates the 08:00 sweep/brief race — brief may run before sweep finishes).
  3. Pull VIP and needs-reply lines from that file into Before noon / Priority unread — do not re-run full inbox triage when a fresh sweep exists.
  4. If no sweep file within 12h, note one line: No sweep artefact since {last sweep date or "today"} — using live unread. Then use ~~email or ask for paste.

Sweep files are written by scheduled /assistant:inbox triage (08:00) and /assistant:inbox sweep (12:00/16:00) per skills/inbox-triage/SKILL.md. The 08:00 triage run writes the same sweep-YYYY-MM-DD-0800.md artefact shape the brief consumes.

Ledger out-of-sync fallback

When loading sweep context or checking inbox schedule health:

  1. If {working-folder}/scheduled/inbox-triage-am.yaml or inbox-sweep.yaml has last_run_at: null (or missing) but a matching sweep-YYYY-MM-DD-{slot}.md exists for today, treat the artefact file's modification time as the implied last run.
  2. Flag ledger out of sync in the brief or health output — do not report "no prior sweep on record."
  3. Suggest re-running the ledger command from skills/inbox-triage/SKILL.md or the next scheduled job to repair the heartbeat.

Output shape

Keep it under ~400 words. Lead with the day's shape.

Morning brief — Tue 8 Jul

Today: 3 meetings, first at 10:00.
  10:00 Acme quarterly (Sam Lee, external) — deck due, decision on Q3 scope
  14:00 1:1 Dana
  16:00 Focus block (protected)

Before noon
  • Reply to Priya re board deck (VIP) — draft ready
  • Send Sam the revised deck ahead of 10:00

Going cold
  • Acme contract — silent 4 days, nudge drafted

Due today
  • Submit expense report

Quiet otherwise. Have a good one.

Scheduled use

When run as a scheduled task, save output to brief-YYYY-MM-DD.md in the working folder so there's a history. See skills/schedule-setup/SKILL.md for the packaged 8am prompt.

Heartbeat: at end of a scheduled run, update the ledger via bash (required):

python3 scripts/update_ledger.py \
  --job-id morning-briefing \
  --status {success|partial|failed} \
  --artifact brief-{today}.md \
  --working-folder {working-folder}

Before ending, confirm last_run_at in scheduled/morning-briefing.yaml matches this run.

Standalone

No connectors? Ask the user to paste their calendar and top unread, or brief from TASKS.md and memory alone. Still useful.

Rules

  • Read-only and draft-only: the brief surfaces and drafts, never sends or books.
  • Short beats complete. If it doesn't change what the user does today, leave it out.

Approval frame

Follow rules/approval-frame.md when surfacing items needing attention — especially cold threads and draft-ready VIP items.

Use all four sections when the brief includes reviewable work. When a draft-ready item has a queue id, you may footnote the id in brief prose (e.g. "draft ready — rq-2026-07-08-reply-priya-deck").

Do not write queue items for read-only calendar or FYI sections unless a separate reviewable artefact exists.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.