AGPL-3.0-or-later · forever.

the language

with

Task-level scope injection · `${{ with.X }}`. One of 59 words the served contract declares, projected from workflow.schema.json, the same file your editor validates against.

  • 1surfacetask
  • optionaleverywherea choice, never a miss
  • objecttypethe declared shape
  • 13skeletonscarry this key

the contract

1 declaration

the wiring · this key DECLARES an edge, so it wears the same ink as the reference it introduces · the binding and the arrow are one fact

Descriptions are the schema's own; the deeper invariants (value languages and regexes) ride the same projection. A miss is a nika check finding before anything runs.

task
objectTask-level scope injection · `${{ with.X }}`.one step of the plan

in a real file

from the chain skeleton
chain.nika.yaml
  think:    with:      gather: ${{ tasks.gather.output }}    infer:      max_tokens: 800               # SLOT: the spend ceiling · sized for the SEAT, not the answer      # The marker below is a VALUE, not a comment. The parser drops      # comments, so a `# SLOT:` line could never make `check` refuse —      # which is how an unfilled scaffold ran green and left a file that      # read like a result (#1066). Replace the line, keep the binding.      prompt: |        <SLOT: what should the model do with the gathered text?>        ${{ with.gather }}

a verbatim slice, real line numbers from chain.nika.yaml, conformance-gated upstream on every spec push. open the full skeleton →

cross-references

defined by

The whole grammar in one place: the four verbs · the standard library · the spec. Try it in the playground. Read the reference →