Prompt file imported from sohan-shingade/lifeOS (
.claude/commands/plan.md). Fill in{{arguments}}before use. Copyright stays with the author.
/plan
Produce a calendar proposal for the given window, respecting all domain plans and constraints.
Input
{{arguments}} — the planning window. Parse flexibly:
today→ today onlytomorrow→ tomorrow onlythis week/next week→ Mon–Sun of the relevant weekweek of 2026-05-01→ that Mon–Sun<start>..<end>→ explicit range- default (no args) → the next 7 days from now
Flow
-
Refresh calendar cache.
python -m src.sync -
Invoke the scheduler subagent. Pass the window explicitly.
-
Scheduler collects inputs (reads):
profile/constraints.yaml— protected windows, caps, preferencesprofile/categories.yaml— category rulesprofile/domains.yaml— active domainsdomains/*/plan.yamlfor each active domaindomains/*/goals.yaml(soft — fills under-target categories)domains/academics/*/assignments.yaml(deadlines)state/tasks.yaml— open backlogstate/events.sqlite— current calendar state in the window
-
Scheduler runs
src/schedule.pywith these inputs. This is deterministic Python: greedy fit over free slots, respecting all constraints, surfacing anything that didn't fit. -
Proposal written to
state/proposals/<timestamp>.yaml. -
Show human-readable diff in chat. Group by day, annotate each op:
Mon 2026-04-28 ✚ 06:30-08:00 fitness Gym — Upper Push + Climb ✚ 09:00-11:00 school DSC 140A study block (HW3) ✚ 14:00-15:30 deep-work Flint backtester refactor 18:00-21:00 climb (existing — Mesa Rim) Tue 2026-04-29 ... Did NOT fit (surfaced for user): ✗ errands "Car service at 67k mi" (1hr block) — no slot found. Soonest options: Sat 11am, Sun 2pm. -
Wait for user response. Options:
y/approve→ applyn/cancel→ discard proposal- freeform edit request → re-propose with adjustment
show <day>→ drill into a specific day
-
On approval, run
python -m src.apply state/proposals/<timestamp>.yaml. Append each op tostate/audit.log.
Notes
- Never auto-delete events you didn't create. If the scheduler needs to clear time, it surfaces conflicts as items needing user decision.
- Never modify external-attendee events without explicit confirmation on that specific event.
- Existing fitness / deep-work blocks created by previous
/plancan be moved, but log the move reason. - If the window already has heavy commitments and nothing new fits, say so — don't pad with lower-value work.
