supernovae-st/nika-action
turns every PR that touches a .nika.yaml into a reviewed plan: a sticky
comment with the nika check verdict, the cost floor (never a fake zero),
the models and secrets the change needs, its egress statics, and the DAG —
rendered natively by GitHub as mermaid.
nika new chain flows/report.nika.yaml scaffolds
one — authoring in 10 minutes.
Already have CI? One line
The starter repo publishes a reusable workflow that wraps the action with the same fork-safe posture — adopting the check in an existing repo is a singleuses: block:
nika-actions-starter
is a template repo — Use this template, and the verdict lands on your
first PR with zero further wiring. Its own pull requests run the check
live, so you can read a real sticky comment before adopting anything.
What lands on the PR
✅ nika check — clean ·One comment per workflow file, upserted in place on every push — never thread spam.flows/report.nika.yaml· 3 task(s) · 3 wave(s) 💰 **cost floor ≥ 0 🔐 requires — models:ollama/qwen3.5:4b·mistral/mistral-small-latest· secrets:MISTRAL_API_KEY🌊 schedule — 3 wave(s), max width 1 🗺 DAG (collapsible mermaid)
The lanes — and the missing one
Security posture
- The engine download is verified against the release’s
SHA256SUMSbefore extraction. - Fork PRs carry a read-only token: the comment degrades to the step
summary automatically. Never wire any of this via
pull_request_targetwith a checkout of the PR head. - Pin the action itself by commit SHA — the marketplace norm.
Honesty semantics
The comment’s cost figure is a floor (spend ≥ floor); unpriced tasks
render as unpriced with their reason verbatim, never $0. When the DAG
has parallel waves the comment states the budget bound explicitly: a
mid-run --max-cost-usd stops new admissions, so the worst-case
overshoot is one full wave (spend ≤ floor + W · c_max). The full
semantics: cost honesty.