chore(quality): Biome + strict TypeScript scaffolding and CI - #12
Merged
Conversation
…-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
approved these changes
Jul 7, 2026
This was referenced Jul 22, 2026
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.
Sets up code-quality tooling copied from prisma-next's standards, plus CI to run the checks.
Tooling
prisma-next/anddocs/(reference snapshots).exactOptionalPropertyTypes,noUncheckedIndexedAccess,noPropertyAccessFromIndexSignature,noUnusedLocals, …). Each package tsconfig extends it.format,lint,lint:fix; devDeps@biomejs/biome,husky,lint-staged,typescript.CI
.github/workflows/ci.ymlruns on every PR (and push tomain):pnpm lint(Biome check)pnpm typecheckpnpm 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
deployedUrlwhen the API returns no value). lint, typecheck, and tests all pass locally.🤖 Generated with Claude Code