chore: clean up deprecated TS 6 configs and eslint generated contract handling - #22
Conversation
Explain that generated api-contract output must stay outside ESLint gates, otherwise lint failures from generated files can look like cache problems.
TypeScript 6.0 is already pinned repo-wide, so keep package config aligned with shared base config and let the workspace typecheck run clean.
Add a complete local skill with references so TS 6 upgrades can use release-note-based migration guidance and config diagnostics.
Drop obsolete `baseUrl` and `ignoreDeprecations` settings from app and package tsconfigs, and record skill metadata in `skills-lock`.
|
Warning Review limit reached
Your plan currently allows 1 review/hour. Refill in 33 minutes and 8 seconds. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more review capacity refills, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than trial, open-source, and free plans. In all cases, review capacity refills continuously over time. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Repository UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThe PR introduces comprehensive TypeScript 6 skill documentation across nine new files in ChangesTypeScript 6 Skill Documentation
TypeScript 6 Configuration Migration
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.agents/skills/typescript-v6/README.md:
- Around line 131-145: The fenced file-structure block in
.agents/skills/typescript-v6/README.md is missing a language tag (MD040); update
the triple-backtick fence that shows the directory tree (the block starting with
"typescript-v6/") to include a language identifier such as "text" (e.g., change
``` to ```text) so the code block is properly tagged; modify the README.md file
containing that block accordingly.
- Around line 30-31: Add a single blank line after each Markdown heading that is
immediately followed by list content to satisfy markdownlint MD022; specifically
insert a blank line after the "Primary Keywords" heading and the other heading
blocks flagged in the file so each heading is separated from the following list
(ensure the same fix is applied to the other flagged headings in the README).
In @.agents/skills/typescript-v6/references/workflow-diagnostics-reference.md:
- Line 46: The documentation currently refers to a literal "`#/` subpath
imports" which is misleading; update the text around `package.json#imports` and
the `bundler`/`nodenext` notes to clarify that Node/TypeScript `imports` keys
are `#`-prefixed specifiers (e.g. `#alias`, `#alias/*`, `#*`) rather than a
literal "`#/`" prefix, and replace the `#/` wording with an explicit explanation
and examples of `#`-prefixed specifiers and how they map in `imports` to avoid
confusion when debugging bundler/nodenext resolution.
In @.agents/skills/typescript-v6/SKILL.md:
- Around line 302-308: The fenced code block showing the project structure (the
``` block containing the my-ts-project/ tree) needs an explicit language tag to
satisfy MD040; change the opening fence from ``` to ```text so the block becomes
```text and the project-structure block is properly labeled.
- Around line 116-122: The fenced code blocks in SKILL.md (Common Mistakes
section) are missing required blank lines before and/or after them causing MD031
failures; update each affected fenced block (e.g., the JSON block shown and the
blocks at ranges 125-132, 137-146, 149-157, 162-167, 170-178, 183-190, 193-210,
215-217, 220-222) by ensuring there is exactly one blank line above the opening
``` and one blank line below the closing ```, adjusting surrounding text so the
fenced blocks are separated by blank lines.
In `@skills-lock.json`:
- Line 72: Update the skillPath value in skills-lock.json so it matches the
actual registered location: change the string
".claude/skills/typescript-v6/SKILL.md" to the new path
".agents/skills/typescript-v6/SKILL.md" (i.e., update the skillPath entry for
the typescript-v6 skill) so the loader can find the skill.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 5677532c-45bf-4043-9785-5a58175d39cc
📒 Files selected for processing (22)
.agents/skills/typescript-v6/README.md.agents/skills/typescript-v6/SKILL.md.agents/skills/typescript-v6/references/README.md.agents/skills/typescript-v6/references/defaults-migration-reference.md.agents/skills/typescript-v6/references/deprecations-reference.md.agents/skills/typescript-v6/references/migration-v6-reference.md.agents/skills/typescript-v6/references/module-resolution-imports-reference.md.agents/skills/typescript-v6/references/stable-ordering-ts7-reference.md.agents/skills/typescript-v6/references/stdlib-types-reference.md.agents/skills/typescript-v6/references/type-patterns-reference.md.agents/skills/typescript-v6/references/workflow-diagnostics-reference.md.gitignoreapps/api/src/openapi/openapi-document.tsapps/web/tsconfig.jsondocs/en/solutions/workflow-issues/keep-generated-api-contract-output-out-of-eslint-gates-2026-05-08.mddocs/zh-Hans/solutions/workflow-issues/keep-generated-api-contract-output-out-of-eslint-gates-2026-05-08.mdpackages/api-contract/tsconfig.build.jsonpackages/api-contract/tsconfig.jsonpackages/eslint-config/base.jspackages/ui/tsconfig.build.jsonpackages/ui/tsconfig.jsonskills-lock.json
💤 Files with no reviewable changes (6)
- packages/api-contract/tsconfig.build.json
- packages/ui/tsconfig.build.json
- packages/api-contract/tsconfig.json
- apps/api/src/openapi/openapi-document.ts
- apps/web/tsconfig.json
- packages/ui/tsconfig.json
| ### Primary Keywords | ||
| - typescript 6 |
There was a problem hiding this comment.
Add blank lines after headings to satisfy markdownlint MD022.
These heading blocks are missing a required blank line before the following list content.
Also applies to: 43-44, 53-54, 73-74, 80-81
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 30-30: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.agents/skills/typescript-v6/README.md around lines 30 - 31, Add a single
blank line after each Markdown heading that is immediately followed by list
content to satisfy markdownlint MD022; specifically insert a blank line after
the "Primary Keywords" heading and the other heading blocks flagged in the file
so each heading is separated from the following list (ensure the same fix is
applied to the other flagged headings in the README).
| ``` | ||
| typescript-v6/ | ||
| ├── SKILL.md # Quick-start patterns, critical rules, and upgrade guidance | ||
| ├── README.md # This file - discovery and quick reference | ||
| └── references/ | ||
| ├── README.md # Reference index | ||
| ├── migration-v6-reference.md # Dedicated TypeScript 6 migration guide | ||
| ├── defaults-migration-reference.md # TS 6+ defaults and configuration behavior | ||
| ├── deprecations-reference.md # Deprecated options and replacements | ||
| ├── module-resolution-imports-reference.md # bundler/nodenext and `#/` imports | ||
| ├── stdlib-types-reference.md # New platform/library types in TS 6 | ||
| ├── workflow-diagnostics-reference.md # Compiler commands for migration debugging | ||
| ├── type-patterns-reference.md # TS-safe patterns for TS 6+ code | ||
| └── stable-ordering-ts7-reference.md # `stableTypeOrdering` and TS 7 context | ||
| ``` |
There was a problem hiding this comment.
Specify a language for the fenced code block (MD040).
Add a language tag (for example, text) to this file-structure fence.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 131-131: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.agents/skills/typescript-v6/README.md around lines 131 - 145, The fenced
file-structure block in .agents/skills/typescript-v6/README.md is missing a
language tag (MD040); update the triple-backtick fence that shows the directory
tree (the block starting with "typescript-v6/") to include a language identifier
such as "text" (e.g., change ``` to ```text) so the code block is properly
tagged; modify the README.md file containing that block accordingly.
| - `paths` aliases | ||
| - `types` package discovery | ||
| - `package.json` `exports` / `imports` | ||
| - `#/` subpath imports under `bundler` or `nodenext` |
There was a problem hiding this comment.
Clarify package.json#imports specifier notation (#...), not literal #/.
#/ reads like a literal prefix, but Node/TypeScript imports map keys are #-prefixed (e.g. #alias, #alias/*, #*), which can mislead users debugging bundler/nodenext.
Proposed doc fix
-- `#/` subpath imports under `bundler` or `nodenext`
+- `#alias` package-import specifiers (from `package.json#imports`) under `bundler` or `nodenext`📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - `#/` subpath imports under `bundler` or `nodenext` | |
| - `#alias` package-import specifiers (from `package.json#imports`) under `bundler` or `nodenext` |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.agents/skills/typescript-v6/references/workflow-diagnostics-reference.md at
line 46, The documentation currently refers to a literal "`#/` subpath imports"
which is misleading; update the text around `package.json#imports` and the
`bundler`/`nodenext` notes to clarify that Node/TypeScript `imports` keys are
`#`-prefixed specifiers (e.g. `#alias`, `#alias/*`, `#*`) rather than a literal
"`#/`" prefix, and replace the `#/` wording with an explicit explanation and
examples of `#`-prefixed specifiers and how they map in `imports` to avoid
confusion when debugging bundler/nodenext resolution.
| ```json | ||
| { | ||
| "compilerOptions": { | ||
| "outDir": "./dist" | ||
| } | ||
| } | ||
| ``` |
There was a problem hiding this comment.
Normalize blank lines around fenced code blocks (MD031).
Several fenced blocks in the “Common Mistakes” section need blank lines around them to pass markdownlint consistently.
Also applies to: 125-132, 137-146, 149-157, 162-167, 170-178, 183-190, 193-210, 215-217, 220-222
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 116-116: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.agents/skills/typescript-v6/SKILL.md around lines 116 - 122, The fenced
code blocks in SKILL.md (Common Mistakes section) are missing required blank
lines before and/or after them causing MD031 failures; update each affected
fenced block (e.g., the JSON block shown and the blocks at ranges 125-132,
137-146, 149-157, 162-167, 170-178, 183-190, 193-210, 215-217, 220-222) by
ensuring there is exactly one blank line above the opening ``` and one blank
line below the closing ```, adjusting surrounding text so the fenced blocks are
separated by blank lines.
| ``` | ||
| my-ts-project/ | ||
| ├── src/ | ||
| ├── dist/ | ||
| ├── package.json | ||
| └── tsconfig.json | ||
| ``` |
There was a problem hiding this comment.
Specify a language for the fenced code block (MD040).
Use an explicit language (for example, text) for the project-structure block.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 302-302: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.agents/skills/typescript-v6/SKILL.md around lines 302 - 308, The fenced
code block showing the project structure (the ``` block containing the
my-ts-project/ tree) needs an explicit language tag to satisfy MD040; change the
opening fence from ``` to ```text so the block becomes ```text and the
project-structure block is properly labeled.
| "typescript-v6": { | ||
| "source": "nodnarbnitram/claude-code-extensions", | ||
| "sourceType": "github", | ||
| "skillPath": ".claude/skills/typescript-v6/SKILL.md", |
There was a problem hiding this comment.
Fix skillPath to the actual registered skill location.
skillPath points to .claude/skills/typescript-v6/SKILL.md, but this PR adds the skill under .agents/skills/typescript-v6/SKILL.md. This mismatch can break loading the new skill from the lock file.
Proposed fix
- "skillPath": ".claude/skills/typescript-v6/SKILL.md",
+ "skillPath": ".agents/skills/typescript-v6/SKILL.md",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "skillPath": ".claude/skills/typescript-v6/SKILL.md", | |
| "skillPath": ".agents/skills/typescript-v6/SKILL.md", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@skills-lock.json` at line 72, Update the skillPath value in skills-lock.json
so it matches the actual registered location: change the string
".claude/skills/typescript-v6/SKILL.md" to the new path
".agents/skills/typescript-v6/SKILL.md" (i.e., update the skillPath entry for
the typescript-v6 skill) so the loader can find the skill.
Commit 6e0dffc removed hardcoded .setVersion("0.1.0"), causing Swagger to default to 1.0.0. E2e contract test failed on deep-equal mismatch. Read version from root package.json via __dirname relative traversal, same pattern as openapi-refresh.ts uses for contract path. Single version source, no extra dependencies. Also add implementation plan docs (en + zh-Hans).
Summary
Remove leftover TS 6 migration artifacts, replace per-file ESLint overrides for the generated API client with a blanket ignore pattern, and drop the hardcoded OpenAPI spec version.
Changes
ESLint — generated contract ignore
The previous config disabled 7 safety rules (
no-explicit-any,no-unsafe-*, etc.) individually onpackages/api-contract/src/generated/api-client.ts. This was fragile — the generated output can change shape and new files may land in the directory. The entirepackages/api-contract/src/generated/**glob is now added to the ESLint ignore list instead, which is the correct posture for generated code.TSConfig — remove deprecated migration flags
ignoreDeprecations: "6.0"was still present in 4tsconfig*.jsonfiles (apps/web,packages/api-contract,packages/ui). These flags were only needed during the TS 5-to-6 migration window and are no-ops on TS 6+. Removed to keep configs honest.OpenAPI — drop hardcoded spec version
createOpenApiDocumentwas setting.setVersion("0.1.0")manually. The version is already managed by the NestJS Swagger setup pipeline; the hardcoded string drifts from reality. Removed.Docs and skills
.agents/skills/typescript-v6/.