Briefing (Calendar Agenda, Weather, Pending To-Dos)
Verified@lstpsche
npx machina-cli add skill @lstpsche/briefing --openclawBriefing
Compose a daily briefing using companion skills. Each source is optional — skip it if the skill is not available.
Sources
Three companion skills. Skip any that are not in the available skills list:
- Calendar —
gcalcli-calendar - Todos —
todo-management - Weather —
openmeteo-sh-weather-simple(requires a default city/country in session context)
If none of the three are available — tell the user you have nothing to build a briefing from and stop. Do not fabricate a briefing.
Briefing day
Decide whether the user's day is effectively over based on current time and today's remaining calendar events.
- Day still active -> briefing covers today.
- Day winding down -> briefing covers tomorrow.
Todos are not date-bound — always show active items.
Gather
For each available source, read its SKILL.md before calling any commands.
Calendar
- Read
gcalcli-calendarSKILL.md. - Fetch the briefing day's agenda.
- If no events — note it.
Todos
- Read
todo-managementSKILL.md. - List active/pending items.
- If none — note it.
Weather
- Get the briefing day's conditions and forecast. Use the user's default city/country from session context.
- Commands (always use
--llm):- Today:
openmeteo weather --current --forecast-days=1 --city="{city}" --llm - Tomorrow:
openmeteo weather --current --forecast-days=2 --forecast-since=2 --city="{city}" --llm
- Today:
On errors
If a command fails, skip that section and mention the failure briefly. Do not retry more than once. Never fabricate data.
Compose
Build a single message. Include only sections whose skill was available. If a skill returned no data, still include the section with a one-line note.
Structure
- Title line — compact: date, day-of-week, time. E.g.
Брифинг 14.02 (пт, 8:12). If briefing day is tomorrow, say so. - Weather — 1–2 lines: temperature, sky, anything notable.
- Calendar — briefing day's events, chronologically. Format:
HH:MM — Title. All-day events first. If empty: one line noting no events. - Upcoming — next 2-3 days' notable events (if any), one line per day. Omit if nothing notable.
- Todos — active items, briefly. Higher priority first if supported. If empty: one line noting no todos.
Example output
Follow this format exactly in the user's language:
Briefing 14.02 (Sat, 8:12)
**🌤 Weather (London, UK)**
+2°C, cloudy, wind 11 km/h. Daytime to -3°C, light rain.
**📅 Calendar**
09:00 — Standup
14:00 — Sprint review
18:30 — Driving school
**🔜 Upcoming**
• 15.02: Free day.
• 16.02: Daily standup 12:00, Driving school 18:30.
**✅ Todos**
• [work] Debug feature X.
• [personal] Book a doctor's appointment.
Note: bold header → content immediately on next line (zero blank lines); one blank line between sections; no trailing question or CTA.
Formatting rules (strict)
These rules are critical for readability on mobile. Follow them exactly.
- Between sections: exactly one empty line.
- Between a section header and its content: zero empty lines. Content starts on the very next line.
- Right:
**Calendar**
09:00 — Standup
14:00 — Review
- Wrong:
**Calendar**
09:00 — Standup
14:00 — Review
- When briefing day is tomorrow, calendar and weather headers should reflect that.
- Do not shorten the user's city name.
- Match the language of the user's request.
- Simple formatting — optimize for mobile chat. Bold section headers, short lines.
- Concise, skimmable, no filler.
Strict prohibitions
- No preamble — dive straight in.
- No call to action or question at the end. The briefing ends after the last section. No "What's next?", "What's first?", or similar.
- Never invent events, todos, or weather data. Only report what tools returned.
Overview
Aggregates today's calendar events, active todos, and local weather into a concise summary. It sources data from gcalcli-calendar, todo-management, and openmeteo-sh-weather-simple to provide a skimmable planning snapshot. If none of the sources are available, the briefing informs you and stops, avoiding fabrication.
How This Skill Works
For each available source, it reads the corresponding SKILL.md before fetching data. It collects the briefing day’s calendar events, lists active/pending todos, and retrieves current and forecast weather using the session’s default city. It then builds a single formatted message with a title line, weather, calendar, upcoming highlights, and todos.
When to Use It
- Starting the day with a quick, consolidated view of calendar events and tasks.
- Planning a commute or outdoor activity with local weather for the day.
- Deciding whether to cover today or tomorrow based on remaining events.
- Reviewing active items that aren’t tied to a specific date.
- When you want a concise briefing and graceful handling if a source is unavailable.
Quick Start
- Step 1: Confirm which sources are available (Calendar, Todos, Weather) and ensure a default city is set in session.
- Step 2: Run the briefing to generate the concise summary for today or tomorrow based on remaining events.
- Step 3: Review the generated briefing and save or share; note any missing sections if a source failed.
Best Practices
- Keep your calendar and tasks up to date to ensure accurate briefings.
- Set a default city for weather in the session context.
- Prioritize high-impact todos and surface only the top items.
- Keep the briefing concise and mobile-friendly; limit note length per section.
- If a source fails, note the failure briefly and proceed without retrying.
Example Use Cases
- 08:12 — Weather: 22°C sunny. Calendar: 09:00 Standup, 13:30 Client call. Todos: [work] Finish doc.
- 07:58 — Weather: 18°C cloudy. Calendar: 10:00 Design review. Todos: [work] Update backlog; [personal] Buy groceries.
- 12:05 — Tomorrow: 09:00 Planning meeting; 12:00 Lunch with team. Weather: 15°C, light rain.
- 08:45 — Weather: 16°C partly cloudy. Calendar: 11:00 Marketing sync; 16:30 Demo prep. Todos: [work] Prepare slides; [personal] Call dentist.
- 09:20 — Weather: 20°C sunny. Calendar: 10:00 Standup; 11:30 Code review. Todos: [work] Fix bug; [personal] Schedule haircut.