the standard library
nika:date
Timestamp arithmetic · op-discriminated (now|add|subtract|format|parse|diff) · strftime grammar · ISO 8601 out. One of 28 builtins in the closed nika: namespace.
the data familypure JSON/data transforms, no I/O
- datafamily9 tools
- 9argsdeclared contract
- 1requiredcheck teaches a miss
- craftedusage filecheck-green below
the contract
9 args · 1 requiredA missing required arg is a nika check finding before anything runs; the vocabulary below comes from the binary itself (nika catalog --tools --json), not from prose.
- op*
stringnow | add | subtract | format | parse | diff- tz
stringIANA timezone (now · default UTC)- base
stringISO 8601 base (add/subtract)- duration
stringISO 8601 span like PT1h (add/subtract)- input
stringthe timestamp to render (format) or the text to read (parse)- format
stringstrftime grammar e.g. %Y-%m-%d (format/parse)- start
stringISO 8601 (diff)- end
stringISO 8601 (diff)- unit
stringseconds (default) | milliseconds | minutes | hours | days | weeks (diff)
in a real file
a complete workflownika: v1workflow: id: the-review-window description: "timestamp arithmetic without a shell date incantation"tasks: deadline: invoke: tool: "nika:date" args: op: add base: "2026-07-01T09:00:00Z" duration: "7d" days_left: with: deadline: ${{ tasks.deadline.output }} invoke: tool: "nika:date" args: op: diff start: "2026-07-01T09:00:00Z" end: "${{ with.deadline }}" unit: daysoutputs: deadline: ${{ tasks.deadline.output }}a complete file, nika check green; the drift gate re-validates this copy against the schema on every test run. open it in the playground →
cross-references
ships in skeletons
no skeleton ships it; the crafted file above is the reference.
the check gates
the data family
9 toolspure JSON/data transforms, no I/O.
Machines read the same vocabulary at /tools/catalog.json; the contract lives in spec 06 · stdlib. Install and ask the binary itself: nika catalog --tools. Read the spec →