the standard library
nika:prompt
Ask a human (confirm|input|choice). Blocks until answered; uses default when headless. One of 28 builtins in the closed nika: namespace.
the core familycontrol flow and run-stream primitives
- corefamily6 tools
- 4argsdeclared contract
- 1requiredcheck teaches a miss
- 2skeletonsship this tool
the contract
4 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.
- mode
stringconfirm (default) | input | choice- message*
stringthe question- choices
arraychoice mode only- default
- fallback when no human can answer
in a real file
from the etl-state skeleton # NEP-0002 · the Rule of Two, as a check. This run holds all three legs at # once: it reads a private file, ingests UNTRUSTED network content, and # persists that content into the very file the NEXT run reads as trusted # state. One human decision has to dominate EVERY path to that write — so the # gate sits before the first network touch, not next to the write (a gate the # fetch can route around dominates nothing). Blocking on purpose: a `default:` # here would disarm it, and the checker knows — measured, adding `default:` # flips TRIFECTA to `✖ NIKA-SEC-009 lethal trifecta complete`. approve: invoke: tool: "nika:prompt" args: message: "Fetch ${{ const.source_url }} and persist it into ${{ const.state_path }}?"a verbatim excerpt, real line numbers from etl-state.nika.yaml, conformance-gated upstream on every spec push. open the full skeleton →
cross-references
ships in skeletons
the check gates
the core family
6 toolscontrol flow and run-stream primitives.
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 →