Installs into .claude/skills of the current project.
Are you the author of Get Dates?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/diegosouzapw-get-dates)
---
name: get-dates
description: Resolve target date from argument and return all date formats needed for planning rituals.
disable-model-invocation: true
allowed-tools: Bash
---
# 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
1. Parse `$ARGUMENTS` to determine the target date
2. Use macOS `date` commands to resolve relative dates:
```bash
# For "tomorrow"
date -v+1d +"%Y-%m-%d"
# For next weekday (e.g., "monday")
# Calculate days until next occurrence
```
3. 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
```
4. 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: true` for 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
1. If input matches `YYYY-Www` pattern → use directly
2. If input is `last week` → current week minus 1
3. If `scope=week` with empty input → current week
4. Calculate `week_start` as the Monday of that week
5. Calculate `week_end` as the Sunday of that week