-
Notifications
You must be signed in to change notification settings - Fork 2
feat: integrate eslint-plugin-mdx with remark-lint
#117
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
🦋 Changeset detectedLatest commit: 6492ead The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
WalkthroughThis update introduces a comprehensive set of Markdown linting rules and configuration, adds new fixture Markdown documents, enhances the CLI Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant CLI (doom lint)
participant Lint Engine (ESLint/remark)
participant remarkrc.js
participant Custom Lint Rules
User->>CLI (doom lint): Run with --glob option
CLI (doom lint)->>Lint Engine (ESLint/remark): Pass glob patterns, resolve remarkrc.js
Lint Engine (ESLint/remark)->>remarkrc.js: Load plugins and config
remarkrc.js->>Custom Lint Rules: Register custom lint rules
Lint Engine (ESLint/remark)->>CLI (doom lint): Return linting results
CLI (doom lint)->>User: Display lint results
Possibly related PRs
Suggested labels
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
src/cli/lint.tsOops! Something went wrong! :( ESLint: 9.30.1 Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/lib/eslint.js' imported from /eslint.config.js src/eslint.tsOops! Something went wrong! :( ESLint: 9.30.1 Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/lib/eslint.js' imported from /eslint.config.js src/plugins/replace/parse-toc.tsOops! Something went wrong! :( ESLint: 9.30.1 Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/lib/eslint.js' imported from /eslint.config.js
✨ Finishing Touches
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
commit: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Integrate eslint-plugin-mdx with remark-lint to enforce content-quality rules in MDX documentation.
- Configure
remarkwith built-in and customremark-lintrules inremarkrc.ts. - Implement a suite of custom lint rules under
src/remark-lint. - Update ESLint and the CLI to load and apply the MDX/remark config, bump related dependencies, and add a TS loader patch.
Reviewed Changes
Copilot reviewed 26 out of 28 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/remarkrc.ts | Sets up remark and remark-lint plugins including custom rules |
| src/remark-lint/... | Implements various custom lint rules for tables, lists, headings |
| src/eslint.ts | Adds parserOptions.remarkConfigPath for MDX lint integration |
| src/cli/lint.ts | Enhances the CLI lint command to accept -g/--glob patterns |
| patches/unified-engine+11.2.2.patch | Enables loading .ts config files in unified-engine |
| package.json | Bumps versions for eslint-plugin-mdx, remark-lint, and plugins |
Comments suppressed due to low confidence (1)
src/remark-lint/index.ts:1
- [nitpick] These new custom lint rules lack accompanying unit tests. Consider adding tests for each rule to ensure they correctly identify violations and don't regress.
import type { Root } from 'mdast'
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🔭 Outside diff range comments (1)
docs/en/start.mdx (1)
1-285: Fix TypeScript configuration and imports insrc/remarkrc.tsThe CI parse errors stem from missing compiler flags, stray
.tsextensions in import paths, and undeclared external modules. Please apply the following fixes:• tsconfig.json (project root) – under
compilerOptions, enable:
–"allowImportingTsExtensions": true
–"esModuleInterop": true
–"downlevelIteration": true• In all local imports (e.g. in
src/remark-lint/index.tsandsrc/remarkrc.ts), remove the trailing.tsfrom module paths:- import doomLint from './remark-lint/index.ts' + import doomLint from './remark-lint/index'• Install or declare types for all external remark- and lint-plugins you import:
– remark-directive, remark-frontmatter, remark-gfm, remark-lint-*, remark-message-control
– unified-lint-rule, pluralize, unist-util-position
For example:npm install -D @types/pluralize @types/unist-util-position @types/remark-directive …• Verify your regex-flag errors by targeting ES2015 or later (you already have
target: "ESNext", so the above flags will resolve them).After these changes, rerun
npx tsc --noEmit src/remarkrc.tsto confirm the parsing errors are gone.
🧹 Nitpick comments (2)
src/remark-lint/list-item-size.ts (1)
5-22: LGTM! Well-implemented list size constraint rule.The implementation correctly enforces list item count limits. The bounds (2-9 items) are reasonable for maintaining readability, and the early return after reporting prevents duplicate messages.
Consider making the bounds configurable if different documentation sections might need different limits:
-export const listItemSize = lintRule<Root>( +export const listItemSize = (minSize = 2, maxSize = 9) => lintRule<Root>( 'doom-lint:list-item-size', (root, vfile) => { visitParents(root, 'list', (list, parents) => { const size = list.children.length - if (size < 2 || size > 9) { + if (size < minSize || size > maxSize) { vfile.message( - `List should have at least 2 and at most 9 items, but found ${size}`, + `List should have at least ${minSize} and at most ${maxSize} items, but found ${size}`, { ancestors: [...parents, list], place: list.position, }, ) return } }) }, -) +)src/remark-lint/list-item-punctuation.ts (1)
19-21: Consider edge case handling for empty strings.The current logic doesn't handle cases where
toString(item)returns an empty string, which would causeslice(-1)to return an empty string and potentially lead to incorrect punctuation checks.Consider adding a guard clause:
const firstItemText = toString(firstItem) + if (!firstItemText.trim()) { + return + } const firstItemLastChar = firstItemText.slice(-1)Apply similar handling in the loop for other items.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (27)
.nvmrc(1 hunks)docs/en/start.mdx(11 hunks)docs/en/usage/configuration.md(11 hunks)docs/zh/start.mdx(2 hunks)fixture-docs/en/heading.md(1 hunks)fixture-docs/en/list-item.md(1 hunks)fixture-docs/en/table.md(1 hunks)package.json(4 hunks)patches/unified-engine+11.2.2.patch(1 hunks)src/cli/lint.ts(2 hunks)src/cli/translate.ts(1 hunks)src/eslint.ts(3 hunks)src/remark-lint/constants.ts(1 hunks)src/remark-lint/index.ts(1 hunks)src/remark-lint/list-item-punctuation.ts(1 hunks)src/remark-lint/list-item-size.ts(1 hunks)src/remark-lint/list-table-introduction.ts(1 hunks)src/remark-lint/no-deep-heading.ts(1 hunks)src/remark-lint/no-deep-list.ts(1 hunks)src/remark-lint/no-empty-table-cell.ts(1 hunks)src/remark-lint/no-heading-punctuation.ts(1 hunks)src/remark-lint/no-heading-special-characters.ts(1 hunks)src/remark-lint/no-heading-sup-sub.ts(1 hunks)src/remark-lint/no-paragraph-indent.ts(1 hunks)src/remark-lint/table-size.ts(1 hunks)src/remarkrc.ts(1 hunks)tsconfig.json(1 hunks)
🧰 Additional context used
🧠 Learnings (10)
📓 Common learnings
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
patches/unified-engine+11.2.2.patch (2)
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
docs/en/start.mdx (6)
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:22:30.004Z
Learning: In the @alauda/doom project, the team prefers throwing descriptive errors for invalid configuration rather than using optional chaining or graceful fallbacks. This fail-fast approach helps catch configuration issues early during development.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#34
File: src/theme.tsx:4-17
Timestamp: 2025-05-29T10:21:32.682Z
Learning: In the @alauda/doom project, environment variables like ALGOLIA_APP_ID, ALGOLIA_API_KEY, and ALGOLIA_INDEX_NAME are injected at build time, making non-null assertions safe when used after truthiness checks.
src/remarkrc.ts (2)
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
src/cli/lint.ts (5)
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#9
File: src/cli/load-config.ts:27-27
Timestamp: 2025-05-12T11:11:41.048Z
Learning: The yoctocolors package is used in the codebase for colored terminal output, with the cyan function imported in src/cli/load-config.ts.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:22:30.004Z
Learning: In the @alauda/doom project, the team prefers throwing descriptive errors for invalid configuration rather than using optional chaining or graceful fallbacks. This fail-fast approach helps catch configuration issues early during development.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
src/eslint.ts (7)
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:09:17.876Z
Learning: When ESLint shows "Unable to resolve path to module" errors for packages that are listed in package.json dependencies, the issue is usually that npm install hasn't been run yet, not that the packages are missing from dependencies or that there's an ESLint configuration problem.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:22:30.004Z
Learning: In the @alauda/doom project, the team prefers throwing descriptive errors for invalid configuration rather than using optional chaining or graceful fallbacks. This fail-fast approach helps catch configuration issues early during development.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
tsconfig.json (7)
Learnt from: JounQin
PR: alauda/doom#69
File: package.json:101-101
Timestamp: 2025-06-06T07:08:55.881Z
Learning: When a package has peer dependencies that require TypeScript (like `@eslint-react/eslint-plugin`), TypeScript should be moved from devDependencies to dependencies to satisfy the peer dependency requirement.
Learnt from: JounQin
PR: alauda/doom#69
File: package.json:101-101
Timestamp: 2025-06-06T07:08:55.881Z
Learning: When a package has peer dependencies that require TypeScript (like `@eslint-react/eslint-plugin`), TypeScript should be moved from devDependencies to dependencies to satisfy the peer dependency requirement.
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
src/remark-lint/index.ts (4)
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
docs/en/usage/configuration.md (7)
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:22:30.004Z
Learning: In the @alauda/doom project, the team prefers throwing descriptive errors for invalid configuration rather than using optional chaining or graceful fallbacks. This fail-fast approach helps catch configuration issues early during development.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/theme.tsx:4-17
Timestamp: 2025-05-29T10:21:32.682Z
Learning: In the @alauda/doom project, environment variables like ALGOLIA_APP_ID, ALGOLIA_API_KEY, and ALGOLIA_INDEX_NAME are injected at build time, making non-null assertions safe when used after truthiness checks.
package.json (8)
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#69
File: package.json:101-101
Timestamp: 2025-06-06T07:08:55.881Z
Learning: When a package has peer dependencies that require TypeScript (like `@eslint-react/eslint-plugin`), TypeScript should be moved from devDependencies to dependencies to satisfy the peer dependency requirement.
Learnt from: JounQin
PR: alauda/doom#69
File: package.json:101-101
Timestamp: 2025-06-06T07:08:55.881Z
Learning: When a package has peer dependencies that require TypeScript (like `@eslint-react/eslint-plugin`), TypeScript should be moved from devDependencies to dependencies to satisfy the peer dependency requirement.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:09:17.876Z
Learning: When ESLint shows "Unable to resolve path to module" errors for packages that are listed in package.json dependencies, the issue is usually that npm install hasn't been run yet, not that the packages are missing from dependencies or that there's an ESLint configuration problem.
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
🧬 Code Graph Analysis (3)
src/remark-lint/no-heading-punctuation.ts (1)
src/remark-lint/constants.ts (1)
PUNCTUATION_REGEX(1-1)
src/cli/lint.ts (1)
src/types.ts (1)
GlobalCliOptions(17-35)
src/remark-lint/list-item-punctuation.ts (1)
src/remark-lint/constants.ts (1)
PUNCTUATION_REGEX(1-1)
🪛 LanguageTool
fixture-docs/en/table.md
[grammar] ~1-~1: Use proper spacing conventions.
Context: Some introductory text. | col1 | col2 | | ---- | ---- | | val1 |...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~5-~5: Use proper spacing conventions.
Context: ...| col2 | | ---- | ---- | | val1 | |
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
fixture-docs/en/heading.md
[grammar] ~1-~1: Use proper spacing conventions.
Context: # Test^ [Test] ## Test ### Depth Test
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~3-~3: Use proper spacing conventions.
Context: # Test^ [Test] ## Test ### Depth Test
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~5-~5: Use proper spacing conventions.
Context: # Test^ [Test] ## Test ### Depth Test
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~7-~7: Use proper spacing conventions.
Context: ...est^ [Test] ## Test ### Depth Test
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
fixture-docs/en/list-item.md
[grammar] ~1-~1: Use proper spacing conventions.
Context: # Test Some introductory text. - Test1 - Test2...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~3-~3: Use proper spacing conventions.
Context: # Test Some introductory text. - Test1 - Test2 1. Test1 1. Test1.1 ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~6-~6: Use proper spacing conventions.
Context: ...Some introductory text. - Test1 - Test2 1. Test1 1. Test1.1 1. Test1.1.1 ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~13-~13: Use proper spacing conventions.
Context: ... 2. Test1.1.2 2. Test1.2 2. Test2
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
docs/en/start.mdx
[grammar] ~15-~15: Use proper spacing conventions.
Context: ...n install doom using npm, yarn, or pnpm: Then create files with the following com...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~19-~19: Use proper spacing conventions.
Context: ...reate files with the following commands: bash # Create docs directories, with default support for bilingual Chinese and English mkdir docs/en && echo '# Hello World' > docs/en/index.md mkdir docs/zh && echo '# 你好世界' > docs/zh/index.md Add the following scripts to your `packa...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~27-~27: Use proper spacing conventions.
Context: ...ollowing scripts to your package.json: json { "scripts": { "dev": "doom dev", "build": "doom build", "new": "doom new", "serve": "doom serve", "translate": "doom translate", "export": "doom export" } } Then initialize a configuration file `do...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~48-~48: Use proper spacing conventions.
Context: ...g.jsonfile with the following content: ```jsonc { "compilerOptions": { "jsx": "react-jsx", "module": "NodeNext", "moduleResolution": "NodeNext", "noUnusedLocals": true, "noUnusedParameters": true, "resolveJsonModule": true, "skipLibCheck": true, "strict": true, "target": "ESNext", }, "mdx": { "checkMdx": true, }, } ``` Finally, create aglobal.d.ts` file wit...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~75-~75: Use proper spacing conventions.
Context: ...y doom with type safety in .mdx files. ## CLI Tool {#cli} ```bash doom -h # out...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~124-~124: There might be a mistake here.
Context: ...arn dev` to start the development server, the browser will automatically open the...
(QB_NEW_EN_OTHER)
[grammar] ~124-~124: Use proper spacing conventions.
Context: ...tically open the documentation homepage. sh doom dev -h # output Usage: doom dev [options] [root] Start the development server Arguments: root Root directory of the documentation Options: -H, --host [host] Dev server host name -P, --port [port] Dev server port number -l, --lazy [boolean] Whether to enable `lazyCompilation` which could improve the compilation performance (default: true) --no-lazy Do not enable `lazyCompilation` -h, --help display help for command ### Production Build {#build} Run `yarn bu...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~155-~155: Use proper spacing conventions.
Context: ...ocumentation from scaffolding templates. ### Translating Documentation {#translate} ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~178-~178: Do not omit pronouns.
Context: ...aused by command line parsing. Examples: 1. yarn translate -g abc xyz will translate all documents under `<roo...
(QB_NEW_EN_OTHER_ERROR_IDS_000023)
[grammar] ~179-~179: There might be a mistake here.
Context: ...urce>/xyzto//abcand//xyzrespectively. 2.yarn translate -g '...
(QB_NEW_EN_OTHER)
[grammar] ~179-~179: Use proper spacing conventions.
Context: ... and <root>/<target>/xyz respectively. 2. yarn translate -g '*' will translate all document files under...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~180-~180: Use proper spacing conventions.
Context: ... document files under <root>/<source>. - The -C, --copy parameter is optional a...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~182-~182: Avoid interrupting sentences with colons.
Context: ...ples: - When this parameter is enabled: 1. When translating /<source>/abc.jpg, `<root...
(QB_NEW_EN_OTHER_ERROR_IDS_000069)
[grammar] ~183-~183: Use proper spacing conventions.
Context: ... will be changed to /<target>/abc.jpg. 2. For ./assets/xyz.jpg in `/<sourc...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~184-~184: Use proper spacing conventions.
Context: ... image reference path remains unchanged. 3. For ./assets/<source>/xyz.jpg in `<roo...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~185-~185: Use proper spacing conventions.
Context: ... changed to ./assets/<target>/xyz.jpg. - When this parameter is not enabled: ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~186-~186: Avoid interrupting sentences with colons.
Context: .... - When this parameter is not enabled: 1. When translating /<source>/abc.jpg, if `<r...
(QB_NEW_EN_OTHER_ERROR_IDS_000069)
[grammar] ~187-~187: Use proper spacing conventions.
Context: ... image reference path remains unchanged. 2. For ./assets/<source>/xyz.jpg in `<roo...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~188-~188: Use proper spacing conventions.
Context: ...o ../<source>/assets/<target>/xyz.jpg. :::warning Specifically, if you use `-g ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~191-~191: Use proper spacing conventions.
Context: ...alRoutes` will be automatically deleted. ::: :::tip The translation feature requ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~192-~192: Use proper spacing conventions.
Context: ...utes` will be automatically deleted. ::: :::tip The translation feature requires ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~195-~195: Use proper spacing conventions.
Context: ...e contact your team leader to obtain it. ::: You can control translation behavio...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~214-~214: Use proper spacing conventions.
Context: ...e yarn build command before exporting. ::: ```sh doom export -h # output Usag...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~234-~234: Use proper spacing conventions.
Context: ... -b and -p parameters during export. The export feature depends on [`playwrig...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~236-~236: Use proper spacing conventions.
Context: ...ironment variable to speed up downloads: dotenv title=".env.yarn" PLAYWRIGHT_DOWNLOAD_HOST="https://cdn.npmmirror.com/binaries/playwright" In addition to exporting a complete PDF ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~242-~242: There might be a mistake here.
Context: ...r to Documentation Export Configuration ### Documentation Linting {#lint} ```sh do...
(QB_NEW_EN_OTHER)
[grammar] ~278-~278: Use proper spacing conventions.
Context: ...ample, you can create .cspell/k8s.txt: txt k8s kubernetes For more configuration, please refer to ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~285-~285: There might be a mistake here.
Context: ...ion, please refer to Lint Configuration
(QB_NEW_EN_OTHER)
docs/en/usage/configuration.md
[grammar] ~13-~13: Use proper spacing conventions.
Context: ...alauda/doom/configfor type assistance: ```ts import { defineConfig } from '@alauda/doom/config' export default defineConfig({}) ``` ## Basic Configuration {#basic} -lang`: ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~23-~23: Use proper spacing conventions.
Context: ...his can be set to null or undefined. - title: Documentation title, displayed on the ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~24-~24: Use proper spacing conventions.
Context: ...ion title, displayed on the browser tab. - logo: Logo at the top left of the documentat...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~25-~25: There might be a mistake here.
Context: ...er to files under the public directory, relative paths refer to files relative ...
(QB_NEW_EN_OTHER)
[grammar] ~25-~25: Use proper spacing conventions.
Context: ...auda logo built into the doom package. - logoText: Documentation title, displayed next to...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~26-~26: Use proper spacing conventions.
Context: ...played next to the logo at the top left. - icon: Documentation favicon, defaults to the...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~27-~27: Use proper spacing conventions.
Context: ...favicon, defaults to the same as logo. - base: Base path for the documentation, used ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~28-~28: Use proper spacing conventions.
Context: ..., e.g., product-docs. Defaults to /. - outDir: Directory for build output. Defaults t...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~29-~29: Use proper spacing conventions.
Context: ...sion Build](./deploy#多版本构建) for details. ## API Documentation Configuration {#api} ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~31-~31: Use proper spacing conventions.
Context: ...# API Documentation Configuration {#api} yaml api: # CRD definition file paths, relative to the directory where doom.config.* is located, supports glob matching, json/yaml files crds: - docs/shared/crds/*.yaml # OpenAPI definition file paths, relative to the directory where doom.config.* is located, supports glob matching, json/yaml files openapis: - docs/shared/openapis/*.json # When rendering OpenAPI related resource definitions, they are inlined by default. To extract related resource definitions into separate files, configure the following options. # Reference: https://doom.alauda.cn/apis/references/CodeQuality.html#v1alpha1.CodeQualitySpec references: v1alpha1.CodeQualityBranch: /apis/references/CodeQualityBranch#v1alpha1.CodeQualityBranch # Optional, API documentation path prefix. Configure this if your business uses gateway or other proxy services. pathPrefix: /apis Refer to API Documentation for ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~85-~85: There might be a mistake here.
Context: ...e frontmatter of the referenced document, keep using the current document’s front...
(QB_NEW_EN_OTHER)
[grammar] ~85-~85: There might be a problem here.
Context: ...sing the current document’s frontmatter. - merge: Merge the frontmatter of the referenced...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~109-~109: Use articles correctly.
Context: ...ql>. This API requires authentication, so JIRA_USERNAMEandJIRA_PASSWORD` env...
(QB_NEW_EN_OTHER_ERROR_IDS_000004)
[grammar] ~109-~109: Use proper spacing conventions.
Context: ... must be provided to preview the effect. ## Sidebar Configuration {#sidebar} ```yam...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~111-~111: Use proper spacing conventions.
Context: ...ct. ## Sidebar Configuration {#sidebar} yaml sidebar: collapsed: false # Optional, whether the sidebar is collapsed by default. Defaults to collapsed. If the documentation content is small, consider setting to false. ## Internal Documentation Routes Configurat...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~118-~118: Use proper spacing conventions.
Context: ... Routes Configuration {#internal-routes} yaml internalRoutes: # Optional, supports glob matching relative to the docs directory. Routes/files matched when CLI option `-i, --ignore` is enabled will be ignored. - '*/internal/**' ## Only Include Documentation Routes Config...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~125-~125: Use proper spacing conventions.
Context: ...tes Configuration {#only-include-routes} yaml onlyIncludeRoutes: # Optional, supports glob matching relative to the docs directory. When CLI option `-i, --ignore` is enabled, only routes/files under this configuration will be enabled. Can be combined with `internalRoutes` to exclude some routes. - '*/internal/**' internalRoutes: - '*/internal/overview.mdx' ## Syntax Highlighting Plugin Configuration...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~144-~144: Use proper spacing conventions.
Context: ... and fall back to plaintext rendering. ::: ## sites.yaml Configuration {#sit...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~145-~145: Use proper spacing conventions.
Context: ... fall back to plaintext rendering. ::: ## sites.yaml Configuration {#sites} The `sites.yaml...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~147-~147: Use proper spacing conventions.
Context: ... ## sites.yaml Configuration {#sites} The sites.yaml configuration file is u...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~149-~149: Use proper spacing conventions.
Context: ...n building single-version documentation. yaml - name: connectors # Globally unique name for the site base: /devops-connectors # Base path for site access version: v1.1 # Version used for ExternalSite/ExternalSiteLink redirects when building multi-version sites displayName: # Site display name. If not provided or language not matched, defaults to name en: DevOps Connectors zh: DevOps 连接器 # The following properties are used to pull images when building the entire site. If not provided, this will be ignored during final packaging. # Usually required for subsite references, not needed for parent site references. repo: https://github.com/AlaudaDevops/connectors-operator # Site repository URL. For internal GitLab repos, you can use the slug, e.g., `alauda/product-docs` image: devops/connectors-docs # Site build image, used to pull images when building the entire site ## Translation Configuration {#translate} ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~246-~246: Use proper spacing conventions.
Context: ...Documentation Lint Configuration {#lint} yaml lint: cspellOptions: # Optional, cspell configuration options, refer to https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell-eslint-plugin#options ## Algolia Search Configuration {#algolia} ...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~253-~253: Use proper spacing conventions.
Context: ... Algolia Search Configuration {#algolia} yaml algolia: # Optional, Algolia search configuration, effective only when CLI flag `-a, --algolia` is enabled appId: # Algolia Application ID apiKey: # Algolia API Key indexName: # Algolia index name Please use public/robots.txt for Algol...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
[grammar] ~266-~266: Use proper spacing conventions.
Context: ...wing theme configuration file to enable: ts title "theme/index.ts" export * from '@alauda/doom/theme' ::: ## Sitemap Configuration {#sitemap}...
(QB_NEW_EN_OTHER_ERROR_IDS_000007)
🪛 GitHub Actions: CI
docs/en/start.mdx
[error] 1-1: Parsing error: Cannot parse given file src/remarkrc.ts
docs/en/usage/configuration.md
[error] 1-1: Parsing error: Cannot parse given file src/remarkrc.ts
🪛 Biome (1.9.4)
src/remark-lint/no-heading-punctuation.ts
[error] 4-4: Do not shadow the global "toString" property.
Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.
(lint/suspicious/noShadowRestrictedNames)
src/remark-lint/list-item-punctuation.ts
[error] 2-2: Do not shadow the global "toString" property.
Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.
(lint/suspicious/noShadowRestrictedNames)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Build and Lint with Node.js 20 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 24 on ubuntu-latest
🔇 Additional comments (45)
fixture-docs/en/heading.md (1)
1-1: Confirm the need for the escaped caret and brackets in the heading
Test\^ \[Test\]renders the literal characters “^ [Test]” rather than superscript or a link. If this isn’t an intentional negative-test fixture, consider removing the backslashes so the markdown renders naturally (or documenting why the escapes are required).fixture-docs/en/list-item.md (1)
9-12: Verify nested-list indentation width
The nested ordered list is indented by three spaces. CommonMark accepts 2–4, but many remark-lint presets default to 4 for consistency. Double-check that your new list-indent rules are configured to allow this 3-space style, otherwise the fixture may fail unexpectedly..nvmrc (1)
1-1: Node v24.3.0 is not yet an LTS release
Bumping to the latest current version can break contributors on LTS (v20) and CI images pinned to LTS. Confirm that all CI jobs, Dockerfiles, and production environments will run on Node 24 before merging.fixture-docs/en/table.md (1)
5-5: Intentional empty table cell?
| val1 | |leavescol2blank, which will trigger thenoEmptyTableCellrule you just introduced. If the goal is a passing fixture, add placeholder text; if it’s a failing fixture, rename the file or place it under a dedicated “invalid” fixtures folder to avoid confusion.tsconfig.json (1)
18-18: rewriteRelativeImportExtensions support confirmedThe
rewriteRelativeImportExtensionscompiler option was introduced in TypeScript 5.7, and your project specifies TypeScript ^5.8.3 in package.json, so this setting is fully supported. No further changes are needed.patches/unified-engine+11.2.2.patch (1)
9-9: LGTM! Clean and minimal patch.The patch correctly extends the existing loader system to support
.tsconfiguration files by reusing the sameloadScriptOrModulefunction used for JavaScript files. This is a clean, minimal change that follows the existing pattern.src/cli/translate.ts (1)
412-415: LGTM! Clear documentation improvement.The updated description makes it more explicit that the glob patterns are specifically for files to translate, improving clarity for users.
src/remark-lint/no-empty-table-cell.ts (1)
5-17: LGTM! Well-implemented lint rule.The implementation correctly:
- Uses
visitParentsto traverse table cells with proper context- Checks for empty cells using
!tableCell.children.length- Provides clear, actionable error messages
- Includes proper position and ancestor information for debugging
src/remark-lint/no-deep-heading.ts (1)
1-22: LGTM! Well-implemented heading depth constraint rule.The implementation is clean and follows the unified-lint-rule pattern correctly. The maximum depth of 4 is appropriate for documentation, and the error message provides clear feedback to users.
src/remark-lint/no-heading-sup-sub.ts (1)
8-25: LGTM! Proper nested traversal for heading HTML content.The nested visit pattern correctly traverses headings first, then HTML nodes within them. This approach ensures only HTML content inside headings is checked.
src/remark-lint/no-deep-list.ts (1)
7-23: LGTM! Correct depth calculation for list nesting.The depth calculation logic correctly counts parent list nodes plus the current node. The maximum depth of 3 is appropriate for maintaining readability in documentation.
src/cli/lint.ts (5)
13-15: LGTM! Clean interface definition for command options.The interface clearly defines the expected glob option type, supporting both single string and array patterns.
20-24: LGTM! Good default value and clear option description.The default glob pattern covers the expected file types (js, jsx, ts, tsx, md, mdx) and the option description is clear and helpful.
26-28: LGTM! Proper destructuring of options.The type annotation correctly combines both local and global options, and the destructuring cleanly separates the glob option from global options.
41-43: LGTM! Improved logging with better path display.The use of
path.relative()and colored output makes the logging more user-friendly by showing relative paths instead of absolute ones.
45-45: LGTM! Flexible glob pattern usage.The command now uses the user-provided glob pattern, making the linting more flexible while maintaining the sensible default.
src/eslint.ts (3)
1-2: LGTM: Proper Node.js module imports for ESM/CJS compatibility.The imports for
createRequireandfileURLToPathare correctly used to support remark configuration resolution in both ESM and CommonJS environments.
15-23: LGTM: Robust dual-resolution strategy for remarkrc.js.The implementation correctly handles both ESM and CJS environments by trying
import.meta.resolvefirst and falling back tocreateRequire.resolve. This ensures the remark configuration can be resolved regardless of the module system being used.
58-60: LGTM: Proper integration of remark configuration into parser options.The resolved
remarkConfigPathis correctly injected into the parser options for files matching the English documentation pattern, enabling the new remark-lint rules to function properly.src/remark-lint/list-table-introduction.ts (1)
8-23: LGTM: Well-implemented lint rule for introductory text validation.The rule correctly identifies lists and tables that lack introductory text by checking:
- If the node is the first child in its parent
- If the preceding sibling is a heading (which doesn't count as introductory text)
The error message is clear and includes proper positioning information and ancestry context for debugging.
src/remark-lint/no-heading-special-characters.ts (3)
7-7: LGTM: Appropriate special character definition.The regex
/[*+/^|~]/correctly identifies markdown special characters that could cause formatting issues in headings.
16-26: LGTM: Robust special character detection with escape handling.The implementation correctly:
- Extracts raw text using position offsets from the file content
- Filters out escaped characters by checking for preceding backslashes
- Uses Set to deduplicate matched characters
- Provides comprehensive character analysis
The escape character check
(!index || raw[index - 1] !== '\\')properly handles both start-of-string and escaped characters.
29-40: LGTM: Well-formatted error message with proper pluralization.The error message construction is excellent:
- Uses
pluralizefor grammatically correct singular/plural forms- Includes the specific characters found
- Provides actionable advice (remove or escape)
- Includes proper positioning and ancestry context
The conditional verb conjugation
contain${matchedLength === 1 ? 's' : ''}ensures grammatical correctness.docs/en/start.mdx (1)
258-260: LGTM: Documentation correctly reflects new lint command options.The documentation properly documents the new
-g, --globoption for the lint command, which aligns with the implementation changes in the CLI.src/remark-lint/no-heading-punctuation.ts (2)
21-33: LGTM: Well-designed punctuation detection with appropriate exceptions.The implementation correctly handles edge cases:
- FAQ files can have question marks in headings
- Balanced brackets, braces, angle brackets, and parentheses are allowed
- The logic for checking balanced pairs is simple but effective for common use cases
The exception logic is practical and covers the most common legitimate uses of punctuation in headings.
35-41: LGTM: Clear error message with proper context.The error message is concise and actionable, providing the specific problematic character and clear instructions. The positioning and ancestry information will help users locate and fix the issue.
docs/zh/start.mdx (2)
169-169: Documentation update looks good.The clarification from "Glob patterns for source dirs/files" to "Glob patterns of source dirs/files to translate" makes the purpose more explicit and improves clarity.
253-257: Well-documented new CLI option.The addition of the
--globoption documentation for the lint command is comprehensive and clearly explains the default pattern and usage.src/remark-lint/index.ts (2)
5-15: Clean and well-organized exports.The export structure is clear and follows a consistent pattern for all lint rules. This provides a good API for consuming modules.
17-24: Proper unified plugin implementation.The
doomLintplugin correctly usesremark-message-controlwith appropriate sources configuration. The plugin structure follows unified framework conventions.package.json (3)
89-91: Comprehensive remark-lint dependencies added.The addition of multiple remark-lint plugins and utilities supports the new markdown linting functionality. The dependencies appear to be well-chosen for comprehensive markdown quality enforcement.
Also applies to: 99-99, 106-117, 121-121, 126-126, 128-130
62-62: Dependency upgrades look appropriate.The version upgrades for
@cspell/eslint-plugin,@rsbuildplugins,eslint-plugin-mdx,mermaid,typescript-eslint, and@swc/coreappear to be reasonable updates that should improve functionality and compatibility.Also applies to: 67-69, 83-83, 140-140, 146-146
51-51: Verify intentional removal of ESLint cachingIt looks like the
--cacheflag was removed from thelint:esscript in package.json, which will disable ESLint’s incremental caching and make every lint run start from scratch. Please confirm that:
- This change is deliberate and that the team is OK with the increased linting time locally and in CI.
- There’s no existing documentation or caching strategy elsewhere that needs updating to reflect this removal.
src/remarkrc.ts (3)
4-4: TypeScript error suppressions are documented.The
@ts-expect-errorcomments include links to relevant GitHub issues, which is good practice for tracking when these suppressions can be removed.Also applies to: 7-7, 12-12, 18-18
43-46: Good Unicode handling for heading length.Using
stringWidthfor string length calculation properly handles Unicode characters and wide characters, which is important for accurate length measurement in international content.
35-65: Comprehensive remark configuration.The plugin configuration includes a well-balanced set of standard remark plugins and lint rules that should provide thorough markdown quality enforcement while maintaining flexibility.
src/remark-lint/no-paragraph-indent.ts (3)
11-15: Good optimization with phrasing content skip.Skipping phrasing content is an excellent optimization that avoids unnecessary traversal of inline content where paragraph indentation is not relevant.
20-29: Appropriate scope limitation.The decision to only check paragraphs directly in the root node is well-reasoned. The comment explains the complexity of handling block quotes and lists, making this a pragmatic approach.
31-44: Clear error reporting with proper pluralization.The error message is informative and uses proper pluralization. The inclusion of ancestors and position information provides good context for debugging.
src/remark-lint/list-item-punctuation.ts (2)
10-68: Excellent implementation of the lint rule.The rule logic is well-structured and comprehensive:
- Proper handling of lists with fewer than 2 items
- Clear distinction between allowed and disallowed punctuation
- Consistent enforcement across list items with special handling for the last item
- Detailed error messages with proper positioning information
- Follows the unified-lint-rule pattern correctly
32-38: Last-item index calculation is correct.Verified that with
size = listItems.length - 1, the checkindex === size - 1matches the final element inlistItems.slice(1). No changes needed.docs/en/usage/configuration.md (4)
4-4: Updated source SHA.The sourceSHA has been updated, which is expected for documentation changes.
13-13: Improved clarity in configuration explanation.The addition of "exporting the configuration is required" makes the requirement clearer for users.
23-29: Excellent terminology consistency improvements.The changes consistently use "documentation" instead of "document" throughout the configuration descriptions, which improves professional tone and clarity. The path explanations are also more precise.
35-47: Enhanced API documentation configuration explanations.The improvements to comment clarity and the addition of detailed path explanations make the API configuration section more user-friendly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
docs/en/start.mdx (2)
15-17: Prefer Yarn v4 for project initialization to stay consistent with repo toolingThe project standard (per multiple previous PRs) is Yarn v4, yet this step recommends
npm init -y. Swapping to the equivalent Yarn command (yarn init -2 -yor justyarn init -2) avoids mixing package managers and prevents inadvertent creation ofpackage-lock.json.-Run `npm init -y` to initialize a project. You can install doom using npm, yarn, or pnpm: +Run `yarn init -2 -y` to initialize a project. You can install doom using Yarn, pnpm, or npm:
254-260: *Quote the default glob to avoid shell expansion issues on nixUnquoted globs like
**/*.{js,jsx,...}will be expanded by most shells before reaching the CLI, leading to “argument list too long” errors. Consider documenting the safe form:- -g, --glob <path...> Glob patterns of source dirs/files to lint (default: "**/*.{js,jsx,ts,tsx,md,mdx}") + -g, --glob <path...> Glob patterns (quote them!) (default: '"**/*.{js,jsx,ts,tsx,md,mdx}"')docs/en/usage/configuration.md (1)
70-81: ClarifypublicBaseand path resolution for remote repos
publicBaseis described as “absolute path where static resources … are located” but later examples treat it like a repo-relative directory. Ambiguity here leads to broken asset URLs when consumers point to an external GitHub repo.Recommend adding an explicit sentence, e.g.:
# Absolute path (starting with `/`) will be preserved as-is in final URLs; # relative paths are resolved against the root of the referenced repository.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (27)
.nvmrc(1 hunks)docs/en/start.mdx(11 hunks)docs/en/usage/configuration.md(11 hunks)docs/zh/start.mdx(2 hunks)fixture-docs/en/heading.md(1 hunks)fixture-docs/en/list-item.md(1 hunks)fixture-docs/en/table.md(1 hunks)package.json(4 hunks)patches/unified-engine+11.2.2.patch(1 hunks)src/cli/lint.ts(2 hunks)src/cli/translate.ts(1 hunks)src/eslint.ts(3 hunks)src/remark-lint/constants.ts(1 hunks)src/remark-lint/index.ts(1 hunks)src/remark-lint/list-item-punctuation.ts(1 hunks)src/remark-lint/list-item-size.ts(1 hunks)src/remark-lint/list-table-introduction.ts(1 hunks)src/remark-lint/no-deep-heading.ts(1 hunks)src/remark-lint/no-deep-list.ts(1 hunks)src/remark-lint/no-empty-table-cell.ts(1 hunks)src/remark-lint/no-heading-punctuation.ts(1 hunks)src/remark-lint/no-heading-special-characters.ts(1 hunks)src/remark-lint/no-heading-sup-sub.ts(1 hunks)src/remark-lint/no-paragraph-indent.ts(1 hunks)src/remark-lint/table-size.ts(1 hunks)src/remarkrc.ts(1 hunks)tsconfig.json(1 hunks)
✅ Files skipped from review due to trivial changes (4)
- src/cli/translate.ts
- src/remark-lint/table-size.ts
- src/remark-lint/list-table-introduction.ts
- src/remark-lint/index.ts
🚧 Files skipped from review as they are similar to previous changes (16)
- .nvmrc
- tsconfig.json
- src/remark-lint/constants.ts
- patches/unified-engine+11.2.2.patch
- src/remark-lint/no-deep-heading.ts
- src/remark-lint/no-empty-table-cell.ts
- src/remark-lint/no-deep-list.ts
- src/remark-lint/list-item-size.ts
- src/remark-lint/no-heading-sup-sub.ts
- src/eslint.ts
- src/remarkrc.ts
- src/remark-lint/no-heading-special-characters.ts
- docs/zh/start.mdx
- src/cli/lint.ts
- src/remark-lint/no-paragraph-indent.ts
- package.json
🧰 Additional context used
🧠 Learnings (6)
📓 Common learnings
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
docs/en/start.mdx (8)
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:22:30.004Z
Learning: In the @alauda/doom project, the team prefers throwing descriptive errors for invalid configuration rather than using optional chaining or graceful fallbacks. This fail-fast approach helps catch configuration issues early during development.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#34
File: src/theme.tsx:4-17
Timestamp: 2025-05-29T10:21:32.682Z
Learning: In the @alauda/doom project, environment variables like ALGOLIA_APP_ID, ALGOLIA_API_KEY, and ALGOLIA_INDEX_NAME are injected at build time, making non-null assertions safe when used after truthiness checks.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
docs/en/usage/configuration.md (8)
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:22:30.004Z
Learning: In the @alauda/doom project, the team prefers throwing descriptive errors for invalid configuration rather than using optional chaining or graceful fallbacks. This fail-fast approach helps catch configuration issues early during development.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/theme.tsx:4-17
Timestamp: 2025-05-29T10:21:32.682Z
Learning: In the @alauda/doom project, environment variables like ALGOLIA_APP_ID, ALGOLIA_API_KEY, and ALGOLIA_INDEX_NAME are injected at build time, making non-null assertions safe when used after truthiness checks.
fixture-docs/en/table.md (1)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/table-size.ts:8-21
Timestamp: 2025-07-09T02:31:35.587Z
Learning: GFM (GitHub Flavored Markdown) tables always have at least one row by specification, so code accessing `table.children[0]` in markdown AST processing is safe without additional empty table checks.
src/remark-lint/list-item-punctuation.ts (8)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
src/remark-lint/no-heading-punctuation.ts (8)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
🧬 Code Graph Analysis (2)
src/remark-lint/list-item-punctuation.ts (1)
src/remark-lint/constants.ts (1)
PUNCTUATION_REGEX(1-1)
src/remark-lint/no-heading-punctuation.ts (1)
src/remark-lint/constants.ts (1)
PUNCTUATION_REGEX(1-1)
🪛 LanguageTool
docs/en/start.mdx
[grammar] ~15-~15: Use correct spacing
Context: ...ou can install doom using npm, yarn, or pnpm: Then create files with the following co...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~19-~19: Use correct spacing
Context: ...> Then create files with the following commands: bash # Create docs directories, with default support for bilingual Chinese and English mkdir docs/en && echo '# Hello World' > docs/en/index.md mkdir docs/zh && echo '# 你好世界' > docs/zh/index.md Add the following scripts to your `pack...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~27-~27: Use correct spacing
Context: ... Add the following scripts to your `package.json`: json { "scripts": { "dev": "doom dev", "build": "doom build", "new": "doom new", "serve": "doom serve", "translate": "doom translate", "export": "doom export" } } ``` Then initialize a configuration file `d...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~48-~48: Use correct spacing
Context: ...tsconfig.json file with the following content: jsonc { "compilerOptions": { "jsx": "react-jsx", "module": "NodeNext", "moduleResolution": "NodeNext", "noUnusedLocals": true, "noUnusedParameters": true, "resolveJsonModule": true, "skipLibCheck": true, "strict": true, "target": "ESNext", }, "mdx": { "checkMdx": true, }, } Finally, create a global.d.ts file wi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~75-~75: Use correct spacing
Context: ...ided by doom with type safety in .mdx files. ## CLI Tool {#cli} ```bash doom -h # ou...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~124-~124: There might be a mistake here.
Context: ...Run yarn dev to start the development server, the browser will automatically open the...
(QB_NEW_EN_OTHER)
[grammar] ~124-~124: Use correct spacing
Context: ...ll automatically open the documentation homepage. sh doom dev -h # output Usage: doom dev [options] [root] Start the development server Arguments: root Root directory of the documentation Options: -H, --host [host] Dev server host name -P, --port [port] Dev server port number -l, --lazy [boolean] Whether to enable `lazyCompilation` which could improve the compilation performance (default: true) --no-lazy Do not enable `lazyCompilation` -h, --help display help for command ### Production Build {#build} Run `yarn b...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~155-~155: Use correct spacing
Context: ...ules, or documentation from scaffolding templates. ### Translating Documentation {#translate}...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~178-~178: Use the right pronoun
Context: ...ehavior caused by command line parsing. Examples: 1. yarn translate -g abc xyz will translate all documents under `<roo...
(QB_NEW_EN_OTHER_ERROR_IDS_9)
[grammar] ~180-~180: Use correct spacing
Context: ...spectively. 2. yarn translate -g '*' will translate all document files under `<ro...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~182-~182: Use colons correctly
Context: ...h. Examples: - When this parameter is enabled: 1. When translating /<source>/abc.jpg, `<...
(QB_NEW_EN_OTHER_ERROR_IDS_30)
[grammar] ~186-~186: Use correct spacing
Context: ... - When this parameter is not enabled: 1. When translating /<source>/abc.jpg, if...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~188-~188: Use correct spacing
Context: ....jpg; otherwise, it will be changed to ../. :::warning Specifically, if you use -g...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~191-~191: Use correct spacing
Context: ...lRoutes` will be automatically deleted. ::: :::tip The translation feature requires...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~195-~195: Use correct spacing
Context: ... contact your team leader to obtain it. ::: You can control translation behavior in...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~214-~214: Use correct spacing
Context: ... yarn build command before exporting. ::: sh doom export -h # output Usage: doom export [options] [root] Export the documentation as PDF, `apis/**` and `*/apis/**` routes will be ignored automatically Arguments: root Root directory of the documentation Options: -H, --host [host] Serve host name -P, --port [port] Serve port number (default: "4173") -h, --help display help for command Run yarn export to export the documen...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~234-~234: Use correct spacing
Context: ...he same -b and -p parameters during export. The export feature depends on [`playwri...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~236-~236: Use correct spacing
Context: ...lowing environment variable to speed up downloads: dotenv title=".env.yarn" PLAYWRIGHT_DOWNLOAD_HOST="https://cdn.npmmirror.com/binaries/playwright" In addition to exporting a complete PDF...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~242-~242: There might be a mistake here.
Context: ..., please refer to Documentation Export Configuration ### Documentation Linting {#lint} ```sh d...
(QB_NEW_EN_OTHER)
[grammar] ~278-~278: Use correct spacing
Context: ...nary files. For example, you can create .cspell/k8s.txt: txt k8s kubernetes For more configuration, please refer to...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~285-~285: There might be a mistake here.
Context: ...re configuration, please refer to Lint Configuration
(QB_NEW_EN_OTHER)
docs/en/usage/configuration.md
[grammar] ~13-~13: Use correct spacing
Context: ...ted from @alauda/doom/config for type assistance: ts import { defineConfig } from '@alauda/doom/config' export default defineConfig({}) ## Basic Configuration {#basic} - lang:...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~25-~25: There might be a mistake here.
Context: ...paths refer to files under the public directory, relative paths refer to files relative ...
(QB_NEW_EN_OTHER)
[grammar] ~29-~29: Use correct spacing
Context: ...ulti-version Build](./deploy#多版本构建) for details. ## API Documentation Configuration {#api} ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~31-~31: Use correct spacing
Context: ...ls. ## API Documentation Configuration {#api} yaml api: # CRD definition file paths, relative to the directory where doom.config.* is located, supports glob matching, json/yaml files crds: - docs/shared/crds/*.yaml # OpenAPI definition file paths, relative to the directory where doom.config.* is located, supports glob matching, json/yaml files openapis: - docs/shared/openapis/*.json # When rendering OpenAPI related resource definitions, they are inlined by default. To extract related resource definitions into separate files, configure the following options. # Reference: https://doom.alauda.cn/apis/references/CodeQuality.html#v1alpha1.CodeQualitySpec references: v1alpha1.CodeQualityBranch: /apis/references/CodeQualityBranch#v1alpha1.CodeQualityBranch # Optional, API documentation path prefix. Configure this if your business uses gateway or other proxy services. pathPrefix: /apis Refer to API Documentation for...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~85-~85: There might be a mistake here.
Context: ...gnore the frontmatter of the referenced document, keep using the current document’s front...
(QB_NEW_EN_OTHER)
[grammar] ~109-~109: Use articles correctly
Context: ...ql>. This API requires authentication, so JIRA_USERNAMEandJIRA_PASSWORD` env...
(QB_NEW_EN_OTHER_ERROR_IDS_11)
[grammar] ~109-~109: Use correct spacing
Context: ...riables must be provided to preview the effect. ## Sidebar Configuration {#sidebar} ```ya...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~111-~111: Use correct spacing
Context: ...w the effect. ## Sidebar Configuration {#sidebar} yaml sidebar: collapsed: false # Optional, whether the sidebar is collapsed by default. Defaults to collapsed. If the documentation content is small, consider setting to false. ## Internal Documentation Routes Configura...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~118-~118: Use correct spacing
Context: ...rnal Documentation Routes Configuration {#internal-routes} yaml internalRoutes: # Optional, supports glob matching relative to the docs directory. Routes/files matched when CLI option `-i, --ignore` is enabled will be ignored. - '*/internal/**' ## Only Include Documentation Routes Confi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~125-~125: Use correct spacing
Context: ...lude Documentation Routes Configuration {#only-include-routes} yaml onlyIncludeRoutes: # Optional, supports glob matching relative to the docs directory. When CLI option `-i, --ignore` is enabled, only routes/files under this configuration will be enabled. Can be combined with `internalRoutes` to exclude some routes. - '*/internal/**' internalRoutes: - '*/internal/overview.mdx' ## Syntax Highlighting Plugin Configuratio...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~144-~144: There might be a problem here.
Context: ...and fall back to plaintext rendering. ::: ## sites.yaml Configuration {#sites} The sites.yaml configuration file is ...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~149-~149: Use correct spacing
Context: ...lsite) and when building single-version documentation. yaml - name: connectors # Globally unique name for the site base: /devops-connectors # Base path for site access version: v1.1 # Version used for ExternalSite/ExternalSiteLink redirects when building multi-version sites displayName: # Site display name. If not provided or language not matched, defaults to name en: DevOps Connectors zh: DevOps 连接器 # The following properties are used to pull images when building the entire site. If not provided, this will be ignored during final packaging. # Usually required for subsite references, not needed for parent site references. repo: https://github.com/AlaudaDevops/connectors-operator # Site repository URL. For internal GitLab repos, you can use the slug, e.g., `alauda/product-docs` image: devops/connectors-docs # Site build image, used to pull images when building the entire site ## Translation Configuration {#translate} ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~246-~246: Use correct spacing
Context: ...`` ## Documentation Lint Configuration {#lint} yaml lint: cspellOptions: # Optional, cspell configuration options, refer to https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell-eslint-plugin#options ## Algolia Search Configuration {#algolia}...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~253-~253: Use correct spacing
Context: ...ns ## Algolia Search Configuration {#algolia} yaml algolia: # Optional, Algolia search configuration, effective only when CLI flag -a, --algolia is enabled appId: # Algolia Application ID apiKey: # Algolia API Key indexName: # Algolia index name ``` Please use public/robots.txt for Algo...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~266-~266: There might be a problem here.
Context: ...e following theme configuration file to enable: ts title "theme/index.ts" export * from '@alauda/doom/theme' ::: ## Sitemap Configuration {#sitemap} ```ya...
(QB_NEW_EN_MERGED_MATCH)
fixture-docs/en/heading.md
[grammar] ~1-~1: There might be a problem here.
Context: # Test^ [Test] ## Test ### Depth Test
(QB_NEW_EN_MERGED_MATCH)
fixture-docs/en/list-item.md
[grammar] ~1-~1: Use correct spacing
Context: # Test Some introductory text. - Test1 - Test...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: Use correct spacing
Context: # Test Some introductory text. - Test1 - Test2 1. Test1 1. Test1.1 ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~6-~6: Use correct spacing
Context: ...est Some introductory text. - Test1 - Test2 1. Test1 1. Test1.1 1. Test1.1.1 ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/table.md
[grammar] ~1-~1: Use correct spacing
Context: Some introductory text. | col1 | col2 | | ---- | ---- | | val1 ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
🪛 Biome (1.9.4)
src/remark-lint/list-item-punctuation.ts
[error] 2-2: Do not shadow the global "toString" property.
Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.
(lint/suspicious/noShadowRestrictedNames)
src/remark-lint/no-heading-punctuation.ts
[error] 4-4: Do not shadow the global "toString" property.
Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.
(lint/suspicious/noShadowRestrictedNames)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
- GitHub Check: Build and Lint with Node.js 18 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 20 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 22 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 24 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 24 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 22 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 20 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 18 on ubuntu-latest
🔇 Additional comments (6)
fixture-docs/en/table.md (1)
1-6: Good test fixture for table linting.The table structure is appropriate for testing markdown linting rules. The empty cell in the second column provides a useful test case for table-related lint rules.
fixture-docs/en/heading.md (1)
1-8: Good test fixture for heading linting.The heading structure with escaped characters and multiple depths provides comprehensive test cases for heading-related lint rules, including special character handling.
fixture-docs/en/list-item.md (1)
1-14: Good test fixture for list linting.The combination of unordered and ordered lists with multiple nesting levels provides comprehensive test cases for list-related lint rules, including punctuation consistency checks.
src/remark-lint/no-heading-punctuation.ts (1)
10-45: Well-implemented heading punctuation rule.The lint rule correctly handles various edge cases:
- FAQ files with question marks are exempted
- Balanced punctuation (brackets, braces, parentheses) is allowed
- Clear error messages with position information
- Proper AST traversal with ancestor tracking
The logic is sound and the implementation follows the unified lint rule pattern correctly.
src/remark-lint/list-item-punctuation.ts (1)
8-68: Well-implemented list punctuation consistency rule.The lint rule correctly enforces punctuation consistency across list items:
- Proper handling of lists with < 2 items
- First item establishes the punctuation pattern
- Semicolons and periods are allowed punctuation marks
- Last item must end with period when punctuation is used
- Clear error messages with detailed context
The logic is comprehensive and handles edge cases appropriately.
docs/en/start.mdx (1)
178-181: Double-check whether-g/--globis actually mandatory fordoom translateDocs label the flag as “required”, but the help output right above does not mark it mandatory (no angle-bracketed placeholder in the command synopsis, no
(required)note). Please confirm the CLI behaviour; if the flag is optional the bullet should be softened, otherwise the help text must add the usual “(required)” cue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (1)
styles/global.scss (1)
154-157:counters(section, '.')leaks numbering across nested listsBecause
counter-resetis applied only on the root.rp-list-decimal:not(:has(p)), a nested<ol class="rp-list-decimal">inside one of its<li>elements will continue counting instead of starting at1.
If hierarchical numbering (1.1,1.2 …) is not desired, addcounter-reset: sectionon the child list as well:> ol.rp-list-decimal, > ul.rp-list-decimal { counter-reset: section; }This mirrors typical markdown expectations where each nested ordered list restarts.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (49)
.changeset/silly-llamas-argue.md(1 hunks).nvmrc(1 hunks)docs/en/start.mdx(11 hunks)docs/en/usage/configuration.md(11 hunks)docs/en/usage/markdown.md(1 hunks)docs/en/usage/mdx.mdx(2 hunks)docs/zh/start.mdx(2 hunks)docs/zh/usage/markdown.md(1 hunks)fixture-docs/doom.config.yml(1 hunks)fixture-docs/en/development/component-quickstart/index.md(5 hunks)fixture-docs/en/heading.md(1 hunks)fixture-docs/en/install/installing.mdx(10 hunks)fixture-docs/en/install/prerequisites.mdx(11 hunks)fixture-docs/en/install/scalability.mdx(4 hunks)fixture-docs/en/link.md(1 hunks)fixture-docs/en/list-item.md(1 hunks)fixture-docs/en/other.mdx(1 hunks)fixture-docs/en/reference.mdx(1 hunks)fixture-docs/en/table.md(1 hunks)fixture-docs/en/text.md(1 hunks)fixture-docs/zh/reference.mdx(1 hunks)package.json(4 hunks)patches/unified-engine+11.2.2.patch(1 hunks)src/cli/lint.ts(2 hunks)src/cli/translate.ts(1 hunks)src/eslint.ts(4 hunks)src/plugins/auto-sidebar/utils.ts(1 hunks)src/plugins/replace/parse-toc.ts(1 hunks)src/plugins/replace/utils.ts(0 hunks)src/remark-lint/constants.ts(1 hunks)src/remark-lint/index.ts(1 hunks)src/remark-lint/list-item-punctuation.ts(1 hunks)src/remark-lint/list-item-size.ts(1 hunks)src/remark-lint/list-table-introduction.ts(1 hunks)src/remark-lint/maximum-link-content-length.ts(1 hunks)src/remark-lint/no-deep-heading.ts(1 hunks)src/remark-lint/no-deep-list.ts(1 hunks)src/remark-lint/no-empty-table-cell.ts(1 hunks)src/remark-lint/no-heading-punctuation.ts(1 hunks)src/remark-lint/no-heading-special-characters.ts(1 hunks)src/remark-lint/no-heading-sup-sub.ts(1 hunks)src/remark-lint/no-paragraph-indent.ts(1 hunks)src/remark-lint/table-size.ts(1 hunks)src/remark-lint/unit-case.ts(1 hunks)src/remarkrc.ts(1 hunks)src/shared/helpers.ts(2 hunks)src/shared/types.ts(1 hunks)styles/global.scss(1 hunks)tsconfig.json(1 hunks)
💤 Files with no reviewable changes (1)
- src/plugins/replace/utils.ts
✅ Files skipped from review due to trivial changes (7)
- fixture-docs/doom.config.yml
- src/plugins/auto-sidebar/utils.ts
- src/shared/types.ts
- src/plugins/replace/parse-toc.ts
- src/cli/translate.ts
- src/remark-lint/table-size.ts
- docs/zh/usage/markdown.md
🚧 Files skipped from review as they are similar to previous changes (17)
- .changeset/silly-llamas-argue.md
- patches/unified-engine+11.2.2.patch
- tsconfig.json
- .nvmrc
- src/remark-lint/constants.ts
- src/remark-lint/no-empty-table-cell.ts
- src/remark-lint/no-deep-list.ts
- src/remark-lint/no-heading-special-characters.ts
- src/remark-lint/no-heading-sup-sub.ts
- src/remarkrc.ts
- src/cli/lint.ts
- docs/zh/start.mdx
- src/remark-lint/no-paragraph-indent.ts
- src/remark-lint/index.ts
- src/remark-lint/list-table-introduction.ts
- src/eslint.ts
- package.json
🧰 Additional context used
🧠 Learnings (11)
📓 Common learnings
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
src/remark-lint/no-deep-heading.ts (1)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
src/remark-lint/unit-case.ts (2)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
src/shared/helpers.ts (2)
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
src/remark-lint/maximum-link-content-length.ts (1)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
src/remark-lint/list-item-punctuation.ts (8)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
docs/en/start.mdx (8)
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:22:30.004Z
Learning: In the @alauda/doom project, the team prefers throwing descriptive errors for invalid configuration rather than using optional chaining or graceful fallbacks. This fail-fast approach helps catch configuration issues early during development.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#34
File: src/theme.tsx:4-17
Timestamp: 2025-05-29T10:21:32.682Z
Learning: In the @alauda/doom project, environment variables like ALGOLIA_APP_ID, ALGOLIA_API_KEY, and ALGOLIA_INDEX_NAME are injected at build time, making non-null assertions safe when used after truthiness checks.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
docs/en/usage/configuration.md (8)
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:22:30.004Z
Learning: In the @alauda/doom project, the team prefers throwing descriptive errors for invalid configuration rather than using optional chaining or graceful fallbacks. This fail-fast approach helps catch configuration issues early during development.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/theme.tsx:4-17
Timestamp: 2025-05-29T10:21:32.682Z
Learning: In the @alauda/doom project, environment variables like ALGOLIA_APP_ID, ALGOLIA_API_KEY, and ALGOLIA_INDEX_NAME are injected at build time, making non-null assertions safe when used after truthiness checks.
fixture-docs/en/development/component-quickstart/index.md (1)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
fixture-docs/en/table.md (1)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/table-size.ts:8-21
Timestamp: 2025-07-09T02:31:35.587Z
Learning: GFM (GitHub Flavored Markdown) tables always have at least one row by specification, so code accessing `table.children[0]` in markdown AST processing is safe without additional empty table checks.
src/remark-lint/no-heading-punctuation.ts (8)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
🧬 Code Graph Analysis (3)
src/remark-lint/maximum-link-content-length.ts (1)
src/shared/helpers.ts (1)
extractTextAndId(32-40)
src/remark-lint/list-item-punctuation.ts (1)
src/remark-lint/constants.ts (1)
PUNCTUATION_REGEX(1-1)
src/remark-lint/no-heading-punctuation.ts (1)
src/remark-lint/constants.ts (1)
PUNCTUATION_REGEX(1-1)
🪛 Biome (1.9.4)
src/remark-lint/list-item-punctuation.ts
[error] 2-2: Do not shadow the global "toString" property.
Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.
(lint/suspicious/noShadowRestrictedNames)
src/remark-lint/no-heading-punctuation.ts
[error] 4-4: Do not shadow the global "toString" property.
Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.
(lint/suspicious/noShadowRestrictedNames)
🪛 LanguageTool
docs/en/start.mdx
[grammar] ~15-~15: Use correct spacing
Context: ...ou can install doom using npm, yarn, or pnpm: Then create files with the following co...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~19-~19: Use correct spacing
Context: ...> Then create files with the following commands: bash # Create docs directories, with default support for bilingual Chinese and English mkdir docs/en && echo '# Hello World' > docs/en/index.md mkdir docs/zh && echo '# 你好世界' > docs/zh/index.md Add the following scripts to your `pack...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~27-~27: Use correct spacing
Context: ... Add the following scripts to your `package.json`: json { "scripts": { "dev": "doom dev", "build": "doom build", "new": "doom new", "serve": "doom serve", "translate": "doom translate", "export": "doom export" } } ``` Then initialize a configuration file `d...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~48-~48: Use correct spacing
Context: ...tsconfig.json file with the following content: jsonc { "compilerOptions": { "jsx": "react-jsx", "module": "NodeNext", "moduleResolution": "NodeNext", "noUnusedLocals": true, "noUnusedParameters": true, "resolveJsonModule": true, "skipLibCheck": true, "strict": true, "target": "ESNext", }, "mdx": { "checkMdx": true, }, } Finally, create a global.d.ts file wi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~75-~75: Use correct spacing
Context: ...ided by doom with type safety in .mdx files. ## CLI Tool {#cli} ```bash doom -h # ou...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~124-~124: There might be a mistake here.
Context: ...Run yarn dev to start the development server, the browser will automatically open the...
(QB_NEW_EN_OTHER)
[grammar] ~124-~124: Use correct spacing
Context: ...ll automatically open the documentation homepage. sh doom dev -h # output Usage: doom dev [options] [root] Start the development server Arguments: root Root directory of the documentation Options: -H, --host [host] Dev server host name -P, --port [port] Dev server port number -l, --lazy [boolean] Whether to enable `lazyCompilation` which could improve the compilation performance (default: true) --no-lazy Do not enable `lazyCompilation` -h, --help display help for command ### Production Build {#build} Run `yarn b...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~155-~155: Use correct spacing
Context: ...ules, or documentation from scaffolding templates. ### Translating Documentation {#translate}...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~178-~178: Use the right pronoun
Context: ...ehavior caused by command line parsing. Examples: 1. yarn translate -g abc xyz will translate all documents under `<roo...
(QB_NEW_EN_OTHER_ERROR_IDS_9)
[grammar] ~180-~180: Use correct spacing
Context: ...spectively. 2. yarn translate -g '*' will translate all document files under `<ro...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~182-~182: Use colons correctly
Context: ...h. Examples: - When this parameter is enabled: 1. When translating /<source>/abc.jpg, `<...
(QB_NEW_EN_OTHER_ERROR_IDS_30)
[grammar] ~186-~186: Use correct spacing
Context: ... - When this parameter is not enabled: 1. When translating /<source>/abc.jpg, if...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~188-~188: Use correct spacing
Context: ....jpg; otherwise, it will be changed to ../. :::warning Specifically, if you use -g...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~191-~191: Use correct spacing
Context: ...lRoutes` will be automatically deleted. ::: :::tip The translation feature requires...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~195-~195: Use correct spacing
Context: ... contact your team leader to obtain it. ::: You can control translation behavior in...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~214-~214: Use correct spacing
Context: ... yarn build command before exporting. ::: sh doom export -h # output Usage: doom export [options] [root] Export the documentation as PDF, `apis/**` and `*/apis/**` routes will be ignored automatically Arguments: root Root directory of the documentation Options: -H, --host [host] Serve host name -P, --port [port] Serve port number (default: "4173") -h, --help display help for command Run yarn export to export the documen...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~234-~234: Use correct spacing
Context: ...he same -b and -p parameters during export. The export feature depends on [`playwri...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~236-~236: Use correct spacing
Context: ...lowing environment variable to speed up downloads: dotenv title=".env.yarn" PLAYWRIGHT_DOWNLOAD_HOST="https://cdn.npmmirror.com/binaries/playwright" In addition to exporting a complete PDF...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~242-~242: There might be a mistake here.
Context: ..., please refer to Documentation Export Configuration ### Documentation Linting {#lint} ```sh d...
(QB_NEW_EN_OTHER)
[grammar] ~278-~278: Use correct spacing
Context: ...nary files. For example, you can create .cspell/k8s.txt: txt k8s kubernetes For more configuration, please refer to...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~285-~285: There might be a mistake here.
Context: ...re configuration, please refer to Lint Configuration
(QB_NEW_EN_OTHER)
docs/en/usage/configuration.md
[grammar] ~13-~13: Use correct spacing
Context: ...ted from @alauda/doom/config for type assistance: ts import { defineConfig } from '@alauda/doom/config' export default defineConfig({}) ## Basic Configuration {#basic} - lang:...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~25-~25: There might be a mistake here.
Context: ...paths refer to files under the public directory, relative paths refer to files relative ...
(QB_NEW_EN_OTHER)
[grammar] ~29-~29: Use correct spacing
Context: ...ulti-version Build](./deploy#多版本构建) for details. ## API Documentation Configuration {#api} ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~31-~31: Use correct spacing
Context: ...ls. ## API Documentation Configuration {#api} yaml api: # CRD definition file paths, relative to the directory where doom.config.* is located, supports glob matching, json/yaml files crds: - docs/shared/crds/*.yaml # OpenAPI definition file paths, relative to the directory where doom.config.* is located, supports glob matching, json/yaml files openapis: - docs/shared/openapis/*.json # When rendering OpenAPI related resource definitions, they are inlined by default. To extract related resource definitions into separate files, configure the following options. # Reference: https://doom.alauda.cn/apis/references/CodeQuality.html#v1alpha1.CodeQualitySpec references: v1alpha1.CodeQualityBranch: /apis/references/CodeQualityBranch#v1alpha1.CodeQualityBranch # Optional, API documentation path prefix. Configure this if your business uses gateway or other proxy services. pathPrefix: /apis Refer to API Documentation for...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~85-~85: There might be a mistake here.
Context: ...gnore the frontmatter of the referenced document, keep using the current document's front...
(QB_NEW_EN_OTHER)
[grammar] ~86-~86: Use colons correctly
Context: ...urrent document's frontmatter. - merge: Merge the frontmatter of the referenced docum...
(QB_NEW_EN_OTHER_ERROR_IDS_30)
[grammar] ~87-~87: There might be a problem here.
Context: ...ent's. - replace: Replace the current document's frontmatter with that of the referenced document. -...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~88-~88: Use colons correctly
Context: ...t of the referenced document. - remove: Remove the current document's frontmatter. Re...
(QB_NEW_EN_OTHER_ERROR_IDS_30)
[grammar] ~88-~88: Use correct spacing
Context: ...remove: Remove the current document's frontmatter. Refer to [Reference Documentation](./re...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~109-~109: Use articles correctly
Context: ...ql>. This API requires authentication, so JIRA_USERNAMEandJIRA_PASSWORD` env...
(QB_NEW_EN_OTHER_ERROR_IDS_11)
[grammar] ~109-~109: Use correct spacing
Context: ...riables must be provided to preview the effect. ## Sidebar Configuration {#sidebar} ```ya...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~111-~111: Use correct spacing
Context: ...w the effect. ## Sidebar Configuration {#sidebar} yaml sidebar: collapsed: false # Optional, whether the sidebar is collapsed by default. Defaults to collapsed. If the documentation content is small, consider setting to false. ## Internal Documentation Routes Configura...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~118-~118: Use correct spacing
Context: ...rnal Documentation Routes Configuration {#internal-routes} yaml internalRoutes: # Optional, supports glob matching relative to the docs directory. Routes/files matched when CLI option `-i, --ignore` is enabled will be ignored. - '*/internal/**' ## Only Include Documentation Routes Confi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~125-~125: Use correct spacing
Context: ...lude Documentation Routes Configuration {#only-include-routes} yaml onlyIncludeRoutes: # Optional, supports glob matching relative to the docs directory. When CLI option `-i, --ignore` is enabled, only routes/files under this configuration will be enabled. Can be combined with `internalRoutes` to exclude some routes. - '*/internal/**' internalRoutes: - '*/internal/overview.mdx' ## Syntax Highlighting Plugin Configuratio...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~144-~144: There might be a problem here.
Context: ...and fall back to plaintext rendering. ::: ## sites.yaml Configuration {#sites} The sites.yaml configuration file is ...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~149-~149: Use correct spacing
Context: ...lsite) and when building single-version documentation. yaml - name: connectors # Globally unique name for the site base: /devops-connectors # Base path for site access version: v1.1 # Version used for ExternalSite/ExternalSiteLink redirects when building multi-version sites displayName: # Site display name. If not provided or language not matched, defaults to name en: DevOps Connectors zh: DevOps 连接器 # The following properties are used to pull images when building the entire site. If not provided, this will be ignored during final packaging. # Usually required for subsite references, not needed for parent site references. repo: https://github.com/AlaudaDevops/connectors-operator # Site repository URL. For internal GitLab repos, you can use the slug, e.g., `alauda/product-docs` image: devops/connectors-docs # Site build image, used to pull images when building the entire site ## Translation Configuration {#translate} ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~246-~246: Use correct spacing
Context: ...`` ## Documentation Lint Configuration {#lint} yaml lint: cspellOptions: # Optional, cspell configuration options, refer to https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell-eslint-plugin#options ## Algolia Search Configuration {#algolia}...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~253-~253: Use correct spacing
Context: ...ns ## Algolia Search Configuration {#algolia} yaml algolia: # Optional, Algolia search configuration, effective only when CLI flag -a, --algolia is enabled appId: # Algolia Application ID apiKey: # Algolia API Key indexName: # Algolia index name ``` Please use public/robots.txt for Algo...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~266-~266: There might be a problem here.
Context: ...e following theme configuration file to enable: ts title "theme/index.ts" export * from '@alauda/doom/theme' ::: ## Sitemap Configuration {#sitemap} ```ya...
(QB_NEW_EN_MERGED_MATCH)
docs/en/usage/markdown.md
[grammar] ~18-~18: There might be a problem here.
Context: ...llouts">or thecomponent instead. ::: ````mdx ```sh Memory overhead per virtual machine ≈ (1.002 × requested memory) \ + 218 MiB \ # [\!code callout] + 8 MiB × (number of vCPUs) \ # [\!code callout] + 16 MiB × (number of graphics devices) \ # [\!code callout] + (additional memory overhead) # [\!code callout] ``` :::callouts 1. Required for the processes that run in thevirt-launcher` pod. 2. Number of virtual CPUs requested by the virtual machine. 3. Number of virtual graphics cards requested by the virtual machine. 4. Additional memory overhead: - If your environment includes a Single Root I/O Virtualization (SR-IOV) network device or a Graphics Processing Unit (GPU), allocate 1 GiB additional memory overhead for each device. - If Secure Encrypted Virtualization (SEV) is enabled, add 256 MiB. - If Trusted Platform Module (TPM) is enabled, add 53 MiB. ::: ```` sh Memory overhead per virtual machine ≈ (1.002 × requested memory) \ + 218 MiB \ # [!code callout] + 8 MiB × (number of vCPUs) \ # [!code callout] + 16 MiB × (number of graphics devices) \ # [!code callout] + (additional memory overhead) # [!code callout] :::callouts 1. Required for the processes that run in ...
(QB_NEW_EN_MERGED_MATCH)
docs/en/usage/mdx.mdx
[grammar] ~54-~54: Use correct spacing
Context: ...ve> ``` {/* lint ignore list-item-size */} - The directory structure of multi-langua...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~148-~148: Use correct spacing
Context: ...props {/* lint ignore list-item-size */} - terms: NormalizedTermItem[], optional, a c...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/development/component-quickstart/index.md
[uncategorized] ~97-~97: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ... replace certain image addresses in the open source community's configuration file `release...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[uncategorized] ~135-~135: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...mber is used to fetch the corresponding open source community's configuration list `release...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[uncategorized] ~163-~163: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...akefile`, you can directly download the open source community's configuration list by using...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~163-~163: There might be a problem here.
Context: ...configuration list by using the command make download-release-yaml. Explanation: - Once the configuration download is comp...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~220-~220: Use correct spacing
Context: ...ne of the controller component within tektoncd-pipeline: yaml apiVersion: tekton.dev/v1 kind: PipelineRun metadata: name: build-controller-image annotations: pipelinesascode.tekton.dev/on-comment: "^((/test-all)|(/build-controller-image)|(/test-multi.*\ build-controller-image.*))$" pipelinesascode.tekton.dev/on-cel-expression: |- # **Note** The use of comments is not supported in this `on-cel-expression`. The comments present here are for explanatory purposes; please ensure they are removed in the final configuration!!! # ( # Watch for file changes in relevant directories to automatically trigger the pipeline. # Rules for supported matching can be found at: # - https://pipelinesascode.com/docs/guide/matchingevents/#matching-a-pipelinerun-to-specific-path-changes # - https://en.wikipedia.org/wiki/Glob_%28programming%29 # - https://pipelinesascode.com/docs/guide/cli/#test-globbing-pattern # TL;DR: # - You may match all changes in the `.tekton` directory with ".tekton". # - You may match all changes in the `.tekton` directory with ".tekton/**". # - You cannot match all changes in the `.tekton` directory with ".tekton/.*". ".tekton/pr-build-controller-image.yaml".pathChanged() || ".tekton/dockerfiles/controller.Dockerfile".pathChanged() || ".tekton/patches".pathChanged() || "upstream".pathChanged() ) && ( # It is advisable to retain this check—changes to the `values.yaml` file should not automatically trigger the pipeline. # To prevent the pipeline from automatically updating this file and causing infinite trigger loops. # Moreover, if the current changes are in the main branch, it will still assess whether the pipeline should be triggered. !"values.yaml".pathChanged() || source_branch.matches("^(main|master|release-.*)$") ) && (( # This configuration can remain unchanged. event == "push" && ( source_branch.matches("^(main|master|release-.*)$") || target_branch.matches("^(main|master|release-.*)$") || target_branch.startsWith("refs/tags/") ) ) || ( event == "pull_request" && ( target_branch.matches("^(main|master|release-.*)$") ) )) pipelinesascode.tekton.dev/max-keep-runs: '1' spec: pipelineRef: # This is the pipeline template to be used. For detailed definitions and explanations, refer to: # https://tekton-hub.alauda.cn/alauda/pipeline/clone-image-build-test-scan resolver: hub params: - name: catalog value: alauda - name: type value: tekton - name: kind value: pipeline - name: name value: clone-image-build-test-scan - name: version value: '0.2' params: # The following general configurations do not require modification. - name: git-url value: '{{ repo_url }}' - name: git-revision value: '{{ source_branch }}' - name: git-commit value: '{{ revision }}' # **To adjust** Change to the actual image repository to be built - name: image-repository value: build-harbor.alauda.cn/test/devops/tektoncd/pipeline/controller # **To adjust** Change to the actual Dockerfile used for building the image - name: dockerfile-path value: .tekton/dockerfiles/controller.Dockerfile # **To adjust** Change to the actual build context for the image - name: context value: '.' # **To adjust** Change to the actual list of monitored file changes # **Note** The pipeline will compute the final commit sha based on these file changes. # This sha will be reflected in the image label's commit information and affect the final artifact's tag. - name: file-list-for-commit-sha value: - upstream - .tekton/patches - .tekton/dockerfiles/controller.Dockerfile - .tekton/pr-build-controller-image.yaml # **To adjust** Change to the necessary operations - name: update-files-based-on-image value: | # The script can use these environment variables: # - IMAGE: the image URL with tag and digest, e.g., `registry.alauda.cn:60080/devops/noroot/alauda-docker-buildx:latest@sha256:1234567890` # - IMAGE_URL: the image URL excluding tag and digest, e.g., `registry.alauda.cn:60080/devops/noroot/alauda-docker-buildx` # - IMAGE_TAG: the image tag, e.g., `latest` # - IMAGE_DIGEST: the image digest, e.g., `sha256:1234567890` # - LAST_CHANGED_COMMIT: the last changed commit sha # Use the yq from the base image to prevent automatic installation with `makefile`. export YQ=$(which yq) # Update `values.yaml` based on the complete information of the built image. # The script logic employed here can be found in the base image: # - https://gitlab-ce.alauda.cn/ops/edge-devops-task/-/blob/master/images/yq/script/update_image_version.sh # - https://gitlab-ce.alauda.cn/ops/edge-devops-task/blob/master/images/yq/script/replace_images_by_values.sh echo "update_image_version.sh values.yaml ${IMAGE}" update_image_version.sh values.yaml ${IMAGE} # **Important** Update the component's version number # A suffix will be generated based on the computed last changed commit sha. # Retain the current version while removing the -.* suffix OLD_VERSION=$(yq eval '.global.version' values.yaml) # Use the short commit sha as the version suffix export SUFFIX=${LAST_CHANGED_COMMIT:0:7} echo "update component version ${OLD_VERSION} suffix to ${SUFFIX}" make update-component-version # **Important** Update the `release.yaml` based on the latest `values.yaml`. echo "replace images in release/release.yaml" replace_images_by_values.sh release/release.yaml controller # **To adjust** If the image can be validated through preliminary command executions to ensure successful builds, include it here. - name: test-script value: '' # **To adjust** Append additional functionalities. `prepare-tools-image` and `prepare-command` facilitate pre-build preparation of the image. # For example, several tasks are executed: # - Generate the `head` file, documenting the upstream directory's commit sha. Generally used within the Dockerfile. # - Set Golang environment variables. # - Update go mod dependencies to address security issues (optional). - name: prepare-tools-image value: 'build-harbor.alauda.cn/devops/builder-go:1.23' - name: prepare-command value: | #!/bin/bash set -ex # Generate the head file, which contains the commit sha of the upstream directory cd upstream git rev-parse HEAD > ../head && cat ../head export GOPROXY=https://build-nexus.alauda.cn/repository/golang/,https://goproxy.cn,direct export CGO_ENABLED=0 export GONOSUMDB=* export GOMAXPROCS=4 export GOCACHE=/tmp/.cache/go-build mkdir -p $GOCACHE # Upgrade go mod dependencies go get github.com/docker/docker@v25.0.7 go get github.com/cloudevents/sdk-go/v2@v2.15.2 go get github.com/Azure/azure-sdk-for-go/sdk/azidentity@v1.6.0 go get github.com/hashicorp/go-retryablehttp@v0.7.7 go get golang.org/x/crypto@v0.31.0 go get google.golang.org/protobuf@v1.33.0 go get gopkg.in/go-jose/go-jose.v2@v2.6.3 go mod tidy go mod vendor git diff go.mod # **To adjust** Add as needed. `pre-commit-script` is for actions prior to committing. - name: pre-commit-script value: | # remove `head` file rm -f head # # revert upstream directory to prevent unnecessary changes cd upstream git checkout . cd .. # return to the root directory # **To adjust** Additional configurations, enable this if the image should not be scanned. # - name: ignore-trivy-scan # value: "true" # Subsequent configurations generally do not require modification. workspaces: - name: source volumeClaimTemplate: spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi - name: dockerconfig secret: secretName: build-harbor.kauto.docfj # This secret will be replaced by the pac controller. - name: basic-auth secret: secretName: '{{ git_auth_secret }}' - name: gitversion-config configMap: name: gitversion-config taskRunTemplate: # Ensure all tasks run as a non-root user. podTemplate: securityContext: runAsUser: 65532 runAsGroup: 65532 fsGroup: 65532 fsGroupChangePolicy: 'OnRootMismatch' taskRunSpecs: - pipelineTaskName: prepare-build computeResources: limits: cpu: '4' memory: 4Gi requests: cpu: '2' memory: 2Gi Explanation of functionalities implemen...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/heading.md
[grammar] ~1-~1: There might be a problem here.
Context: # Test^ [Test] ## Test ### Depth Test
(QB_NEW_EN_MERGED_MATCH)
fixture-docs/en/install/installing.mdx
[grammar] ~13-~13: There might be a problem here.
Context: .... ## Step 1: Download the Installation Package Prepare - Log in to the Customer Portal to ob...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~35-~35: Use correct spacing
Context: ... Validate Follow the steps below to validate: ### 1.1 Download and Verify the Public Key ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~37-~37: Use correct spacing
Context: ... ### 1.1 Download and Verify the Public Key bash curl -O https://www.alauda.cn/download/verify-key.pub md5sum verify-key.pub - The output MD5 value should be: `2eaddf...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~46-~46: Use correct spacing
Context: .... ### 1.2 Import Public Key and Verify Fingerprint bash gpg --import verify-key.pub gpg --fingerprint BB097AE6 - The fingerprint should match exactly: ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~58-~58: Use correct spacing
Context: ...### 1.3 Verify the Installation Package Signature bash gpg --verify <signature file> <installation package> For example: ```bash gpg --verify cpaa...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~74-~74: There might be a problem here.
Context: ...the Installation Package to the Control Node Prepare - Ensure the target control node is netwo...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~91-~91: Use correct spacing
Context: ...if the extracted directory structure is complete. --- ## Step 3: Start the Installer *Prepare...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~95-~95: There might be a problem here.
Context: ...is complete. --- ## Step 3: Start the Installer Prepare - Ensure the control node is network acce...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~110-~110: There might be a mistake here.
Context: ...`` - To use the Calico network plugin, execute: bash bash setup.sh --network-mode calico - To specify IPv6 or dual-stack mode, you...
(QB_NEW_EN_OTHER)
[grammar] ~124-~124: Use correct spacing
Context: ...ll the Management Cluster (Configure UI Parameters) Prepare In the Web UI, configure the ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~184-~184: There might be a problem here.
Context: ...--- ## Step 5: Verify the Installation Success Prepare - Log into the platform Web UI and confir...
(QB_NEW_EN_MERGED_MATCH)
fixture-docs/en/install/prerequisites.mdx
[grammar] ~15-~15: Use correct spacing
Context: ...ocessing steps. ## 1. Machine Resource Requirements Tip: This section describes the minim...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~17-~17: Use commas correctly
Context: ...nning](#scale) to prepare the necessary resources, or expand as needed post-installation. ...
(QB_NEW_EN_OTHER_ERROR_IDS_33)
[grammar] ~17-~17: Use correct spacing
Context: ...ecessary resources, or expand as needed post-installation. ### 1.1 Basic Configuration Requirements A...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~19-~19: Use correct spacing
Context: ...tallation. ### 1.1 Basic Configuration Requirements At least 3 physical or virtual mach...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~29-~29: Use correct spacing
Context: ...SD | ### 1.2 ARM Architecture Requirements For ARM architecture (e.g., Kunpeng 920...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~32-~32: Use colons correctly
Context: ...6, but not less than 1.5 times. For example: If the x86 requirement is 8 cores and 16...
(QB_NEW_EN_OTHER_ERROR_IDS_30)
[grammar] ~32-~32: Use correct spacing
Context: ...mmended configuration of 16 cores and 32GB. ### 1.3 Special Environment Description - ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~34-~34: There might be a problem here.
Context: ... and 32GB. ### 1.3 Special Environment Description - Single Node Deployment: If only 1 machine is ...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~36-~36: Use correct spacing
Context: ...gured with at least 3 machines for high availability. --- ## 2. Supported Operating Systems and Kern...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~40-~40: Use correct spacing
Context: ... ## 2. Supported Operating Systems and Kernels ### 2.1 x86 Architecture **Red Hat Enterpr...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~42-~42: Use correct spacing
Context: ...rating Systems and Kernels ### 2.1 x86 Architecture Red Hat Enterprise Linux (RHEL) - **...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~75-~75: Use correct spacing
Context: ... --- ### 2.2 ARM Architecture (Kunpeng 920) **Kylin Linux (Kylin Linux Advanced Serve...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~88-~88: Use correct spacing
Context: ...s issues. --- ### 2.3 Other Important Notes 1. Kernel Version Requirements: The a...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~104-~104: Use correct spacing
Context: ...is at least 4.11. --- ## 3. Machine Preprocessing Before installing the management cluste...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~106-~106: Use correct spacing
Context: ... nodes) must complete the preprocessing tasks. ### 3.1 Execute Quick Configuration Script ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~108-~108: Use correct spacing
Context: ...s. ### 3.1 Execute Quick Configuration Script Preparation Confirm that the installa...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~125-~125: Use correct spacing
Context: ...item requirements. ### 3.2 Check Local Requirements Check the following requirements item b...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~172-~172: Use correct spacing
Context: ...ages) for details). ### 3.3 Cross-Node Checks - There must be no network firewall restr...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~176-~176: Use correct spacing
Context: ...ynchronization error must not exceed 10 seconds. --- ## 4. Appendix ### 4.1 Remove Conflicting...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~180-~180: Use correct spacing
Context: ...must not exceed 10 seconds. --- ## 4. Appendix ### 4.1 Remove Conflicting Packages <a id="...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~182-~182: Use correct spacing
Context: ...4. Appendix ### 4.1 Remove Conflicting Packages Please use the following commands to c...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~298-~298: Use correct spacing
Context: ...done ``` --- ### 4.2 Configure Search Domain In the /etc/resolv.conf file, the `s...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~310-~310: Use correct spacing
Context: ...justments. --- ## 5. Network Resource Requirements Before installing the management cluste...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~312-~312: There might be a problem here.
Context: ...urces must be configured in advance. If hardware LoadBalancer cannot be provided, the installer suppo...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~312-~312: Use correct spacing
Context: ...ncer, but it may affect performance and reliability. ### 5.1 Network Resource Configuration | *...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~314-~314: Use correct spacing
Context: ... reliability. ### 5.1 Network Resource Configuration | Resource | Mandatory | **Q...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~329-~329: Use correct spacing
Context: ...cluster. ### 5.2 Network Configuration Requirements | Type | **Requirements...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~338-~338: Use correct spacing
Context: ... | ### 5.3 Port Forwarding Rules To ensure that the management cluster ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/install/scalability.mdx
[grammar] ~13-~13: Use correct spacing
Context: ...os: ## Installation Scenario Selection {#scenario} ### Scenario One: Functional Verification ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~15-~15: Use correct spacing
Context: ...scenario} ### Scenario One: Functional Verification Applicable Scope This scenario is sui...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~42-~42: Use correct spacing
Context: ... --- ### Scenario Two: ISV Integration Delivery Applicable Scope This scenario caters...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~70-~70: Use correct spacing
Context: ...: Multi-Cluster Management (Data Center Level) Applicable Scope This scenario is sui...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/link.md
[grammar] ~3-~3: There might be a problem here.
Context: ...long link text that exceeds the maximum length]() 我的长链接文本超过最大长度最大长度
(QB_NEW_EN_MERGED_MATCH)
fixture-docs/en/list-item.md
[grammar] ~1-~1: Use correct spacing
Context: # Test Some introductory text. - Test1 - Test...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: Use correct spacing
Context: # Test Some introductory text. - Test1 - Test2 1. Test1 1. Test1.1 ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~6-~6: Use correct spacing
Context: ...est Some introductory text. - Test1 - Test2 1. Test1 1. Test1.1 1. Test1.1.1 ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/other.mdx
[grammar] ~3-~3: Use correct spacing
Context: # Other ## Heading 1 This is a paragraph. ## Heading 2 Thi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~5-~5: Use correct spacing
Context: # Other ## Heading 1 This is a paragraph. ## Heading 2 This is another paragraph. ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~7-~7: Use correct spacing
Context: ...ing 1 This is a paragraph. ## Heading 2 This is another paragraph. {/* referen...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/reference.mdx
[grammar] ~5-~5: There might be a problem here.
Context: ...-item-punctuation no-repeat-punctuation */} :::tip 1. What is an Introduction The "Introd...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~9-~9: There might be a mistake here.
Context: ...-punctuation */} :::tip 1. What is an Introduction The "Introduction" section serves as th...
(QB_NEW_EN_OTHER)
[grammar] ~11-~11: Use correct spacing
Context: ...e, offering readers a clear preliminary understanding. We typically determine the presence of ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~13-~13: Use correct spacing
Context: ...dules, they can be combined in the same document. 2. Importance of the Introduction Give...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~15-~15: Use correct spacing
Context: ...he same document. 2. Importance of the Introduction Given that products or functionality mo...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~20-~20: Use correct spacing
Context: ...ng the fundamental understanding of the product. 3. How to Conceptualize the Introduction S...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~25-~25: Use correct spacing
Context: ...d provide the information that concerns them. 4. Unique Aspects of the Introduction ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~27-~27: Use correct spacing
Context: ...oncerns them. 4. Unique Aspects of the Introduction This template provides a standardized f...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~29-~29: Use correct spacing
Context: ...ckly understand and utilize the product features. There are some differences between prod...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~31-~31: Use correct spacing
Context: ...ct-level introductions and module-level introductions: Characteristics of Product-Level Introd...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[style] ~34-~34: ‘Clearly articulate’ might be wordy. Consider a shorter alternative.
Context: ...oductions - Product Positioning: Clearly articulate the product's position within the indus...
(EN_WORDINESS_PREMIUM_CLEARLY_ARTICULATE)
[style] ~36-~36: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...e comprehensive and should be explained in conjunction with the characteristics of different module...
(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)
[grammar] ~36-~36: Use correct spacing
Context: ...n with the characteristics of different modules. Characteristics of Module-Level Introdu...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~41-~41: Use correct spacing
Context: ...ported scenarios relevant to the single module. *** You can visit [Introduction Document Ex...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~45-~45: There might be a problem here.
Context: ...le.html) to view corresponding document examples. ::: # Introduction ## <Product/Module> Introduction > Aside...
(QB_NEW_EN_MERGED_MATCH)
fixture-docs/en/table.md
[grammar] ~1-~1: Use correct spacing
Context: Some introductory text. | col1 | col2 | | ---- | ---- | | val1 ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/text.md
[grammar] ~1-~1: Insert the missing word
Context: This line is 100km, the CPU is 24 Gi, not 38 Mi.
(QB_NEW_EN_OTHER_ERROR_IDS_32)
fixture-docs/zh/reference.mdx
[uncategorized] ~17-~17: 动词的修饰一般为‘形容词(副词)+地+动词’。您的意思是否是:一致"地"认识
Context: ...功能模块可能涉及诸多方面,在开头添加引言可以: - 促进统一理解:提供一致的认识,减少沟通错误。 - 指导阅读:为读者提供清晰的产品背景,帮助他们深入...
(wb4)
🪛 markdownlint-cli2 (0.17.2)
fixture-docs/en/link.md
3-3: No empty links
(MD042, no-empty-links)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
- GitHub Check: Build and Lint with Node.js 20 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 24 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 22 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 18 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 18 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 20 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 22 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 24 on ubuntu-latest
🔇 Additional comments (33)
fixture-docs/en/other.mdx (1)
3-7: Renamed headings improve section clarityNo issues found; change aligns with the new lint rules.
fixture-docs/en/heading.md (1)
1-7: Confirm escaped characters are intentional
# Test\^ \[Test\]renders asTest^ [Test].
If this is meant to exercise a remark-lint rule, great—otherwise consider removing the escapes to avoid confusing readers.fixture-docs/en/development/component-quickstart/index.md (1)
97-99: Straight apostrophe substitution LGTMUniform ASCII quotes improve diff-friendliness and avoid encoding issues; no further action required.
Also applies to: 135-137, 163-165, 220-222, 353-357
fixture-docs/en/install/scalability.mdx (1)
13-13: Heading-level adjustments enhance hierarchyThe promotion/demotion of headings makes the document structure consistent with the rest of the installation docs.
Also applies to: 15-16, 42-44, 58-60, 70-71
fixture-docs/zh/reference.mdx (1)
10-13: Formatting refinements acceptedIndentation and list reformatting read well and comply with remark-lint policies.
Also applies to: 16-20, 22-25, 28-36, 38-41, 42-45
src/shared/helpers.ts (2)
1-2: LGTM: Import statement updates look good.The explicit
.tsextensions in imports improve clarity and align with TypeScript best practices.
29-40: Well-implemented utility function for ID extraction.The
extractTextAndIdfunction correctly handles custom ID patterns and escape sequences. The regex properly matches both normal and escaped custom ID syntax, and the text cleaning logic handles escaped characters appropriately.Good centralization of this logic from the plugins directory to shared helpers.
src/remark-lint/no-deep-heading.ts (1)
1-22: Excellent implementation of heading depth lint rule.The rule correctly enforces a maximum heading depth of 5, which is appropriate for maintaining readable document structure. The implementation properly uses
visitParentsto provide context and reports violations with clear messages including position information.src/remark-lint/maximum-link-content-length.ts (1)
1-37: Robust implementation of link content length validation.The rule effectively enforces a 40-character limit on link content using
stringWidthfor proper Unicode handling. The URL detection logic appropriately skips actual URLs from length validation, and the use ofextractTextAndIdensures custom ID syntax doesn't count toward the limit.The nested visitor pattern correctly targets text nodes within links while maintaining proper context for error reporting.
fixture-docs/en/link.md (1)
1-5: Appropriate test fixture for link content length validation.This fixture file correctly demonstrates the
maximum-link-content-lengthlint rule with intentionally long link text examples. The lint disable comment is appropriate for test cases, and the static analysis warnings about empty links and grammar are expected for test fixtures.src/remark-lint/unit-case.ts (1)
1-37: Well-designed unit case validation rule.The implementation correctly enforces consistent casing for measurement units. The regex appropriately matches numeric values with units, and the
VALID_UNITSset includes the proper binary and decimal prefixes (k, Ki, M, Mi, etc.).The
getPairUnithelper function efficiently finds the correct casing suggestion, and the error messages provide clear guidance for corrections.fixture-docs/en/text.md (1)
1-1: LGTM! Good test fixture for unit case validation.This fixture provides a good variety of unit measurements (km, Gi, Mi) that will effectively test the new
unitCaseremark-lint rule mentioned in the AI summary.src/remark-lint/no-heading-punctuation.ts (1)
12-45: LGTM! Well-implemented lint rule with thoughtful special case handling.The implementation correctly:
- Uses
visitParentsfor proper AST traversal- Handles FAQ files where question marks are acceptable
- Includes comprehensive logic for balanced brackets/braces
- Provides clear error messages with position information
The special case handling for balanced punctuation (lines 26-33) is particularly well-designed.
fixture-docs/en/table.md (1)
1-5: LGTM! Good test fixture for table linting rules.This fixture provides a useful test case with an empty table cell that will effectively test the new table-related lint rules like
tableSizeandnoEmptyTableCellmentioned in the AI summary.docs/en/usage/mdx.mdx (2)
54-54: LGTM! Appropriate use of lint ignore comment.The lint ignore comment is strategically placed to prevent false positives from the new
listItemSizerule for this legitimate long list item about multi-language document structure.
148-148: LGTM! Consistent lint ignore usage.Good use of the lint ignore comment to handle the props section which may contain lengthy descriptions that would trigger the
listItemSizerule.docs/en/usage/markdown.md (2)
25-28: LGTM! Proper escaping syntax in documentation.The corrected escaping syntax with backslashes (
[\!code callout]) properly demonstrates how to escape code callouts in the documentation examples.
18-18: LGTM! Added missing punctuation.Good catch adding the missing period to complete the sentence properly.
fixture-docs/en/list-item.md (1)
1-14: Well-structured test fixture for remark-lint rules.This markdown file serves as an excellent test fixture for the new remark-lint rules, particularly for testing list structures, nesting depths, and formatting consistency. The combination of unordered and ordered lists with multiple nesting levels provides comprehensive test coverage.
fixture-docs/en/install/installing.mdx (1)
13-13: Excellent formatting improvements for document consistency.The standardization of heading levels (promoting main sections from
###to##and substeps from####to###) significantly improves the document hierarchy. The code block indentation by 2 spaces aligns with markdown best practices for nested content under list items.Also applies to: 25-32, 37-37, 46-46, 58-58, 74-74, 84-87, 95-95, 106-108, 112-114, 124-124, 184-184, 195-200
fixture-docs/en/install/prerequisites.mdx (1)
15-15: Consistent heading level standardization improves document structure.The systematic promotion of heading levels (main sections from
###to##and subsections from####to###) creates a consistent document hierarchy across the installation documentation. This aligns with the formatting improvements made in the companioninstalling.mdxfile.Also applies to: 19-19, 29-29, 34-34, 42-42, 75-75, 88-88, 104-104, 108-108, 125-125, 172-172, 180-180, 182-182, 298-298, 310-310, 314-314, 329-329, 338-338
docs/en/start.mdx (1)
15-15: Clear documentation updates that improve user experience.The documentation updates effectively communicate the new CLI features, particularly the addition of the
-g, --globoption for the lint command. The wording improvements enhance clarity, and the examples provide practical guidance for users. The updates align well with the broader remark-lint integration effort.Also applies to: 22-25, 27-27, 48-48, 75-75, 124-124, 155-155, 173-173, 178-181, 183-185, 188-188, 191-191, 195-195, 214-214, 234-234, 242-242, 255-260, 278-278, 285-285
src/remark-lint/list-item-size.ts (1)
1-24: Well-implemented remark-lint rule with proper error handling.This lint rule is excellently structured and follows unified-lint-rule best practices:
- Clear constant definition for the maximum threshold (10 items)
- Proper use of
visitParentsto traverse list nodes with parent context- Comprehensive error messages that include position and ancestor information
- Correct early return after generating the lint message
- Good type safety with TypeScript generics for
RoottypeThe implementation is concise, readable, and will effectively enforce list size constraints in markdown documents.
fixture-docs/en/reference.mdx (2)
5-5: LGTM! Appropriate lint disable for fixture content.The lint disable comment is properly scoped to disable
list-item-punctuationandno-repeat-punctuationrules, which is appropriate for a fixture file that may intentionally demonstrate various formatting scenarios.
11-46: Excellent formatting improvements for better readability.The restructuring of the tip section content with consistent indentation, proper bullet point alignment, and clear section headers significantly improves the documentation's readability and professional appearance.
src/remark-lint/list-item-punctuation.ts (4)
8-8: Well-defined punctuation allowlist.The
ALLOWED_PUNCTUATIONSset properly defines semicolons and periods as acceptable punctuation marks, providing clear boundaries for the linting rule.
25-37: Robust punctuation detection with proper exclusions.The logic correctly handles edge cases by excluding closing brackets and parentheses from punctuation checks, which is appropriate since these are structural elements rather than sentence-ending punctuation.
53-60: Excellent handling of bracket pairs and quotation marks.The special case handling for parentheses with matching opening brackets, square brackets, and quoted periods demonstrates thorough consideration of markdown formatting nuances.
78-84: Consistent logic applied to subsequent list items.The duplicate logic for handling bracket pairs in the general punctuation check maintains consistency with the first item's special case handling.
docs/en/usage/configuration.md (4)
13-13: Improved clarity in configuration file explanation.The revision to "exporting the configuration is required" provides clearer guidance on the necessary structure for JavaScript/TypeScript configuration files.
25-25: Better path reference explanation.The clarification that "relative paths refer to files relative to the current tool directory" provides more precise guidance than the previous wording.
70-70: Consistent terminology usage.The change from "repository URL" to "repository address" maintains terminology consistency throughout the documentation.
85-88: Enhanced frontmatter mode explanations.The improved descriptions for
ignore,merge,replace, andremovemodes provide clearer understanding of how frontmatter is handled in different scenarios.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🧹 Nitpick comments (9)
fixture-docs/en/text.md (1)
1-1: Consider adding a space between the number and the unitTypographically, “100 km” is preferred over “100km” for readability and consistency with technical writing guidelines. If this fixture isn’t meant to test missing-space scenarios, you could tweak it as follows:
-This line is 100km, the CPU is 24 Gi, not 38 Mi. +This line is 100 km, the CPU is 24 Gi, not 38 Mi.fixture-docs/en/list-item.md (1)
8-13: Indent nested list by four spaces for CommonMark complianceCurrent sub-items are indented by 3 & 6 spaces. CommonMark only guarantees list-nesting when the child item is indented ≥ 4 spaces relative to its parent; some renderers mis-detect 3-space indents.
- 1. Test1.1 + 1. Test1.1 - 1. Test1.1.1 - 2. Test1.1.2 + 1. Test1.1.1 + 2. Test1.1.2 - 2. Test1.2 + 2. Test1.2fixture-docs/en/install/installing.mdx (1)
25-32: Fenced code blocks inside list items: pad to 4-space indentFenced blocks inside list bullets should start at least four spaces past the bullet to stay associated with the parent list across all Markdown engines. Two spaces works on GitHub but fails on others (e.g. remark, Pandoc).
Consider adding two more leading spaces to the fenced block trio under “Execute”.
fixture-docs/en/install/scalability.mdx (1)
55-61: Table placeholder uses em-dash “—”; prefer ASCII “-” for portabilitySome Markdown table renderers treat the em-dash as text, not empty-cell placeholder, causing asymmetrical column widths. Recommend replacing with an ASCII hyphen or leaving the cell empty.
-| — | — | +| - | - |fixture-docs/en/development/component-quickstart/index.md (1)
95-99: Minor wording nit – use “open-source” (hyphenated compound adjective)“open source community's configuration file”
Hyphenating the compound adjective improves readability.- open source community's configuration file + open-source community's configuration filesrc/remark-lint/no-heading-special-characters.ts (1)
16-26: Potential edge case with escaped backslashes.The logic correctly handles most escaping scenarios, but there's a potential edge case: if someone writes
\\*(escaped backslash followed by asterisk), the asterisk would be incorrectly flagged as unescaped sinceraw[index - 1]would be\not\\.Consider this more robust escape detection:
(it, index) => - (!index || raw[index - 1] !== '\\') && + (!index || raw[index - 1] !== '\\' || (index > 1 && raw[index - 2] === '\\')) && SPECIAL_CHARACTER.test(it),This would handle the
\\*case correctly by checking if the backslash itself is escaped.src/remark-lint/no-heading-punctuation.ts (1)
26-33: Consider improving bracket pair matching.The bracket pair logic is good but could be more robust. Currently it only checks if the opening bracket exists somewhere in the text, but doesn't verify proper pairing.
Consider this enhanced bracket matching:
if ( - (tail === '}' && text.includes('{')) || - (tail === ']' && text.includes('[')) || - (tail === '>' && text.includes('<')) || - (tail === ')' && text.includes('(')) + (tail === '}' && text.indexOf('{') !== -1 && text.indexOf('{') < text.lastIndexOf('}')) || + (tail === ']' && text.indexOf('[') !== -1 && text.indexOf('[') < text.lastIndexOf(']')) || + (tail === '>' && text.indexOf('<') !== -1 && text.indexOf('<') < text.lastIndexOf('>')) || + (tail === ')' && text.indexOf('(') !== -1 && text.indexOf('(') < text.lastIndexOf(')')) ) {This ensures the opening bracket comes before the closing bracket, making the pairing more accurate.
src/remark-lint/list-item-punctuation.ts (1)
78-92: Consider simplifying the bracket exception logic.The bracket pair exception logic is duplicated in multiple places. Consider extracting it into a helper function for better maintainability.
+const isBracketPair = (text: string, lastChar: string) => { + return ( + (lastChar === ')' && text.includes('(')) || + (lastChar === ']' && text.includes('[')) + ) +} // Then use it in both places: - if ( - (lastChar === ')' && text.includes('(')) || - (lastChar === ']' && text.includes('[')) - ) { + if (isBracketPair(text, lastChar)) {This would reduce duplication and make the code more maintainable.
docs/en/usage/configuration.md (1)
24-30: Minor: docstring says “defaults to collapsed” but example setscollapsed: falseNot blocking, but the comment can be mis-read. Consider clarifying which value is the default.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (49)
.changeset/silly-llamas-argue.md(1 hunks).nvmrc(1 hunks)docs/en/start.mdx(11 hunks)docs/en/usage/configuration.md(11 hunks)docs/en/usage/markdown.md(1 hunks)docs/en/usage/mdx.mdx(2 hunks)docs/zh/start.mdx(2 hunks)docs/zh/usage/markdown.md(1 hunks)fixture-docs/doom.config.yml(1 hunks)fixture-docs/en/development/component-quickstart/index.md(5 hunks)fixture-docs/en/heading.md(1 hunks)fixture-docs/en/install/installing.mdx(10 hunks)fixture-docs/en/install/prerequisites.mdx(11 hunks)fixture-docs/en/install/scalability.mdx(4 hunks)fixture-docs/en/link.md(1 hunks)fixture-docs/en/list-item.md(1 hunks)fixture-docs/en/other.mdx(1 hunks)fixture-docs/en/reference.mdx(1 hunks)fixture-docs/en/table.md(1 hunks)fixture-docs/en/text.md(1 hunks)fixture-docs/zh/reference.mdx(1 hunks)package.json(4 hunks)patches/unified-engine+11.2.2.patch(1 hunks)src/cli/lint.ts(2 hunks)src/cli/translate.ts(1 hunks)src/eslint.ts(4 hunks)src/plugins/auto-sidebar/utils.ts(1 hunks)src/plugins/replace/parse-toc.ts(1 hunks)src/plugins/replace/utils.ts(0 hunks)src/remark-lint/constants.ts(1 hunks)src/remark-lint/index.ts(1 hunks)src/remark-lint/list-item-punctuation.ts(1 hunks)src/remark-lint/list-item-size.ts(1 hunks)src/remark-lint/list-table-introduction.ts(1 hunks)src/remark-lint/maximum-link-content-length.ts(1 hunks)src/remark-lint/no-deep-heading.ts(1 hunks)src/remark-lint/no-deep-list.ts(1 hunks)src/remark-lint/no-empty-table-cell.ts(1 hunks)src/remark-lint/no-heading-punctuation.ts(1 hunks)src/remark-lint/no-heading-special-characters.ts(1 hunks)src/remark-lint/no-heading-sup-sub.ts(1 hunks)src/remark-lint/no-paragraph-indent.ts(1 hunks)src/remark-lint/table-size.ts(1 hunks)src/remark-lint/unit-case.ts(1 hunks)src/remarkrc.ts(1 hunks)src/shared/helpers.ts(2 hunks)src/shared/types.ts(1 hunks)styles/global.scss(1 hunks)tsconfig.json(1 hunks)
💤 Files with no reviewable changes (1)
- src/plugins/replace/utils.ts
✅ Files skipped from review due to trivial changes (8)
- tsconfig.json
- docs/zh/usage/markdown.md
- src/cli/translate.ts
- src/remark-lint/no-heading-sup-sub.ts
- src/remark-lint/list-table-introduction.ts
- src/remark-lint/no-empty-table-cell.ts
- src/remark-lint/table-size.ts
- src/remark-lint/index.ts
🚧 Files skipped from review as they are similar to previous changes (21)
- .nvmrc
- fixture-docs/doom.config.yml
- src/plugins/auto-sidebar/utils.ts
- src/plugins/replace/parse-toc.ts
- .changeset/silly-llamas-argue.md
- src/shared/types.ts
- src/remark-lint/constants.ts
- patches/unified-engine+11.2.2.patch
- src/remark-lint/no-deep-heading.ts
- src/remark-lint/no-deep-list.ts
- src/remark-lint/list-item-size.ts
- src/remark-lint/no-paragraph-indent.ts
- styles/global.scss
- src/cli/lint.ts
- src/remarkrc.ts
- src/shared/helpers.ts
- src/remark-lint/maximum-link-content-length.ts
- src/eslint.ts
- src/remark-lint/unit-case.ts
- docs/zh/start.mdx
- package.json
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
src/remark-lint/no-heading-special-characters.ts (2)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
src/remark-lint/no-heading-punctuation.ts (8)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
docs/en/start.mdx (8)
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:22:30.004Z
Learning: In the @alauda/doom project, the team prefers throwing descriptive errors for invalid configuration rather than using optional chaining or graceful fallbacks. This fail-fast approach helps catch configuration issues early during development.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#34
File: src/theme.tsx:4-17
Timestamp: 2025-05-29T10:21:32.682Z
Learning: In the @alauda/doom project, environment variables like ALGOLIA_APP_ID, ALGOLIA_API_KEY, and ALGOLIA_INDEX_NAME are injected at build time, making non-null assertions safe when used after truthiness checks.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
docs/en/usage/configuration.md (8)
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:22:30.004Z
Learning: In the @alauda/doom project, the team prefers throwing descriptive errors for invalid configuration rather than using optional chaining or graceful fallbacks. This fail-fast approach helps catch configuration issues early during development.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/theme.tsx:4-17
Timestamp: 2025-05-29T10:21:32.682Z
Learning: In the @alauda/doom project, environment variables like ALGOLIA_APP_ID, ALGOLIA_API_KEY, and ALGOLIA_INDEX_NAME are injected at build time, making non-null assertions safe when used after truthiness checks.
fixture-docs/en/development/component-quickstart/index.md (1)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
fixture-docs/en/table.md (1)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/table-size.ts:8-21
Timestamp: 2025-07-09T02:31:35.587Z
Learning: GFM (GitHub Flavored Markdown) tables always have at least one row by specification, so code accessing `table.children[0]` in markdown AST processing is safe without additional empty table checks.
src/remark-lint/list-item-punctuation.ts (8)
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/constants.ts:1-1
Timestamp: 2025-07-09T02:31:06.577Z
Learning: In the @alauda/doom project, PUNCTUATION_REGEX in src/remark-lint/constants.ts is only used for test() operations, so the global flag is not needed and the current implementation /\p{P}/u is correct.
Learnt from: JounQin
PR: alauda/doom#117
File: src/remark-lint/no-heading-punctuation.ts:4-4
Timestamp: 2025-07-09T02:33:05.628Z
Learning: In the @alauda/doom project, JounQin prefers to keep the `toString` import from `mdast-util-to-string` as is, even though it shadows the global toString property. Variable shadowing warnings for this specific case should not be flagged as issues.
Learnt from: JounQin
PR: alauda/doom#40
File: src/plugins/sitemap/index.ts:7-7
Timestamp: 2025-05-29T16:25:28.086Z
Learning: In @rspress/shared v2.0.0-beta.8, the '/logger' export is available in the package exports field, so imports like `import { logger } from '@rspress/shared/logger'` are valid even if ESLint shows resolution errors. This is used throughout the codebase in files like src/cli/translate.ts, src/cli/load-config.ts, src/utils/git.ts, and src/plugins/sitemap/index.ts.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: JounQin has mentioned multiple times that the alauda/doom project uses yarn v4, and there are no ESLint import resolution errors for @rspress/core subpath imports.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T09:09:21.339Z
Learning: The alauda/doom project uses yarn v4 for dependency management, which handles package exports and module resolution correctly, so imports like `@rspress/core/theme` work without any ESLint errors.
Learnt from: JounQin
PR: alauda/doom#34
File: src/cli/load-config.ts:290-0
Timestamp: 2025-05-29T10:23:34.965Z
Learning: In the @alauda/doom project, JounQin prefers concise error handling over verbose validation. While they prefer throwing on invalid configuration rather than graceful fallbacks, they don't want overly detailed validation with multiple explicit checks and error messages.
Learnt from: JounQin
PR: alauda/doom#30
File: src/runtime/components/K8sCrd.tsx:5-5
Timestamp: 2025-05-26T08:59:41.491Z
Learning: In @rspress/core v2.0.0-beta.7, the '/theme' export is available in the package exports field as `"./theme": { "default": "./theme.ts" }`, so imports like `import { Badge, Button } from '@rspress/core/theme'` are valid even if ESLint shows resolution errors.
Learnt from: JounQin
PR: alauda/doom#75
File: src/cli/load-config.ts:4-7
Timestamp: 2025-06-09T03:10:41.010Z
Learning: The alauda/doom project uses yarn v4 as the package manager, not npm. Always reference yarn commands when suggesting package management operations.
🧬 Code Graph Analysis (2)
src/remark-lint/no-heading-punctuation.ts (1)
src/remark-lint/constants.ts (1)
PUNCTUATION_REGEX(1-1)
src/remark-lint/list-item-punctuation.ts (1)
src/remark-lint/constants.ts (1)
PUNCTUATION_REGEX(1-1)
🪛 Biome (1.9.4)
src/remark-lint/no-heading-punctuation.ts
[error] 4-4: Do not shadow the global "toString" property.
Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.
(lint/suspicious/noShadowRestrictedNames)
src/remark-lint/list-item-punctuation.ts
[error] 2-2: Do not shadow the global "toString" property.
Consider renaming this variable. It's easy to confuse the origin of variables when they're named after a known global.
(lint/suspicious/noShadowRestrictedNames)
🪛 LanguageTool
docs/en/start.mdx
[grammar] ~15-~15: Use correct spacing
Context: ...ou can install doom using npm, yarn, or pnpm: Then create files with the following co...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~19-~19: Use correct spacing
Context: ...> Then create files with the following commands: bash # Create docs directories, with default support for bilingual Chinese and English mkdir docs/en && echo '# Hello World' > docs/en/index.md mkdir docs/zh && echo '# 你好世界' > docs/zh/index.md Add the following scripts to your `pack...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~27-~27: Use correct spacing
Context: ... Add the following scripts to your `package.json`: json { "scripts": { "dev": "doom dev", "build": "doom build", "new": "doom new", "serve": "doom serve", "translate": "doom translate", "export": "doom export" } } ``` Then initialize a configuration file `d...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~48-~48: Use correct spacing
Context: ...tsconfig.json file with the following content: jsonc { "compilerOptions": { "jsx": "react-jsx", "module": "NodeNext", "moduleResolution": "NodeNext", "noUnusedLocals": true, "noUnusedParameters": true, "resolveJsonModule": true, "skipLibCheck": true, "strict": true, "target": "ESNext", }, "mdx": { "checkMdx": true, }, } Finally, create a global.d.ts file wi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~75-~75: Use correct spacing
Context: ...ided by doom with type safety in .mdx files. ## CLI Tool {#cli} ```bash doom -h # ou...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~124-~124: There might be a mistake here.
Context: ...Run yarn dev to start the development server, the browser will automatically open the...
(QB_NEW_EN_OTHER)
[grammar] ~124-~124: Use correct spacing
Context: ...ll automatically open the documentation homepage. sh doom dev -h # output Usage: doom dev [options] [root] Start the development server Arguments: root Root directory of the documentation Options: -H, --host [host] Dev server host name -P, --port [port] Dev server port number -l, --lazy [boolean] Whether to enable `lazyCompilation` which could improve the compilation performance (default: true) --no-lazy Do not enable `lazyCompilation` -h, --help display help for command ### Production Build {#build} Run `yarn b...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~155-~155: Use correct spacing
Context: ...ules, or documentation from scaffolding templates. ### Translating Documentation {#translate}...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~178-~178: Use the right pronoun
Context: ...ehavior caused by command line parsing. Examples: 1. yarn translate -g abc xyz will translate all documents under `<roo...
(QB_NEW_EN_OTHER_ERROR_IDS_9)
[grammar] ~180-~180: Use correct spacing
Context: ...spectively. 2. yarn translate -g '*' will translate all document files under `<ro...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~182-~182: Use colons correctly
Context: ...h. Examples: - When this parameter is enabled: 1. When translating /<source>/abc.jpg, `<...
(QB_NEW_EN_OTHER_ERROR_IDS_30)
[grammar] ~186-~186: Use correct spacing
Context: ... - When this parameter is not enabled: 1. When translating /<source>/abc.jpg, if...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~188-~188: Use correct spacing
Context: ....jpg; otherwise, it will be changed to ../. :::warning Specifically, if you use -g...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~191-~191: Use correct spacing
Context: ...lRoutes` will be automatically deleted. ::: :::tip The translation feature requires...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~195-~195: Use correct spacing
Context: ... contact your team leader to obtain it. ::: You can control translation behavior in...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~214-~214: Use correct spacing
Context: ... yarn build command before exporting. ::: sh doom export -h # output Usage: doom export [options] [root] Export the documentation as PDF, `apis/**` and `*/apis/**` routes will be ignored automatically Arguments: root Root directory of the documentation Options: -H, --host [host] Serve host name -P, --port [port] Serve port number (default: "4173") -h, --help display help for command Run yarn export to export the documen...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~234-~234: Use correct spacing
Context: ...he same -b and -p parameters during export. The export feature depends on [`playwri...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~236-~236: Use correct spacing
Context: ...lowing environment variable to speed up downloads: dotenv title=".env.yarn" PLAYWRIGHT_DOWNLOAD_HOST="https://cdn.npmmirror.com/binaries/playwright" In addition to exporting a complete PDF...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~242-~242: There might be a mistake here.
Context: ..., please refer to Documentation Export Configuration ### Documentation Linting {#lint} ```sh d...
(QB_NEW_EN_OTHER)
[grammar] ~279-~279: Use correct spacing
Context: ...nary files. For example, you can create .cspell/k8s.txt: txt k8s kubernetes For more configuration, please refer to...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~286-~286: There might be a mistake here.
Context: ...re configuration, please refer to Lint Configuration
(QB_NEW_EN_OTHER)
docs/en/usage/configuration.md
[grammar] ~13-~13: Use correct spacing
Context: ...ted from @alauda/doom/config for type assistance: ts import { defineConfig } from '@alauda/doom/config' export default defineConfig({}) ## Basic Configuration {#basic} - lang:...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~25-~25: There might be a mistake here.
Context: ...paths refer to files under the public directory, relative paths refer to files relative ...
(QB_NEW_EN_OTHER)
[grammar] ~29-~29: Use correct spacing
Context: ...ulti-version Build](./deploy#多版本构建) for details. ## API Documentation Configuration {#api} ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~31-~31: Use correct spacing
Context: ...ls. ## API Documentation Configuration {#api} yaml api: # CRD definition file paths, relative to the directory where doom.config.* is located, supports glob matching, json/yaml files crds: - docs/shared/crds/*.yaml # OpenAPI definition file paths, relative to the directory where doom.config.* is located, supports glob matching, json/yaml files openapis: - docs/shared/openapis/*.json # When rendering OpenAPI related resource definitions, they are inlined by default. To extract related resource definitions into separate files, configure the following options. # Reference: https://doom.alauda.cn/apis/references/CodeQuality.html#v1alpha1.CodeQualitySpec references: v1alpha1.CodeQualityBranch: /apis/references/CodeQualityBranch#v1alpha1.CodeQualityBranch # Optional, API documentation path prefix. Configure this if your business uses gateway or other proxy services. pathPrefix: /apis Refer to API Documentation for...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~85-~85: There might be a mistake here.
Context: ...gnore the frontmatter of the referenced document, keep using the current document's front...
(QB_NEW_EN_OTHER)
[grammar] ~86-~86: Use colons correctly
Context: ...urrent document's frontmatter. - merge: Merge the frontmatter of the referenced docum...
(QB_NEW_EN_OTHER_ERROR_IDS_30)
[grammar] ~87-~87: There might be a problem here.
Context: ...ent's. - replace: Replace the current document's frontmatter with that of the referenced document. -...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~88-~88: Use colons correctly
Context: ...t of the referenced document. - remove: Remove the current document's frontmatter. Re...
(QB_NEW_EN_OTHER_ERROR_IDS_30)
[grammar] ~88-~88: Use correct spacing
Context: ...remove: Remove the current document's frontmatter. Refer to [Reference Documentation](./re...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~109-~109: Use articles correctly
Context: ...ql>. This API requires authentication, so JIRA_USERNAMEandJIRA_PASSWORD` env...
(QB_NEW_EN_OTHER_ERROR_IDS_11)
[grammar] ~109-~109: Use correct spacing
Context: ...riables must be provided to preview the effect. ## Sidebar Configuration {#sidebar} ```ya...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~111-~111: Use correct spacing
Context: ...w the effect. ## Sidebar Configuration {#sidebar} yaml sidebar: collapsed: false # Optional, whether the sidebar is collapsed by default. Defaults to collapsed. If the documentation content is small, consider setting to false. ## Internal Documentation Routes Configura...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~118-~118: Use correct spacing
Context: ...rnal Documentation Routes Configuration {#internal-routes} yaml internalRoutes: # Optional, supports glob matching relative to the docs directory. Routes/files matched when CLI option `-i, --ignore` is enabled will be ignored. - '*/internal/**' ## Only Include Documentation Routes Confi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~125-~125: Use correct spacing
Context: ...lude Documentation Routes Configuration {#only-include-routes} yaml onlyIncludeRoutes: # Optional, supports glob matching relative to the docs directory. When CLI option `-i, --ignore` is enabled, only routes/files under this configuration will be enabled. Can be combined with `internalRoutes` to exclude some routes. - '*/internal/**' internalRoutes: - '*/internal/overview.mdx' ## Syntax Highlighting Plugin Configuratio...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~144-~144: There might be a problem here.
Context: ...and fall back to plaintext rendering. ::: ## sites.yaml Configuration {#sites} The sites.yaml configuration file is ...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~149-~149: Use correct spacing
Context: ...lsite) and when building single-version documentation. yaml - name: connectors # Globally unique name for the site base: /devops-connectors # Base path for site access version: v1.1 # Version used for ExternalSite/ExternalSiteLink redirects when building multi-version sites displayName: # Site display name. If not provided or language not matched, defaults to name en: DevOps Connectors zh: DevOps 连接器 # The following properties are used to pull images when building the entire site. If not provided, this will be ignored during final packaging. # Usually required for subsite references, not needed for parent site references. repo: https://github.com/AlaudaDevops/connectors-operator # Site repository URL. For internal GitLab repos, you can use the slug, e.g., `alauda/product-docs` image: devops/connectors-docs # Site build image, used to pull images when building the entire site ## Translation Configuration {#translate} ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~246-~246: Use correct spacing
Context: ...`` ## Documentation Lint Configuration {#lint} yaml lint: cspellOptions: # Optional, cspell configuration options, refer to https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell-eslint-plugin#options ## Algolia Search Configuration {#algolia}...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~253-~253: Use correct spacing
Context: ...ns ## Algolia Search Configuration {#algolia} yaml algolia: # Optional, Algolia search configuration, effective only when CLI flag -a, --algolia is enabled appId: # Algolia Application ID apiKey: # Algolia API Key indexName: # Algolia index name ``` Please use public/robots.txt for Algo...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~266-~266: There might be a problem here.
Context: ...e following theme configuration file to enable: ts title "theme/index.ts" export * from '@alauda/doom/theme' ::: ## Sitemap Configuration {#sitemap} ```ya...
(QB_NEW_EN_MERGED_MATCH)
docs/en/usage/markdown.md
[grammar] ~18-~18: There might be a problem here.
Context: ...llouts">or thecomponent instead. ::: ````mdx ```sh Memory overhead per virtual machine ≈ (1.002 × requested memory) \ + 218 MiB \ # [\!code callout] + 8 MiB × (number of vCPUs) \ # [\!code callout] + 16 MiB × (number of graphics devices) \ # [\!code callout] + (additional memory overhead) # [\!code callout] ``` :::callouts 1. Required for the processes that run in thevirt-launcher` pod. 2. Number of virtual CPUs requested by the virtual machine. 3. Number of virtual graphics cards requested by the virtual machine. 4. Additional memory overhead: - If your environment includes a Single Root I/O Virtualization (SR-IOV) network device or a Graphics Processing Unit (GPU), allocate 1 GiB additional memory overhead for each device. - If Secure Encrypted Virtualization (SEV) is enabled, add 256 MiB. - If Trusted Platform Module (TPM) is enabled, add 53 MiB. ::: ```` sh Memory overhead per virtual machine ≈ (1.002 × requested memory) \ + 218 MiB \ # [!code callout] + 8 MiB × (number of vCPUs) \ # [!code callout] + 16 MiB × (number of graphics devices) \ # [!code callout] + (additional memory overhead) # [!code callout] :::callouts 1. Required for the processes that run in ...
(QB_NEW_EN_MERGED_MATCH)
docs/en/usage/mdx.mdx
[grammar] ~54-~54: Use correct spacing
Context: ...ve> ``` {/* lint ignore list-item-size */} - The directory structure of multi-langua...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~148-~148: Use correct spacing
Context: ...props {/* lint ignore list-item-size */} - terms: NormalizedTermItem[], optional, a c...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/development/component-quickstart/index.md
[uncategorized] ~97-~97: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ... replace certain image addresses in the open source community's configuration file `release...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[uncategorized] ~135-~135: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...mber is used to fetch the corresponding open source community's configuration list `release...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[uncategorized] ~163-~163: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...akefile`, you can directly download the open source community's configuration list by using...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~163-~163: There might be a problem here.
Context: ...configuration list by using the command make download-release-yaml. Explanation: - Once the configuration download is comp...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~220-~220: Use correct spacing
Context: ...ne of the controller component within tektoncd-pipeline: yaml apiVersion: tekton.dev/v1 kind: PipelineRun metadata: name: build-controller-image annotations: pipelinesascode.tekton.dev/on-comment: "^((/test-all)|(/build-controller-image)|(/test-multi.*\ build-controller-image.*))$" pipelinesascode.tekton.dev/on-cel-expression: |- # **Note** The use of comments is not supported in this `on-cel-expression`. The comments present here are for explanatory purposes; please ensure they are removed in the final configuration!!! # ( # Watch for file changes in relevant directories to automatically trigger the pipeline. # Rules for supported matching can be found at: # - https://pipelinesascode.com/docs/guide/matchingevents/#matching-a-pipelinerun-to-specific-path-changes # - https://en.wikipedia.org/wiki/Glob_%28programming%29 # - https://pipelinesascode.com/docs/guide/cli/#test-globbing-pattern # TL;DR: # - You may match all changes in the `.tekton` directory with ".tekton". # - You may match all changes in the `.tekton` directory with ".tekton/**". # - You cannot match all changes in the `.tekton` directory with ".tekton/.*". ".tekton/pr-build-controller-image.yaml".pathChanged() || ".tekton/dockerfiles/controller.Dockerfile".pathChanged() || ".tekton/patches".pathChanged() || "upstream".pathChanged() ) && ( # It is advisable to retain this check—changes to the `values.yaml` file should not automatically trigger the pipeline. # To prevent the pipeline from automatically updating this file and causing infinite trigger loops. # Moreover, if the current changes are in the main branch, it will still assess whether the pipeline should be triggered. !"values.yaml".pathChanged() || source_branch.matches("^(main|master|release-.*)$") ) && (( # This configuration can remain unchanged. event == "push" && ( source_branch.matches("^(main|master|release-.*)$") || target_branch.matches("^(main|master|release-.*)$") || target_branch.startsWith("refs/tags/") ) ) || ( event == "pull_request" && ( target_branch.matches("^(main|master|release-.*)$") ) )) pipelinesascode.tekton.dev/max-keep-runs: '1' spec: pipelineRef: # This is the pipeline template to be used. For detailed definitions and explanations, refer to: # https://tekton-hub.alauda.cn/alauda/pipeline/clone-image-build-test-scan resolver: hub params: - name: catalog value: alauda - name: type value: tekton - name: kind value: pipeline - name: name value: clone-image-build-test-scan - name: version value: '0.2' params: # The following general configurations do not require modification. - name: git-url value: '{{ repo_url }}' - name: git-revision value: '{{ source_branch }}' - name: git-commit value: '{{ revision }}' # **To adjust** Change to the actual image repository to be built - name: image-repository value: build-harbor.alauda.cn/test/devops/tektoncd/pipeline/controller # **To adjust** Change to the actual Dockerfile used for building the image - name: dockerfile-path value: .tekton/dockerfiles/controller.Dockerfile # **To adjust** Change to the actual build context for the image - name: context value: '.' # **To adjust** Change to the actual list of monitored file changes # **Note** The pipeline will compute the final commit sha based on these file changes. # This sha will be reflected in the image label's commit information and affect the final artifact's tag. - name: file-list-for-commit-sha value: - upstream - .tekton/patches - .tekton/dockerfiles/controller.Dockerfile - .tekton/pr-build-controller-image.yaml # **To adjust** Change to the necessary operations - name: update-files-based-on-image value: | # The script can use these environment variables: # - IMAGE: the image URL with tag and digest, e.g., `registry.alauda.cn:60080/devops/noroot/alauda-docker-buildx:latest@sha256:1234567890` # - IMAGE_URL: the image URL excluding tag and digest, e.g., `registry.alauda.cn:60080/devops/noroot/alauda-docker-buildx` # - IMAGE_TAG: the image tag, e.g., `latest` # - IMAGE_DIGEST: the image digest, e.g., `sha256:1234567890` # - LAST_CHANGED_COMMIT: the last changed commit sha # Use the yq from the base image to prevent automatic installation with `makefile`. export YQ=$(which yq) # Update `values.yaml` based on the complete information of the built image. # The script logic employed here can be found in the base image: # - https://gitlab-ce.alauda.cn/ops/edge-devops-task/-/blob/master/images/yq/script/update_image_version.sh # - https://gitlab-ce.alauda.cn/ops/edge-devops-task/blob/master/images/yq/script/replace_images_by_values.sh echo "update_image_version.sh values.yaml ${IMAGE}" update_image_version.sh values.yaml ${IMAGE} # **Important** Update the component's version number # A suffix will be generated based on the computed last changed commit sha. # Retain the current version while removing the -.* suffix OLD_VERSION=$(yq eval '.global.version' values.yaml) # Use the short commit sha as the version suffix export SUFFIX=${LAST_CHANGED_COMMIT:0:7} echo "update component version ${OLD_VERSION} suffix to ${SUFFIX}" make update-component-version # **Important** Update the `release.yaml` based on the latest `values.yaml`. echo "replace images in release/release.yaml" replace_images_by_values.sh release/release.yaml controller # **To adjust** If the image can be validated through preliminary command executions to ensure successful builds, include it here. - name: test-script value: '' # **To adjust** Append additional functionalities. `prepare-tools-image` and `prepare-command` facilitate pre-build preparation of the image. # For example, several tasks are executed: # - Generate the `head` file, documenting the upstream directory's commit sha. Generally used within the Dockerfile. # - Set Golang environment variables. # - Update go mod dependencies to address security issues (optional). - name: prepare-tools-image value: 'build-harbor.alauda.cn/devops/builder-go:1.23' - name: prepare-command value: | #!/bin/bash set -ex # Generate the head file, which contains the commit sha of the upstream directory cd upstream git rev-parse HEAD > ../head && cat ../head export GOPROXY=https://build-nexus.alauda.cn/repository/golang/,https://goproxy.cn,direct export CGO_ENABLED=0 export GONOSUMDB=* export GOMAXPROCS=4 export GOCACHE=/tmp/.cache/go-build mkdir -p $GOCACHE # Upgrade go mod dependencies go get github.com/docker/docker@v25.0.7 go get github.com/cloudevents/sdk-go/v2@v2.15.2 go get github.com/Azure/azure-sdk-for-go/sdk/azidentity@v1.6.0 go get github.com/hashicorp/go-retryablehttp@v0.7.7 go get golang.org/x/crypto@v0.31.0 go get google.golang.org/protobuf@v1.33.0 go get gopkg.in/go-jose/go-jose.v2@v2.6.3 go mod tidy go mod vendor git diff go.mod # **To adjust** Add as needed. `pre-commit-script` is for actions prior to committing. - name: pre-commit-script value: | # remove `head` file rm -f head # # revert upstream directory to prevent unnecessary changes cd upstream git checkout . cd .. # return to the root directory # **To adjust** Additional configurations, enable this if the image should not be scanned. # - name: ignore-trivy-scan # value: "true" # Subsequent configurations generally do not require modification. workspaces: - name: source volumeClaimTemplate: spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi - name: dockerconfig secret: secretName: build-harbor.kauto.docfj # This secret will be replaced by the pac controller. - name: basic-auth secret: secretName: '{{ git_auth_secret }}' - name: gitversion-config configMap: name: gitversion-config taskRunTemplate: # Ensure all tasks run as a non-root user. podTemplate: securityContext: runAsUser: 65532 runAsGroup: 65532 fsGroup: 65532 fsGroupChangePolicy: 'OnRootMismatch' taskRunSpecs: - pipelineTaskName: prepare-build computeResources: limits: cpu: '4' memory: 4Gi requests: cpu: '2' memory: 2Gi Explanation of functionalities implemen...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/heading.md
[grammar] ~1-~1: There might be a problem here.
Context: # Test^ [Test] ## Test ### Depth Test
(QB_NEW_EN_MERGED_MATCH)
fixture-docs/en/install/installing.mdx
[grammar] ~13-~13: There might be a problem here.
Context: .... ## Step 1: Download the Installation Package Prepare - Log in to the Customer Portal to ob...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~35-~35: Use correct spacing
Context: ... Validate Follow the steps below to validate: ### 1.1 Download and Verify the Public Key ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~37-~37: Use correct spacing
Context: ... ### 1.1 Download and Verify the Public Key bash curl -O https://www.alauda.cn/download/verify-key.pub md5sum verify-key.pub - The output MD5 value should be: `2eaddf...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~46-~46: Use correct spacing
Context: .... ### 1.2 Import Public Key and Verify Fingerprint bash gpg --import verify-key.pub gpg --fingerprint BB097AE6 - The fingerprint should match exactly: ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~58-~58: Use correct spacing
Context: ...### 1.3 Verify the Installation Package Signature bash gpg --verify <signature file> <installation package> For example: ```bash gpg --verify cpaa...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~74-~74: There might be a problem here.
Context: ...the Installation Package to the Control Node Prepare - Ensure the target control node is netwo...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~91-~91: Use correct spacing
Context: ...if the extracted directory structure is complete. --- ## Step 3: Start the Installer *Prepare...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~95-~95: There might be a problem here.
Context: ...is complete. --- ## Step 3: Start the Installer Prepare - Ensure the control node is network acce...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~110-~110: There might be a mistake here.
Context: ...`` - To use the Calico network plugin, execute: bash bash setup.sh --network-mode calico - To specify IPv6 or dual-stack mode, you...
(QB_NEW_EN_OTHER)
[grammar] ~124-~124: Use correct spacing
Context: ...ll the Management Cluster (Configure UI Parameters) Prepare In the Web UI, configure the ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~184-~184: There might be a problem here.
Context: ...--- ## Step 5: Verify the Installation Success Prepare - Log into the platform Web UI and confir...
(QB_NEW_EN_MERGED_MATCH)
fixture-docs/en/install/prerequisites.mdx
[grammar] ~15-~15: Use correct spacing
Context: ...ocessing steps. ## 1. Machine Resource Requirements Tip: This section describes the minim...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~17-~17: Use commas correctly
Context: ...nning](#scale) to prepare the necessary resources, or expand as needed post-installation. ...
(QB_NEW_EN_OTHER_ERROR_IDS_33)
[grammar] ~17-~17: Use correct spacing
Context: ...ecessary resources, or expand as needed post-installation. ### 1.1 Basic Configuration Requirements A...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~19-~19: Use correct spacing
Context: ...tallation. ### 1.1 Basic Configuration Requirements At least 3 physical or virtual mach...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~29-~29: Use correct spacing
Context: ...SD | ### 1.2 ARM Architecture Requirements For ARM architecture (e.g., Kunpeng 920...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~32-~32: Use colons correctly
Context: ...6, but not less than 1.5 times. For example: If the x86 requirement is 8 cores and 16...
(QB_NEW_EN_OTHER_ERROR_IDS_30)
[grammar] ~32-~32: Use correct spacing
Context: ...mmended configuration of 16 cores and 32GB. ### 1.3 Special Environment Description - ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~34-~34: There might be a problem here.
Context: ... and 32GB. ### 1.3 Special Environment Description - Single Node Deployment: If only 1 machine is ...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~36-~36: Use correct spacing
Context: ...gured with at least 3 machines for high availability. --- ## 2. Supported Operating Systems and Kern...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~40-~40: Use correct spacing
Context: ... ## 2. Supported Operating Systems and Kernels ### 2.1 x86 Architecture **Red Hat Enterpr...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~42-~42: Use correct spacing
Context: ...rating Systems and Kernels ### 2.1 x86 Architecture Red Hat Enterprise Linux (RHEL) - **...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~75-~75: Use correct spacing
Context: ... --- ### 2.2 ARM Architecture (Kunpeng 920) **Kylin Linux (Kylin Linux Advanced Serve...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~88-~88: Use correct spacing
Context: ...s issues. --- ### 2.3 Other Important Notes 1. Kernel Version Requirements: The a...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~104-~104: Use correct spacing
Context: ...is at least 4.11. --- ## 3. Machine Preprocessing Before installing the management cluste...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~106-~106: Use correct spacing
Context: ... nodes) must complete the preprocessing tasks. ### 3.1 Execute Quick Configuration Script ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~108-~108: Use correct spacing
Context: ...s. ### 3.1 Execute Quick Configuration Script Preparation Confirm that the installa...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~125-~125: Use correct spacing
Context: ...item requirements. ### 3.2 Check Local Requirements Check the following requirements item b...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~172-~172: Use correct spacing
Context: ...ages) for details). ### 3.3 Cross-Node Checks - There must be no network firewall restr...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~176-~176: Use correct spacing
Context: ...ynchronization error must not exceed 10 seconds. --- ## 4. Appendix ### 4.1 Remove Conflicting...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~180-~180: Use correct spacing
Context: ...must not exceed 10 seconds. --- ## 4. Appendix ### 4.1 Remove Conflicting Packages <a id="...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~182-~182: Use correct spacing
Context: ...4. Appendix ### 4.1 Remove Conflicting Packages Please use the following commands to c...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~298-~298: Use correct spacing
Context: ...done ``` --- ### 4.2 Configure Search Domain In the /etc/resolv.conf file, the `s...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~310-~310: Use correct spacing
Context: ...justments. --- ## 5. Network Resource Requirements Before installing the management cluste...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~312-~312: There might be a problem here.
Context: ...urces must be configured in advance. If hardware LoadBalancer cannot be provided, the installer suppo...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~312-~312: Use correct spacing
Context: ...ncer, but it may affect performance and reliability. ### 5.1 Network Resource Configuration | *...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~314-~314: Use correct spacing
Context: ... reliability. ### 5.1 Network Resource Configuration | Resource | Mandatory | **Q...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~329-~329: Use correct spacing
Context: ...cluster. ### 5.2 Network Configuration Requirements | Type | **Requirements...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~338-~338: Use correct spacing
Context: ... | ### 5.3 Port Forwarding Rules To ensure that the management cluster ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/install/scalability.mdx
[grammar] ~13-~13: Use correct spacing
Context: ...os: ## Installation Scenario Selection {#scenario} ### Scenario One: Functional Verification ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~15-~15: Use correct spacing
Context: ...scenario} ### Scenario One: Functional Verification Applicable Scope This scenario is sui...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~42-~42: Use correct spacing
Context: ... --- ### Scenario Two: ISV Integration Delivery Applicable Scope This scenario caters...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~70-~70: Use correct spacing
Context: ...: Multi-Cluster Management (Data Center Level) Applicable Scope This scenario is sui...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/link.md
[grammar] ~3-~3: There might be a problem here.
Context: ...long link text that exceeds the maximum length]() 我的长链接文本超过最大长度最大长度
(QB_NEW_EN_MERGED_MATCH)
fixture-docs/en/list-item.md
[grammar] ~1-~1: Use correct spacing
Context: # Test Some introductory text. - Test1 - Test...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~3-~3: Use correct spacing
Context: # Test Some introductory text. - Test1 - Test2 1. Test1 1. Test1.1 ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~6-~6: Use correct spacing
Context: ...est Some introductory text. - Test1 - Test2 1. Test1 1. Test1.1 1. Test1.1.1 ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/other.mdx
[grammar] ~3-~3: Use correct spacing
Context: # Other ## Heading 1 This is a paragraph. ## Heading 2 Thi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~5-~5: Use correct spacing
Context: # Other ## Heading 1 This is a paragraph. ## Heading 2 This is another paragraph. ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~7-~7: Use correct spacing
Context: ...ing 1 This is a paragraph. ## Heading 2 This is another paragraph. {/* referen...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/reference.mdx
[grammar] ~5-~5: There might be a problem here.
Context: ...-item-punctuation no-repeat-punctuation */} :::tip 1. What is an Introduction The "Introd...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~9-~9: There might be a mistake here.
Context: ...-punctuation */} :::tip 1. What is an Introduction The "Introduction" section serves as th...
(QB_NEW_EN_OTHER)
[grammar] ~11-~11: Use correct spacing
Context: ...e, offering readers a clear preliminary understanding. We typically determine the presence of ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~13-~13: Use correct spacing
Context: ...dules, they can be combined in the same document. 2. Importance of the Introduction Give...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~15-~15: Use correct spacing
Context: ...he same document. 2. Importance of the Introduction Given that products or functionality mo...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~20-~20: Use correct spacing
Context: ...ng the fundamental understanding of the product. 3. How to Conceptualize the Introduction S...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~25-~25: Use correct spacing
Context: ...d provide the information that concerns them. 4. Unique Aspects of the Introduction ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~27-~27: Use correct spacing
Context: ...oncerns them. 4. Unique Aspects of the Introduction This template provides a standardized f...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~29-~29: Use correct spacing
Context: ...ckly understand and utilize the product features. There are some differences between prod...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~31-~31: Use correct spacing
Context: ...ct-level introductions and module-level introductions: Characteristics of Product-Level Introd...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[style] ~34-~34: ‘Clearly articulate’ might be wordy. Consider a shorter alternative.
Context: ...oductions - Product Positioning: Clearly articulate the product's position within the indus...
(EN_WORDINESS_PREMIUM_CLEARLY_ARTICULATE)
[style] ~36-~36: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...e comprehensive and should be explained in conjunction with the characteristics of different module...
(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)
[grammar] ~36-~36: Use correct spacing
Context: ...n with the characteristics of different modules. Characteristics of Module-Level Introdu...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~41-~41: Use correct spacing
Context: ...ported scenarios relevant to the single module. *** You can visit [Introduction Document Ex...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~45-~45: There might be a problem here.
Context: ...le.html) to view corresponding document examples. ::: # Introduction ## <Product/Module> Introduction > Aside...
(QB_NEW_EN_MERGED_MATCH)
fixture-docs/en/table.md
[grammar] ~1-~1: Use correct spacing
Context: Some introductory text. | col1 | col2 | | ---- | ---- | | val1 ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
fixture-docs/en/text.md
[grammar] ~1-~1: Insert the missing word
Context: This line is 100km, the CPU is 24 Gi, not 38 Mi.
(QB_NEW_EN_OTHER_ERROR_IDS_32)
fixture-docs/zh/reference.mdx
[uncategorized] ~17-~17: 动词的修饰一般为‘形容词(副词)+地+动词’。您的意思是否是:一致"地"认识
Context: ...功能模块可能涉及诸多方面,在开头添加引言可以: - 促进统一理解:提供一致的认识,减少沟通错误。 - 指导阅读:为读者提供清晰的产品背景,帮助他们深入...
(wb4)
🪛 markdownlint-cli2 (0.17.2)
fixture-docs/en/link.md
3-3: No empty links
(MD042, no-empty-links)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
- GitHub Check: Build and Lint with Node.js 18 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 22 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 24 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 20 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 18 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 20 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 24 on ubuntu-latest
- GitHub Check: Build and Lint with Node.js 22 on ubuntu-latest
🔇 Additional comments (17)
fixture-docs/en/other.mdx (1)
3-4: Heading renames look goodRenaming the duplicate “Heading” entries to “Heading 1” and “Heading 2” avoids anchor collisions and clarifies structure.
No further action needed.Also applies to: 7-8
fixture-docs/en/table.md (1)
1-5: Fixture table looks correctColumn alignment and pipe placement match GFM spec; empty cells are permitted.
No issues spotted.fixture-docs/en/heading.md (1)
1-7: Heading fixture acceptedEscaping the caret and brackets demonstrates the special-character rule effectively.
No changes required.docs/en/usage/markdown.md (1)
18-18: Escape update is correctUsing
[\!code callout]prevents unintended callout rendering, and the corresponding examples now align with the guidance.
Looks good to merge.Also applies to: 25-28
fixture-docs/en/install/prerequisites.mdx (1)
15-15: Excellent heading structure improvements!The systematic promotion of heading levels from level 3 (###) to level 2 (##) and level 4 (####) to level 3 (###) creates a much better document hierarchy and improves readability. This aligns well with markdown best practices where main sections should be level 2 headings.
Also applies to: 19-19, 29-29, 34-34, 40-40, 42-42, 75-75, 88-88, 104-104, 108-108, 125-125, 172-172, 180-180, 182-182, 298-298, 310-310, 314-314, 329-329, 338-338
src/remark-lint/no-heading-special-characters.ts (2)
7-7: Consider edge case with escaped backslashes.The regex correctly identifies the target special characters for heading validation.
28-41: Well-crafted error message generation.The error message properly handles pluralization and provides clear guidance on how to fix the issue. The positioning information and ancestor context will help users locate and resolve the problems effectively.
src/remark-lint/no-heading-punctuation.ts (4)
1-8: Clean imports and constants setup.The imports are appropriate for a remark-lint rule, and the PUNCTUATION_REGEX import provides consistent punctuation detection across the linting system.
10-10: Good use of Set for efficient question mark lookup.Using a Set for both regular and full-width question marks provides efficient lookup for the FAQ file exception.
15-24: Thoughtful exception handling for FAQ files.The filename-based exception for FAQ files is a practical solution that allows question marks in headings where they're contextually appropriate.
35-42: Clear and actionable error message.The error message provides clear guidance on what was found and how to fix it, with proper positioning information for IDE integration.
src/remark-lint/list-item-punctuation.ts (4)
1-8: Appropriate imports and constants.The imports are suitable for a remark-lint rule, and the ALLOWED_PUNCTUATIONS Set provides a clean way to define acceptable punctuation marks.
10-17: Good early return for single-item lists.Correctly skips linting for lists with fewer than 2 items, as punctuation consistency only makes sense with multiple items.
18-37: Robust first item validation.The logic correctly identifies when the first item ends with a text node and handles disallowed punctuation appropriately, providing clear error messages.
50-68: Complex but comprehensive last item handling.The logic for the last item in punctuated lists is thorough, handling the requirement for periods while allowing exceptions for brackets and quote patterns like
."and.'.fixture-docs/en/reference.mdx (2)
5-5: Appropriate use of lint disable directive.The lint disable comment for
list-item-punctuationandno-repeat-punctuationis appropriately placed to handle the specific formatting requirements of this template document.
11-46: Excellent formatting improvements.The restructuring of the tip content with consistent indentation, improved list formatting, and clearer organization significantly enhances readability while maintaining the semantic content.
close IDP-1229
Summary by CodeRabbit
New Features
--globoption to specify target files.Bug Fixes
Documentation
Chores