Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 33 additions & 4 deletions .claude/skills/daily-plan/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,8 @@ Check if any tasks were completed on phone since the last plan:
Use: reminders_list_completed(list_name="Dex Today")
```

**If the tool is unavailable or errors** (Apple Reminders sync is optional and may not be set up on this machine): skip this step silently — do not surface an error for a feature the user never enabled. Note: Reminders access never works when Claude Code runs inside the VS Code extension (macOS never shows the permission dialog to that process) — see the known limitation in `06-Resources/Dex_System/Calendar_Setup.md`. Do not advise reinstalling or reconfiguring; skip silently.

For each completed item:
- Match to a Dex task by title
- Update task status via Work MCP: `update_task_status(task_title="...", status="d")`
Expand Down Expand Up @@ -432,6 +434,28 @@ Generate 3 recommended focus items based on:
> 2. **Reply to Mike** — Commitment due today
> 3. **Task X from Priority 1** — Keeps momentum on your shipped priority"

**Task IDs are mandatory on focus items (completion sync depends on them):**

Completion sync (Work MCP `update_task_status`, which updates every file the task
appears in) only finds a line if that single line contains BOTH a `- [ ]` / `- [x]`
checkbox AND the task's `^task-YYYYMMDD-XXX` anchor. A focus item written without the ID — or with the ID on
a different line — is invisible to sync: ticking the task done in Tasks.md never
updates the plan, and marking the plan item done never updates Tasks.md.

So, for each recommended focus item:
1. **If it maps to an existing Tasks.md task** (search by title/keywords), you MUST
write it in the plan as a `- [ ]` checkbox line with that task's `^task-YYYYMMDD-XXX`
anchor at the end of the same line. Never omit the ID, never put it on its own line.
2. **If it's real work with no Tasks.md entry yet**, create the task first via Work MCP
`create_task`, then embed the returned task ID the same way.
3. **Only if it isn't a task at all** (e.g. "protect the 2-4pm free block") may the line
omit an ID — and then it gets no checkbox either, so it can't masquerade as a
syncable task.

Format notes that matter: use `- [ ]` (dash checkbox), not `1. [ ]` — numbered
checkboxes do not contain the literal `- [ ]` string the sync matcher looks for, so
they never sync even with an ID present.

### Meeting Prep (Enhanced)

For each meeting, show:
Expand All @@ -455,6 +479,11 @@ Flag potential issues:

**ALWAYS generate and save a new plan file.** Never skip generation because a plan from a previous day exists in the conversation or vault. Even if context from a prior plan is visible, today is a new day and requires its own plan. If a plan for today's date already exists, overwrite it (the user is requesting a refresh).

**Filling in `{{^task-id}}` in Today's Focus:** replace it with the item's real
`^task-YYYYMMDD-XXX` anchor per the Task IDs rule in Step 6 (mandatory whenever the
item maps to a Tasks.md task — create the task first if needed). If the item is not a
task at all, drop both the placeholder and the `- [ ]` checkbox for that line.

Create `07-Archives/Plans/YYYY-MM-DD.md`:

```markdown
Expand Down Expand Up @@ -509,9 +538,9 @@ integrations_used: [calendar, tasks, people, work-intelligence]

**If I only do three things today:**

