From 582a0bfd147b86fa0153905e551829a4445ea5c5 Mon Sep 17 00:00:00 2001 From: Willie Chalmers III Date: Sun, 13 Sep 2026 11:06:13 -0700 Subject: [PATCH] chore(dx): Update the repository standard Adopt the current supply-chain pins, generated-output exclusions, repository validation task, and portable hook setup. Validate each pull request commit once. Co-authored-by: Codex --- .claude/settings.json | 2 +- .github/workflows/ci.yml | 2 - .markdownlint-cli2.jsonc | 4 ++ .prettierignore | 4 ++ AGENTS.md | 20 +++++----- package.json | 10 ++--- packages/example/package.json | 6 +-- pnpm-lock.yaml | 73 +++++++++++++++++++---------------- pnpm-workspace.yaml | 8 ++++ turbo.json | 3 ++ 10 files changed, 77 insertions(+), 55 deletions(-) diff --git a/.claude/settings.json b/.claude/settings.json index 7d31644..d41a309 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -4,7 +4,7 @@ "source": { "source": "github", "repo": "LasVegasForTransit/repository-tooling", - "ref": "v0.2.3" + "ref": "v0.2.7" } } }, diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0deecda..ca7a0cc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,8 +5,6 @@ name: CI on: pull_request: branches: [main] - push: - branches-ignore: [main] workflow_call: workflow_dispatch: diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc index c6ea4cc..14459ad 100644 --- a/.markdownlint-cli2.jsonc +++ b/.markdownlint-cli2.jsonc @@ -10,6 +10,10 @@ }, "globs": ["**/*.md"], "ignores": [ + // Playwright output. + "**/test-results", + "**/playwright-report", + ".claude/worktrees", "node_modules", "**/node_modules", "dist", diff --git a/.prettierignore b/.prettierignore index bd5535a..4e71e60 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,5 @@ pnpm-lock.yaml +.lvbt/web-platform/ +.claude/worktrees/ +# Generated by `wrangler types`; regenerate it, never hand-edit it. +**/worker-configuration.d.ts diff --git a/AGENTS.md b/AGENTS.md index 94edc86..a599239 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -7,16 +7,16 @@ command that fixes it (`pnpm check:fix` repairs everything a machine can). Every LVBT repository answers to the same commands: -| Command | What it does | -| --------------------- | --------------------------------------------------------------- | -| `pnpm bootstrap` | Install dependencies, wire git hooks, and run preflight | -| `pnpm preflight` | Confirm the machine can build and deploy this repository | -| `pnpm check` | Format check, then lint, typecheck, and tests through Turborepo | -| `pnpm check:fix` | Apply formatting and lint fixes | -| `pnpm build` | Build every package | -| `pnpm test` | Run every package's tests | -| `pnpm run deploy` | Build, then `wrangler deploy` every app (deployable repos) | -| `turbo gen workspace` | Scaffold a new package or app | +| Command | What it does | +| --------------------- | ---------------------------------------------------------- | +| `pnpm bootstrap` | Install dependencies, wire git hooks, and run preflight | +| `pnpm preflight` | Confirm the machine can build and deploy this repository | +| `pnpm check` | Format, docs, shape rules, lint, types, tests, repo checks | +| `pnpm check:fix` | Apply formatting and lint fixes | +| `pnpm build` | Build every package | +| `pnpm test` | Run every package's tests | +| `pnpm run deploy` | Build, then `wrangler deploy` every app (deployable repos) | +| `turbo gen workspace` | Scaffold a new package or app | ## Create GitHub issues and pull requests diff --git a/package.json b/package.json index f13fb0b..dc59496 100644 --- a/package.json +++ b/package.json @@ -10,19 +10,19 @@ "lint": "turbo run lint", "check-types": "turbo run check-types", "test": "turbo run test", - "test:e2e": "turbo run test:e2e", + "test:e2e": "turbo run test:e2e --concurrency=1", "format": "prettier --write .", "format:check": "prettier --check .", - "check": "pnpm format:check && markdownlint-cli2 && lvbt check && turbo run lint check-types test", + "check": "pnpm format:check && markdownlint-cli2 && lvbt check && turbo run lint check-types test validate", "check:fix": "pnpm format && markdownlint-cli2 --fix && turbo run lint -- --fix", - "prepare": "git config --local core.hooksPath .githooks" + "prepare": "git config --local core.hooksPath .githooks 2>/dev/null || true" }, "lint-staged": { "*": "prettier --write --ignore-unknown" }, "devDependencies": { - "@lvbt/cli": "github:LasVegasForTransit/repository-tooling#v0.2.3&path:/packages/cli", - "@lvbt/prettier-config": "github:LasVegasForTransit/repository-tooling#v0.2.3&path:/packages/prettier-config", + "@lvbt/cli": "github:LasVegasForTransit/repository-tooling#v0.2.7&path:/packages/cli", + "@lvbt/prettier-config": "github:LasVegasForTransit/repository-tooling#v0.2.7&path:/packages/prettier-config", "lint-staged": "catalog:", "markdownlint-cli2": "catalog:", "markdownlint-rule-relative-links": "catalog:", diff --git a/packages/example/package.json b/packages/example/package.json index 4a4f1a5..c98ccbd 100644 --- a/packages/example/package.json +++ b/packages/example/package.json @@ -16,9 +16,9 @@ "test": "vitest run" }, "devDependencies": { - "@lvbt/eslint-config": "github:LasVegasForTransit/repository-tooling#v0.2.3&path:/packages/eslint-config", - "@lvbt/typescript-config": "github:LasVegasForTransit/repository-tooling#v0.2.3&path:/packages/typescript-config", - "@lvbt/vitest-config": "github:LasVegasForTransit/repository-tooling#v0.2.3&path:/packages/vitest-config", + "@lvbt/eslint-config": "github:LasVegasForTransit/repository-tooling#v0.2.7&path:/packages/eslint-config", + "@lvbt/typescript-config": "github:LasVegasForTransit/repository-tooling#v0.2.7&path:/packages/typescript-config", + "@lvbt/vitest-config": "github:LasVegasForTransit/repository-tooling#v0.2.7&path:/packages/vitest-config", "@types/node": "catalog:", "eslint": "catalog:", "typescript": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f9e402..c5fbed2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,16 +34,21 @@ catalogs: specifier: 4.1.11 version: 4.1.11 +overrides: + sharp: 0.35.4 + smol-toml: 1.8.0 + svgo: 4.1.0 + importers: .: devDependencies: '@lvbt/cli': - specifier: github:LasVegasForTransit/repository-tooling#v0.2.3&path:/packages/cli - version: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/cli + specifier: github:LasVegasForTransit/repository-tooling#v0.2.7&path:/packages/cli + version: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/cli '@lvbt/prettier-config': - specifier: github:LasVegasForTransit/repository-tooling#v0.2.3&path:/packages/prettier-config - version: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/prettier-config(prettier@3.9.6) + specifier: github:LasVegasForTransit/repository-tooling#v0.2.7&path:/packages/prettier-config + version: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/prettier-config(prettier@3.9.6) lint-staged: specifier: 'catalog:' version: 17.4.1 @@ -66,14 +71,14 @@ importers: packages/example: devDependencies: '@lvbt/eslint-config': - specifier: github:LasVegasForTransit/repository-tooling#v0.2.3&path:/packages/eslint-config - version: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/eslint-config(eslint@10.9.1)(turbo@2.10.12)(typescript@6.0.3) + specifier: github:LasVegasForTransit/repository-tooling#v0.2.7&path:/packages/eslint-config + version: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/eslint-config(eslint@10.9.1)(turbo@2.10.12)(typescript@6.0.3) '@lvbt/typescript-config': - specifier: github:LasVegasForTransit/repository-tooling#v0.2.3&path:/packages/typescript-config - version: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/typescript-config + specifier: github:LasVegasForTransit/repository-tooling#v0.2.7&path:/packages/typescript-config + version: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/typescript-config '@lvbt/vitest-config': - specifier: github:LasVegasForTransit/repository-tooling#v0.2.3&path:/packages/vitest-config - version: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/vitest-config(vitest@4.1.11(@types/node@24.13.3)(vite@8.2.2(@types/node@24.13.3)(yaml@2.9.0))) + specifier: github:LasVegasForTransit/repository-tooling#v0.2.7&path:/packages/vitest-config + version: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/vitest-config(vitest@4.1.11(@types/node@24.13.3)(vite@8.2.2(@types/node@24.13.3)(yaml@2.9.0))) '@types/node': specifier: 'catalog:' version: 24.13.3 @@ -237,32 +242,32 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@lvbt/cli@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/cli': - resolution: {gitHosted: true, path: /packages/cli, tarball: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a} - version: 0.2.0 + '@lvbt/cli@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/cli': + resolution: {gitHosted: true, path: /packages/cli, tarball: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa} + version: 0.2.7 engines: {node: '>=24'} hasBin: true - '@lvbt/eslint-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/eslint-config': - resolution: {gitHosted: true, path: /packages/eslint-config, tarball: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a} - version: 0.2.0 + '@lvbt/eslint-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/eslint-config': + resolution: {gitHosted: true, path: /packages/eslint-config, tarball: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa} + version: 0.2.7 peerDependencies: eslint: '>=10' typescript: '>=5.9' - '@lvbt/prettier-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/prettier-config': - resolution: {gitHosted: true, path: /packages/prettier-config, tarball: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a} - version: 0.2.0 + '@lvbt/prettier-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/prettier-config': + resolution: {gitHosted: true, path: /packages/prettier-config, tarball: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa} + version: 0.2.7 peerDependencies: prettier: '>=3' - '@lvbt/typescript-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/typescript-config': - resolution: {gitHosted: true, path: /packages/typescript-config, tarball: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a} - version: 0.2.0 + '@lvbt/typescript-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/typescript-config': + resolution: {gitHosted: true, path: /packages/typescript-config, tarball: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa} + version: 0.2.7 - '@lvbt/vitest-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/vitest-config': - resolution: {gitHosted: true, path: /packages/vitest-config, tarball: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a} - version: 0.2.0 + '@lvbt/vitest-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/vitest-config': + resolution: {gitHosted: true, integrity: sha512-M6M3mzTrNOzG73DvDUnzfqq/8Wbo7m+Uds+RNy4O/59fVqcYrW/3DugL3g3jRNdTiqOgwAf53pGWdTdcpDD0Uw==, path: /packages/vitest-config, tarball: https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa} + version: 0.2.7 peerDependencies: vitest: '>=4' @@ -1249,8 +1254,8 @@ packages: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} - smol-toml@1.7.0: - resolution: {integrity: sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==} + smol-toml@1.8.0: + resolution: {integrity: sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ==} engines: {node: '>= 18'} source-map-js@1.2.1: @@ -1635,9 +1640,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.6.0 - '@lvbt/cli@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/cli': {} + '@lvbt/cli@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/cli': {} - '@lvbt/eslint-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/eslint-config(eslint@10.9.1)(turbo@2.10.12)(typescript@6.0.3)': + '@lvbt/eslint-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/eslint-config(eslint@10.9.1)(turbo@2.10.12)(typescript@6.0.3)': dependencies: '@eslint-community/eslint-plugin-eslint-comments': 4.7.2(eslint@10.9.1) '@eslint/js': 10.0.1(eslint@10.9.1) @@ -1653,13 +1658,13 @@ snapshots: - supports-color - turbo - '@lvbt/prettier-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/prettier-config(prettier@3.9.6)': + '@lvbt/prettier-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/prettier-config(prettier@3.9.6)': dependencies: prettier: 3.9.6 - '@lvbt/typescript-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/typescript-config': {} + '@lvbt/typescript-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/typescript-config': {} - '@lvbt/vitest-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/9bb6856aed854448ed664455206ec2fcd67eb44a#path:/packages/vitest-config(vitest@4.1.11(@types/node@24.13.3)(vite@8.2.2(@types/node@24.13.3)(yaml@2.9.0)))': + '@lvbt/vitest-config@https://codeload.github.com/LasVegasForTransit/repository-tooling/tar.gz/6f34bbba529a8ee53badbe6a1696658a0e0411aa#path:/packages/vitest-config(vitest@4.1.11(@types/node@24.13.3)(vite@8.2.2(@types/node@24.13.3)(yaml@2.9.0)))': dependencies: vitest: 4.1.11(@types/node@24.13.3)(vite@8.2.2(@types/node@24.13.3)(yaml@2.9.0)) @@ -2344,7 +2349,7 @@ snapshots: markdownlint: 0.41.1 markdownlint-cli2-formatter-default: 0.0.6(markdownlint-cli2@0.23.2) micromatch: 4.0.8 - smol-toml: 1.7.0 + smol-toml: 1.8.0 transitivePeerDependencies: - supports-color @@ -2675,7 +2680,7 @@ snapshots: slash@5.1.0: {} - smol-toml@1.7.0: {} + smol-toml@1.8.0: {} source-map-js@1.2.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 21c566d..c4b29ca 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -13,11 +13,19 @@ allowBuilds: # that is compromised and yanked the same day never reaches a repository. minimumReleaseAge: 1440 +# Temporary transitive pins for published security fixes not yet selected by +# their direct dependents. +overrides: + sharp: 0.35.4 + smol-toml: 1.8.0 + svgo: 4.1.0 + # The organization version baseline. Every LVBT repository carries this same # catalog, so a package declares "catalog:" and two repositories cannot drift # onto different versions of one tool without it showing up as a change here. # Renovate keeps it current. catalog: + '@axe-core/playwright': 4.13.0 '@astrojs/check': 0.9.10 '@astrojs/sitemap': 3.7.4 '@cloudflare/vitest-pool-workers': 0.22.0 diff --git a/turbo.json b/turbo.json index e861fb0..d8b7860 100644 --- a/turbo.json +++ b/turbo.json @@ -17,6 +17,9 @@ "test": { "dependsOn": ["^build"] }, + "validate": { + "dependsOn": ["^build"] + }, "test:e2e": { "dependsOn": ["build"], "cache": false,