Briefing
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 — INLINECODE0
- Todos — INLINECODE1
- 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
- 1. Read
gcalcli-calendar SKILL.md. - Fetch the briefing day's agenda.
- If no events — note it.
Todos
- 1. Read
todo-management SKILL.md. - List active/pending items.
- If none — note it.
Weather
- 1. 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: INLINECODE8
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
- 1. 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
**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.
Briefing
使用配套技能撰写每日简报。每个来源均为可选——若技能不可用则跳过。
来源
三个配套技能。跳过不在可用技能列表中的任何技能:
- - 日历 — gcalcli-calendar
- 待办事项 — todo-management
- 天气 — openmeteo-sh-weather-simple(需要在会话上下文中设置默认城市/国家)
如果三个技能均不可用——告知用户无法构建简报并停止。不得编造简报内容。
简报日期
根据当前时间和今日剩余日历事件判断用户的一天是否基本结束。
- - 当天仍在进行中 -> 简报覆盖今天。
- 当天接近尾声 -> 简报覆盖明天。
待办事项不绑定日期——始终显示活跃项目。
收集
对于每个可用来源,在调用任何命令前先阅读其SKILL.md。
日历
- 1. 阅读gcalcli-calendar的SKILL.md。
- 获取简报日期的日程。
- 若无事件——注明。
待办事项
- 1. 阅读todo-management的SKILL.md。
- 列出活跃/待处理项目。
- 若无——注明。
天气
- 1. 获取简报日期的天气状况和预报。使用会话上下文中用户的默认城市/国家。
- 命令(始终使用--llm):
- 今天:openmeteo weather --current --forecast-days=1 --city={city} --llm
- 明天:openmeteo weather --current --forecast-days=2 --forecast-since=2 --city={city} --llm
错误处理
若命令执行失败,跳过该部分并简要提及失败原因。最多重试一次。绝不编造数据。
撰写
构建单条消息。仅包含技能可用的部分。若技能返回空数据,仍保留该部分并添加一行说明。
结构
- 1. 标题行——紧凑格式:日期、星期、时间。例如简报 14.02(周六,8:12)。若简报日期为明天,需注明。
- 天气——1-2行:温度、天空状况、任何值得注意的信息。
- 日历——简报日期的活动,按时间顺序排列。格式:HH:MM — 标题。全天事件排在前面。若为空:一行注明无事件。
- 即将到来——未来2-3天的显著事件(如有),每天一行。若无显著事件则省略。
- 待办事项——活跃项目,简要描述。若支持优先级排序,则高优先级在前。若为空:一行注明无待办事项。
示例输出
严格按以下格式以用户语言输出:
简报 14.02(周六,8:12)
🌤 天气(伦敦,英国)
+2°C,多云,风速11公里/小时。白天降至-3°C,有小雨。
📅 日历
09:00 — 站会
14:00 — 冲刺评审
18:30 — 驾校
🔜 即将到来
• 15.02:休息日。
• 16.02:每日站会12:00,驾校18:30。
✅ 待办事项
• [工作] 调试功能X。
• [个人] 预约医生。
注意:粗体标题 → 内容紧随下一行(零空行);各部分之间一个空行;末尾无提问或行动号召。
格式规则(严格)
以下规则对移动端可读性至关重要。请严格遵循。
- - 各部分之间:恰好一个空行。
- 部分标题与内容之间:零空行。内容从下一行直接开始。
- 正确:
日历
09:00 — 站会
14:00 — 评审
日历
09:00 — 站会
14:00 — 评审
- - 当简报日期为明天时,日历和天气标题应体现这一点。
- 不要缩短用户所在城市名称。
- 与用户请求的语言保持一致。
- 简洁格式——针对移动端聊天优化。粗体部分标题,短行。
- 简明扼要,便于浏览,无冗余内容。
严格禁止
- - 无开场白——直接进入正题。
- 末尾无行动号召或提问。简报在最后一部分结束后结束。不得出现接下来做什么?、先做什么?或类似表述。
- 绝不虚构事件、待办事项或天气数据。仅报告工具返回的内容。