feat: GitHub Action with sticky PR summary comment - #38
Merged
Conversation
Runs @docker-doctor/cli --json, renders the report into a marker-based sticky comment (errors expanded, warnings/info collapsed), mirrors it to the job summary, and enforces an advisory-by-default gate (blocking: none | warning | error) that only ever fails pull requests. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
|
The latest Docker Doctor scan for this pull request. Learn more about Docker Doctor.
Score: 84 / 100 · 3 issues
Scanned by Docker Doctor for commit |
Per-file rows (File / Status / Issues / Updated) with colored status dots, worst-severity-first ordering, an overflow <details> past 20 rows, and all findings in one collapsible section that auto-expands when errors exist. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Same approach as Vercel's bot comments (vercel.com/static/status/ready.svg): 10x10 circle SVGs served from the site, colored to match the badge palette. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
**Score:** 84 / 100 · [dot] Good — same dot+word pattern as the table's Status column, with per-bucket dots matching the badge palette. The CLI label's emoji is stripped for the comment. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- fileRow tracks the worst severity by name instead of reverse-mapping a rank number through SEVERITY_RANK - one groupByFile helper replaces the two hand-rolled Map-building loops - one stepOutputs helper replaces the duplicated output shapes in renderFailure and renderReport - renderReport counts severities instead of keeping filtered arrays it only ever measured Rendered output verified byte-identical across all five report shapes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Same /share?s=&w=&e= URL the CLI prints after a terminal scan. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The pending patch changeset makes the next release 0.3.2, and release.yml now pushes v<version> automatically — no manual v0.3.1 tag needed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ction The README now links to /docs/guides/github-actions (quick start, inputs, outputs, gating, versioning) instead of inlining the workflow, matching how the rest of the CLI surface is documented. Reword the changeset. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The wizard previously wrote a workflow invoking 'bunx docker-doctor' — an npm package that does not exist — with no permissions and no PR comment. It now writes the docs quick-start workflow using the GitHub Action, pinned to the CLI's own version (the lockstep tag always exists). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Each publish now moves two tags: the exact v<version> for reproducible pins and a floating major (v0, later v1) that tracks the latest release. Docs and the wizard scaffold reference the floating tag so consumers pick up action fixes without editing their workflows. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The status dots are served from the same site, so the docs can render the comment's table, score line, and findings natively instead of a screenshot. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Status dots next to a text label get empty alt so screen readers stop announcing the severity twice; finding-line dots keep their alt as the sole severity cue (comment renderer + docs mock) - The docs job-summary note now says a push trigger is needed for push-run summaries instead of implying the pull_request-only quick start produces them - Docs mock links point at the live example comment on PR #38 instead of a self-referencing anchor - Wizard success copy no longer zeugmas ('gets a scan and a sticky summary comment') Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Match react.doctor's approach: a short list of what the comment contains plus a link to a live example PR, rather than a rendered replica that has to track the real design. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A hand-built mock of the PR comment — bot header, per-file status rows, score line, one finding with its rule chip — framed like the other landing cards, with a footer link to the live example on PR #38. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
|
React Doctor found no new issues. 🎉 Reviewed by React Doctor for commit |
The mock stays drawn at a fixed 740x357 and scales to the container width via container-query units (tan(atan2()) divides the two lengths into a plain ratio), so no horizontal scrolling at any viewport. The See docs link gets an expanded hit area to stay tappable when scaled. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Use the @container and aspect-740/357 shorthands, the scale-[...] utility, shadow-border in place of explicit border declarations, and from-85% without brackets. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
PunGrumpy
force-pushed
the
feat/github-action
branch
from
August 10, 2026 15:18
3a1ffc5 to
60a50e0
Compare
Drop the gradient overlay (it doubled the card's shadow-border ring) and the card background, leaving the shadow-border rings to carry the structure in both appearances. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a composite GitHub Action (
PunGrumpy/docker-doctor@v0) so any repo can scan Dockerfiles/Compose files on every PR and get a sticky summary comment.action.yml(repo root) — sets up Node, runsnpx @docker-doctor/cli --jsoninto a report file, renders, comments, and enforces the gate. Inputs:directory,version,blocking(none/warning/error, advisory by default),comment,config. Outputs:score,label, per-severity counts. Third-party actions are SHA-pinned.scripts/render-github-action-comment.mjs— report → comment: intro line, per-file status table (File / Status / Issues / Updated (UTC)) with SVG status dots sorted worst-first, overflow rows collapsed past 20, a score line linking to the share page, and all findings in one<details>that auto-expands when errors exist. Marker first line for upsert; mirrors to job summary; crash-safe. Dots next to a text label carry empty alt so screen readers don't announce the severity twice./status/*.svg— severity dots (error#ee0000, warning#dfb317, info#0969da, clean#4c1) plus score-bucket dots matching the badge palette. They render once the web app deploys to production (after merge).pull_requestevents can fail, pushes are always advisory.release.ymlmoves an exactv<version>tag plus a floating major (v0, laterv1) on every publish. Docs and the wizard scaffold reference@v0; no manual tagging needed./docs/guides/github-actionspage (quick start, what the comment shows + live example link, inputs, outputs, gating, versioning); the README CI section is a two-line pointer to it. The CLI's post-scan wizard now scaffolds the action-based workflow (it previously wrote a brokenbunx docker-doctorone).no-secrets-in-envfinding) drawn at 740×357 and scaled to the container via container-query units, so it fits every viewport without horizontal scrolling.packages/docker-doctor/test/fixtures/with-erroron every PR — the sticky comment on this PR is the live end-to-end test.Test plan
bun x ultracite checkclean; pre-commit build/tests/typecheck pass; all PR checks greenAfter merge
release.ymlpushes tagsv0.3.2+v0, Vercel deploys the status dot SVGs and the new pages🤖 Generated with Claude Code