Set weekly priorities and plan the week ahead with intelligent suggestions based on goals, calendar shape, and task effort.
Run inline in the current conversation by default, so this work can see what the user has already discussed, decided, or settled this session. Do not fork merely because this skill was selected. Only run in the background when the user explicitly asks for a background run or the host has already obtained a specific background-work approval for this run.
Set priorities and plan the week ahead. Now with intelligent priority suggestions based on quarterly goals, calendar capacity, and task effort classification.
/week-plan — Plan current week (or next week if run on the last working day or a non-working day)/week-plan next — Explicitly plan next week/week-plan current — Force planning current weekBest times:
Read working_week.days in System/user-profile.yaml before deciding which days are first, last, or outside the working week.
Calculate target week (current or next) based on day of week and user parameter.
Gather comprehensive context to inform intelligent priority suggestions.
Check for 00-Inbox/Weekly_Synthesis_[last-monday].md:
Use: get_quarterly_goals()
Use: get_goal_status(goal_id) for each goal that has a goal_id
Skip get_goal_status for any goal whose goal_id is null — it has no ID to
look up, and the call will tell you so rather than return a status.
For each goal, get:
Check activity_known before judging any goal. When it is false — the
goal was typed by hand with no ID, or recovered from a freeform list —
linked_priorities and linked_priorities_count are null, meaning not
known, never none. Never call such a goal orphaned or stalled on that basis.
Identify goals needing attention (only among goals where activity_known
is true):
If the response flags goals as provisional (recovered from a freeform list), offer once — "Want me to structure these into trackable goals?" — and move on without nagging if declined.
Use: list_tasks(include_done=False)
Get all open tasks and:
Goal-advancing tasks — read the groomed backlog, don't guess:
Use: get_weekly_planning_context()
Each goal in the response's goal_health carries open_task_count and next_up_tasks — the top items the user already marked "take these first" during grooming.
First, check activity_known. When it is false, that goal has no usable ID — it was typed by hand, or recovered from a freeform list — so Dex cannot tell what links to it. linked_priority_count, has_activity, open_task_count and next_up_tasks are all null for that goal, meaning not known, never none. Do not read a null as zero, do not call it stalled or neglected, and do not call get_goal_backlog for it (a null ID falls back to every goal's backlog). Plan around it normally and pass on the recommendations line that says how to give it an ID.
For every goal where activity_known is true, use the fields directly:
next_up_tasks: suggest those items by name — "Goal X's next-up items are A and B — they fit Wednesday's block."get_goal_backlog(goal_id) and pick candidates from the top of its ordering (priority, then oldest).open_task_count (10+) and no next_up_tasks: mention /goal-backlog once — "Goal X has 14 open tasks and no groomed order — worth a /goal-backlog pass after planning?" Say it once for the whole plan, not per goal, and drop it if declined.Read calendar.provider from System/user-profile.yaml before any calendar call.
If provider is google: use Google Workspace MCP, not calendar-mcp event tools.
Read calendar.work_calendar from the same profile. Call list_calendars(detailed=true) first. Match work_calendar against a returned calendar summary, id, or primary flag, then pass that calendar's id. If work_calendar is missing or primary, use primary. Do not pass a display name as calendar_id. Set max_results high enough that a stacked week is not truncated.
Use: list_calendars(detailed=true)
Use: get_events(time_min="[week start]", time_max="[day after week end]", calendar_id="<resolved id or primary>", max_results=2500, detailed=true)
Use: analyze_calendar_capacity(days_ahead=7, events=[...mapped from get_events...])
Map returned events into the shape analyze_calendar_capacity expects (title, date as YYYY-MM-DD, duration_minutes, attendees, all_day). Apply CLAUDE.md's Calendar response confidence contract to the outcome: a missing or failing Google Workspace calendar tool is not an empty week, and do not call analyze_calendar_capacity with missing results. If the tools are unavailable or not connected, point to /google-workspace-setup using that skill's existing copy. Do not invent new privacy or consent language.
If provider is none: skip calendar gathering. Do not call calendar-mcp event tools. Do not treat the week as open.
If provider is apple, missing, or any other value: use calendar-mcp:
Use: calendar_get_events_with_attendees(start_date="[week start]", end_date="[day after week end]")
Use: analyze_calendar_capacity(days_ahead=7, events=[...from calendar MCP...])
Apply CLAUDE.md's Calendar response confidence contract before consuming
events or passing them to analyze_calendar_capacity.
Understand the shape of the week:
| Day | Type | Largest Block | Best For | |-----|------|---------------|----------| | Mon | Stacked (7 meetings) | 45 min | Quick tasks only | | Tue | Moderate (4 meetings) | 90 min | Medium tasks | | Wed | Open (2 meetings) | 3 hours | Deep work day ✨ | | Thu | Stacked (6 meetings) | 30 min | Quick tasks only | | Fri | Moderate (3 meetings) | 2 hours | Medium tasks, wrap-up |
Week capacity summary:
Use: classify_task_effort(title) for key tasks
Use: suggest_task_scheduling(include_all_tasks=True, calendar_events=[...])
Get intelligent matching:
Capacity check:
"You have 5 deep work tasks totaling ~12 hours. You have 2 open days with ~6 hours of deep work capacity.
⚠️ Capacity gap: Consider deferring 2 deep work items or protecting more time."
Check if semantic search is available by looking for qmd in PATH.
If available, enhance priority suggestions with meaning-based analysis:
Find stale goals with hidden activity: For each stalled quarterly goal, search:
qmd query "goal description/success criteria" --limit 5
against recent tasks and meeting notes. Sometimes goals appear stalled because related work wasn't explicitly linked.
Suggest priorities that move stalled goals: For goals with no recent activity:
qmd query "goal title concepts" --limit 3
against open tasks. Surface tasks that could advance the goal semantically.
Detect priority conflicts: Search for semantic overlap between candidate priorities:
qmd query "priority A description" --limit 3
If two priorities are semantically very similar, suggest merging them.
Integration: Fold findings into the "Intelligent Priority Suggestions" in Step 3. Label semantic discoveries: "🔍 Detected via semantic search"
If QMD unavailable: Skip silently. Priority suggestions still work from explicit goal links.
Use: get_commitments_due(date_range="this_week")
Surface things you've committed to that are due this week.
Don't just ask "What are your Top 3?" — Suggest priorities based on analysis.
Based on the gathered context, generate 4-5 suggested priorities:
Goal-driven suggestions:
Commitment-driven suggestions:
Carried-over suggestions:
Calendar-aware suggestions:
"Based on your goals, tasks, and calendar shape, here's what I suggest for this week:
Suggested priorities:
Complete pricing proposal — Goal 1 (Launch v2.0) needs this to hit milestone 3. You have deep work time Wednesday.
Customer interview batch — Goal 2 (Improve NPS) has no activity in 3 weeks. You could do 2-3 calls on Tue/Thu between meetings.
Follow up on Acme contract — Committed to Sarah by Friday. Meeting Thursday, prep needed.
Review team roadmap — Carried over from last week. Still a priority?
Calendar fit:
- Priority 1 → Wednesday (3-hour block)
- Priority 2 → Tue/Thu (between meetings)
- Priority 3 → Friday (follow-up after Thursday meeting)
Does this feel right? Adjust as needed."
Wait for user to confirm, adjust, or provide different priorities. For each priority confirmed:
Use: create_weekly_priority(
title="...",
pillar="...",
quarterly_goal_id="..." or "operational",
success_criteria="...",
week_date="YYYY-MM-DD"
)
If 05-Areas/Career/ exists, check for stale skills that could be developed this week.
Check System/Dex_Backlog.md for high-priority improvement ideas worth tackling this week.
Archive old file to 07-Archives/Plans/YYYY-Wxx.md.
Use the exact goal_id returned by the planning tools in each linked
Quarterly goal bullet. For work that advances no quarterly goal, write
Operational instead of inventing or paraphrasing an ID.
Create updated 02-Week_Priorities/Week_Priorities.md:
# Week Priorities
**Week of:** [first working day YYYY-MM-DD]
---
## 📊 Week Shape
| Day | Type | Deep Work? | Notes |
|-----|------|------------|-------|
| Mon | Stacked | ❌ | 7 meetings |
| Tue | Moderate | ⚠️ | 90 min block PM |
| Wed | **Open** | ✅ | **Deep work day** (3h morning) |
| Thu | Stacked | ❌ | 6 meetings |
| Fri | Moderate | ⚠️ | 2h block |
**Deep work capacity:** ~5 hours this week
**Best day for focus:** Wednesday
---
## 🎯 Quarterly Goals Context
| Goal | Progress | Status |
|------|----------|--------|
| Launch Product v2.0 | 3 of 5 milestones | On track |
| Improve Customer NPS | 1 of 4 milestones | ⚠️ Stalled (3 weeks) |
| Build Team Capacity | 2 of 3 milestones | On track |
**This week advances:** Goals #1 and #2
---
## 🎯 Top 3 This Week
1. **[Priority 1]** — **[Pillar]** ^week-YYYY-WXX-p1
- Success criteria: [What done looks like]
- Quarterly goal: [Qx-YYYY-goal-N]
- **Scheduled:** [Day/time block]
- Effort: [deep_work / medium / quick]
2. **[Priority 2]** — **[Pillar]** ^week-YYYY-WXX-p2
- Success criteria: [What done looks like]
- Quarterly goal: [Qx-YYYY-goal-N]
- **Scheduled:** [Day/time block]
- Effort: [deep_work / medium / quick]
3. **[Priority 3]** — **[Pillar]** ^week-YYYY-WXX-p3
- Success criteria: [What done looks like]
- Quarterly goal: [Qx-YYYY-goal-N] or Operational
- **Scheduled:** [Day/time block]
- Effort: [deep_work / medium / quick]
---
## ⚡ Commitments Due This Week
- [ ] [Commitment] — to [person] — due [day]
- [ ] [Commitment] — from [meeting] — due [day]
---
## 📋 Tasks by Priority
### Must Complete (P0)
- [ ] [Task] — Supports: Priority #X — **[Day]**
### Should Complete (P1)
- [ ] [Task] — Supports: Priority #X — **[Day]**
### If Time Permits (P2)
- [ ] [Task]
---
## 📅 Key Meetings
| Day | Time | Meeting | Prep Needed | Related Priority |
|-----|------|---------|-------------|------------------|
| Mon | [Time] | [Meeting] | [Prep] | Priority #X |
| Tue | [Time] | [Meeting] | [Prep] | — |
---
## 📊 Pillar Balance
| Pillar | This Week | Balance |
|--------|-----------|---------|
| [Pillar 1] | [Brief description] | 🟩 Good |
| [Pillar 2] | [Brief description] | 🟨 Light |
| [Pillar 3] | [Brief description] | 🟥 Neglected |
---
## 🔄 Carried Over
- [ ] [Task from last week] — [Why it carried over]
---
## 🏁 End of Week Review
*Fill in on the last working day*
### Completed
-
### Didn't Finish
-
### Learnings
-
### Next Week Focus
-
---
*Generated: [Timestamp]*
*Command: /week-plan*
Update System/usage_log.md.
Analytics (Silent):
Call track_event with event_name week_plan_completed and properties:
priorities_count: number of priorities setgoals_count: number of quarterly goals referencedThis only fires if the user has opted into analytics. No action needed if it returns "analytics_disabled".
After generating the file, provide a summary:
"Week planned! Saved to
02-Week_Priorities/Week_Priorities.mdYour Top 3 this week:
- [Priority 1] — Scheduled for [Day]
- [Priority 2] — Scheduled for [Day]
- [Priority 3] — Scheduled for [Day]
Week shape: 2 stacked days, 1 deep work day (Wednesday)
Goals advancing: #1 and #2
Heads up:
- [Capacity warning if applicable]
- [Stalled goal reminder]
Ready to run
/daily-planfor your first working day?"
| Integration | MCP Server | Tools Used |
|-------------|------------|------------|
| Calendar | calendar-mcp, or google-workspace-mcp when calendar.provider is google | Apple: calendar_get_events_with_attendees. Google: list_calendars, get_events |
| Work | work-mcp | list_tasks, get_quarterly_goals, get_goal_status, get_weekly_planning_context, get_goal_backlog, create_weekly_priority, analyze_calendar_capacity, classify_task_effort, suggest_task_scheduling, get_commitments_due |
| Granola | granola-mcp | granola_get_today_meetings (optional) |
npx skills add davekilleen/week-plan下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks OpenClaw to add a note, list notes, search notes, or manage note folders.
Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.
Use when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
Manage Trello boards, lists, and cards via the Trello REST API.
Category:productivity