AGPL-3.0-or-later · forever.

the standard library

nika:edit

In-place literal find/replace (all occurrences · count caps it). NOT regex. One of 28 builtins in the closed nika: namespace.

the file familyworkspace files: read, write, search (permits.fs-gated)

  • filefamily5 tools
  • 4argsdeclared contract
  • 3requiredcheck teaches a miss
  • craftedusage filecheck-green below

the contract

4 args · 3 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.

path*
stringfile to edit
find*
stringthe literal string to find
replace*
stringthe replacement
count
integercap replacements

in a real file

a complete workflow
edit.nika.yaml
nika: v1workflow:  id: bump-log-level  description: "literal find/replace in place — not regex, no surprises"permits:  fs:    read: ["./config.toml"]    write: ["./config.toml"]  exec: false  tools: ["nika:edit"]tasks:  bump:    invoke:      tool: "nika:edit"      args:        path: "./config.toml"        find: 'level = "info"'        replace: 'level = "debug"'        count: 1outputs:  changed: ${{ tasks.bump.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 file family

5 tools

workspace files: read, write, search (permits.fs-gated).

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 →