1. [ ] {{Focus item 1}} — {{Pillar}} *(supports Week Priority #X)*
2. [ ] {{Focus item 2}} — {{Pillar}} *(supports Week Priority #Y)*
3. [ ] {{Focus item 3}} — {{Pillar}}
- [ ] {{Focus item 1}} — {{Pillar}} *(supports Week Priority #X)* {{^task-id}}
- [ ] {{Focus item 2}} — {{Pillar}} *(supports Week Priority #Y)* {{^task-id}}
- [ ] {{Focus item 3}} — {{Pillar}} {{^task-id}}

---

Expand Down Expand Up @@ -588,7 +617,7 @@ After generating the plan, push today's P0 and P1 focus tasks to Apple Reminders
3. **Confirm silently:**
> "📱 Pushed 3 focus tasks to iPhone Reminders (Dex Today)"

**If Reminders MCP unavailable:** Skip silently.
**If the tool is unavailable or errors:** Skip silently — do not surface an error for a feature the user never enabled. (This includes Claude Code running inside the VS Code extension, where macOS never grants Reminders access — see `06-Resources/Dex_System/Calendar_Setup.md`.)

---

Expand Down
24 changes: 22 additions & 2 deletions .claude/skills/daily-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ Check for tasks added from phone during the day that weren't triaged in the morn
Use: reminders_list_items(list_name="Dex Inbox")
```

**If the tool is unavailable or errors** (Apple Reminders phone-capture is optional and may not be set up on this machine): skip this step silently — do not surface an error for a feature the user never enabled.
**If the tool is unavailable or errors** (Apple Reminders phone-capture is optional and may not be set up on this machine): skip this step silently — do not surface an error for a feature the user never enabled. Note: Reminders access never works when Claude Code runs inside the VS Code extension (macOS never shows the permission dialog to that process) — see the known limitation in `06-Resources/Dex_System/Calendar_Setup.md`. Do not advise reinstalling or reconfiguring; skip silently.

If items found:
- Surface them: "📱 **Phone captures not yet triaged** (X items in Dex Inbox)"
Expand All @@ -131,6 +131,8 @@ Check if tasks were completed on phone since the morning plan:
Use: reminders_list_completed(list_name="Dex Today")
```

**If the tool is unavailable or errors** (Apple Reminders sync is optional and may not be set up on this machine): skip this step silently — do not surface an error for a feature the user never enabled. Note: Reminders access never works when Claude Code runs inside the VS Code extension (macOS never shows the permission dialog to that process) — see the known limitation in `06-Resources/Dex_System/Calendar_Setup.md`. Do not advise reinstalling or reconfiguring; skip silently.

For each completed item:
- Match to a Dex task by title
- Update task status via Work MCP: `update_task_status(task_title="...", status="d")`
Expand Down Expand Up @@ -349,7 +351,25 @@ This only fires if the user has opted into analytics. No action needed if it ret

## Step 11: Evening Journal (If Enabled)

If `journaling.evening: true`, prompt for evening reflection.
Check `System/user-profile.yaml` → `journaling.evening`.

**If `journaling.evening: true`, run the actual `/journal evening` flow** from
`.claude/skills/journal/SKILL.md` — do not just mention reflection and move on, and do
not substitute a single ad-hoc question. The real flow:

1. Check if today's evening journal exists in `00-Inbox/Journals/`
- If yes: acknowledge it ("You already journaled this evening") and skip to Step 12
- If no: create it from the template
2. Pull in this morning's journal intention (if one exists) for reflection
3. Guide the user through the evening prompts conversationally — one question at a
time, per the journal skill's Prompting Style
4. Save the entry, then continue the review

Offer it plainly: "You have evening journaling enabled — want to do a quick reflection
before we close the day?" If the user declines, skip without pushing back and continue
to Step 12.

**If `journaling.evening` is false or missing:** Skip this step silently.

---

Expand Down
12 changes: 11 additions & 1 deletion .claude/skills/week-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -464,7 +464,17 @@ Add a section to the review:

After synthesis:
1. Update Tasks.md with new priorities
2. Archive completed items
2. Clear completed tasks out of `03-Tasks/Tasks.md` — **remove whole task blocks, never
individual lines.** Tasks.md entries can span multiple lines: the `- [x]` checkbox
line plus its indented sub-lines (priority, due date, notes) and any continuation
paragraphs. A task's block runs from its checkbox line down to (but not including)
the next non-indented line — the next task's checkbox, a heading, or a blank line
followed by unindented content. When removing a completed task, remove that entire
block together so no orphaned sub-lines are left behind. Never do a per-line sweep
of `[x]` lines: that strands sub-lines, and it also removes completed sub-checkboxes
out from under tasks that are still open (only remove a block whose own top-level
checkbox is `[x]`). Before deleting anything, tell the user how many completed tasks
you're clearing and confirm.
3. Update project pages with status changes
4. Offer to run `/week-plan` for next week

Expand Down
13 changes: 13 additions & 0 deletions 06-Resources/Dex_System/Calendar_Setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,19 @@ The first time Cursor tries to read your calendar, macOS may show a popup: **"Cu

---

## Known limitation: the VS Code extension can't use Apple Reminders

macOS grants calendar and reminders access **per app** — it looks at which app is asking. When Dex runs through the **Claude Code extension inside VS Code** (rather than from a normal terminal window), macOS never shows the permission popup to that process at all, and access granted to Terminal does **not** carry over. The result: Apple Reminders features (phone capture via a "Dex Inbox" list, "Dex Today" sync) are simply unavailable in that setup — not misconfigured, unavailable. Reinstalling or redoing the setup steps will not change this.

What to do instead:

- **Run Dex from a standalone terminal window** (Terminal.app, or another terminal app launched on its own). The permission popup appears there, and access works after you click Allow.
- **Or keep using the VS Code extension without Reminders features.** Dex skips them silently when access is unavailable — daily planning and reviews work normally without them.

This was verified directly (August 2026): the same check succeeds from Terminal.app, and fails from both VS Code's built-in terminal and the extension's own process — even after access was granted in Terminal.app first.

---

## Optional: Tell Dex which calendar is "work"

If you have several calendars and want Dex to focus on one (e.g. your work calendar) for faster answers, you can set it in **System/user-profile.yaml** under a `calendar` section with `work_calendar: "your.email@example.com"` (use the exact name as it appears in the Calendar app). You can skip this—Dex will still show your events without it.
Expand Down
13 changes: 13 additions & 0 deletions docs/Dex_System/Calendar_Setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,19 @@ The first time Cursor tries to read your calendar, macOS may show a popup: **"Cu

---

## Known limitation: the VS Code extension can't use Apple Reminders

macOS grants calendar and reminders access **per app** — it looks at which app is asking. When Dex runs through the **Claude Code extension inside VS Code** (rather than from a normal terminal window), macOS never shows the permission popup to that process at all, and access granted to Terminal does **not** carry over. The result: Apple Reminders features (phone capture via a "Dex Inbox" list, "Dex Today" sync) are simply unavailable in that setup — not misconfigured, unavailable. Reinstalling or redoing the setup steps will not change this.

What to do instead:

- **Run Dex from a standalone terminal window** (Terminal.app, or another terminal app launched on its own). The permission popup appears there, and access works after you click Allow.
- **Or keep using the VS Code extension without Reminders features.** Dex skips them silently when access is unavailable — daily planning and reviews work normally without them.

This was verified directly (August 2026): the same check succeeds from Terminal.app, and fails from both VS Code's built-in terminal and the extension's own process — even after access was granted in Terminal.app first.

---

## Optional: Tell Dex which calendar is "work"

If you have several calendars and want Dex to focus on one (e.g. your work calendar) for faster answers, you can set it in **System/user-profile.yaml** under a `calendar` section with `work_calendar: "your.email@example.com"` (use the exact name as it appears in the Calendar app). You can skip this—Dex will still show your events without it.
Expand Down
Loading