What problem does it solve? Bare millisecond literals like 2592000000 are unreadable, and hand-written duration strings can contain typos that silently become NaN timers at runtime. This Skill provides a template-literal DurationInput type so invalid spellings fail at compile time, plus converters and a parser for runtime text. ## Core Features & Use Cases - Type-safe duration declarations: DurationInput accepts strings like "30 days" or "250ms" and rejects misspellings such as "5 minuts" at compile time. - Unit conversion: toMs() and toSeconds() convert one declared duration to the unit each boundary needs, such as a cookie Max-Age in seconds versus Date arithmetic in milliseconds. - Runtime validation: parse() returns a Result<number, InvalidDurationError> for durations read from environment variables or form fields, naming the rejected text instead of producing NaN. - Use Case: Declare a ttl: DurationInput parameter on a cache function, let callers write "30 days", and convert to seconds at the storage boundary. ## Quick Start Add @sdxc/duration as a workspace dependency and use it to declare a TTL parameter that accepts strings like "5 minutes" and converts them with toMs or toSeconds.