/temporal
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
$ npx -y skills add chaitanyagiri/munder-difflin --skill temporal --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/temporal
Context preview
The summary Claude sees to decide when to auto-load this skill.
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
SKILL.md
temporal.SKILL.mdname: temporal
description: |
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.
allowed-tools:
- Bash
/temporal — concrete date ranges, relative to now
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.
Run it
# 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`.
Windows
| 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**.
Output
Each window prints a human line plus a JSON record:
- `start` / `end` — inclusive civil dates (`YYYY-MM-DD`) in your local timezone
- `startUtc` / `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 the
instant 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.
Read more
name: temporal description: | 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. allowed-tools: - Bash
/temporal — concrete date ranges, relative to now
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.
Run it
# 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`.
Windows
| 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**.
Output
Each window prints a human line plus a JSON record:
- `start` / `end` — inclusive civil dates (`YYYY-MM-DD`) in your local timezone
- `startUtc` / `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 the
instant 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.
Local multi-agent harness for the terminal coding CLIs you already run — Claude Code, Antigravity (Gemini), OpenAI Codex, OpenCode, Crush, pi.dev, and GitHub Copilot CLI — with bring-your-own keys and local LLMs.
Repo: chaitanyagiri/munder-difflin
Other skills on munder-difflin.
- /capabilities
Your capability catalog — read this at boot. Lists the temporal date-range skills and the external integrations (reached via the loopback broker) available to you as a spawned worker, and exactly how to call each. Read-only. Consult it whenever you're unsure what
Open skill - /last30Days
Resolve "last30Days" to a concrete ISO date range relative to your run time — a rolling 30-day window ending today. Returns inclusive civil dates plus exact UTC instants so you have temporal context without computing dates by hand. Read-only: no writes, no network. Use before a
Open skill - /last7Days
Resolve "last7Days" to a concrete ISO date range relative to your run time — a rolling 7-day window ending today. Returns inclusive civil dates plus exact UTC instants so you have temporal context without computing dates by hand. Read-only: no writes, no network. Use before a
Open skill - /lastMonth
Resolve "lastMonth" to a concrete ISO date range relative to your run time — the previous full calendar month. Returns inclusive civil dates plus exact UTC instants so you have temporal context without computing dates by hand. Read-only: no writes, no network. Use before a task
Open skill - /lastQuarter
Resolve "lastQuarter" to a concrete ISO date range relative to your run time — the previous full quarter. Returns inclusive civil dates plus exact UTC instants so you have temporal context without computing dates by hand. Read-only: no writes, no network. Use before a task over
Open skill - /lastWeek
Resolve "lastWeek" to a concrete ISO date range relative to your run time — the previous full week (Mon → Sun). Returns inclusive civil dates plus exact UTC instants so you have temporal context without computing dates by hand. Read-only: no writes, no network. Use before a task
Open skill

