nika-operatinglisted
Install: claude install-skill supernovae-st/nika-agents
# Operating Nika workflows
Authoring makes a file pass `nika check`. Operating makes it safe to
run unattended: bounded spend, a declared blast radius, masked
credentials, a model you chose, and a journal you can export.
## Spend (the envelope is part of the contract)
- `nika check <file>` prints the cost BEFORE any token: `≤ $X` is a
ceiling · `≥ $X FLOOR` means at least one task is unbounded — fix
the reason (a missing `max_tokens`, an uncataloged model, an
expression fan-out), never ship a floor to production.
- Cap the run: `nika run <file> --max-cost-usd <n>` blocks BEFORE the
call that would cross the cap.
- A local model is **unpriced compute, not free** — say "unpriced",
never "$0".
## Permits (declare the blast radius)
```
nika check <file> --infer-permits
```
prints the tightest `permits:` block the workflow needs — paste it
into the file. From then on the boundary is default-deny: a new host,
path or tool must be added consciously, in a reviewable diff. Permits
are data, not config — they travel with the file through PR review.
## Secrets (masked, declared, sunk)
- Every credential rides `${{ secrets.X }}`, declared in the
`secrets:` block (`source: env` + `key: VAR_NAME`) with its
`egress:` sinks — the engine masks it in logs and refuses to send
it anywhere but the declared sinks.
- **The taint FLOWS**: the output of a task that used a secret is
secret-derived, and every downstream sink it reaches needs its own
`egress:` entry. An authe