Plan and stay on track. Fast. Practical. Intentional. Oya is a productivity tool for doers who think strategically...
A planning skill that helps users start their day or week with intention and clarity.
Named for the Yoruba goddess of winds and change ā Oya clears what no longer serves, making space for transformation.
Weekly planning (10-15 min) ā Daily planning (5 min) ā Reflect (2 min)
See references/branding.md for visual diagrams.
Oya has two distinct flows depending on whether the user has been onboarded:
| Condition | Flow |
|---|---|
No .claude/oya.md exists |
Onboarding Flow - interactive, asks questions, guides user through first week + day |
.claude/oya.md exists |
Regular Flow - FAST approach, no questions, proposes directly from context |
Detection: Check if .claude/oya.md exists. If no config exists, run this flow. Otherwise skip to Regular Flow.
Goal: Give user the "Aha" moment by creating authentic weekly goals first, then personalized daily tasks.
Note: This is the ONLY time oya asks questions and waits for user input.
Step 1: Welcome & Branding
Read references/branding.md and display verbatim:
Let's set up your planning system...
Step 2: Create Weekly Note First
Get current date with date command.
Create the weekly note immediately using the minimal template from assets/templates/weekly.md:
<!-- Add your goals and tasks here -->Step 3: Ask User to Edit Weekly Note
Display:
I've created your weekly note: [path/to/weekly-note.md]
What's your goal this week? Go edit it now - add your goals and tasks.
When you're ready, come back and we'll personalize your planning experience.
Wait for user to return. Do not proceed until user signals they're ready.
Step 4: Setup Wizard
Use a single AskUserQuestion prompt to gather setup information:
Let's personalize your planning experience. You can skip any question and add it later in .claude/oya.md
1. What should I call you?
2. What's your guiding phrase (mantra)?
Examples: "Give Everything." ⢠"Make it happen." ⢠"One day at a time."
3. What life areas do you want to track? (comma-separated)
Examples: home, work, personal, health, creative
4. What values guide your decisions? (optional, shown in weekly notes)
Examples: Focus, Balance, Connection, Growth, Service, Creativity
Leave blank to disable.
5. Any personal nudges? (optional, shown in daily entries)
Examples: "If not now, when?" ⢠"Focus on service" ⢠"What would future you thank you for?"
Leave blank to disable.
6. Enable coaching? (yes/no)
Coaching helps spot patterns like overloading or vague goals.
Parse user's free-text response and use sensible defaults for any skipped fields:
Step 5: Write Config
Generate .claude/oya.md with user's choices:
name: "{user_name}"
mantra: "{chosen_mantra}"
# Optional - only include if user provided values
values:
enabled: true
list:
- {value_1}
- {value_2}
# Optional - only include if user provided nudges
nudges:
enabled: true
list:
- "{nudge_1}"
- "{nudge_2}"
contexts:
- home
- work
- personal
context_display: hidden
coaching:
enabled: {true|false}
Step 6: Create Daily Tasks
Read the weekly note the user just edited. Create today's daily entry based on:
Append to weekly note using template from assets/templates/daily.md.
Step 7: Ask User to Edit Daily Tasks
Display:
I've added today's tasks based on your weekly goals. Review and edit them in the same file.
When you're ready, come back for feedback.
Wait for user to return.
Step 8: Automatic Critique
Read the edited daily tasks. Provide coaching critique based on:
Then show success message:
š Great start!
Your planning system is ready. Here's how it works:
1. Run /oya each day - creates or updates your notes
2. Edit the notes it proposes - make them yours
3. Notes carry forward until done - no task left behind
Run /oya anytime to continue planning.
Exit after onboarding and critique.
FAST approach - no questions, just propose:
<!-- comments --> where unsure)Key principles:
Get current date and time: Run date in terminal - do not rely on system date. Note the time for reflection prompts.
Check if weekend: Saturday/Sunday ā Use Weekend Flow
Check for pending reflections:
Check what exists:
Report findings:
"Good morning! Here's what I found:
- [ā/ā] This week's note (Jan 27th - Jan 31st)
- [ā/ā] Today's entry (Monday, January 27th)
Let's set up what's missing..."
Read .claude/oya.md (created during onboarding).
See references/config-guide.md for configuration options.
Fallback defaults (if config missing):
Before proposing notes, read:
[ ] and [-] items verbatimBased on detection results, use one of these flows:
Propose directly based on context gathered. Use template from assets/templates/weekly.md.
DO NOT ask questions. Just propose the note. Make assumptions from config and context.
Key principles:
<!-- comments --> where unsure instead of asking questionsWhen context is limited:
<!-- Add tasks for [context] here -->After proposing:
Propose directly. Append to weekly note. Use template from assets/templates/daily.md.
DO NOT ask questions. Just propose the entry. Make assumptions from weekly tasks and config.
Key principles:
[-] stays [-], [ ] stays [ ], [x] stays [x]<!-- -->When weekly tasks are sparse:
Skip work planning. Instead:
[ ] - Not started ā carry forward[-] - In progress ā carry forward[x] - Completed ā don't carryDefault task emojis:
After user edits their note, check for patterns:
| Pattern | Challenge |
|---|---|
| Overloaded | "What can you delegate or defer?" |
| Vague goals | "What exactly would success look like?" |
| Missing balance | "Where's rest or creative time?" |
| Too safe | "What would this look like if you thought bigger?" |
Only coach if coaching.enabled: true in config.
| Type | Default Path |
|---|---|
| Base | {paths.base}/{Year}/{MM}-{Mon}/ |
| Weekly | {Mon} {DD}{th/st/nd/rd} - {Mon} {DD}{th/st/nd/rd}.md (e.g., Jan 27th - Jan 31st.md) |
| Config | .claude/oya.md |
Weekly file naming format:
[Month] [Day with ordinal] - [Month] [Day with ordinal].mdJan 27th - Jan 31st.md, Feb 1st - Feb 5th.md, Dec 30th - Jan 3rd.mdWhen adding reflections:
Triggered by detection (Step 1):
Process:
Sync completed tasks:
Format:
**Reflections**
- What went well: {user input}
- What didn't: {user input}
- Insights or blockers: {user input if provided}