Skip to content

Conversation

@JounQin
Copy link
Member

@JounQin JounQin commented Jul 8, 2025

close IDP-1229

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive set of custom Markdown linting rules covering punctuation, list size, table introductions, heading depth, paragraph indentation, and unit casing.
    • Added new example Markdown documents showcasing headings, lists, tables, and links.
    • Enhanced lint CLI command with a --glob option to specify target files.
    • Improved ESLint integration to conditionally enable spellchecking based on configuration.
  • Bug Fixes

    • Enhanced resolution of local remark configuration files for consistent Markdown linting.
  • Documentation

    • Refined English and Chinese docs with clearer CLI option descriptions and configuration details.
    • Updated usage examples and added explanations for new lint rules.
    • Corrected Markdown callout syntax and standardized heading levels in installation and usage guides.
  • Chores

    • Updated Node.js version requirement to v24.3.0 and upgraded multiple dependencies.
    • Added dependencies to support advanced Markdown linting and remark plugins.
    • Enabled TypeScript compiler option for rewriting relative import extensions.
    • Removed obsolete utility functions and centralized shared imports.
    • Improved CSS specificity for decimal list styling.

@JounQin JounQin self-assigned this Jul 8, 2025
Copilot AI review requested due to automatic review settings July 8, 2025 10:55
@JounQin JounQin added enhancement New feature or request feature labels Jul 8, 2025
@changeset-bot
Copy link

changeset-bot bot commented Jul 8, 2025

🦋 Changeset detected

Latest commit: 6492ead

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@alauda/doom Minor

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

@coderabbitai
Copy link

coderabbitai bot commented Jul 8, 2025

Walkthrough

This update introduces a comprehensive set of Markdown linting rules and configuration, adds new fixture Markdown documents, enhances the CLI lint command with a --glob option, and updates documentation for clarity and accuracy. It also upgrades several dependencies, adds new remark/remark-lint plugins, and adjusts Node.js and TypeScript configuration files.

Changes

