← ClaudeAtlas

nika-operatinglisted

Operate Nika workflows day-2 — spend caps, permits boundaries, secrets, model swaps (cloud/local), CI wiring, trace export. Use when hardening a working workflow for production, wiring it into CI or a scheduler, capping cost, tightening the permits boundary, swapping models, or exporting traces to OpenTelemetry.
supernovae-st/nika-agents · ★ 2 · AI & Automation · score 65
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