lbliii/Kida Report

Render CI reports from structured data using kida templates as GitHub step summaries and PR comments.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jul 10, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: lbliii/kida@2479177568a5f9e3b0208db9dccb749a50081d22 # v0.11.0

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
templateBuilt-in template name or path to a custom template file. Built-ins: pytest, coverage, ruff, ty, jest, gotest, sarif, release-notes, release-notes-compact, release-notes-detailed, release-notes-terminal, code-review, pr-summary, deploy-preview, dependency-review, security-scan, copilot-instructions. yes
dataPath to a data file (JSON, JUnit XML, etc.) or "auto" to collect data from the GitHub API (only for data-format: github-prs). yes
data-formatFormat of the data file (json, junit-xml, sarif, lcov, github-prs). github-prs collects merged pull requests between two git refs via the GitHub API and produces JSON for release-notes templates. nojson
post-toWhere to post the rendered report. Comma-separated list of targets: step-summary, pr-comment, release, release-asset, slack, changelog. nostep-summary
base-refBase git ref for github-prs collection (tag, branch, or SHA). When omitted, auto-detects the previous tag. no""
head-refHead git ref for github-prs collection. Default: current ref. no""
release-tagTag name for the GitHub Release when post-to includes "release" or "release-asset". Required for those targets. no""
asset-nameFilename for the release asset when post-to includes "release-asset". Default: "release-notes.md". norelease-notes.md
slack-webhookSlack incoming webhook URL for post-to: slack. The rendered report is sent as the message text. no""
changelog-pathPath to the CHANGELOG.md file for post-to: changelog. The rendered content is prepended under the [Unreleased] heading. noCHANGELOG.md
render-modeKida rendering mode: markdown (default), terminal, html. Terminal mode enables ANSI colors and terminal filters. nomarkdown
comment-headerHeader text used to identify the PR comment for updates. When posting to pr-comment, existing comments with this header are replaced instead of creating duplicates. Defaults to the template name. no""
tokenGitHub token for posting PR comments. Only needed when post-to includes pr-comment. Ignored when app-id is provided.no${{ github.token }}
app-idGitHub App ID for posting PR comments with a branded identity. When provided (along with app-private-key), a short-lived token is generated automatically and used instead of the token input. no""
app-private-keyPrivate key (PEM) for the GitHub App. Required when app-id is set. no""
python-versionPython version to use (3.14+). Set to "skip" to skip Python setup.no3.14
installWhether to install kida via pip. Set to "false" if kida is already available.notrue
kida-commandCommand to invoke kida (e.g., "uv run kida" for local dev). Default: "kida".nokida
fail-underOptional numeric threshold. If the data contains a top-level percent_covered (coverage) or a computed pass rate (junit-xml) below this value, the step fails. Ignored when empty. no""
comment-modeHow to handle existing PR comments with the same header. "replace" overwrites the comment (default). "append" adds a new section below the existing content, useful for combining multiple reports into one comment. noreplace
contextOptional JSON string with extra template variables merged into the data context. Example: '{"changed_files": ["src/foo.py", "src/bar.py"]}' no""
namedescription
reportThe rendered markdown report content
comment-idThe ID of the created/updated PR comment (if post-to includes pr-comment)
data-filePath to the collected data JSON (github-prs only). Reuse in subsequent steps.