Skip to main content
The canonical schema lives at: https://nika.sh/schema/workflow.json It’s a standard JSON Schema draft 2020-12 document. Your editor’s YAML LSP can consume it directly.

Contract version

nika: v1, the first line of every workflow. A single version marker: the key nika declares “this is a Nika workflow”, the value v1 pins the language contract version. There is no separate schema: or apiVersion: field (the engine’s internal canonical URI stays https://nika.sh/spec/v1 for RDF / conformance tooling, but the author never types a URL).

Point your editor

Add the LSP modeline at the top of any .nika.yaml so your editor’s YAML language server consumes the JSON Schema directly:
the modeline · paste at the top of any workflow
See editor setup for per-IDE instructions.

Local validation

Versioning policy

  • v1 is the only value for the entire lifetime of the v1 contract.
  • Minor additions (a new optional field, a new builtin) are additive and never change the marker: no @minor bumps, no nika migrate for them.
  • There is no nika: v2 — ever: pre-1.0 grammar changes happen inside v1 (the pre-1.0 stability contract) · after engine 1.0.0 the grammar is additive only.
  • Anti-pattern: nika: v1.0 · nika: "1" · nika: 1.0. The value is exactly v1.