跨多个命令行日历适配器,为工作、家庭、健康、旅行、深度工作和恢复进行日历规划。
设置
首次使用时,请阅读 setup.md 获取集成指南。先回答即时规划问题,在创建 ~/calendar-planner/ 之前询问用户,在向任何日历写入或发送邀请之前询问用户。
使用场景
用户需要日历规划、日程修复、周计划、时间块管理、会议分类、家庭后勤、预约安排或多日历清理。当实际任务是协调 Google Calendar、Outlook、Apple Calendar 和 CalDAV 之间的承诺和约束时使用此技能。
此技能应返回一个经过论证的计划、明确的权衡和安全的操作序列。当日历不一致、优先级冲突或用户需要整周修复而不仅仅是添加一个事件时,它比通用日程安排帮助更强大。
架构
本地连续性是可选的,仅在用户同意时创建。
~/calendar-planner/
├── memory.md # 用户声明的规划规则和激活偏好
├── calendars.md # 提供商映射、日历名称和写入边界
├── rules.md # 缓冲区、专注规则、重复约束
├── plans.md # 当前周计划和重新安排决策
└── inbox.md # 仍需要安排的松散承诺
快速参考
仅加载能改善当前规划决策的内容。从协议和命令开始;仅当用户需要连续性时才添加记忆。
| 主题 | 文件 |
|---|
| 设置和激活 | setup.md |
| 可选连续性记忆 | memory-template.md |
| Life Grid 规划方法 | planning-protocol.md |
| 领域特定规划启发式 | life-domains.md |
| CLI 适配器脚本 | commands.md |
| 合并标准化事件导出 | calendar_merge.py |
| 审核重叠和缓冲区失败 | calendar_guard.py |
| 生成周计划摘要 | week_plan.py |
要求
使用与用户技术栈匹配的最轻量级适配器。仅安装当前工作流所需的提供商工具。
| 需求 | CLI / 工具 | 说明 |
|---|
| Google Calendar | gcalcli | 通过用户自己的 OAuth 客户端使用 Google Calendar API |
| Outlook / Microsoft 365 | Microsoft Graph PowerShell | 仅使用委派日历范围 |
| Apple Calendar | osascript | 在 macOS 上自动化 Calendar.app |
| CalDAV 和 iCloud 同步 | khal 加上 vdirsyncer | 本地同步,然后从本地状态规划 |
| 本地分析 | python3 和 jq | 合并、保护和周审查脚本必需 |
核心规则
1. 从决策开始,而不是 CRUD 操作
- 首先回答哪些应该保留、移动、取消、保护或推迟。
- 仅询问会改变安排的事实:硬性截止日期、旅行时间、参与者约束或保护时间。
- 使用
planning-protocol.md 将混乱的请求转换为安排决策。
2. 分离硬性承诺和灵活块
- 在重新安排日历之前,将每个项目分类为硬性、灵活、保留、准备、旅行或恢复。
- 灵活块可以移动;硬性承诺未经明确批准不得移动。
- 使用
life-domains.md 防止工作任务无声地超越家庭、健康或睡眠约束。
3. 在移动任何内容之前合并所有可见日历
- 首先读取所有范围内的日历,仅当用户将共享或家庭日历纳入范围时才包括它们。
- 将隐藏日历视为风险,而非空闲时间。
- 当有多个标准化导出并需要一个时间线时,使用
calendar_merge.py。
4. 保护缓冲区、准备和后续行动
- 在会议和预约周围添加设置、通勤、上下文切换、跟进和减压时间。
- 没有缓冲区的日程表是虚假容量。
- 使用
calendar_guard.py 在提出更改之前捕捉重叠、短间隙和过载的日子。
5. 写入需要明确批准和窄范围
- 在通过任何适配器创建、更新、删除或发送邀请之前询问用户。
- 首先默认为草稿计划或试运行命令序列。
- 如果用户选择连续性,在本地连续性笔记中将只读和启用写入的日历分开。
6. 保持记忆明确且最小化
- 仅保存用户声明的规则、重复承诺、保护时间和激活偏好。
- 除非用户要求这种连续性,否则不存储参与者列表、详细事件笔记或私人描述。
- 仅在用户同意本地持久化后使用
memory-template.md。
7. 以可执行计划结束
- 每个答案应以选定的时间段、剩余冲突、后续行动或周修复计划结束。
- 如果仍有多个选项,对它们进行排名并在一句话中解释获胜者。
- 当终端工作流使答案更可靠时,使用
week_plan.py 或 commands.md 中的适配器脚本。
Life Grid 协议
完整方法请参阅 planning-protocol.md。
- 接收:捕捉真实结果,而不仅仅是请求的事件。
- 映射:将每个项目放入硬性、灵活、准备、旅行或恢复类别。
- 保护:在提供新时段之前保护不可协商的事项。
- 修复:如果一周已经被打乱,显示需要移动、取消或降级的内容。
- 结束:留给用户一个推荐计划和确切的下一个命令或日历操作。
常见陷阱
- 只解决会议请求 -> 学校接送、旅行、用药或专注约束稍后会中断。
- 在读取所有范围内的日历之前移动事件 -> 隐藏冲突和信任受损。
- 默认将重复块视为神圣不可侵犯或可随意处置 -> 脆弱的计划或日历混乱。
- 安排会议时没有设置或恢复空间 -> 虚假容量和后期崩溃。
- 未经批准写入共享日历 -> 给其他人带来惊喜并造成社交债务。
- 在本地保存过多私人细节 -> 不必要的隐私风险而无规划优势。
外部端点
只有用户明确选择的适配器才能与远程服务通信。一次使用一个提供商路径,以便数据移动保持可理解。
| 端点 | 发送数据 | 目的 |
|---|
| https://www.googleapis.com/calendar/v3/ | 用于请求的 Google 日历读取或写入的事件元数据 | 通过 gcalcli 进行 Google Calendar 操作 |
| https://graph.microsoft.com/v1.0/ | 用于请求的 Outlook 或 Microsoft 365 读取或写入的事件元数据 | 通过 Microsoft Graph PowerShell 进行日历操作 |
| 用户配置的 CalDAV 服务器 | 配置日历的事件元数据 | 通过 vdirsyncer 进行日历同步,并通过 khal 本地使用 |
没有其他数据发送到外部。
安全与隐私
保留在本地的数据:
~/calendar-planner/ 中的可选规划记忆
calendar_merge.py、calendar_guard.py 和 week_plan.py 生成的标准化事件导出和审查输出
- 通过 macOS 上的 Calendar.app 进行的 Apple Calendar 自动化
可能离开您机器的数据:
- 通过用户明确选择的 Google、Microsoft 或 CalDAV 适配器发送的日历元数据
此技能不会:
- 未经批准创建、移动或删除日历项
- 静默发送邀请或更新共享日历
- 从无关文件或对话中推断隐藏规则
- 访问电子邮件、联系人或任务,除非用户明确扩展范围
信任
通过 Google Calendar、Microsoft Graph 或 CalDAV 适配器使用此技能时,日历元数据将通过配置的 CLI 工具发送到这些服务。仅当您信任这些提供商和运行命令的本地机器时才安装。
范围
此技能仅:
- 在用户批准的日历上规划和审核日程
- 生成试运行命令、标准化规划文件和本地审查报告
- 在明确用户同意后持久化最小规划上下文
此技能从不:
- 修改其自己的技能文件
- 自动接受邀请或未经批准自动重新安排人员
- 未经确认从一个日历扩展访问到另一个日历
- 在本地记忆文件中存储凭证
相关技能
如果用户确认,请使用 clawhub install 安装:
daily-planner - 每日计划制定、排序和现实任务安排。
schedule - 当用户不需要完整日历修复时的通用日程安排工作流。
assistant - 参谋长风格的任务、消息和规划执行。
productivity - 专注系统、优先级排序和防过载操作规则。
remember - 用户声明约束和重复模式的长期连续性。
反馈
- 如果有用:
clawhub star calendar-planner
- 保持更新:
clawhub sync
Calendar planner for work, family, health, travel, deep work, and recovery across multiple command-line calendar adapters.
Setup
On first use, read setup.md for integration guidelines. Answer the immediate planning question first, ask before creating ~/calendar-planner/, and ask before writing to any calendar or sending invites.
When to Use
User needs calendar planning, schedule repair, weekly planning, time blocking, meeting triage, family logistics, appointment placement, or multi-calendar cleanup. Use when the real job is reconciling commitments and constraints across Google Calendar, Outlook, Apple Calendar, and CalDAV from CLI-capable tools.
This skill should return one defended plan, explicit trade-offs, and a safe action sequence. It is stronger than generic scheduling help when calendars disagree, priorities collide, or the user needs a whole-week repair instead of one more event.
Architecture
Local continuity is optional and only created with user consent.
~/calendar-planner/
├── memory.md # User-stated planning rules and activation preferences
├── calendars.md # Provider map, calendar names, and write boundaries
├── rules.md # Buffers, focus rules, recurring constraints
├── plans.md # Current week plans and reschedule decisions
└── inbox.md # Loose commitments that still need placement
Quick Reference
Load only what improves the current planning decision. Start with protocol and commands; add memory only if the user wants continuity.
| Topic | File |
|---|
| Setup and activation | setup.md |
| Optional continuity memory | memory-template.md |
| Life Grid planning method | planning-protocol.md |
| Domain-specific planning heuristics | life-domains.md |
| CLI adapter recipes | commands.md |
| Merge normalized event exports | calendar_merge.py |
| Audit overlaps and buffer failures | calendar_guard.py |
| Generate weekly planning summary | week_plan.py |
Requirements
Use the lightest adapter that matches the user's stack. Only install the provider tools needed for the current workflow.
| Need | CLI / Tool | Notes |
|---|
| Google Calendar | gcalcli | Uses Google Calendar API via the user's own OAuth client |
| Outlook / Microsoft 365 | Microsoft Graph PowerShell | Use delegated calendar scopes only |
| Apple Calendar | osascript | Automates Calendar.app on macOS |
| CalDAV and iCloud sync | khal plus vdirsyncer | Sync locally, then plan from local state |
| Local analysis | python3 and jq | Required for merge, guard, and week review scripts |
Core Rules
1. Start from the decision, not the CRUD action
- First answer what should stay, move, cancel, protect, or defer.
- Ask only for facts that change placement: hard deadline, travel time, attendee constraints, or protected hours.
- Use
planning-protocol.md to convert messy requests into a placement decision.
2. Separate hard commitments from flexible blocks
- Classify every item as hard, flexible, hold, prep, travel, or recovery before reshuffling the calendar.
- Flexible blocks can move; hard commitments do not move without explicit approval.
- Use
life-domains.md to prevent work tasks from silently overrunning family, health, or sleep constraints.
3. Merge all visible calendars before moving anything
- Read every in-scope calendar first, including shared or family calendars only if the user put them in scope.
- Treat hidden calendars as risk, not as empty time.
- Use
calendar_merge.py when you have multiple normalized exports and need one timeline.
4. Protect buffers, prep, and follow-through
- Add setup, commute, context switch, follow-up, and decompression time around meetings and appointments.
- A schedule with no buffers is fake capacity.
- Use
calendar_guard.py to catch overlaps, short gaps, and overloaded days before proposing changes.
5. Writes require explicit approval and narrow scope
- Ask before creating, updating, deleting, or sending invites through any adapter.
- Default to a draft plan or dry-run command sequence first.
- Keep read-only and write-enabled calendars separate in the local continuity notes if the user opts into continuity.
6. Keep memory explicit and minimal
- Save only user-stated rules, recurring commitments, protected hours, and activation preferences.
- Do not store attendee lists, detailed event notes, or private descriptions unless the user asks for that continuity.
- Use
memory-template.md only after the user agrees to local persistence.
7. End with an execution-ready plan
- Every answer should finish with chosen slot(s), remaining conflicts, follow-ups, or a weekly repair plan.
- If multiple options remain, rank them and explain the winner in one sentence.
- Use
week_plan.py or the adapter recipes in commands.md when a terminal workflow makes the answer more reliable.
Life Grid Protocol
See planning-protocol.md for the full method.
- Intake: capture the real outcome, not just the requested event.
- Map: place each item into hard, flexible, prep, travel, or recovery.
- Defend: protect non-negotiables before offering new slots.
- Repair: if the week is already broken, show what to move, cancel, or downgrade.
- Close: leave the user with one recommended plan and the exact next command or calendar action.
Common Traps
- Solving only the meeting request -> school pickup, travel, medication, or focus constraints break later.
- Moving events before reading every in-scope calendar -> hidden conflicts and trust damage.
- Treating recurring blocks as either sacred or disposable by default -> brittle plans or calendar chaos.
- Packing meetings with no setup or recovery space -> fake capacity and late-day collapse.
- Writing to shared calendars without approval -> surprises other people and creates social debt.
- Saving too much private detail locally -> unnecessary privacy risk with no planning upside.
External Endpoints
Only the adapter the user explicitly chooses should talk to a remote service. Use one provider path at a time so data movement stays understandable.
| Endpoint | Data Sent | Purpose |
|---|
| https://www.googleapis.com/calendar/v3/ | event metadata for requested Google calendar reads or writes | Google Calendar operations through gcalcli |
| https://graph.microsoft.com/v1.0/ | event metadata for requested Outlook or Microsoft 365 reads or writes | Calendar operations through Microsoft Graph PowerShell |
| user-configured CalDAV server | event metadata for configured calendars | Calendar sync through vdirsyncer and local use through khal |
No other data is sent externally.
Security & Privacy
Data that stays local:
- Optional planning memory in
~/calendar-planner/
- Normalized event exports and review outputs produced by
calendar_merge.py, calendar_guard.py, and week_plan.py
- Apple Calendar automation through Calendar.app on macOS
Data that may leave your machine:
- Calendar metadata sent through the Google, Microsoft, or CalDAV adapter the user explicitly chooses
This skill does NOT:
- Create, move, or delete calendar items without approval
- Send invites or update shared calendars silently
- Infer hidden rules from unrelated files or conversations
- Access email, contacts, or tasks unless the user explicitly expands scope
Trust
By using this skill with Google Calendar, Microsoft Graph, or CalDAV adapters, calendar metadata is sent to those services through the configured CLI tools. Only install if you trust those providers and the local machine running the commands.
Scope
This skill ONLY:
- Plans and audits schedules across user-approved calendars
- Produces dry-run commands, normalized planning files, and local review reports
- Persists minimal planning context after explicit user consent
This skill NEVER:
- Modifies its own skill file
- Auto-accepts invites or auto-reschedules people without approval
- Widens access from one calendar to another without confirmation
- Stores credentials in local memory files
Related Skills
Install with
clawhub install if user confirms:
daily-planner - Daily plan shaping, sequencing, and realistic task placement.
schedule - General scheduling workflows when the user does not need full calendar repair.
assistant - Chief-of-staff style execution across tasks, messages, and planning.
productivity - Focus systems, prioritization, and anti-overload operating rules.
remember - Long-term continuity for user-stated constraints and recurring patterns.
Feedback
- If useful:
clawhub star calendar-planner
- Stay updated:
clawhub sync