Skip to content

chore(quality): Biome + strict TypeScript scaffolding and CI - #12

Merged
wmadden-electric merged 2 commits into
mainfrom
claude/frosty-pasteur-f9e0c9
Jul 7, 2026
Merged

chore(quality): Biome + strict TypeScript scaffolding and CI#12
wmadden-electric merged 2 commits into
mainfrom
claude/frosty-pasteur-f9e0c9

Conversation

@wmadden-electric

Copy link
Copy Markdown
Contributor

Sets up code-quality tooling copied from prisma-next's standards, plus CI to run the checks.

Tooling

  • biome.jsonc — formatter (single quotes, semicolons, 100 cols) + linter rules from prisma-next. Excludes prisma-next/ and docs/ (reference snapshots).
  • tsconfig.base.json — shared strict flags (exactOptionalPropertyTypes, noUncheckedIndexedAccess, noPropertyAccessFromIndexSignature, noUnusedLocals, …). Each package tsconfig extends it.
  • husky pre-commit + lint-staged — biome format/check on staged files.
  • Root scripts: format, lint, lint:fix; devDeps @biomejs/biome, husky, lint-staged, typescript.

CI

.github/workflows/ci.yml runs on every PR (and push to main):

  • lintpnpm lint (Biome check)
  • typecheckpnpm typecheck
  • testpnpm test (bun via turbo)

Toolchain provisioned via mise (node + bun from .tool-versions) + pnpm.

Fallout fixed

Formatted the tree and fixed ~20 pre-existing errors the strict flags surfaced (index-signature access, unchecked index access, exactOptional property spreads — notably the Deployment provider omitting deployedUrl when the API returns no value). lint, typecheck, and tests all pass locally.

🤖 Generated with Claude Code

wmadden-electric and others added 2 commits July 7, 2026 19:36
…-next

Set up code-quality tooling copied from prisma-next's standards:

- biome.jsonc: formatter (single quotes, semicolons, 100 cols) and linter
  rules (noExplicitAny, useImportType, organizeImports, etc). Drops
  prisma-next's contract-specific grit plugin; excludes prisma-next/ and
  docs/ (third-party reference snapshots).
- tsconfig.base.json: shared strict compiler flags (exactOptionalPropertyTypes,
  noUncheckedIndexedAccess, noPropertyAccessFromIndexSignature, noUnusedLocals,
  etc). Each package tsconfig now extends it, keeping only lib/types/include.
- husky pre-commit + lint-staged: biome format/check on staged files.
- Root scripts: format, lint, lint:fix; devDeps @biomejs/biome, husky,
  lint-staged, typescript.

Formatted the tree and fixed the ~20 pre-existing errors the strict flags
surfaced (index-signature access, unchecked index access, exactOptional
property spreads). Notably the Deployment provider returned
`deployedUrl: string | undefined` for an optional attribute; now it omits the
key when the API returns no value, satisfying exactOptionalPropertyTypes.
lint, typecheck, and tests all pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: willbot <w.a.madden+machine@gmail.com>
Signed-off-by: Will Madden <madden@prisma.io>
Add a GitHub Actions CI workflow that runs the quality checks on every pull
request (and pushes to main):

- lint: `pnpm lint` (Biome check — formatting + lint rules)
- typecheck: `pnpm typecheck` (tsc --noEmit across packages/examples)
- test: `pnpm test` (bun test via turbo)

A composite setup action installs the toolchain via mise (node + bun from
.tool-versions) and pnpm, and caches the pnpm store. Adds bun to
.tool-versions so CI (and mise locally) provision it for the test run.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: willbot <w.a.madden+machine@gmail.com>
Signed-off-by: Will Madden <madden@prisma.io>
@wmadden-electric
wmadden-electric merged commit 4d1e715 into main Jul 7, 2026
3 checks passed
@wmadden-electric
wmadden-electric deleted the claude/frosty-pasteur-f9e0c9 branch July 7, 2026 18:03
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.

2 participants