Repository navigation
Migrate tooling to oxlint, TypeScript 7 and pnpm 11 - #17
Conversation
Sync tooling with the updated agentic-monorepo-starter template. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4ff9e32228
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "lint": "oxlint --type-aware --report-unused-disable-directives", | ||
| "lint:fix": "oxlint --type-aware --report-unused-disable-directives --fix", |
There was a problem hiding this comment.
Enable JavaScript plugins in the lint commands
Both pnpm lint commands omit Oxlint's --js-plugins switch (oxlint --help describes it as “Enable JavaScript plugins”), even though .oxlintrc.json registers the local logger plugin and enables logger/no-template-literal. In CI and local runs, Oxlint therefore cannot load that rule and the lint command fails on the unknown plugin rule instead of checking the repository; add --js-plugins to both scripts.
AGENTS.md reference: AGENTS.md:L49-L50
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Not needed: oxlint 1.80 has no --js-plugins switch (oxlint --help lists none). The plugin is loaded from jsPlugins in .oxlintrc.json — the lint CI job passes on this PR, and a local probe with logger.info(x) reports logger(no-template-literal) under the current script.
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
A critical Playwright installation issue and a moderate logger-plugin compatibility issue remain unresolved.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 1
Open (1)
What changed in this PR
Migrates repository tooling from ESLint to oxlint, while upgrading TypeScript to 7 and pnpm to 11.
Changes:
- Adds type-aware oxlint configuration and a tested logger plugin.
- Updates TypeScript, pnpm catalogs, build permissions, and release-age controls.
- Refreshes CI caching, editor settings, documentation, and lint suppressions.
| File | Summary | Review note |
|---|---|---|
tsconfig.json |
Updates TypeScript 7 configuration and paths. | — |
src/tools/write-file/write-file-tool.test.ts |
Migrates lint suppression comments. | — |
src/tools/utils/html-processing.ts |
Migrates lint suppression comments. | — |
src/tools/run-python/run-python-tool.test.ts |
Migrates lint suppression comments. | — |
src/tools/read-file/read-file-tool.test.ts |
Migrates lint suppression comments. | — |
src/tools/list-files/list-files-tool.test.ts |
Migrates lint suppression comments. | — |
src/tools/fetch-url/fetch-url-tool.test.ts |
Migrates lint suppression comments. | — |
src/tools/delete-file/delete-file-tool.test.ts |
Migrates lint suppression comments. | — |
src/cli/owner-lookup/clients/name-matcher.test.ts |
Applies formatting updates. | — |
scripts/oxlint/logger-plugin.ts |
Implements the logger template-literal rule. | Moderate (1 vote): preserve PrivateIdentifier matching and add a regression test. |
scripts/oxlint/logger-plugin.test.ts |
Tests the custom lint rule. | — |
README.md |
Documents the updated toolchain. | — |
prettier.config.ts |
Updates import sorting configuration. | — |
pnpm-workspace.yaml |
Adds catalogs, build permissions, and release-age policy. | Critical (1 vote): allow Playwright’s install script or explicitly install the browser in shared setup. |
package.json |
Updates scripts, engines, and dependencies. | — |
eslint.config.ts |
Removes obsolete ESLint configuration. | — |
AGENTS.md |
Updates toolchain guidance. | — |
.vscode/settings.json |
Enables oxlint and format-on-save. | — |
.vscode/extensions.json |
Adds recommended extensions. | — |
.prettierignore |
Updates ignored generated directories. | — |
.oxlintrc.json |
Adds migrated oxlint rules and configuration. | — |
.npmrc |
Normalizes package settings. | — |
.gitignore |
Expands cache and artifact ignores. | — |
.github/pull-request-description-instructions.md |
Removes obsolete instructions. | — |
.github/commit-message-instructions.md |
Removes obsolete instructions. | — |
.github/actions/setup/action.yml |
Enables pnpm caching. | — |
.claude/settings.json |
Updates allowed pnpm commands. | — |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| allowBuilds: | ||
| # tsx and Vitest both run through esbuild, and this install script is what | ||
| # links its native binary. | ||
| esbuild: true |
There was a problem hiding this comment.
No behavior change here: playwright and playwright-core 1.57.0 declare no lifecycle scripts, so allowBuilds has nothing to block — Chromium comes from playwright install, not from pnpm install. pnpm 10 (before this PR) also skipped dependency build scripts by default.

What
feat/oxlint-ts7-logger), so this repo stops drifting from it..oxlintrc.jsonis built from the effective ESLint config (145 rules, options included) and verified rule-by-rule for parity; the logger template-literal ban becomes a local oxlint JS plugin with tests.baseUrl,./-relativepaths) and pnpm 11, with a toolchain catalog,allowBuildsand a 14-dayminimumReleaseAgeinpnpm-workspace.yaml.@types/nodestays on 24.x to match the supported runtime.How to test
Security review
No security-impacting changes.
🤖 Generated with Claude Code