Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Resolve ANY named time window — today, yesterday, thisWeek, lastWeek, last7Days, last30Days, last90Days, thisMonth, lastMonth, thisQuarter, lastQuarter, thisYear, lastYear, last12Months — or an arbitrary range (lastNdays / lastNweeks / lastNmonths) to a concrete ISO date range relative to your run time. Read-only: no writes, no network. Use whenever a task is time-scoped and you need exact start/end dates without computing them by hand.
.claude/skills/chaitanyagiri-temporal/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | 72% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -42% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -26% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -31% | 0% |
This is the single source of truth for "what dates does <window> mean right now?". It resolves named windows to concrete ISO date ranges relative to your run time (new Date() at the moment you invoke it), so you never re-derive dates manually. It only reads the clock and prints — no files written, no network.
bash# all windows at once (a quick temporal-context dump) node "$AGENT_DIR/.claude/skills/temporal/when.mjs" # one or several specific windows node "$AGENT_DIR/.claude/skills/temporal/when.mjs" last30Days thisQuarter # JSON only (machine-readable), or list the supported keywords node "$AGENT_DIR/.claude/skills/temporal/when.mjs" --json last7Days node "$AGENT_DIR/.claude/skills/temporal/when.mjs" --list
If $AGENT_DIR is somehow unset, the script also lives under ~/.claude/skills/temporal/when.mjs.
| Keyword | Meaning | | --- | --- | | today / yesterday | the single civil day | | thisWeek / lastWeek | ISO week (Mon-start); this = Mon→today, last = the full prior Mon→Sun | | last7Days / last30Days / last90Days | rolling N-day window ending today (inclusive) | | thisMonth / lastMonth | this = 1st→today; last = the full prior calendar month | | thisQuarter / lastQuarter | this = quarter-start→today; last = the full prior quarter | | thisYear / lastYear | this = Jan 1→today (YTD); last = the full prior year | | last12Months | rolling 12 months ending today | | lastNdays / lastNweeks / lastNmonths | arbitrary rolling window, e.g. last45days, last2weeks, last6months |
Aliases: ytd, qtd, mtd, wtd, 7d, 30d, 90d, 12m.
Convention: this* windows are period-start → today (to-date); last* named periods are the full prior complete period.
Each window prints a human line plus a JSON record:
start / end — inclusive civil dates (YYYY-MM-DD) in your local timezonestartUtc / endExclusiveUtc — the same span as a half-open [start, end)range of exact UTC instants, ideal for timestamp / createdAt-style queries
days, inclusive, timezone, tzOffsetMinutes, asOf — span, tz, and theinstant the range was resolved
Use the returned dates as the time bounds for the task. The named shortcuts /today, /yesterday, /last30Days, /lastQuarter, … each call this same resolver for their one window.
Other measured skills in the registry, with their headline benchmark lift.