Get Dates
This sub-skill resolves a target date from user arguments and returns all date-related fields needed by planning rituals.
Input
The $ARGUMENTS variable contains the raw date argument:
- •
(empty)→ today - •
today→ today - •
tomorrow→ tomorrow - •
monday,tuesday, etc. → next occurrence (including today if matches) - •
next monday,next tuesday, etc. → next occurrence after today - •
YYYY-MM-DD→ specific date
Instructions
- •
Parse
$ARGUMENTSto determine the target date - •
Use macOS
datecommands to resolve relative dates:bash# For "tomorrow" date -v+1d +"%Y-%m-%d" # For next weekday (e.g., "monday") # Calculate days until next occurrence
- •
Calculate all date fields for the resolved target date:
bash# Day of week date -j -f "%Y-%m-%d" "$TARGET_DATE" +"%A" # ISO week number date -j -f "%Y-%m-%d" "$TARGET_DATE" +"%Y-W%V" # Month date -j -f "%Y-%m-%d" "$TARGET_DATE" +"%Y-%m" # Quarter # Q1: Jan-Mar, Q2: Apr-Jun, Q3: Jul-Sep, Q4: Oct-Dec
- •
Determine relationship to today:
- •
is_today: target date equals current date - •
is_future: target date is after current date - •
is_past: target date is before current date
- •
Output
Return structured JSON:
json
{
"target_date": "2026-02-15",
"day_name": "Sunday",
"day_short": "Sun",
"week": "2026-W07",
"month": "2026-02",
"month_name": "February",
"quarter": "2026-Q1",
"year": "2026",
"is_today": false,
"is_future": true,
"is_past": false,
"days_from_today": 1
}
Error Cases
- •Invalid date format: Return error with valid format examples
- •Past date: Allow but set
is_past: truefor caller to handle
Example Resolutions
| Input | Target Date | Notes |
|---|---|---|
(empty) | 2026-02-14 | Today |
today | 2026-02-14 | Today |
tomorrow | 2026-02-15 | +1 day |
monday | 2026-02-16 | Next Monday (including today if Monday) |
next monday | 2026-02-16 | Next Monday (always future) |
2026-02-20 | 2026-02-20 | Specific date |
Week Resolution (for weekly rituals)
When scope=week is passed in arguments or the input contains an ISO week format:
Week Input Formats
- •
(empty)→ current week - •
last week→ previous week - •
YYYY-Www→ specific ISO week (e.g., 2026-W07)
Week Calculations
bash
# Get current ISO week date +"%G-W%V" # Get week start (Monday) from ISO week # Use: date command with week calculation # Get week end (Sunday) from ISO week # week_end = week_start + 6 days
Extended Output for Weekly Scope
When resolving weeks, include these additional fields:
json
{
"target_date": "2026-02-14",
"day_name": "Saturday",
"day_short": "Sat",
"week": "2026-W07",
"week_start": "2026-02-09",
"week_end": "2026-02-15",
"is_current_week": true,
"is_past_week": false,
"month": "2026-02",
"month_name": "February",
"quarter": "2026-Q1",
"year": "2026",
"is_today": false,
"is_future": true,
"is_past": false,
"days_from_today": 1
}
Week Resolution Examples
| Input | Target Week | Week Start | Week End |
|---|---|---|---|
(empty) scope=week | 2026-W07 | 2026-02-09 | 2026-02-15 |
last week | 2026-W06 | 2026-02-02 | 2026-02-08 |
2026-W05 | 2026-W05 | 2026-01-26 | 2026-02-01 |
Week Resolution Logic
- •If input matches
YYYY-Wwwpattern → use directly - •If input is
last week→ current week minus 1 - •If
scope=weekwith empty input → current week - •Calculate
week_startas the Monday of that week - •Calculate
week_endas the Sunday of that week