AGPL-3.0-or-later · forever.

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 required

A 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 workflow
date.nika.yaml
nika: 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 tools

pure 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 →