Weekly Planner
A lightweight, file-based weekly planner that lives in a workspace folder as plain text (.toml). It supports:
- - Inbox capture (
planner/inbox.toml) for fast, append-only task capture - Weekly plans (
planner/weeks/YYYY-Www.toml) with:
- scheduled
time blocks (can be published to a calendar)
- unscheduled
weekly bits /
daily bits
- an end-of-week
review
- - A runbook (
planner/runbook.toml) of recurring blocks copied into each new week - Optional mode cards (
planner/modes/*.md) describing how the user wants to work in different contexts
When to use this skill
Use this skill when the user asks for any of the following:
- - “Plan my week”, “time-block my week”, “create a weekly plan”, “make a schedule for next week”
- “Capture this in my inbox”, “add this to my planner”, “triage my tasks”
- “Create a new week file”, “roll over last week’s unfinished tasks”
- “Publish/sync my planner to my calendar”, “export an .ics for my week”
- “Do an end-of-week review”
Don’t use this skill for full project-management systems (Jira/Linear/etc.) unless the user explicitly wants that.
Quick start
1) Ensure the planner folder exists
Look for a planner/ folder in the current workspace that contains planner/config.toml.
If it doesn’t exist, initialise a fresh planner skeleton (safe: refuses to overwrite existing folders):
CODEBLOCK0
This creates:
- - INLINECODE7
- INLINECODE8
- INLINECODE9
- INLINECODE10
- INLINECODE11
- INLINECODE12
- INLINECODE13
- INLINECODE14
- INLINECODE15 (Google Calendar sync via
gog) - INLINECODE17 (calendar export without Google tooling)
- INLINECODE18
2) Tell the user what to customise
Ask the user to review planner/config.toml and customise:
- -
timezone (IANA tz name, e.g. Europe/Berlin) - INLINECODE22 (their mode names + labels)
- (Optional) calendar publish settings (see “Publish to calendar” below)
3) Create (or roll over) a week
Create a new week file:
CODEBLOCK1
Or roll over unfinished tasks from the most recent week:
CODEBLOCK2
4) Validate before “publishing” anything
Run validation after edits (especially before calendar publish):
CODEBLOCK3
Core workflows
A) Inbox capture
Goal: capture tasks with minimal friction.
Rules:
- - Treat
planner/inbox.toml as append-only. - Add one
[[items]] block per task. - Keep each entry small; use
notes only when it helps.
When the user says “add this to my inbox”, append a new item like:
CODEBLOCK4
If the user doesn’t specify mode, choose a reasonable default (usually their “ops/admin” mode).
B) Triage inbox → weekly plan
Goal: turn raw inbox items into (a) 2–3 outcomes, (b) a small set of scheduled blocks, and (c) a manageable list of unscheduled bits.
Process:
1) Read planner/inbox.toml.
2) Ask the user for:
- hard constraints (deadlines, appointments, travel)
- 2–3 outcomes they care about this week
- anything non-negotiable (exercise, family time, admin)
3) Convert inbox items into one of:
- time blocks (must happen at a specific time)
- weekly bits (do sometime this week)
- daily bits (do sometime on a specific day)
- or mark as dropped if it’s not happening this week
Keep the plan intentionally small:
- - 2–5 focus tasks
- A few high-leverage time blocks
- A short “bits” list the user can realistically finish
C) Create a new week file
Use when the user wants to start planning a new week.
1) Determine week_start (a Monday date in YYYY-MM-DD).
2) Generate the file (copies runbook blocks into [[time_blocks]]):
CODEBLOCK5
3) Then edit planner/weeks/2026-W10.toml:
- - Fill
[goals] outcomes (2–3 crisp outcomes) - Add
focus_tasks (2–5 items max) - Add / adjust
[[time_blocks]] (scheduled blocks) - Add
[[weekly_bits]] and [[daily_bits]] for unscheduled tasks
D) Roll over unfinished work (optional)
Use when the user has an existing week file and wants to start the next week without retyping.
Typical flow:
CODEBLOCK6
This:
- - finds the most recent week in INLINECODE37
- creates the next week (week_start + 7 days)
- copies runbook blocks into the new week’s INLINECODE38
- carries over unfinished
weekly_bits and INLINECODE40
E) Publish time blocks to a calendar (optional)
Only [[time_blocks]] are published.
Two safe options:
Option 1: Google Calendar sync (direct, destructive)
This workflow is destructive by design — it updates/deletes managed events.
Safety rules (must follow):
- - Only ever sync to a dedicated planner calendar (never the user’s main calendar).
- Always run dry-run first.
- Only run with
--apply if BOTH are true:
1) The user explicitly asked you to apply changes.
2)
calendar.write_enabled = true in
planner/config.toml.
Requirements:
- -
gog CLI installed + authenticated (steipete/gogcli)
Dry-run:
CODEBLOCK7
Apply:
CODEBLOCK8
Option 2: Export an .ics file (safe, non-destructive)
Works without Google tooling.
CODEBLOCK9
This writes planner/weeks/2026-W10.ics, which the user can import into most calendar apps.
F) End-of-week review
At the end of the week, help the user fill:
- -
review.score (0–10) - INLINECODE49 (1–5 bullets)
- INLINECODE50 (1–5 bullets)
- INLINECODE51 (short paragraph)
- INLINECODE52 (1–2 sentences)
Quality gates
Before publishing/syncing:
1) Run validation:
CODEBLOCK10
2) Fix all errors.
3) Treat warnings as “strong suggestions” (overlaps, out-of-bounds blocks, unknown modes).
References
- - File formats and schema: INLINECODE53
- Calendar publish & safety model: INLINECODE54
Troubleshooting
“Python can’t import tomllib” / “No module named tomllib”
You’re on Python < 3.11.
Fix: install Python 3.11+ and re-run.
“gog: command not found”
Google Calendar sync requires the gog CLI.
Fix: either install gogcli (see references) or use the .ics export instead.
“Refusing to apply changes: calendar.write_enabled is false”
Intentional safety latch.
Fix: have the user set calendar.write_enabled = true once they’re confident in the dry-run output.
每周计划器
一个轻量级、基于文件的每周计划器,以纯文本格式(.toml)存放在工作区文件夹中。它支持:
- - 收件箱捕获(planner/inbox.toml)用于快速、仅追加的任务捕获
- 每周计划(planner/weeks/YYYY-Www.toml)包含:
- 已安排的
时间块(可发布到日历)
- 未安排的
每周任务 /
每日任务
- 周末
回顾
- - 操作手册(planner/runbook.toml),其中包含复制到每个新周的重复性时间块
- 可选的模式卡片(planner/modes/*.md),描述用户在不同情境下的工作方式
何时使用此技能
当用户提出以下任何请求时使用此技能:
- - 规划我的一周、为我的周安排时间块、创建每周计划、为下周制定时间表
- 把这个捕获到我的收件箱、添加到我的计划器、分类我的任务
- 创建新的周文件、结转上周未完成的任务
- 将我的计划发布/同步到日历、为我的周导出.ics文件
- 做周末回顾
不要将此技能用于完整的项目管理体系(Jira/Linear等),除非用户明确要求。
快速开始
1) 确保计划器文件夹存在
在当前工作区中查找包含planner/config.toml的planner/文件夹。
如果不存在,初始化一个新的计划器骨架(安全:拒绝覆盖现有文件夹):
bash
python3 {baseDir}/scripts/init_planner.py --target ./planner
这将创建:
- - planner/config.toml
- planner/inbox.toml
- planner/runbook.toml
- planner/weeks/WEEKTEMPLATE.toml
- planner/modes/*.md
- planner/scripts/newweek.py
- planner/scripts/rolloverweek.py
- planner/scripts/validate.py
- planner/scripts/syncweek.py(通过gog同步Google日历)
- planner/scripts/export_ics.py(无需Google工具即可导出日历)
- planner/logs/
2) 告知用户需要自定义的内容
请用户查看planner/config.toml并进行自定义:
- - timezone(IANA时区名称,例如Europe/Berlin)
- modes.*(他们的模式名称+标签)
- (可选)日历发布设置(见下方发布到日历)
3) 创建(或结转)一周
创建新的周文件:
bash
python3 planner/scripts/new_week.py --week-start 2026-03-02
或者从最近一周结转未完成的任务:
bash
python3 planner/scripts/rollover_week.py --next
4) 在发布任何内容之前进行验证
编辑后运行验证(尤其是在日历发布前):
bash
python3 planner/scripts/validate.py --week planner/weeks/2026-W10.toml
核心工作流程
A) 收件箱捕获
目标:以最小摩擦捕获任务。
规则:
- - 将planner/inbox.toml视为仅追加。
- 每个任务添加一个[[items]]块。
- 保持每个条目简短;仅在有助于理解时使用notes。
当用户说添加到我的收件箱时,追加一个新项目,如:
toml
[[items]]
created = YYYY-MM-DDTHH:MM:SS+01:00
text = (任务描述)
mode = ops # config.toml [modes.*]中的任意键
est_minutes = 30
priority = medium # low|medium|high
status = todo # todo|doing|done|dropped
notes =
如果用户未指定mode,选择一个合理的默认值(通常是他们的ops/admin模式)。
B) 收件箱分类 → 每周计划
目标:将原始收件箱项目转化为(a)2-3个成果,(b)少量已安排的时间块,以及(c)可管理的未安排任务列表。
流程:
1) 读取planner/inbox.toml。
2) 询问用户:
- 硬性约束(截止日期、预约、旅行)
- 本周关心的2-3个成果
- 任何不可协商的事项(锻炼、家庭时间、行政事务)
3) 将收件箱项目转换为以下之一:
- 时间块(必须在特定时间进行)
- 每周任务(本周某个时间完成)
- 每日任务(某天某个时间完成)
- 或标记为已放弃(如果本周不进行)
保持计划有意精简:
- - 2-5个重点任务
- 少数高杠杆时间块
- 用户能实际完成的简短任务列表
C) 创建新的周文件
当用户想要开始规划新的一周时使用。
1) 确定week_start(YYYY-MM-DD格式的周一日期)。
2) 生成文件(将操作手册中的时间块复制到[[time_blocks]]):
bash
python3 planner/scripts/new_week.py --week-start 2026-03-02
3) 然后编辑planner/weeks/2026-W10.toml:
- - 填写[goals]成果(2-3个明确的成果)
- 添加focustasks(最多2-5项)
- 添加/调整[[timeblocks]](已安排的时间块)
- 为未安排的任务添加[[weeklybits]]和[[dailybits]]
D) 结转未完成的工作(可选)
当用户已有现有的周文件并希望开始下一周而无需重新输入时使用。
典型流程:
bash
python3 planner/scripts/rollover_week.py --next
这将:
- - 找到planner/weeks/中最近的一周
- 创建下一周(weekstart + 7天)
- 将操作手册中的时间块复制到新周的[[timeblocks]]
- 结转未完成的weeklybits和dailybits
E) 将时间块发布到日历(可选)
仅发布[[time_blocks]]。
两个安全选项:
选项1:Google日历同步(直接,破坏性)
此工作流程设计为破坏性——它会更新/删除管理的事件。
安全规则(必须遵守):
- - 仅同步到专用计划日历(切勿同步到用户的主日历)。
- 始终先进行试运行。
- 仅在以下两个条件都满足时才使用--apply运行:
1) 用户明确要求您应用更改。
2) planner/config.toml中的calendar.write_enabled = true。
要求:
- - 已安装并认证gog CLI(steipete/gogcli)
试运行:
bash
python3 planner/scripts/sync_week.py --week planner/weeks/2026-W10.toml
应用:
bash
python3 planner/scripts/sync_week.py --week planner/weeks/2026-W10.toml --apply
选项2:导出.ics文件(安全,非破坏性)
无需Google工具即可工作。
bash
python3 planner/scripts/export_ics.py --week planner/weeks/2026-W10.toml
这将写入planner/weeks/2026-W10.ics,用户可以将其导入大多数日历应用。
F) 周末回顾
在周末结束时,帮助用户填写:
- - review.score(0-10)
- review.wins(1-5条要点)
- review.fails(1-5条要点)
- review.whatilearned(简短段落)
- review.nextweekfocus(1-2句话)
质量关卡
在发布/同步之前:
1) 运行验证:
bash
python3 planner/scripts/validate.py --week planner/weeks/2026-W10.toml
2) 修复所有错误。
3) 将警告视为强烈建议(重叠、越界的时间块、未知模式)。
参考
- - 文件格式和模式:references/PLANNERSCHEMA.md
- 日历发布与安全模型:references/CALENDARSYNC.md
故障排除
Python无法导入tomllib / 没有名为tomllib的模块
您使用的是Python < 3.11。
修复:安装Python 3.11+并重新运行。
gog: 命令未找到
Google日历同步需要gog CLI。
修复:安装