Skip to content

feat(pr-checks): add opt-in design-lint step for oxlint + @shadcn/lint - #35

Merged
azlekov merged 1 commit into
mainfrom
feat/design-lint-step
Sep 14, 2026
Merged

azlekov merged 1 commit into
mainfrom
feat/design-lint-step

Conversation

@azlekov

@azlekov azlekov commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

What

Adds an optional design-lint input, threaded through actions/setup-stack and .github/workflows/pr-checks.yml, that runs a design-system verifier (oxlint hosting @shadcn/lint) as its own step, right after Lint, on the light pool.

Why a separate step, not folded into lint

  • Its own exit code — a design-lint failure shouldn't be indistinguishable from a regular lint failure in the job log.
  • Its own ratchet — the caller's command carries --max-warnings N, tightened independently of whatever the stack's own lint threshold is.

Caller example

with:
  stack: bun
  design-lint: bun run lint:design --format=github

Backward compatibility

design-lint defaults to "" in both setup-stack and pr-checks.yml, and setup-stack has no @stack fallback for it (no stack has a conventional design-lint command, so the resolved command is empty unless the caller sets one explicitly). The step's if: is steps.setup.outputs.design-lint != '', so it is skipped entirely for every existing @v1 caller. No existing input was renamed, removed, or reordered.

Changes

  • actions/setup-stack/action.yml: new design-lint input + output, resolved through the existing pick/emit machinery.
  • .github/workflows/pr-checks.yml: new workflow_call input design-lint; wired through setup-stack and added as a Design lint step in both the split (checks) and single-job (all) shapes.
  • README.md: new "Design lint" subsection under "Stacks".
  • .github/workflows/self-test.yml: not touched — it does not enumerate setup-stack/pr-checks inputs or outputs, so there was nothing to update there.

Validation

  • python3 -c "import yaml; yaml.safe_load(open(...))" — both changed files parse.
  • actionlint (installed locally) — run over the whole repo; zero findings against the two changed files (the only findings are pre-existing, in release.yml, which this PR does not touch).

🤖 Generated with Claude Code

Adds an optional design-lint input to setup-stack and pr-checks.yml, running
after Lint on the light pool. It is a separate step rather than folded into
lint because it has its own exit code and its own ratchet (the caller adds
--max-warnings N to its command as the count comes down).

Default is "" (skip), with no "@stack" fallback since no stack has a
conventional design-system lint command. Every existing @v1 caller is
therefore unaffected until it opts in with e.g.:

  design-lint: bun run lint:design --format=github

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@azlekov
azlekov merged commit ef05eb5 into main Sep 14, 2026
1 check passed
@azlekov
azlekov deleted the feat/design-lint-step branch September 14, 2026 19:02
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.7.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant