diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml
index 5ff1a6ea490b9343411955edb0e4246a570356b2..6c4fd3343f24a399882b7f54259d28077e03f457 100644
--- a/.gitlab/ci/docs.gitlab-ci.yml
+++ b/.gitlab/ci/docs.gitlab-ci.yml
@@ -76,7 +76,7 @@ review-docs-hugo-cleanup:
 
 .docs-markdown-lint-image:
   # When updating the image version here, update it in /scripts/lint-doc.sh too.
-  image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-markdown:alpine-3.20-vale-3.9.3-markdownlint2-0.17.1-lychee-0.18.0
+  image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/technical-writing/docs-gitlab-com/lint-markdown:alpine-3.21-vale-3.9.3-markdownlint2-0.17.1-lychee-0.18.0
 
 docs-lint markdown:
   extends:
@@ -111,6 +111,28 @@ docs code_quality:
     expire_in: 2 weeks
     when: always
 
+docs hugo_build:
+  image: hugomods/hugo:exts-0.142.0
+  extends:
+    - .default-retry
+    - .docs:rules:docs-lint
+  stage: lint
+  needs: []
+  dependencies: []
+  before_script:
+    - apk add --no-cache git make nodejs npm bash
+    - git clone --depth 1 --filter=tree:0 https://gitlab.com/gitlab-org/technical-writing/docs-gitlab-com.git
+    - cd docs-gitlab-com
+    - make add-latest-icons
+    # Copy the current project's docs to the appropriate location in the docs website
+    - cp -r ../doc/* content/
+  script:
+    # Test that Hugo will build
+    - hugo --gc --printPathWarnings --panicOnWarning
+    # Test for invalid index pages
+    # See https://gitlab.com/gitlab-org/technical-writing/docs-gitlab-com/-/blob/main/scripts/check-index-filenames.sh
+    - make check-index-pages SEARCH_DIR="../doc"
+
 docs-lint links:
   extends:
     - .docs:rules:docs-lint
diff --git a/doc/development/documentation/backporting.md b/doc/development/documentation/backporting.md
index bc8fd30e84ae29ea986419ef4cc6e8396330e9fa..d496ce1d0f108f4d1d85b3a86379538b4a3046d2 100644
--- a/doc/development/documentation/backporting.md
+++ b/doc/development/documentation/backporting.md
@@ -87,7 +87,7 @@ For the change to appear in:
 - `docs.gitlab.com`, the release manager only has to merge the MR to the stable branch,
   and the technical writer needs to [deploy the backport changes](#deploy-the-backport-changes).
 - `gitlab.com/help`, the change needs to be part of a GitLab release. The release
-  manager can include the change in the next release they create. This is an optional step.
+  manager can include the change in the next release they create. This step is optional.
 
 ### Deploy the backport changes
 
diff --git a/scripts/lint-doc.sh b/scripts/lint-doc.sh
index e7c19f7cef8f66f1ce1b4b0eacc5d0566eec4a93..846cbc22d4a3a559584a52c5a3f9fb8c7a1ce1ed 100755
--- a/scripts/lint-doc.sh
+++ b/scripts/lint-doc.sh
@@ -188,7 +188,7 @@ function run_locally_or_in_container() {
   local cmd=$1
   local args=$2
   local files=$3
-  local registry_url="registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.20-vale-3.9.3-markdownlint2-0.17.1-lychee-0.18.0"
+  local registry_url="registry.gitlab.com/gitlab-org/technical-writing/docs-gitlab-com/lint-markdown:alpine-3.20-vale-3.9.3-markdownlint2-0.17.1-lychee-0.15.1"
 
   if hash "${cmd}" 2>/dev/null
   then