Skip to content

Run app Stylelint in CI; cover all apps in make typecheck and test - #1373

Merged
MaxGhenis merged 1 commit into
mainfrom
ci/stylelint-and-make-targets
Oct 20, 2026
Merged

MaxGhenis merged 1 commit into
mainfrom
ci/stylelint-and-make-targets

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Follow-up to #1366, which left two gaps.

Stylelint in CI

CI's Lint and format job ran bun run eslint in app/ but never bun run stylelint, which bun run lint (and so make lint) runs locally. This adds a Run Stylelint (app) step right after Run ESLint (app) in both pr.yaml and push.yaml.

bun run stylelint passes on current main (32a84b5). It covers one source file, app/src/app.css; the only other .css file under app/ is a post asset that .stylelintrc.json ignores. As a negative control, a probe file with an unknown property (colr: red) made it exit 2, so the step fails on real errors.

Make targets match CI

make typecheck and make test ran only in app/, while make lint and make format cover all three apps since #1366. Now:

  • make typecheck runs bun run typecheck in app/, website/ and calculator-app/, the same three steps as CI's Type checking job.
  • make test runs bun run test in app/ and website/, the same two steps as CI's Tests job. calculator-app/ has no test script.

make help now says what each covers, typecheck and test-all are added to .PHONY, and the before-committing steps in docs/engineering/skills/repository-guidance.md list both targets.

Invariants

  • The jobs: sections of pr.yaml and push.yaml are identical (checked with diff).
  • Each make typecheck / make test command is a step in the matching CI job, and vice versa.

Verification

Run locally at 294303e:

  • make typecheck: tsc --noEmit passes in app/, website/ and calculator-app/.
  • make test: app/ 436 test files, 5,326 tests passed (10 skipped); website/ 39 files, 337 tests passed.
  • make lint: ESLint and Stylelint in app/, ESLint in website/ and calculator-app/, all clean.

Independent review (GPT-6.1 Sol, Subfleet job 20261020-155944-pr1373-review, at 294303e): APPROVE, no blocking findings. It re-ran the workflow jobs: diff, actionlint, make -n, a fail-fast check of each target, the Stylelint negative control (with and without the cache), make typecheck and the website tests.

Not in this PR

Some older agent guidance is narrower than the Makefile; this PR didn't make any of it wrong:

  • .claude/commands/typecheck.md type-checks only app/.
  • .claude/agents/lint-format-validator.md doesn't mention Stylelint.
  • docs/engineering/skills/testing.md lists app commands without naming the directory.

CI's Tests job pins Node 26 (vitest runs on Node, and Intl number formatting differs between versions). make test uses whatever Node is installed locally (app/.nvmrc says 24.3.0), so the commands match CI but the runtime can differ.

🤖 Generated with Claude Code

CI's Lint and format job ran app's ESLint but never its Stylelint, which
`bun run lint` (and so `make lint`) runs locally. Add a Stylelint step
after ESLint (app) in both pr.yaml and push.yaml, keeping the two jobs
identical.

`make typecheck` and `make test` ran only in app/, while CI type-checks
app, website and calculator-app and tests app and website. Make the
targets match CI, say what they cover in `make help`, and list them in
the before-committing steps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
policyengine-calculator-next Ready Ready Preview Oct 20, 2026 8:00pm UTC
policyengine-website Ready Ready Preview Oct 20, 2026 8:00pm UTC

Request Review

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Merge audit for head 294303eb1e820d3f6f1c5a877f6237a3f40a0560:

  • CI: all checks pass on run 39488100714 (Lint and format, Type checking, Tests, Build, Check embedded site URLs) plus Visual regression, Storybook Publish and both Vercel deploys. The new Run Stylelint (app) step ran stylelint '**/*.css' --cache and succeeded (Lint and format job, step 7).
  • Independent review: GPT-6.1 Sol via Subfleet (job 20261020-155944-pr1373-review) at this head: APPROVE, no blocking findings.
  • Local: make typecheck, make test and make lint passed at this head.
  • mergeable: MERGEABLE; no change requests. The only block is the ruleset's one required approval, which the author can't give, so this is an admin merge with a merge commit, pinned to the reviewed head.

@MaxGhenis
MaxGhenis merged commit dc9c469 into main Oct 20, 2026
10 checks passed
@MaxGhenis
MaxGhenis deleted the ci/stylelint-and-make-targets branch October 20, 2026 20:21

This branch was successfully deployed

2 active deployments
Preview – policyengine-calculator-next — 294303eb Deployed Oct 20, 2026 by vercel[bot]
Preview – policyengine-website — 294303eb Deployed Oct 20, 2026 by vercel[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