File(s) Change Summary
.nvmrc Updated Node.js version from v20.19.2 to v24.3.0.
package.json Upgraded multiple dependencies, added remark/remark-lint plugins, removed ESLint cache flag.
tsconfig.json Added "rewriteRelativeImportExtensions": true to compiler options.
patches/unified-engine+11.2.2.patch Enabled support for .ts config files in unified-engine.
docs/en/start.mdx, docs/en/usage/configuration.md Improved documentation clarity, consistency, and style; no functional changes.
docs/zh/start.mdx Updated and clarified CLI option descriptions for doom translate and doom lint.
fixture-docs/en/heading.md, fixture-docs/en/list-item.md, fixture-docs/en/table.md, fixture-docs/en/link.md, fixture-docs/en/text.md, fixture-docs/en/other.mdx, fixture-docs/en/reference.mdx, fixture-docs/zh/reference.mdx, fixture-docs/en/install/*.md, fixture-docs/en/development/component-quickstart/index.md Added new Markdown fixture documents and made formatting/typographical refinements.
src/cli/lint.ts Added --glob option for specifying files to lint; improved logging; added type for options.
src/cli/translate.ts Refined description for --glob option in CLI help.
src/eslint.ts Added logic to resolve and inject local remarkrc.js path into ESLint config; allowed disabling cspell.
src/remark-lint/constants.ts Added and exported PUNCTUATION_REGEX constant.
src/remark-lint/index.ts New module aggregating and exporting all custom remark lint rules as a unified plugin.
src/remark-lint/list-item-punctuation.ts, src/remark-lint/list-item-size.ts, src/remark-lint/list-table-introduction.ts, src/remark-lint/no-deep-heading.ts, src/remark-lint/no-deep-list.ts, src/remark-lint/no-empty-table-cell.ts, src/remark-lint/no-heading-punctuation.ts, src/remark-lint/no-heading-special-characters.ts, src/remark-lint/no-heading-sup-sub.ts, src/remark-lint/no-paragraph-indent.ts, src/remark-lint/table-size.ts, src/remark-lint/maximum-link-content-length.ts, src/remark-lint/unit-case.ts Introduced multiple custom Markdown lint rules for lists, tables, headings, paragraphs, links, and units.
src/remarkrc.ts New remark configuration exporting a plugin array with standard and custom lint rules.
src/shared/helpers.ts Added utility function extractTextAndId for parsing text and custom IDs.
src/plugins/auto-sidebar/utils.ts, src/plugins/replace/parse-toc.ts Changed import source of extractTextAndId to shared module.
src/plugins/replace/utils.ts Removed extractTextAndId function.
styles/global.scss Scoped .rp-list-decimal styles to exclude lists containing paragraphs.

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
Loading

Possibly related PRs

Suggested labels

dependencies

Poem

🐇
In the garden of Markdown, new rules now bloom,
Lists and tables, headings—no more doom!
Linting with globs, so clever and neat,
Fixture docs and configs make the toolkit complete.
Hop, hop, hooray—let clarity resume!

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

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

src/cli/lint.ts

Oops! Something went wrong! :(

ESLint: 9.30.1

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/lib/eslint.js' imported from /eslint.config.js
at finalizeResolution (node:internal/modules/esm/resolve:274:11)
at moduleResolve (node:internal/modules/esm/resolve:859:10)
at defaultResolve (node:internal/modules/esm/resolve:983:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:801:12)
at #cachedDefaultResolve (node:internal/modules/esm/loader:725:25)
at ModuleLoader.resolve (node:internal/modules/esm/loader:708:38)
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:309:38)
at #link (node:internal/modules/esm/module_job:202:49)

src/eslint.ts

Oops! Something went wrong! :(

ESLint: 9.30.1

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/lib/eslint.js' imported from /eslint.config.js
at finalizeResolution (node:internal/modules/esm/resolve:274:11)
at moduleResolve (node:internal/modules/esm/resolve:859:10)
at defaultResolve (node:internal/modules/esm/resolve:983:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:801:12)
at #cachedDefaultResolve (node:internal/modules/esm/loader:725:25)
at ModuleLoader.resolve (node:internal/modules/esm/loader:708:38)
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:309:38)
at #link (node:internal/modules/esm/module_job:202:49)

src/plugins/replace/parse-toc.ts

Oops! Something went wrong! :(

ESLint: 9.30.1

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/lib/eslint.js' imported from /eslint.config.js
at finalizeResolution (node:internal/modules/esm/resolve:274:11)
at moduleResolve (node:internal/modules/esm/resolve:859:10)
at defaultResolve (node:internal/modules/esm/resolve:983:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:801:12)
at #cachedDefaultResolve (node:internal/modules/esm/loader:725:25)
at ModuleLoader.resolve (node:internal/modules/esm/loader:708:38)
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:309:38)
at #link (node:internal/modules/esm/module_job:202:49)

  • 20 others
✨ Finishing Touches
  • 📝 Generate Docstrings

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need 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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@pkg-pr-new
Copy link

pkg-pr-new bot commented Jul 8, 2025

Open in StackBlitz

yarn add https://pkg.pr.new/@alauda/doom@117.tgz

commit: 6492ead

Copy link
Contributor

Copilot AI left a 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 remark with built-in and custom remark-lint rules in remarkrc.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'

Copy link

@coderabbitai coderabbitai bot left a 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 in src/remarkrc.ts

The CI parse errors stem from missing compiler flags, stray .ts extensions 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.ts and src/remarkrc.ts), remove the trailing .ts from 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.ts to 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 cause slice(-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

📥 Commits

Reviewing files that changed from the base of the PR and between a236686 and 09ff8a5.

⛔ Files ignored due to path filters (1)
  • yarn.lock is 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 | | leaves col2 blank, which will trigger the noEmptyTableCell rule 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 confirmed

The rewriteRelativeImportExtensions compiler 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 .ts configuration files by reusing the same loadScriptOrModule function 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 visitParents to 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 createRequire and fileURLToPath are 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.resolve first and falling back to createRequire.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 remarkConfigPath is 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:

  1. If the node is the first child in its parent
  2. 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:

  1. Extracts raw text using position offsets from the file content
  2. Filters out escaped characters by checking for preceding backslashes
  3. Uses Set to deduplicate matched characters
  4. 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 pluralize for 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, --glob option 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:

  1. FAQ files can have question marks in headings
  2. Balanced brackets, braces, angle brackets, and parentheses are allowed
  3. 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 --glob option 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 doomLint plugin correctly uses remark-message-control with 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, @rsbuild plugins, eslint-plugin-mdx, mermaid, typescript-eslint, and @swc/core appear 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 caching

It looks like the --cache flag was removed from the lint:es script 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-error comments 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 stringWidth for 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 check index === size - 1 matches the final element in listItems.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.

@JounQin JounQin force-pushed the feat/remark-lint branch from 09ff8a5 to 8efdb4c Compare July 9, 2025 02:34
Copy link

@coderabbitai coderabbitai bot left a 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 tooling

The 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 -y or just yarn init -2) avoids mixing package managers and prevents inadvertent creation of package-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 nix

Unquoted 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: Clarify publicBase and path resolution for remote repos

publicBase is 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

📥 Commits

Reviewing files that changed from the base of the PR and between 09ff8a5 and 8efdb4c.

⛔ Files ignored due to path filters (1)
  • yarn.lock is 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 ..//assets//xyz.jpg. :::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/--glob is actually mandatory for doom translate

Docs 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.

@JounQin JounQin force-pushed the feat/remark-lint branch from 49cc72d to 911ab96 Compare July 9, 2025 08:07
Copy link

@coderabbitai coderabbitai bot left a 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 lists

Because counter-reset is 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 at 1.
If hierarchical numbering (1.1, 1.2 …) is not desired, add counter-reset: section on 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

📥 Commits

Reviewing files that changed from the base of the PR and between 49cc72d and 911ab96.

⛔ Files ignored due to path filters (1)
  • yarn.lock is 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 ..//assets//xyz.jpg. :::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 clarity

No 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 as Test^ [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 LGTM

Uniform 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 hierarchy

The 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 accepted

Indentation 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 .ts extensions in imports improve clarity and align with TypeScript best practices.


29-40: Well-implemented utility function for ID extraction.

The extractTextAndId function 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 visitParents to 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 stringWidth for proper Unicode handling. The URL detection logic appropriately skips actual URLs from length validation, and the use of extractTextAndId ensures 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-length lint 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_UNITS set includes the proper binary and decimal prefixes (k, Ki, M, Mi, etc.).

The getPairUnit helper 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 unitCase remark-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 visitParents for 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 tableSize and noEmptyTableCell mentioned 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 listItemSize rule 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 listItemSize rule.

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 companion installing.mdx file.

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, --glob option 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 visitParents to 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 Root type

The 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-punctuation and no-repeat-punctuation rules, 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_PUNCTUATIONS set 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, and remove modes provide clearer understanding of how frontmatter is handled in different scenarios.

@JounQin JounQin force-pushed the feat/remark-lint branch from 911ab96 to 6492ead Compare July 9, 2025 08:12
Copy link

@coderabbitai coderabbitai bot left a 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 unit

Typographically, “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 compliance

Current 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.2
fixture-docs/en/install/installing.mdx (1)

25-32: Fenced code blocks inside list items: pad to 4-space indent

Fenced 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 portability

Some 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 file
src/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 since raw[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 sets collapsed: false

Not 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

📥 Commits

Reviewing files that changed from the base of the PR and between 911ab96 and 6492ead.

⛔ Files ignored due to path filters (1)
  • yarn.lock is 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 ..//assets//xyz.jpg. :::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 good

Renaming 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 correct

Column alignment and pipe placement match GFM spec; empty cells are permitted.
No issues spotted.

fixture-docs/en/heading.md (1)

1-7: Heading fixture accepted

Escaping the caret and brackets demonstrates the special-character rule effectively.
No changes required.

docs/en/usage/markdown.md (1)

18-18: Escape update is correct

Using [\!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-punctuation and no-repeat-punctuation is 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.

@JounQin JounQin merged commit 0ab2dec into main Jul 9, 2025
16 checks passed
@JounQin JounQin deleted the feat/remark-lint branch July 9, 2025 08:20
github-actions bot pushed a commit that referenced this pull request Jul 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants