bronsonaber/Muninn Context Receipt

Posts (or updates) a redacted, reviewer-readable Context Receipt comment on AI-authored pull requests: a context audit of the repo's context surfaces (CLAUDE.md, AGENTS.md, .cursor/rules, etc.), never a code-quality or security approval. Runs entirely inside your own Actions runner; nothing leaves your repo except the comment it posts to your own PR via your own token.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Stale
License
None
namedescriptionrequireddefault
ai-authored-labelPR label (exact match, case-insensitive) that marks a PR as AI-authored. Set to '' to disable this signal.noai-authored
ai-authored-author-globComma-separated glob pattern(s) (fnmatch syntax) matched against the PR author's login, e.g. "*-bot,claude[bot]". Empty (default) disables this signal.no""
ai-authored-trailerA commit-message trailer/marker (substring match) on the PR's head commit that marks it AI-authored, e.g. "Co-Authored-By: Claude". Checked via a local `git log` on the checked-out PR head, no network call. Empty (default) disables this signal.no""
pathPath (relative to the repo root) Muninn scans for context surfaces.no.
github-tokenToken used to read the PR's labels/author and to post/update the receipt comment. Defaults to the workflow's own GITHUB_TOKEN. MANDATED MINIMAL PERMISSIONS for the calling workflow: this token needs, and must be scoped to, exactly permissions: pull-requests: write contents: read Do not grant broader permissions (e.g. `contents: write`, `issues: write`, or a blanket `write-all`) to the job that runs this action -- it only ever reads repo files locally and posts/edits one PR comment via the issues-comments endpoint.no${{ github.token }}
python-versionPython version used to run Muninn. Server mode installs one dependency (cryptography) for ed25519 signing; local mode is pure stdlib.no3.12
server-urlOrigin of a Muninn scoring server (e.g. "https://muninn-edge.bronson-aber.workers.dev"). REQUIRED: this client only runs in SERVER MODE. It assembles and signs a redacted bundle locally and hands scoring to the configured server; it has no local scoring engine. If left empty, the action fails immediately with a clear error instead of attempting anything else.no""
server-pubkeyThe scoring server's own ed25519 public key (PEM), pinned client-side so a returned receipt can be verified before it is ever posted. Only used in SERVER MODE (see server-url). Not secret: safe to store as a plain repo variable or a committed value.no""
client-key-idThis repo's own registered client key id, produced by `python3 -m shadow.keygen` (see shadow/keygen.py) and paired with client-private-key below. Only used in SERVER MODE. Not secret.no""
client-private-keyThis repo's own ed25519 CLIENT PRIVATE KEY (PEM), generated once by `python3 -m shadow.keygen` and registered public-key-only with the scoring server (see PROVISIONING.md). This value is sensitive: pass it via a repo (or org) secret you create yourself, named MUNINN_CLIENT_PRIVATE_KEY_PEM, a repo (or org) secret you create yourself -- never commit it and never pass it as a plain input literal. If this and client-key-id are both left empty while server-url is set, the client falls back to a fresh EPHEMERAL keypair for this run only, which is unregistered and will be rejected by the server; a clear notice is logged so that failure reads as understandable, not mysterious. A real deployment always configures both.no""

no outputs