diff --git a/doc/architecture/blueprints/gitlab_to_kubernetes_communication/index.md b/doc/architecture/blueprints/gitlab_to_kubernetes_communication/index.md
index 6b1b4d452c9aa0a3f6bfdd6cd79b9c2271e71551..06f3ef021f363ce64ea7b6e7b515e8564da79585 100644
--- a/doc/architecture/blueprints/gitlab_to_kubernetes_communication/index.md
+++ b/doc/architecture/blueprints/gitlab_to_kubernetes_communication/index.md
@@ -8,7 +8,7 @@ owning-stage: "~devops::configure"
 participating-stages: []
 ---
 
-# GitLab to Kubernetes communication **(FREE ALL)**
+# GitLab to Kubernetes communication
 
 The goal of this document is to define how GitLab can communicate with Kubernetes
 and in-cluster services through the GitLab agent.
diff --git a/doc/ci/caching/index.md b/doc/ci/caching/index.md
index 737b18fb6c250692ef1ee90cad0535eeb8d79ec9..cf1778d68f3ce1f5ce9a952e58e956f64c6ae38f 100644
--- a/doc/ci/caching/index.md
+++ b/doc/ci/caching/index.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Caching in GitLab CI/CD **(FREE ALL)**
+# Caching in GitLab CI/CD 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 A cache is one or more files a job downloads and saves. Subsequent jobs that use
 the same cache don't have to download the files again, so they execute more quickly.
@@ -99,7 +103,7 @@ the global fallback cache is fetched every time a cache is not found.
 
 ### Per-cache fallback keys
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/110467) in GitLab 16.0
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/110467) in GitLab 16.0
 
 Each cache entry supports up to five fallback keys with the [`fallback_keys` keyword](../yaml/index.md#cachefallback_keys).
 When a job does not find a cache key, the job attempts to retrieve a fallback cache instead.
@@ -141,7 +145,7 @@ Fallback keys follow the same processing logic as `cache:key`:
 
 ### Global fallback key
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/1534) in GitLab Runner 13.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/1534) in GitLab Runner 13.4.
 
 You can use the `$CI_COMMIT_REF_SLUG` [predefined variable](../variables/predefined_variables.md)
 to specify your [`cache:key`](../yaml/index.md#cachekey). For example, if your
@@ -265,7 +269,7 @@ cache:
 
 ### Use a variable to control a job's cache policy
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/371480) in GitLab 16.1.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/371480) in GitLab 16.1.
 
 To reduce duplication of jobs where the only difference is the pull policy, you can use a [CI/CD variable](../variables/index.md).
 
@@ -513,7 +517,7 @@ be overwritten because caches are restored before artifacts.
 
 #### Cache key names
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/330047) in GitLab 15.0.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/330047) in GitLab 15.0.
 
 A suffix is added to the cache key, with the exception of the [global fallback cache key](#global-fallback-key).
 
@@ -527,7 +531,7 @@ and `feature`, then the following table represents the resulting cache keys:
 
 ##### Use the same cache for all branches
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/361643) in GitLab 15.0.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/361643) in GitLab 15.0.
 
 If you do not want to use [cache key names](#cache-key-names),
 you can have all branches (protected and unprotected) use the same cache.
diff --git a/doc/ci/chatops/index.md b/doc/ci/chatops/index.md
index d84ff3550bdf230df49d0d728233ae68360ea309..0e1bc38b1b8539884b0a793863ccd519e0c3a028 100644
--- a/doc/ci/chatops/index.md
+++ b/doc/ci/chatops/index.md
@@ -4,7 +4,11 @@ group: Environments
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# GitLab ChatOps **(FREE ALL)**
+# GitLab ChatOps 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/4466) in GitLab Ultimate 10.6.
 > - [Moved](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/24780) to GitLab Free in 11.9.
diff --git a/doc/ci/ci_cd_for_external_repos/bitbucket_integration.md b/doc/ci/ci_cd_for_external_repos/bitbucket_integration.md
index 0dbc165e5eef5984e5375994671c057aa595e5e2..ef416e4f477c3e3ba2acde48c0f7c04f1fd67854 100644
--- a/doc/ci/ci_cd_for_external_repos/bitbucket_integration.md
+++ b/doc/ci/ci_cd_for_external_repos/bitbucket_integration.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Using GitLab CI/CD with a Bitbucket Cloud repository **(PREMIUM ALL)**
+# Using GitLab CI/CD with a Bitbucket Cloud repository 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 GitLab CI/CD can be used with Bitbucket Cloud by:
 
diff --git a/doc/ci/ci_cd_for_external_repos/github_integration.md b/doc/ci/ci_cd_for_external_repos/github_integration.md
index 5c57cb1d393078f45074c4b5f2214aaf0e28c20e..25114da9c3223bb8422c3b1f921c49b70452aa9d 100644
--- a/doc/ci/ci_cd_for_external_repos/github_integration.md
+++ b/doc/ci/ci_cd_for_external_repos/github_integration.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Using GitLab CI/CD with a GitHub repository **(PREMIUM ALL)**
+# Using GitLab CI/CD with a GitHub repository 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 GitLab CI/CD can be used with **GitHub.com** and **GitHub Enterprise** by
 creating a [CI/CD project](index.md) to connect your GitHub repository to
diff --git a/doc/ci/ci_cd_for_external_repos/index.md b/doc/ci/ci_cd_for_external_repos/index.md
index dbe56edce7e862fe6a4a1ea5df5cbfbd32b0c58c..86b82a3b993ae8b264bdc919345dd9091981c9f8 100644
--- a/doc/ci/ci_cd_for_external_repos/index.md
+++ b/doc/ci/ci_cd_for_external_repos/index.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# GitLab CI/CD for external repositories **(PREMIUM ALL)**
+# GitLab CI/CD for external repositories 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 >[Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/4642) in GitLab 10.6.
 
@@ -34,7 +38,7 @@ the [import sources configuration](../../administration/settings/import_and_expo
 
 ## Pipelines for external pull requests
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/65139) in GitLab 12.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/65139) in GitLab 12.3.
 
 When using GitLab CI/CD with an [external repository on GitHub](github_integration.md),
 it's possible to run a pipeline in the context of a Pull Request.
diff --git a/doc/ci/cloud_deployment/ecs/deploy_to_aws_ecs.md b/doc/ci/cloud_deployment/ecs/deploy_to_aws_ecs.md
index 82f92cdc938ca04e3fd116607ddea40cbc1bae13..eb070c65ae9be1b9ce1f0bf345d30d0b266f33c0 100644
--- a/doc/ci/cloud_deployment/ecs/deploy_to_aws_ecs.md
+++ b/doc/ci/cloud_deployment/ecs/deploy_to_aws_ecs.md
@@ -4,7 +4,11 @@ group: Environments
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Deploy to Amazon Elastic Container Service **(FREE ALL)**
+# Deploy to Amazon Elastic Container Service 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 This step-by-step guide helps you deploy a project hosted on GitLab.com to
 the Amazon [Elastic Container Service (ECS)](https://aws.amazon.com/ecs/).
diff --git a/doc/ci/cloud_deployment/index.md b/doc/ci/cloud_deployment/index.md
index 14149aa6446e4bb2df7415a83deb3da47d43cd46..6f66db2189cfad9562eef202837861bab4213c9d 100644
--- a/doc/ci/cloud_deployment/index.md
+++ b/doc/ci/cloud_deployment/index.md
@@ -4,7 +4,11 @@ group: Environments
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Deploy to AWS from GitLab CI/CD **(FREE ALL)**
+# Deploy to AWS from GitLab CI/CD 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 GitLab provides Docker images with the libraries and tools you need to deploy
 to AWS. You can reference these images in your CI/CD pipeline.
@@ -145,7 +149,7 @@ because the override stops working when the name changes.
 
 ## Deploy your application to EC2
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/201742) in GitLab 13.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/201742) in GitLab 13.5.
 
 GitLab provides a template, called `AWS/CF-Provision-and-Deploy-EC2`,
 to assist you in deploying to Amazon EC2.
diff --git a/doc/ci/cloud_services/aws/index.md b/doc/ci/cloud_services/aws/index.md
index b6086ed35431d74aeaabe519719abf75e7a47082..fbf502f0f0b112e2e06834c320fb35db79cd12a7 100644
--- a/doc/ci/cloud_services/aws/index.md
+++ b/doc/ci/cloud_services/aws/index.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Configure OpenID Connect in AWS to retrieve temporary credentials **(FREE ALL)**
+# Configure OpenID Connect in AWS to retrieve temporary credentials 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 WARNING:
 `CI_JOB_JWT_V2` was [deprecated in GitLab 15.9](../../../update/deprecations.md#old-versions-of-json-web-tokens-are-deprecated)
diff --git a/doc/ci/cloud_services/azure/index.md b/doc/ci/cloud_services/azure/index.md
index b3fcaabfdde470057e61f89bf7e1edc3b523134b..e5a775e083d0081423ea03c159e689a8989e10dd 100644
--- a/doc/ci/cloud_services/azure/index.md
+++ b/doc/ci/cloud_services/azure/index.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Configure OpenID Connect in Azure to retrieve temporary credentials **(FREE ALL)**
+# Configure OpenID Connect in Azure to retrieve temporary credentials 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 WARNING:
 `CI_JOB_JWT_V2` was [deprecated in GitLab 15.9](../../../update/deprecations.md#old-versions-of-json-web-tokens-are-deprecated)
diff --git a/doc/ci/cloud_services/google_cloud/index.md b/doc/ci/cloud_services/google_cloud/index.md
index b38566309c99f7b71de47b5a3b8d2cdb7f488b76..981fea5c4177d4ece8ab3c8f286f25a5eb391517 100644
--- a/doc/ci/cloud_services/google_cloud/index.md
+++ b/doc/ci/cloud_services/google_cloud/index.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Configure OpenID Connect with GCP Workload Identity Federation **(FREE ALL)**
+# Configure OpenID Connect with GCP Workload Identity Federation 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 WARNING:
 `CI_JOB_JWT_V2` was [deprecated in GitLab 15.9](../../../update/deprecations.md#old-versions-of-json-web-tokens-are-deprecated)
diff --git a/doc/ci/cloud_services/index.md b/doc/ci/cloud_services/index.md
index 17d967e7a0ddaf6705360378c027e879d66468ed..7072babdd7bd1e3a915c971f58e1cec07bddea19 100644
--- a/doc/ci/cloud_services/index.md
+++ b/doc/ci/cloud_services/index.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Connect to cloud services **(FREE ALL)**
+# Connect to cloud services 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - `CI_JOB_JWT` variable for reading secrets from Vault [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/207125) in GitLab 12.10.
 > - `CI_JOB_JWT_V2` variable to support additional OIDC providers [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/346737) in GitLab 14.7.
diff --git a/doc/ci/debugging.md b/doc/ci/debugging.md
index 84715cda2f542756b3830a6db349c627901746e7..cbbc409078259d43a3eea770b92ab11a6af94fc7 100644
--- a/doc/ci/debugging.md
+++ b/doc/ci/debugging.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Debugging CI/CD pipelines **(FREE ALL)**
+# Debugging CI/CD pipelines 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 GitLab provides several tools to help make it easier to debug your CI/CD configuration.
 
diff --git a/doc/ci/directed_acyclic_graph/index.md b/doc/ci/directed_acyclic_graph/index.md
index fab784783f675cf12ef5fffc732c2bad659f8fbd..69012e3a69f8266fede86a53389dc383f764b5dc 100644
--- a/doc/ci/directed_acyclic_graph/index.md
+++ b/doc/ci/directed_acyclic_graph/index.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Directed Acyclic Graph **(FREE ALL)**
+# Directed Acyclic Graph 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/47063) in GitLab 12.2.
 > - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/206902) in GitLab 12.10.
diff --git a/doc/ci/docker/index.md b/doc/ci/docker/index.md
index f4e7587f02eb20ab3bb57dc0bd6d7ef7e9f7ab8b..880e2ea1d2ab45725c39b8120cf2c392560ec80d 100644
--- a/doc/ci/docker/index.md
+++ b/doc/ci/docker/index.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Docker integration **(FREE ALL)**
+# Docker integration 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 There are two primary ways to incorporate [Docker](https://www.docker.com) into your CI/CD workflow:
 
diff --git a/doc/ci/docker/using_docker_build.md b/doc/ci/docker/using_docker_build.md
index bc157c7ae08bafa5a2ae8d519918689f1c859e71..5565c7ca60cbc34c962eead68b0482a77a2ef8d4 100644
--- a/doc/ci/docker/using_docker_build.md
+++ b/doc/ci/docker/using_docker_build.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Use Docker to build Docker images **(FREE ALL)**
+# Use Docker to build Docker images 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 You can use GitLab CI/CD with Docker to create Docker images.
 For example, you can create a Docker image of your application,
@@ -100,7 +104,7 @@ You can use the Docker executor to run jobs in a Docker container.
 
 ##### Docker-in-Docker with TLS enabled in the Docker executor
 
-> Introduced in GitLab Runner 11.11.
+> - Introduced in GitLab Runner 11.11.
 
 The Docker daemon supports connections over TLS. TLS is the default in Docker 19.03.12 and later.
 
@@ -253,7 +257,7 @@ You can use the [Kubernetes executor](https://docs.gitlab.com/runner/executors/k
 
 ##### Docker-in-Docker with TLS enabled in Kubernetes
 
-> [Introduced](https://gitlab.com/gitlab-org/charts/gitlab-runner/-/issues/106) in GitLab Runner Helm Chart 0.23.0.
+> - [Introduced](https://gitlab.com/gitlab-org/charts/gitlab-runner/-/issues/106) in GitLab Runner Helm Chart 0.23.0.
 
 To use Docker-in-Docker with TLS enabled in Kubernetes:
 
@@ -469,7 +473,7 @@ services:
 
 ##### The service in the GitLab Runner configuration file
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27173) in GitLab Runner 13.6.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27173) in GitLab Runner 13.6.
 
 If you are a GitLab Runner administrator, you can specify the `command` to configure the registry mirror
 for the Docker daemon. The `dind` service must be defined for the
@@ -539,7 +543,7 @@ detected by the `dind` service.
 
 ##### The Kubernetes executor in the GitLab Runner configuration file
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3223) in GitLab Runner 13.6.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3223) in GitLab Runner 13.6.
 
 If you are a GitLab Runner administrator, you can use
 the mirror for every `dind` service. Update the
diff --git a/doc/ci/docker/using_docker_images.md b/doc/ci/docker/using_docker_images.md
index 7e24016a455802abfd8a54233d8aeae9a2cc5a1f..09b6b7a492ba34cec9d2cd106e6bd7f173339067 100644
--- a/doc/ci/docker/using_docker_images.md
+++ b/doc/ci/docker/using_docker_images.md
@@ -4,7 +4,11 @@ group: Runner
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Run your CI/CD jobs in Docker containers **(FREE ALL)**
+# Run your CI/CD jobs in Docker containers 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 You can run your CI/CD jobs in separate, isolated Docker containers.
 
@@ -91,7 +95,7 @@ The image name must be in one of the following formats:
 
 ## Extended Docker configuration options
 
-> Introduced in GitLab and GitLab Runner 9.4.
+> - Introduced in GitLab and GitLab Runner 9.4.
 
 You can use a string or a map for the `image` or `services` entries:
 
@@ -131,7 +135,7 @@ When a CI job runs in a Docker container, the `before_script`, `script`, and `af
 
 ### Override the entrypoint of an image
 
-> Introduced in GitLab and GitLab Runner 9.4. Read more about the [extended configuration options](../docker/using_docker_images.md#extended-docker-configuration-options).
+> - Introduced in GitLab and GitLab Runner 9.4. Read more about the [extended configuration options](../docker/using_docker_images.md#extended-docker-configuration-options).
 
 Before explaining the available entrypoint override methods, let's describe
 how the runner starts. It uses a Docker image for the containers used in the
@@ -396,7 +400,7 @@ pulling from Docker Hub fails. Docker daemon tries to use the same credentials f
 
 ### Use Credential Helpers
 
-> Introduced in GitLab Runner 12.0.
+> - Introduced in GitLab Runner 12.0.
 
 As an example, let's assume that you want to use the `<aws_account_id>.dkr.ecr.<region>.amazonaws.com/private/image:latest`
 image. This image is private and requires you to sign in to a private container registry.
diff --git a/doc/ci/docker/using_kaniko.md b/doc/ci/docker/using_kaniko.md
index 97cdbf79d0258450ac245a91b4076c248e73c602..528803ee6c5a98c89041ba80356600dc0edc3def 100644
--- a/doc/ci/docker/using_kaniko.md
+++ b/doc/ci/docker/using_kaniko.md
@@ -4,9 +4,13 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Use kaniko to build Docker images **(FREE ALL)**
+# Use kaniko to build Docker images 
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/45512) in GitLab 11.2. Requires GitLab Runner 11.2 and above.
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/45512) in GitLab 11.2. Requires GitLab Runner 11.2 and above.
 
 [kaniko](https://github.com/GoogleContainerTools/kaniko) is a tool to build
 container images from a Dockerfile, inside a container or Kubernetes cluster.
diff --git a/doc/ci/environments/deployment_approvals.md b/doc/ci/environments/deployment_approvals.md
index f1c7b412c6ff65da4cc5622ec3ed83df4ccd4b06..937da11426e017d2658516ffcd3540045b889b5d 100644
--- a/doc/ci/environments/deployment_approvals.md
+++ b/doc/ci/environments/deployment_approvals.md
@@ -5,7 +5,11 @@ info: To determine the technical writer assigned to the Stage/Group associated w
 description: Require approvals prior to deploying to a Protected Environment
 ---
 
-# Deployment approvals **(PREMIUM ALL)**
+# Deployment approvals 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/343864) in GitLab 14.7 with a flag named `deployment_approvals`. Disabled by default.
 > - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/347342) in GitLab 14.8. Feature flag `deployment_approvals` removed.
@@ -148,7 +152,7 @@ To allow self-approval of a deployment job:
 
 ## Approve or reject a deployment
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/342180/) in GitLab 14.9
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/342180/) in GitLab 14.9
 
 Using the GitLab UI or the API, you can:
 
diff --git a/doc/ci/environments/deployment_safety.md b/doc/ci/environments/deployment_safety.md
index ec6d2c482cdfd1ba1b4c9d60d0221b349326072c..b52b02eb00fa973316a41dcd2bf155949da962cb 100644
--- a/doc/ci/environments/deployment_safety.md
+++ b/doc/ci/environments/deployment_safety.md
@@ -4,7 +4,11 @@ group: Environments
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Deployment safety **(FREE ALL)**
+# Deployment safety 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 [Deployment jobs](../jobs/index.md#deployment-jobs) are a specific kind of CI/CD
 job. They can be more sensitive than other jobs in a pipeline,
diff --git a/doc/ci/environments/environments_dashboard.md b/doc/ci/environments/environments_dashboard.md
index 24a619d9f103d72c604173f53556416e5a8a2830..6fd045612091d765bea60f73a5ac56269a36c2bd 100644
--- a/doc/ci/environments/environments_dashboard.md
+++ b/doc/ci/environments/environments_dashboard.md
@@ -4,9 +4,13 @@ group: Environments
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Environments Dashboard **(PREMIUM ALL)**
+# Environments Dashboard 
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/3713) in GitLab 12.5.
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/3713) in GitLab 12.5.
 
 The Environments Dashboard provides a cross-project
 environment-based view that lets you see the big picture
diff --git a/doc/ci/environments/external_deployment_tools.md b/doc/ci/environments/external_deployment_tools.md
index 29c811b68bec1850e340dc6049644f058f83a3cd..1f292bdc7f92419fa61f1107ec019a3c7ab24ef1 100644
--- a/doc/ci/environments/external_deployment_tools.md
+++ b/doc/ci/environments/external_deployment_tools.md
@@ -4,9 +4,13 @@ group: Environments
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Track deployments of an external deployment tool **(FREE ALL)**
+# Track deployments of an external deployment tool 
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/22513) in GitLab 12.5.
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/22513) in GitLab 12.5.
 
 While GitLab offers a [built-in deployment solution](index.md), you might prefer to use an external deployment tool, such as Heroku or ArgoCD.
 GitLab can receive deployment events from these external tools and allows you to track the deployments within GitLab.
diff --git a/doc/ci/environments/incremental_rollouts.md b/doc/ci/environments/incremental_rollouts.md
index 9dd5e67692443c5b3893eeeb117be308e8e132b0..27419da33897c5c9444b74c6615460e7d28dfdab 100644
--- a/doc/ci/environments/incremental_rollouts.md
+++ b/doc/ci/environments/incremental_rollouts.md
@@ -4,7 +4,11 @@ group: Environments
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Incremental rollouts with GitLab CI/CD **(FREE ALL)**
+# Incremental rollouts with GitLab CI/CD 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 When rolling out changes to your application, it is possible to release production changes
 to only a portion of your Kubernetes pods as a risk mitigation strategy. By releasing
diff --git a/doc/ci/environments/index.md b/doc/ci/environments/index.md
index c9148e04bf351a98ac2a350c4f091b5d7d2fb4a5..677f55fd4f3822ca21c349e2b3f4b0c9d415fb7a 100644
--- a/doc/ci/environments/index.md
+++ b/doc/ci/environments/index.md
@@ -4,7 +4,11 @@ group: Environments
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Environments and deployments **(FREE ALL)**
+# Environments and deployments 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Environments describe where code is deployed.
 
@@ -253,7 +257,7 @@ To achieve the same result as renaming an environment:
 
 ## Deployment tier of environments
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/300741) in GitLab 13.10.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/300741) in GitLab 13.10.
 
 Sometimes, instead of using an [industry standard](https://en.wikipedia.org/wiki/Deployment_environment)
 environment name, like `production`, you might want to use a code name, like `customer-portal`.
@@ -682,7 +686,7 @@ To delete an environment:
 
 ### Access an environment for preparation or verification purposes
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/208655) in GitLab 13.2.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/208655) in GitLab 13.2.
 
 You can define a job that accesses an environment for various purposes, such as verification or preparation. This
 effectively bypasses deployment creation, so that you can adjust your CD workflow more accurately.
@@ -741,7 +745,7 @@ to get alerts when there are critical issues that need immediate attention.
 
 #### View the latest alerts for environments **(ULTIMATE ALL)**
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/214634) in GitLab 13.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/214634) in GitLab 13.4.
 
 If you [set up alerts for Prometheus metrics](../../operations/incident_management/integrations.md#configuration),
 alerts for environments are shown on the environments page. The alert with the highest
@@ -757,7 +761,7 @@ deployment tab from the environment page and select which deployment to roll bac
 
 #### Auto Rollback **(ULTIMATE ALL)**
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/35404) in GitLab 13.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/35404) in GitLab 13.7.
 
 In a typical Continuous Deployment workflow, the CI pipeline tests every commit before deploying to
 production. However, problematic code can still make it to production. For example, inefficient code
@@ -1024,7 +1028,7 @@ To ensure the `action: stop` can always run when needed, you can:
 
 ### A deployment job failed with "This job could not be executed because it would create an environment with an invalid parameter" error
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/21182) in GitLab 14.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/21182) in GitLab 14.4.
 
 If your project is configured to [create a dynamic environment](#create-a-dynamic-environment),
 you might encounter this error because the dynamically generated parameter can't be used for creating an environment.
diff --git a/doc/ci/environments/protected_environments.md b/doc/ci/environments/protected_environments.md
index 9b3332bddba60a010f75e696e320ccc586445377..34dc94594434d210ff7dafd9db7f3aa1ac0869ab 100644
--- a/doc/ci/environments/protected_environments.md
+++ b/doc/ci/environments/protected_environments.md
@@ -4,7 +4,11 @@ group: Environments
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Protected environments **(PREMIUM ALL)**
+# Protected environments 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 [Environments](../environments/index.md) can be used for both testing and
 production reasons.
@@ -255,7 +259,7 @@ To protect a group-level environment, make sure your environments have the corre
 
 #### Using the UI
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/325249) in GitLab 15.1.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/325249) in GitLab 15.1.
 
 1. On the left sidebar, select **Search or go to** and find your group.
 1. Select **Settings > CI/CD**.
diff --git a/doc/ci/examples/authenticating-with-hashicorp-vault/index.md b/doc/ci/examples/authenticating-with-hashicorp-vault/index.md
index ed891b46999f38f4155774400b06d26c6cbdcf99..47c938dd0a0bcd08dcf6237e2ea01bd3e5f351ff 100644
--- a/doc/ci/examples/authenticating-with-hashicorp-vault/index.md
+++ b/doc/ci/examples/authenticating-with-hashicorp-vault/index.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Authenticating and reading secrets with HashiCorp Vault **(PREMIUM ALL)**
+# Authenticating and reading secrets with HashiCorp Vault 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 WARNING:
 Authenticating with `CI_JOB_JWT` was [deprecated in GitLab 15.9](../../../update/deprecations.md#old-versions-of-json-web-tokens-are-deprecated)
diff --git a/doc/ci/examples/deployment/composer-npm-deploy.md b/doc/ci/examples/deployment/composer-npm-deploy.md
index 149f99e8a6670cf75499818e07b2e7aa00a48b8a..d7ed176d522fd20daa102bf249356ed738b95566 100644
--- a/doc/ci/examples/deployment/composer-npm-deploy.md
+++ b/doc/ci/examples/deployment/composer-npm-deploy.md
@@ -4,7 +4,11 @@ group: Environments
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Running Composer and npm scripts with deployment via SCP in GitLab CI/CD **(FREE ALL)**
+# Running Composer and npm scripts with deployment via SCP in GitLab CI/CD 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 This guide covers the building of dependencies of a PHP project while compiling assets via an npm script using [GitLab CI/CD](../../index.md).
 
diff --git a/doc/ci/examples/deployment/index.md b/doc/ci/examples/deployment/index.md
index 0ffc09c8646019c9e75bce202779055d89eb15b1..140cef379ccaa0616850a04fae39c4416a9fbe08 100644
--- a/doc/ci/examples/deployment/index.md
+++ b/doc/ci/examples/deployment/index.md
@@ -4,7 +4,11 @@ group: Environments
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Using Dpl as a deployment tool **(FREE ALL)**
+# Using Dpl as a deployment tool 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 [Dpl](https://github.com/travis-ci/dpl) (pronounced like the letters D-P-L) is a deploy tool made for
 continuous deployment that's developed and used by Travis CI, but can also be
diff --git a/doc/ci/examples/end_to_end_testing_webdriverio/index.md b/doc/ci/examples/end_to_end_testing_webdriverio/index.md
index 8872602a027a99328a744707f521a641731a2990..225b9ed5740574ecc4eb12f424e634654e7f65a2 100644
--- a/doc/ci/examples/end_to_end_testing_webdriverio/index.md
+++ b/doc/ci/examples/end_to_end_testing_webdriverio/index.md
@@ -9,7 +9,11 @@ description: 'Confidence checking your entire app every time a new feature is ad
 
 <!-- vale off -->
 
-# End-to-end testing with GitLab CI/CD and WebdriverIO **(FREE ALL)**
+# End-to-end testing with GitLab CI/CD and WebdriverIO 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 [Review Apps](../../review_apps/index.md) are great: for every merge request
 (or branch, for that matter), the new code can be copied and deployed to a fresh production-like live
diff --git a/doc/ci/examples/index.md b/doc/ci/examples/index.md
index f618b6beec9204d5ce0f4b7cf09ba8db0059fd49..e0cdbebd9015b9ae2322af266f88a3e97d594eee 100644
--- a/doc/ci/examples/index.md
+++ b/doc/ci/examples/index.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# GitLab CI/CD examples **(FREE ALL)**
+# GitLab CI/CD examples 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 This page contains links to a variety of examples that can help you understand how to
 implement [GitLab CI/CD](../index.md) for your specific use case.
@@ -98,7 +102,11 @@ If a programming language or framework template is not in this list, you can con
 one. To create a template, submit a merge request
 to [the templates list](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates).
 
-### Adding templates to your GitLab installation **(PREMIUM SELF)**
+### Adding templates to your GitLab installation 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** Self-managed
 
 You can add custom examples and templates to your self-managed GitLab instance.
 Your GitLab administrator can [designate an instance template repository](../../administration/settings/instance_template_repository.md)
diff --git a/doc/ci/examples/laravel_with_gitlab_and_envoy/index.md b/doc/ci/examples/laravel_with_gitlab_and_envoy/index.md
index 25a0750e5eb2d936f99c992c0084e4607c9933a9..9bdc22ec1bbac828f6c4fad28a23e6811127fcc6 100644
--- a/doc/ci/examples/laravel_with_gitlab_and_envoy/index.md
+++ b/doc/ci/examples/laravel_with_gitlab_and_envoy/index.md
@@ -8,7 +8,11 @@ author_gitlab: mehranrasulian
 
 <!-- vale off -->
 
-# Test and deploy Laravel applications with GitLab CI/CD and Envoy **(FREE ALL)**
+# Test and deploy Laravel applications with GitLab CI/CD and Envoy 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 ## Introduction
 
diff --git a/doc/ci/examples/php.md b/doc/ci/examples/php.md
index 12d3cf32d9859087fc47244652083ac6e887f1cc..c885f285577f64d39a2a7d43f76cb4ab1672d86f 100644
--- a/doc/ci/examples/php.md
+++ b/doc/ci/examples/php.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Testing PHP projects **(FREE ALL)**
+# Testing PHP projects 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 This guide covers basic building instructions for PHP projects.
 
diff --git a/doc/ci/examples/semantic-release.md b/doc/ci/examples/semantic-release.md
index 6a21b6d3d83899e9b045d9110879c6ccc9adb1b5..7e33ba8c5c8e6cd433526fd7e81b47b50cbaf9ac 100644
--- a/doc/ci/examples/semantic-release.md
+++ b/doc/ci/examples/semantic-release.md
@@ -4,7 +4,11 @@ group: Package Registry
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Publish npm packages to the GitLab package registry using semantic-release **(FREE ALL)**
+# Publish npm packages to the GitLab package registry using semantic-release 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 This guide demonstrates how to automatically publish npm packages to the [GitLab package registry](../../user/packages/npm_registry/index.md) by using [semantic-release](https://github.com/semantic-release/semantic-release).
 
diff --git a/doc/ci/git_submodules.md b/doc/ci/git_submodules.md
index 747c2abb61adec40d3a9158049ea179dfab2f370..c90ace3139d8fce9bfa4ec5d7b7d3f852f71d91c 100644
--- a/doc/ci/git_submodules.md
+++ b/doc/ci/git_submodules.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Using Git submodules with GitLab CI/CD **(FREE ALL)**
+# Using Git submodules with GitLab CI/CD 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Use [Git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) to keep
 a Git repository as a subdirectory of another Git repository. You can clone another
@@ -17,7 +21,7 @@ You have multiple options to configure it to work in a GitLab CI/CD job.
 
 ### Using absolute URLs
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3198) in GitLab Runner 15.11.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3198) in GitLab Runner 15.11.
 
 For example, your generated `.gitmodules` configuration might look like the following if:
 
diff --git a/doc/ci/index.md b/doc/ci/index.md
index 429db0beede5c1c8f820a1fac38428e5cbd01bef..2c7f613d830778636c07a02485531792e342b367 100644
--- a/doc/ci/index.md
+++ b/doc/ci/index.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Get started with GitLab CI/CD **(FREE ALL)**
+# Get started with GitLab CI/CD 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 CI/CD is a continuous method of software development, where you continuously build,
 test, deploy, and monitor iterative code changes.
diff --git a/doc/ci/interactive_web_terminal/index.md b/doc/ci/interactive_web_terminal/index.md
index 4108ab93797a8d88540af0ae8c65dc9f090ac9b9..c2a43b6c3ffa76bec83e35a9f0fa613d1730f648 100644
--- a/doc/ci/interactive_web_terminal/index.md
+++ b/doc/ci/interactive_web_terminal/index.md
@@ -4,9 +4,13 @@ group: Runner
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Interactive web terminals **(FREE ALL)**
+# Interactive web terminals 
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/50144) in GitLab 11.3.
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/50144) in GitLab 11.3.
 
 Interactive web terminals give the user access to a terminal in GitLab for
 running one-off commands for their CI pipeline. You can think of it like a method for
diff --git a/doc/ci/jobs/ci_job_token.md b/doc/ci/jobs/ci_job_token.md
index e46a6356dd2b1cbfdec8eaed2b283339eca2b54c..9334de750fe4c02aa6ea4080c546f8491cc5847a 100644
--- a/doc/ci/jobs/ci_job_token.md
+++ b/doc/ci/jobs/ci_job_token.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# GitLab CI/CD job token **(FREE ALL)**
+# GitLab CI/CD job token 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 When a pipeline job is about to run, GitLab generates a unique token and injects it as the
 [`CI_JOB_TOKEN` predefined variable](../variables/predefined_variables.md).
@@ -223,7 +227,11 @@ To configure the job token scope:
 1. Optional. Add existing projects to the token's access scope. The user adding a
    project must have the Maintainer role in both projects.
 
-## Download an artifact from a different pipeline **(PREMIUM ALL)**
+## Download an artifact from a different pipeline 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 You can use the CI/CD job token to authenticate with the [jobs artifacts API endpoint](../../api/job_artifacts.md)
 and fetch artifacts from a different pipeline. You must specify which job to retrieve artifacts from:
diff --git a/doc/ci/jobs/index.md b/doc/ci/jobs/index.md
index 3cba87878215eb9ef3a791d143185440cd2fa632..79dd729d5dd7494f6c11af3d40c2a191005dfea3 100644
--- a/doc/ci/jobs/index.md
+++ b/doc/ci/jobs/index.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Jobs **(FREE ALL)**
+# Jobs 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Pipeline configuration begins with jobs. Jobs are the most fundamental element of a `.gitlab-ci.yml` file.
 
@@ -262,7 +266,7 @@ In this example:
 
 ## Specifying variables when running manual jobs
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/30485) in GitLab 12.2.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/30485) in GitLab 12.2.
 
 When running manual jobs you can supply additional job specific variables.
 
@@ -312,7 +316,7 @@ In the following example:
 
 ### Custom collapsible sections
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/14664) in GitLab 12.0.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/14664) in GitLab 12.0.
 
 You can create [collapsible sections in job logs](#expand-and-collapse-job-log-sections)
 by manually outputting special codes
@@ -355,7 +359,7 @@ this line should be hidden when collapsed
 
 ### Pre-collapse sections
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/198413) in GitLab 13.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/198413) in GitLab 13.5.
 
 You can make the job log automatically collapse collapsible sections by adding the `collapsed` option to the section start.
 Add `[collapsed=true]` after the section name and before the `\r`. The section end marker
@@ -377,7 +381,7 @@ job1:
 
 ### Full screen mode
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/363617) in GitLab 16.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/363617) in GitLab 16.7.
 
 You can view the contents of a job log in full screen mode by clicking **Show full screen**.
 
@@ -451,7 +455,11 @@ The configuration can be added to:
   ]
   ```
 
-### Job using `resource_group` gets stuck **(FREE SELF)**
+### Job using `resource_group` gets stuck 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** Self-managed
 
 If a job using [`resource_group`](../yaml/index.md#resource_group) gets stuck, a
 GitLab administrator can try run the following commands from the [rails console](../../administration/operations/rails_console.md#starting-a-rails-console-session):
diff --git a/doc/ci/jobs/job_artifacts.md b/doc/ci/jobs/job_artifacts.md
index 34da3be937085066552c085e90894aed5b268e27..c9fd72e50a1c71f9def823bd07a089640395ccd8 100644
--- a/doc/ci/jobs/job_artifacts.md
+++ b/doc/ci/jobs/job_artifacts.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Job artifacts **(FREE ALL)**
+# Job artifacts 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Jobs can output an archive of files and directories. This output is known as a job artifact.
 
diff --git a/doc/ci/jobs/job_artifacts_troubleshooting.md b/doc/ci/jobs/job_artifacts_troubleshooting.md
index 470c1bf4b55988b5573122e12869ca5487aa81b0..d1972cd8ba41eeca873c2a43dca17e1fcc3c171b 100644
--- a/doc/ci/jobs/job_artifacts_troubleshooting.md
+++ b/doc/ci/jobs/job_artifacts_troubleshooting.md
@@ -38,7 +38,7 @@ wasn't created.
 
 ## Error message `Missing /usr/bin/gitlab-runner-helper. Uploading artifacts is disabled.`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3068) in GitLab 15.2, GitLab Runner uses `RUNNER_DEBUG` instead of `DEBUG`, fixing this issue.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3068) in GitLab 15.2, GitLab Runner uses `RUNNER_DEBUG` instead of `DEBUG`, fixing this issue.
 
 In GitLab 15.1 and earlier, setting a CI/CD variable named `DEBUG` can cause artifact uploads to fail.
 
diff --git a/doc/ci/jobs/job_control.md b/doc/ci/jobs/job_control.md
index f7b3fed7d74307e2e706d9088b0741a5ef5c71c4..c2ce6b90d1d27768e9c8d8cfa1da39a38eaf576b 100644
--- a/doc/ci/jobs/job_control.md
+++ b/doc/ci/jobs/job_control.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Choose when to run jobs **(FREE ALL)**
+# Choose when to run jobs 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 When a new pipeline starts, GitLab checks the pipeline configuration to determine
 which jobs should run in that pipeline. You can configure jobs to run depending on
@@ -17,7 +21,7 @@ earlier jobs it depends on finish running.
 
 ## Specify when jobs run with `rules`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/27863) in GitLab 12.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/27863) in GitLab 12.3.
 
 Use [`rules`](../yaml/index.md#rules) to include or exclude jobs in pipelines.
 
@@ -339,7 +343,7 @@ You can use the `$` character for both variables and paths. For example, if the
 
 ### Reuse rules in different jobs
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/322992) in GitLab 14.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/322992) in GitLab 14.3.
 
 Use [`!reference` tags](../yaml/yaml_optimization.md#reference-tags) to reuse rules in different
 jobs. You can combine `!reference` rules with regular job-defined rules:
@@ -616,7 +620,11 @@ To run a manual job, you must have permission to merge to the assigned branch:
 
 You can also [add custom CI/CD variables when running a manual job](index.md#specifying-variables-when-running-manual-jobs).
 
-### Protect manual jobs **(PREMIUM ALL)**
+### Protect manual jobs 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Use [protected environments](../environments/protected_environments.md)
 to define a list of users authorized to run a manual job. You can authorize only
@@ -655,7 +663,7 @@ by authorized users.
 
 ## Run a job after a delay
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/51352) in GitLab 11.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/51352) in GitLab 11.4.
 
 Use [`when: delayed`](../yaml/index.md#when) to execute scripts after a waiting period, or if you want to avoid
 jobs immediately entering the `pending` state.
@@ -726,7 +734,7 @@ Test Boosters reports usage statistics to the author.
 
 ### Run a one-dimensional matrix of parallel jobs
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/26362) in GitLab 13.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/26362) in GitLab 13.5.
 
 You can create a one-dimensional matrix of parallel jobs:
 
@@ -745,7 +753,7 @@ You can also [create a multi-dimensional matrix](../yaml/index.md#parallelmatrix
 
 ### Run a matrix of parallel trigger jobs
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/270957) in GitLab 13.10.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/270957) in GitLab 13.10.
 
 You can run a [trigger](../yaml/index.md#trigger) job multiple times in parallel in a single pipeline,
 but with different variable values for each instance of the job.
@@ -779,7 +787,7 @@ deploystacks: [vultr, data]
 
 ### Select different runner tags for each parallel matrix job
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/239737) in GitLab 14.1.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/239737) in GitLab 14.1.
 
 You can use variables defined in `parallel: matrix` with the [`tags`](../yaml/index.md#tags)
 keyword for dynamic runner selection:
@@ -833,7 +841,7 @@ Quotes around the `dependencies` entry are required.
 
 ## Specify a parallelized job using needs with multiple parallelized jobs
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/254821) in GitLab 16.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/254821) in GitLab 16.3.
 
 You can use variables defined in [`needs:parallel:matrix`](../yaml/index.md#needsparallelmatrix) with multiple parallelized jobs.
 
@@ -1117,7 +1125,7 @@ regex-job2:
 
 ### Join variable expressions together with `&&` or `||`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/62867) in GitLab 12.0
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/62867) in GitLab 12.0
 
 You can join multiple expressions using `&&` (and) or `||` (or), for example:
 
diff --git a/doc/ci/lint.md b/doc/ci/lint.md
index 88ea4cd05d7257096da44f795f0e81eb43e919ff..70cb7fa8dcb2b6967705457687ee9e41c2eafdf7 100644
--- a/doc/ci/lint.md
+++ b/doc/ci/lint.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Validate GitLab CI/CD configuration **(FREE ALL)**
+# Validate GitLab CI/CD configuration 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Use the CI Lint tool to check the validity of GitLab CI/CD configuration.
 You can validate the syntax from a `.gitlab-ci.yml` file or any other sample CI/CD configuration.
@@ -32,7 +36,7 @@ To check CI/CD configuration with the CI lint tool:
 
 ## Simulate a pipeline
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/229794) in GitLab 13.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/229794) in GitLab 13.3.
 
 You can simulate the creation of a GitLab CI/CD pipeline to find more complicated issues,
 including problems with [`needs`](yaml/index.md#needs) and [`rules`](yaml/index.md#rules)
diff --git a/doc/ci/migration/bamboo.md b/doc/ci/migration/bamboo.md
index b2594e7571ee49b131f4e17c64da176d347fd4db..5a1b76dd06b7b075b43109479e1885b5f57f0351 100644
--- a/doc/ci/migration/bamboo.md
+++ b/doc/ci/migration/bamboo.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Migrating from Bamboo **(FREE ALL)**
+# Migrating from Bamboo 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 This migration guide looks at how you can migrate from Atlassian Bamboo to GitLab CI/CD.
 The focus is on [Bamboo Specs YAML](https://docs.atlassian.com/bamboo-specs-docs/8.1.12/specs.html?yaml)
diff --git a/doc/ci/migration/circleci.md b/doc/ci/migration/circleci.md
index f397a1cf73343e9db679c10b55661ff31efe759f..ec87d0d3e5acd5f39bc2ac36dfc1baa563683075 100644
--- a/doc/ci/migration/circleci.md
+++ b/doc/ci/migration/circleci.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Migrating from CircleCI **(FREE ALL)**
+# Migrating from CircleCI 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 If you are currently using CircleCI, you can migrate your CI/CD pipelines to [GitLab CI/CD](../index.md),
 and start making use of all its powerful features.
diff --git a/doc/ci/migration/github_actions.md b/doc/ci/migration/github_actions.md
index 6afb6cebbff2bdde1323a6e99759a4efe6ce9404..59c7c299f3bb688ede3631ff1d3c216490cd6cd5 100644
--- a/doc/ci/migration/github_actions.md
+++ b/doc/ci/migration/github_actions.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Migrating from GitHub Actions **(FREE ALL)**
+# Migrating from GitHub Actions 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 If you're migrating from GitHub Actions to GitLab CI/CD, you are able to create CI/CD
 pipelines that replicate and enhance your GitHub Action workflows.
diff --git a/doc/ci/migration/jenkins.md b/doc/ci/migration/jenkins.md
index 961799b9564f21ff6bca6f26d526ebd652a8a756..c052bf3c8ea56625acd985b7fd6eb73a93db88f6 100644
--- a/doc/ci/migration/jenkins.md
+++ b/doc/ci/migration/jenkins.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Migrating from Jenkins **(FREE ALL)**
+# Migrating from Jenkins 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 If you're migrating from Jenkins to GitLab CI/CD, you are able to create CI/CD
 pipelines that replicate and enhance your Jenkins workflows.
diff --git a/doc/ci/pipeline_editor/index.md b/doc/ci/pipeline_editor/index.md
index cc7b032a4876008b9a199c5afba5f1048fcc1378..a9c86043e55ea3ececb04fa30ef5ebee2470ff5f 100644
--- a/doc/ci/pipeline_editor/index.md
+++ b/doc/ci/pipeline_editor/index.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Pipeline editor **(FREE ALL)**
+# Pipeline editor 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/4540) in GitLab 13.8.
 > - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/270059) in GitLab 13.10.
@@ -60,7 +64,7 @@ reflected in the CI lint. It displays the same results as the existing [CI Lint
 
 ## Simulate a CI/CD pipeline
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/337282) in GitLab 15.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/337282) in GitLab 15.3.
 
 To look for pipeline syntax and logic issues, you can simulate the creation of a
 GitLab CI/CD pipeline in the **Validate** tab. A pipeline simulation can help find
diff --git a/doc/ci/pipelines/cicd_minutes.md b/doc/ci/pipelines/cicd_minutes.md
index a6c3bb835d02bf0747cb0ed9257ed60eb19a82f6..fba745aabbeb95e4d9d1f5b273dd968f301d16bc 100644
--- a/doc/ci/pipelines/cicd_minutes.md
+++ b/doc/ci/pipelines/cicd_minutes.md
@@ -5,7 +5,11 @@ description: Calculations, quotas, purchase information.
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Compute quota **(PREMIUM ALL)**
+# Compute quota 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > [Renamed](https://gitlab.com/groups/gitlab-com/-/epics/2150) from "CI/CD minutes" to "compute quota" or "compute minutes" in GitLab 16.1.
 
@@ -47,7 +51,7 @@ The triggered downstream pipeline consumes compute minutes the same as other pip
 
 ## Set the compute quota for all namespaces
 
-> [Moved](https://about.gitlab.com/blog/2021/01/26/new-gitlab-product-subscription-model/) to GitLab Premium in 13.9.
+> - [Moved](https://about.gitlab.com/blog/2021/01/26/new-gitlab-product-subscription-model/) to GitLab Premium in 13.9.
 
 By default, GitLab instances do not have a compute quota.
 The default value for the quota is `0`, which is unlimited.
@@ -69,7 +73,7 @@ If a quota is already defined for a specific namespace, this value does not chan
 
 ## Set the compute quota for a specific namespace
 
-> [Moved](https://about.gitlab.com/blog/2021/01/26/new-gitlab-product-subscription-model/) to GitLab Premium in 13.9.
+> - [Moved](https://about.gitlab.com/blog/2021/01/26/new-gitlab-product-subscription-model/) to GitLab Premium in 13.9.
 
 You can override the global value and set a compute quota
 for a specific namespace.
@@ -137,7 +141,11 @@ The projects list shows [personal projects](../../user/project/working_with_proj
 with compute usage or shared runners usage in the current month only. The list
 is sorted in descending order of compute usage.
 
-## Purchase additional compute minutes **(FREE SAAS)**
+## Purchase additional compute minutes 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS
 
 If you're using GitLab SaaS, you can purchase additional packs of compute minutes.
 These additional compute minutes:
@@ -160,7 +168,11 @@ Additional compute minutes bought on a trial subscription are available after th
 You can find pricing for additional compute minutes on the
 [GitLab Pricing page](https://about.gitlab.com/pricing/).
 
-### Purchase compute minutes for a group **(FREE SAAS)**
+### Purchase compute minutes for a group 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS
 
 Prerequisites:
 
@@ -179,7 +191,11 @@ so be sure to select the correct group.
 After your payment is processed, the additional compute minutes are added to your group
 namespace.
 
-### Purchase compute minutes for a personal namespace **(FREE SAAS)**
+### Purchase compute minutes for a personal namespace 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS
 
 Prerequisites:
 
@@ -357,7 +373,11 @@ consumption for contributor fork projects, enabling more contributions.
 
 See our [pipeline efficiency guide](pipeline_efficiency.md) for more details.
 
-## Reset compute usage **(PREMIUM SELF)**
+## Reset compute usage 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** Self-managed
 
 An administrator can reset the compute usage for a namespace for the current month.
 
diff --git a/doc/ci/pipelines/downstream_pipelines.md b/doc/ci/pipelines/downstream_pipelines.md
index 668337f4ea27398c7c1b9258b776e07fed1e3272..a9ef4437ba25b331913c9b67f2c1331bb15536b1 100644
--- a/doc/ci/pipelines/downstream_pipelines.md
+++ b/doc/ci/pipelines/downstream_pipelines.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Downstream pipelines **(FREE ALL)**
+# Downstream pipelines 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 A downstream pipeline is any GitLab CI/CD pipeline triggered by another pipeline.
 Downstream pipelines run independently and concurrently to the upstream pipeline
@@ -144,7 +148,7 @@ job3:
 
 ### Use a child pipeline configuration file in a different project
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/205157) in GitLab 13.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/205157) in GitLab 13.5.
 
 You can use [`include:project`](../yaml/index.md#includeproject) in a trigger job
 to trigger child pipelines with a configuration file in a different project:
@@ -381,7 +385,7 @@ trigger_job:
 
 ### View multi-project pipelines in pipeline graphs
 
-> [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/422282) from GitLab Premium to GitLab Free in 16.8.
+> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/422282) from GitLab Premium to GitLab Free in 16.8.
 
 After you trigger a multi-project pipeline, the downstream pipeline displays
 to the right of the [pipeline graph](index.md#visualize-pipelines).
@@ -389,7 +393,11 @@ to the right of the [pipeline graph](index.md#visualize-pipelines).
 In [pipeline mini graphs](index.md#pipeline-mini-graphs), the downstream pipeline
 displays to the right of the mini graph.
 
-## Fetch artifacts from an upstream pipeline **(PREMIUM ALL)**
+## Fetch artifacts from an upstream pipeline 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 ::Tabs
 
@@ -671,7 +679,11 @@ Upstream pipelines take precedence over downstream ones. If there are two
 variables with the same name defined in both upstream and downstream projects,
 the ones defined in the upstream project take precedence.
 
-### Pass dotenv variables created in a job **(PREMIUM ALL)**
+### Pass dotenv variables created in a job 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 You can pass variables to a downstream pipeline with [`dotenv` variable inheritance](../variables/index.md#pass-an-environment-variable-to-another-job).
 
@@ -719,7 +731,7 @@ are considered trigger variables, which have the [highest precedence](../variabl
 
 ## Downstream pipelines for deployments
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/369061) in GitLab 16.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/369061) in GitLab 16.4.
 
 You can use the [`environment`](../yaml/index.md#environment) keyword with [`trigger`](../yaml/index.md#trigger).
 You might want to use `environment` from a trigger job if your deployment and application projects are separately managed.
diff --git a/doc/ci/pipelines/index.md b/doc/ci/pipelines/index.md
index 0a4f4c3762b2ce09266bafd6ab4505b3d5568fff..93db3bcc2ecaf9101bd4ddb3fb54f72af27c3520 100644
--- a/doc/ci/pipelines/index.md
+++ b/doc/ci/pipelines/index.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# CI/CD pipelines **(FREE ALL)**
+# CI/CD pipelines 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 NOTE:
 Watch the
@@ -150,7 +154,7 @@ The pipeline now executes the jobs as configured.
 
 #### Prefill variables in manual pipelines
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/30101) in GitLab 13.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/30101) in GitLab 13.7.
 
 You can use the [`description` and `value`](../yaml/index.md#variablesdescription)
 keywords to [define pipeline-level (global) variables](../variables/index.md#define-a-cicd-variable-in-the-gitlab-ciyml-file)
@@ -219,7 +223,7 @@ variables:
 
 ### Run a pipeline by using a URL query string
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/24146) in GitLab 12.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/24146) in GitLab 12.5.
 
 You can use a query string to pre-populate the **Run Pipeline** page. For example, the query string
 `.../pipelines/new?ref=my_branch&var[foo]=bar&file_var[file_foo]=file_bar` pre-populates the
@@ -279,7 +283,7 @@ pipelines.
 
 ### Delete a pipeline
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/24851) in GitLab 12.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/24851) in GitLab 12.7.
 
 Users with the Owner role for a project can delete a pipeline
 by selecting the pipeline in the **Build > Pipelines** to get to the **Pipeline Details**
@@ -324,9 +328,13 @@ runners do not use regular runners, they must be [tagged](../yaml/index.md#tags)
 Review the [deployment safety](../environments/deployment_safety.md)
 page for additional security recommendations for securing your pipelines.
 
-## Trigger a pipeline when an upstream project is rebuilt **(PREMIUM ALL)**
+## Trigger a pipeline when an upstream project is rebuilt 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9045) in GitLab 12.8.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9045) in GitLab 12.8.
 
 You can trigger a pipeline in your project whenever a pipeline finishes for a new
 tag in a different project.
diff --git a/doc/ci/pipelines/merge_request_pipelines.md b/doc/ci/pipelines/merge_request_pipelines.md
index 25358ecd602ec7c7dd05b82cd47c9bd1dc534abc..3e1db6f568ddc0b7431788d9f076f1f5536b4a80 100644
--- a/doc/ci/pipelines/merge_request_pipelines.md
+++ b/doc/ci/pipelines/merge_request_pipelines.md
@@ -5,7 +5,11 @@ info: To determine the technical writer assigned to the Stage/Group associated w
 ---
 
 
-# Merge request pipelines **(FREE ALL)**
+# Merge request pipelines 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > [Renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/351192) from `pipelines for merge requests` to `merge request pipelines` in GitLab 14.8.
 
@@ -175,7 +179,7 @@ To use the UI to run a pipeline in the parent project for a merge request from a
 
 ### Prevent pipelines from fork projects
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/325189) in GitLab 15.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/325189) in GitLab 15.3.
 
 To prevent users from running new pipelines for fork projects in the parent project
 use [the projects API](../../api/projects.md#edit-project) to disable the `ci_allow_fork_pipelines_to_run_in_parent_project`
diff --git a/doc/ci/pipelines/merge_trains.md b/doc/ci/pipelines/merge_trains.md
index 45d9e548d6a9376491d499b3a8a6524d3850e3d6..0ce6a465bcf56ec1778027db0c7a2c9c5ca80ff9 100644
--- a/doc/ci/pipelines/merge_trains.md
+++ b/doc/ci/pipelines/merge_trains.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Merge trains **(PREMIUM ALL)**
+# Merge trains 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > Support for [fast-forward](../../user/project/merge_requests/methods/index.md#fast-forward-merge) and [semi-linear](../../user/project/merge_requests/methods/index.md#merge-commit-with-semi-linear-history) merge methods [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/282442) in GitLab 16.5 [with a flag](../../administration/feature_flags.md) named `fast_forward_merge_trains_support`. Enabled by default.
 
diff --git a/doc/ci/pipelines/merged_results_pipelines.md b/doc/ci/pipelines/merged_results_pipelines.md
index 691de7c3f3c8c5d288b8bbb6c17c91b30e3f561d..7935743ebd9a1f32bc33a79b1e2957aaf5eeecb3 100644
--- a/doc/ci/pipelines/merged_results_pipelines.md
+++ b/doc/ci/pipelines/merged_results_pipelines.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Merged results pipelines **(PREMIUM ALL)**
+# Merged results pipelines 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/351192) from `pipelines for merged results` to `merged results pipelines` in GitLab 14.8.
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91849) in GitLab 15.1, merged results pipelines also run on [Draft merge requests](../../user/project/merge_requests/drafts.md).
diff --git a/doc/ci/pipelines/pipeline_architectures.md b/doc/ci/pipelines/pipeline_architectures.md
index 9ca2bf26e59d792775f2e1c47348a941bef84be4..bfaa5f0bb3368f73e3b02315597afad3bf10db09 100644
--- a/doc/ci/pipelines/pipeline_architectures.md
+++ b/doc/ci/pipelines/pipeline_architectures.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Pipeline architecture **(FREE ALL)**
+# Pipeline architecture 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Pipelines are the fundamental building blocks for CI/CD in GitLab. This page documents
 some of the important concepts related to them.
diff --git a/doc/ci/pipelines/pipeline_efficiency.md b/doc/ci/pipelines/pipeline_efficiency.md
index 07fc7c2dfd649f9b551faeb7e2f2572c58a397c9..3f95dfcf0eeadfa2db90d274a773a38b62d8cd7c 100644
--- a/doc/ci/pipelines/pipeline_efficiency.md
+++ b/doc/ci/pipelines/pipeline_efficiency.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Pipeline efficiency **(FREE ALL)**
+# Pipeline efficiency 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 [CI/CD Pipelines](index.md) are the fundamental building blocks for [GitLab CI/CD](../index.md).
 Making pipelines more efficient helps you save developer time, which:
diff --git a/doc/ci/pipelines/schedules.md b/doc/ci/pipelines/schedules.md
index 9ea635792f3ec6b139f7c9dcd7ea0693f96e830d..0b2eac9874dedf1a5763fb1454b47613f3569a3a 100644
--- a/doc/ci/pipelines/schedules.md
+++ b/doc/ci/pipelines/schedules.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Scheduled pipelines **(FREE ALL)**
+# Scheduled pipelines 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Use scheduled pipelines to run GitLab CI/CD [pipelines](index.md) at regular intervals.
 
@@ -42,7 +46,7 @@ you must delete unused schedules before you can add another.
 
 ## Edit a pipeline schedule
 
-> Introduced in GitLab 14.8, only a pipeline schedule owner can edit the schedule.
+> - Introduced in GitLab 14.8, only a pipeline schedule owner can edit the schedule.
 
 The owner of a pipeline schedule can edit it:
 
diff --git a/doc/ci/pipelines/settings.md b/doc/ci/pipelines/settings.md
index 09bfe3ac195f0108c0969e727fd3b2a6c08c2ffa..cd791ffdbc0be7f7aa11da21295d2c2578d95811 100644
--- a/doc/ci/pipelines/settings.md
+++ b/doc/ci/pipelines/settings.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Customize pipeline configuration **(FREE ALL)**
+# Customize pipeline configuration 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 You can customize how pipelines run for your project.
 
@@ -102,9 +106,13 @@ To avoid this scenario:
 
 For more information, see [Deployment safety](../environments/deployment_safety.md#prevent-outdated-deployment-jobs).
 
-## Restrict roles that can cancel pipelines or jobs **(PREMIUM ALL)**
+## Restrict roles that can cancel pipelines or jobs 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/137301) in GitLab 16.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/137301) in GitLab 16.7.
 
 You can customize which roles have permission to cancel pipelines or jobs.
 
diff --git a/doc/ci/quick_start/index.md b/doc/ci/quick_start/index.md
index 0dc07a36ef5230e0580229135d83d8335da4b302..404f6294d724ee21461221dc5774b0aebaa48134 100644
--- a/doc/ci/quick_start/index.md
+++ b/doc/ci/quick_start/index.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Tutorial: Create and run your first GitLab CI/CD pipeline **(FREE ALL)**
+# Tutorial: Create and run your first GitLab CI/CD pipeline 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 This tutorial shows you how to configure and run your first CI/CD pipeline in GitLab.
 
diff --git a/doc/ci/resource_groups/index.md b/doc/ci/resource_groups/index.md
index b7b9c216b1419b98ad65373188a09479c153bf6f..719bb7a6eeb61e04e47c4265187e099796bdb232 100644
--- a/doc/ci/resource_groups/index.md
+++ b/doc/ci/resource_groups/index.md
@@ -5,9 +5,13 @@ info: To determine the technical writer assigned to the Stage/Group associated w
 description: Control the job concurrency in GitLab CI/CD
 ---
 
-# Resource group **(FREE ALL)**
+# Resource group 
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/15536) in GitLab 12.7.
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/15536) in GitLab 12.7.
 
 By default, pipelines in GitLab CI/CD run concurrently. Concurrency is an important factor to improve
 the feedback loop in merge requests, however, there are some situations that
@@ -141,7 +145,7 @@ Depending on the process mode of the resource group:
 
 ## Pipeline-level concurrency control with cross-project/parent-child pipelines
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/39057) in GitLab 13.9.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/39057) in GitLab 13.9.
 
 You can define `resource_group` for downstream pipelines that are sensitive to concurrent
 executions. The [`trigger` keyword](../yaml/index.md#trigger) can trigger downstream pipelines and the
diff --git a/doc/ci/review_apps/index.md b/doc/ci/review_apps/index.md
index eafb31241b087d892d1daba6b4fce79613cffef5..2f3267f69172424c92a8b329ced4b6a2f95e8134 100644
--- a/doc/ci/review_apps/index.md
+++ b/doc/ci/review_apps/index.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Review apps **(FREE ALL)**
+# Review apps 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Review apps are a collaboration tool that provide an environment to showcase product changes.
 
@@ -63,7 +67,7 @@ The process of configuring review apps is as follows:
 
 ### Enable review apps button
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/118844) in GitLab 12.8.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/118844) in GitLab 12.8.
 
 When configuring review apps for a project, you add a new job to the `.gitlab-ci.yml` file,
 as mentioned above. To facilitate this, and if you are using Kubernetes, you can select
@@ -191,7 +195,11 @@ After you have the route mapping set up, it takes effect in the following locati
 - In the blob file view, by selecting **View** (**{external-link}**) next to the file.
 
 <!--- start_remove The following content will be removed on remove_date: '2024-05-22' -->
-## Visual Reviews (deprecated) **(PREMIUM ALL)**
+## Visual Reviews (deprecated) 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/10761) in GitLab 12.0.
 > - [Moved](https://about.gitlab.com/blog/2021/01/26/new-gitlab-product-subscription-model/) to GitLab Premium in 13.9.
@@ -299,7 +307,7 @@ merge request ID before you can provide feedback.
 
 ### Authentication for Visual Reviews
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/42750#note_317271120) in GitLab 12.10.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/42750#note_317271120) in GitLab 12.10.
 
 To enable visual reviews for private and internal projects, set the
 [`data-require-auth` variable](#configure-review-apps-for-visual-reviews) to `true`. When enabled,
diff --git a/doc/ci/runners/configure_runners.md b/doc/ci/runners/configure_runners.md
index 6212c07ce474c6551f1806eb38ffa44212b7f338..ef5afede227c2701f1f09115b1cba2037a9547ec 100644
--- a/doc/ci/runners/configure_runners.md
+++ b/doc/ci/runners/configure_runners.md
@@ -4,7 +4,11 @@ group: Runner
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Configuring runners **(FREE ALL)**
+# Configuring runners 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 If you have installed your own runners, you can configure and secure them in GitLab.
 
@@ -87,7 +91,7 @@ To set the maximum job timeout:
 
 ## Set `script` and `after_script` timeouts
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/4335) in GitLab Runner 16.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/4335) in GitLab Runner 16.4.
 
 To control the amount of time `script` and `after_script` runs before it terminates, you can set specify a timeout.
 
@@ -417,7 +421,7 @@ osx job:
 
 ### Use CI/CD variables in tags
 
-> Introduced in [GitLab 14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/35742).
+> - Introduced in [GitLab 14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/35742).
 
 In the `.gitlab-ci.yml` file, use [CI/CD variables](../variables/index.md) with `tags` for dynamic runner selection:
 
@@ -622,7 +626,7 @@ Where `$REFSPECS` is a value provided to the runner internally by GitLab.
 
 ### Sync or exclude specific submodules from CI jobs
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/2249) in GitLab Runner 14.0.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/2249) in GitLab Runner 14.0.
 
 Use the `GIT_SUBMODULE_PATHS` variable to control which submodules have to be synced or updated.
 You can set it globally or per-job in the [`variables`](../yaml/index.md#variables) section.
@@ -690,7 +694,7 @@ submodule commits as designed, and update them using an auto-remediation/depende
 
 ### Rewrite submodule URLs to HTTPS
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3198) in GitLab Runner 15.11.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3198) in GitLab Runner 15.11.
 
 Use the `GIT_SUBMODULE_FORCE_HTTPS` variable to force a rewrite of all Git and SSH submodule URLs to HTTPS.
 This allows you to clone submodules on the same GitLab instance that use absolute URLs, even if they were
@@ -739,7 +743,7 @@ You can set it globally or per-job in the [`variables`](../yaml/index.md#variabl
 
 ### Git submodule depth
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3651) in GitLab Runner 15.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3651) in GitLab Runner 15.5.
 
 Use the `GIT_SUBMODULE_DEPTH` variable to specify the depth of fetching and cloning submodules
 when [`GIT_SUBMODULE_STRATEGY`](#git-submodule-strategy) is set to either `normal` or `recursive`.
@@ -905,7 +909,7 @@ variables:
 
 ## Artifact provenance metadata
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/28940) in GitLab Runner 15.1.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/28940) in GitLab Runner 15.1.
 
 NOTE:
 Zip archives are the only supported artifact type. Follow [the issue for details](https://gitlab.com/gitlab-org/gitlab/-/issues/367203).
@@ -1016,7 +1020,7 @@ An example of provenance metadata that the GitLab Runner might generate is as fo
 
 ### Staging directory
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3403) in GitLab Runner 15.0.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3403) in GitLab Runner 15.0.
 
 If you do not want to archive cache and artifacts in the system's default temporary directory, you can specify a different directory.
 
@@ -1030,7 +1034,7 @@ used, this location is also used as scratch space when archiving.
 
 ### Configure `fastzip` to improve performance
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3130) in GitLab Runner 15.0.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3130) in GitLab Runner 15.0.
 
 To tune `fastzip`, ensure the [`FF_USE_FASTZIP`](https://docs.gitlab.com/runner/configuration/feature-flags.html#available-feature-flags) flag is enabled.
 Then use any of the following environment variables.
diff --git a/doc/ci/runners/index.md b/doc/ci/runners/index.md
index 7fb7db3d829ccd071674ebadadfe6d67ef2c7f58..18102e6d7a29bb6cd8aae18bb1975234bde0e638 100644
--- a/doc/ci/runners/index.md
+++ b/doc/ci/runners/index.md
@@ -4,7 +4,11 @@ group: Runner SaaS
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Runner SaaS **(FREE SAAS)**
+# Runner SaaS 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS
 
 You can run your CI/CD jobs on GitLab.com using SaaS runners hosted by GitLab to seamlessly build, test and deploy
 your application on different environments.
diff --git a/doc/ci/runners/new_creation_workflow.md b/doc/ci/runners/new_creation_workflow.md
index 12bffb79e332135d83854d20a34c4ea2b4a0fbf8..cf753d8ca6280176a5e10611e65ae3a5e1197325 100644
--- a/doc/ci/runners/new_creation_workflow.md
+++ b/doc/ci/runners/new_creation_workflow.md
@@ -4,7 +4,11 @@ group: Runner
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Migrating to the new runner registration workflow **(FREE ALL)**
+# Migrating to the new runner registration workflow 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 DISCLAIMER:
 This page contains information related to upcoming products, features, and functionality.
diff --git a/doc/ci/runners/runner_fleet_dashboard.md b/doc/ci/runners/runner_fleet_dashboard.md
index f329561cf4be28eba70d9c65208d467e961c0b15..bf6938759f82435534c6f87b5d15ec4ab15261e5 100644
--- a/doc/ci/runners/runner_fleet_dashboard.md
+++ b/doc/ci/runners/runner_fleet_dashboard.md
@@ -8,7 +8,7 @@ info: >-
 ---
 # Runner Fleet Dashboard **(ULTIMATE)**
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/424495) in GitLab 16.6
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/424495) in GitLab 16.6
 
 GitLab administrators can use the Runner Fleet Dashboard to assess the health of your instance runners.
 The Runner Fleet Dashboard shows:
diff --git a/doc/ci/runners/runners_scope.md b/doc/ci/runners/runners_scope.md
index 230c5510111f16340013380e3d5a5f9435c17377..559c32b6d455b9ec275001091cadda6df4378ca8 100644
--- a/doc/ci/runners/runners_scope.md
+++ b/doc/ci/runners/runners_scope.md
@@ -4,7 +4,11 @@ group: Runner
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Manage runners **(FREE ALL)**
+# Manage runners 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 GitLab Runner has the following types of runners, which are available based on who you want to have access:
 
@@ -265,7 +269,7 @@ The runner authentication token displays in the UI for only a short period of ti
 
 ### Create a group runner with a registration token (deprecated)
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/19819) in GitLab 14.10, path changed from **Settings > CI/CD > Runners**.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/19819) in GitLab 14.10, path changed from **Settings > CI/CD > Runners**.
 
 WARNING:
 The ability to pass a runner registration token, and support for certain configuration arguments was
@@ -358,7 +362,7 @@ To delete a single or multiple group runners:
 
 ### Clean up stale group runners **(ULTIMATE ALL)**
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/363012) in GitLab 15.1.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/363012) in GitLab 15.1.
 
 Prerequisites:
 
@@ -572,7 +576,7 @@ A runner can have one of the following statuses.
 
 ## View statistics for runner performance **(ULTIMATE ALL)**
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/377963) in GitLab 15.8.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/377963) in GitLab 15.8.
 
 As an administrator, you can view runner statistics to learn about the performance of your runner fleet.
 
@@ -592,7 +596,7 @@ To view runner statistics:
 
 ## Determine which runners need to be upgraded **(ULTIMATE ALL)**
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/365078) in GitLab 15.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/365078) in GitLab 15.3.
 
 The version of GitLab Runner used by your runners should be
 [kept up-to-date](https://docs.gitlab.com/runner/index.html#gitlab-runner-versions).
diff --git a/doc/ci/runners/saas/gpu_saas_runner.md b/doc/ci/runners/saas/gpu_saas_runner.md
index e9313c65f119e9815f7e29f512be009f693d02bc..85e03be4990e365865b7a0e8b386d7e20cc8e86b 100644
--- a/doc/ci/runners/saas/gpu_saas_runner.md
+++ b/doc/ci/runners/saas/gpu_saas_runner.md
@@ -4,7 +4,11 @@ group: Runner
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# GPU-enabled SaaS runners **(PREMIUM SAAS)**
+# GPU-enabled SaaS runners 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS
 
 GitLab provides GPU-enabled SaaS runners to accelerate heavy compute workloads for ModelOps
 or HPC such as the training or deployment of Large Language Models (LLMs) as part of ModelOps workloads.
diff --git a/doc/ci/runners/saas/linux_saas_runner.md b/doc/ci/runners/saas/linux_saas_runner.md
index 2534db79795382578247da79d89cab8192a7400a..210aaef01e682fc9575b7d2cf34796e1f61f2099 100644
--- a/doc/ci/runners/saas/linux_saas_runner.md
+++ b/doc/ci/runners/saas/linux_saas_runner.md
@@ -4,7 +4,11 @@ group: Runner
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# SaaS runners on Linux **(FREE SAAS)**
+# SaaS runners on Linux 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS
 
 When you run jobs on SaaS runners on Linux, the runners are on auto-scaled ephemeral virtual machine (VM) instances.
 The default region for the VMs is `us-east1`.
@@ -21,9 +25,9 @@ For Free, Premium, and Ultimate plan customers, jobs on these instances consume
 |-----------------------------------------------|-------|--------|---------|
 | `saas-linux-small-amd64`                      | 2     | 8 GB   | 25 GB   |
 | `saas-linux-medium-amd64`                     | 4     | 16 GB  | 50 GB   |
-| `saas-linux-large-amd64` **(PREMIUM SAAS)**   | 8     | 32 GB  | 100 GB  |
-| `saas-linux-xlarge-amd64` **(PREMIUM SAAS)**  | 16    | 64 GB  | 200 GB  |
-| `saas-linux-2xlarge-amd64` **(PREMIUM SAAS)** | 32    | 128 GB | 200 GB  |
+| `saas-linux-large-amd64` (Premium and Ultimate only)  | 8     | 32 GB  | 100 GB  |
+| `saas-linux-xlarge-amd64` (Premium and Ultimate only) | 16    | 64 GB  | 200 GB  |
+| `saas-linux-2xlarge-amd64` (Premium and Ultimate only) | 32    | 128 GB | 200 GB  |
 
 The `small` machine type is set as default. If no [tag](../../yaml/index.md#tags) keyword in your `.gitlab-ci.yml` file is specified,
 the jobs will run on this default runner.
diff --git a/doc/ci/secrets/azure_key_vault.md b/doc/ci/secrets/azure_key_vault.md
index 7dd27a4cd09f9728a60c29d5c0ba88d1ceeeda78..0f891d6750e92d490546d7daee35fcc952c26ec3 100644
--- a/doc/ci/secrets/azure_key_vault.md
+++ b/doc/ci/secrets/azure_key_vault.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Use Azure Key Vault secrets in GitLab CI/CD **(PREMIUM ALL)**
+# Use Azure Key Vault secrets in GitLab CI/CD 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/271271) in GitLab and GitLab Runner 16.3. Due to [issue 424746](https://gitlab.com/gitlab-org/gitlab/-/issues/424746) this feature did not work as expected.
 > - [Issue 424746](https://gitlab.com/gitlab-org/gitlab/-/issues/424746) resolved and this feature made generally available in GitLab Runner 16.6.
diff --git a/doc/ci/secrets/convert-to-id-tokens.md b/doc/ci/secrets/convert-to-id-tokens.md
index 80d1a1febd2467cbe4fba1b8875e002d37c45caa..3e0a790d1b12b7bca9793050330ed55c01da452a 100644
--- a/doc/ci/secrets/convert-to-id-tokens.md
+++ b/doc/ci/secrets/convert-to-id-tokens.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Tutorial: Update HashiCorp Vault configuration to use ID Tokens **(PREMIUM ALL)**
+# Tutorial: Update HashiCorp Vault configuration to use ID Tokens 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 This tutorial demonstrates how to convert your existing CI/CD secrets configuration to use [ID Tokens](../secrets/id_token_authentication.md).
 
diff --git a/doc/ci/secrets/gcp_secret_manager.md b/doc/ci/secrets/gcp_secret_manager.md
index cad93033d9a601c8a5ec2cc1e48c06b7aa6ea63c..c6e5c0304416ceaa08efcf25e9a8d0aebdf59f65 100644
--- a/doc/ci/secrets/gcp_secret_manager.md
+++ b/doc/ci/secrets/gcp_secret_manager.md
@@ -4,9 +4,13 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Use GCP Secret Manager secrets in GitLab CI/CD **(PREMIUM ALL)**
+# Use GCP Secret Manager secrets in GitLab CI/CD 
 
-> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/11739) in GitLab and GitLab Runner 16.8.
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
+
+> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/11739) in GitLab and GitLab Runner 16.8.
 
 You can use secrets stored in the [Google Cloud (GCP) Secret Manager](https://cloud.google.com/security/products/secret-manager)
 in your GitLab CI/CD pipelines.
diff --git a/doc/ci/secrets/id_token_authentication.md b/doc/ci/secrets/id_token_authentication.md
index 1b3a6b837a54a2e86ba0434a2ad14aae6d80f932..394ea8e5456587aecad98d3941251bb336788c3b 100644
--- a/doc/ci/secrets/id_token_authentication.md
+++ b/doc/ci/secrets/id_token_authentication.md
@@ -4,9 +4,13 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# OpenID Connect (OIDC) Authentication Using ID Tokens **(FREE ALL)**
+# OpenID Connect (OIDC) Authentication Using ID Tokens 
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/356986) in GitLab 15.7.
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/356986) in GitLab 15.7.
 
 You can authenticate with third party services using GitLab CI/CD's
 [ID tokens](../yaml/index.md#id_tokens).
@@ -139,7 +143,11 @@ manual_authentication:
     - my-authentication-script.sh $VAULT_TOKEN $PASSWORD
 ```
 
-## Automatic ID Token authentication with HashiCorp Vault **(PREMIUM ALL)**
+## Automatic ID Token authentication with HashiCorp Vault 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 You can use ID tokens to automatically fetch secrets from HashiCorp Vault with the
 [`secrets`](../yaml/index.md#secrets) keyword.
diff --git a/doc/ci/secrets/index.md b/doc/ci/secrets/index.md
index 96a35703f1f4d61097e6d41c2c262c8a3718a073..9719efe36ffbfea16f71d35df5adc42f0d09278b 100644
--- a/doc/ci/secrets/index.md
+++ b/doc/ci/secrets/index.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Using external secrets in CI **(FREE ALL)**
+# Using external secrets in CI 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/218746) in GitLab 13.4 and GitLab Runner 13.4.
 > - `file` setting [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/250695) in GitLab 14.1 and GitLab Runner 14.1.
@@ -102,9 +106,13 @@ To configure your Vault server:
    NOTE:
    Support for providing these values in the user interface [is tracked in this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/218677).
 
-## Use Vault secrets in a CI job **(PREMIUM ALL)**
+## Use Vault secrets in a CI job 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/28321) in GitLab 13.4 and GitLab Runner 13.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/28321) in GitLab 13.4 and GitLab Runner 13.4.
 
 After [configuring your Vault server](#configure-your-vault-server), you can use
 the secrets stored in Vault by defining them with the `vault` keyword:
diff --git a/doc/ci/secure_files/index.md b/doc/ci/secure_files/index.md
index ee074c2a99c08adb522f5895f71a03d0a8c589fb..b307ff18617faaf3ed3e30dd24a00280dc9ab8d3 100644
--- a/doc/ci/secure_files/index.md
+++ b/doc/ci/secure_files/index.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Project-level Secure Files **(FREE ALL)**
+# Project-level Secure Files 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/78227) in GitLab 14.8 [with a flag](../../administration/feature_flags.md) named `ci_secure_files`. Disabled by default.
 > - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/350748) in GitLab 15.7. Feature flag `ci_secure_files` removed.
diff --git a/doc/ci/services/gitlab.md b/doc/ci/services/gitlab.md
index 94fba9cff98309b6efef766d8f751383636b17c3..176bcabb628c198a065f923d07a82d628f4f8e57 100644
--- a/doc/ci/services/gitlab.md
+++ b/doc/ci/services/gitlab.md
@@ -4,7 +4,11 @@ group: Runner
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Use GitLab as a microservice **(FREE ALL)**
+# Use GitLab as a microservice 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Many applications need to access JSON APIs, so application tests might need access
 to APIs too. The following example shows how to use GitLab as a microservice to give
diff --git a/doc/ci/services/index.md b/doc/ci/services/index.md
index 9a624f8833908258a46f84bb8f106f41e1502689..21b37ad34929c06ed648ac897ba455c0b89cf699 100644
--- a/doc/ci/services/index.md
+++ b/doc/ci/services/index.md
@@ -4,7 +4,11 @@ group: Runner
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Services **(FREE ALL)**
+# Services 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 When you configure CI/CD, you specify an image, which is used to create the container
 where your jobs run. To specify this image, you use the `image` keyword.
@@ -256,7 +260,7 @@ test:
 
 ## Available settings for `services`
 
-> Introduced in GitLab and GitLab Runner 9.4.
+> - Introduced in GitLab and GitLab Runner 9.4.
 
 | Setting    | Required | GitLab version | Description |
 |------------|----------|----------------| ----------- |
@@ -272,7 +276,7 @@ test:
 
 ## Starting multiple services from the same image
 
-> Introduced in GitLab and GitLab Runner 9.4. Read more about the [extended configuration options](../docker/using_docker_images.md#extended-docker-configuration-options).
+> - Introduced in GitLab and GitLab Runner 9.4. Read more about the [extended configuration options](../docker/using_docker_images.md#extended-docker-configuration-options).
 
 Before the new extended Docker configuration options, the following configuration
 would not work properly:
@@ -305,7 +309,7 @@ in `.gitlab-ci.yml` file.
 
 ## Setting a command for the service
 
-> Introduced in GitLab and GitLab Runner 9.4. Read more about the [extended configuration options](../docker/using_docker_images.md#extended-docker-configuration-options).
+> - Introduced in GitLab and GitLab Runner 9.4. Read more about the [extended configuration options](../docker/using_docker_images.md#extended-docker-configuration-options).
 
 Let's assume you have a `super/sql:latest` image with some SQL database
 in it. You would like to use it as a service for your job. Let's also
@@ -393,7 +397,7 @@ time.
 
 ## Capturing service container logs
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3680) in GitLab Runner 15.6.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3680) in GitLab Runner 15.6.
 
 Logs generated by applications running in service containers can be captured for subsequent examination and debugging.
 You might want to look at service container's logs when the service container has started successfully, but is not
diff --git a/doc/ci/services/mysql.md b/doc/ci/services/mysql.md
index a5a87c2a199813d4cdfb5aba0f7f602f50ade059..d9d30de9e832c39f9d39700255d5f0a881d0b1d5 100644
--- a/doc/ci/services/mysql.md
+++ b/doc/ci/services/mysql.md
@@ -4,7 +4,11 @@ group: Runner
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Using MySQL **(FREE ALL)**
+# Using MySQL 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Many applications depend on MySQL as their database, and you may
 need it for your tests to run.
diff --git a/doc/ci/services/postgres.md b/doc/ci/services/postgres.md
index ea1def6377e46aba483f0398133a957410de7cab..08fcc3bf4ff16f84841a820241e31e93694b6ce0 100644
--- a/doc/ci/services/postgres.md
+++ b/doc/ci/services/postgres.md
@@ -4,7 +4,11 @@ group: Runner
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Using PostgreSQL **(FREE ALL)**
+# Using PostgreSQL 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 As many applications depend on PostgreSQL as their database, you
 eventually need it in order for your tests to run. Below you are guided how to
diff --git a/doc/ci/services/redis.md b/doc/ci/services/redis.md
index 94c0603f31f6a1343ca3ccea93e6fbf553c4c0de..87ea98fe19a304a11c4b96d9eeed48c7183f198f 100644
--- a/doc/ci/services/redis.md
+++ b/doc/ci/services/redis.md
@@ -4,7 +4,11 @@ group: Runner
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Using Redis **(FREE ALL)**
+# Using Redis 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 As many applications depend on Redis as their key-value store, you
 eventually need it in order for your tests to run. Below you are guided how to
diff --git a/doc/ci/ssh_keys/index.md b/doc/ci/ssh_keys/index.md
index b848f436e34efe275e03612e4c3305c5ccdbc08f..01a84ad1eeaace8f3f8ef000d1437d5427a2ba69 100644
--- a/doc/ci/ssh_keys/index.md
+++ b/doc/ci/ssh_keys/index.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Using SSH keys with GitLab CI/CD **(FREE ALL)**
+# Using SSH keys with GitLab CI/CD 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 GitLab currently doesn't have built-in support for managing SSH keys in a build
 environment (where the GitLab Runner runs).
diff --git a/doc/ci/test_cases/index.md b/doc/ci/test_cases/index.md
index 56c4c475294ae0ffc2bd0ba97ed1f1137b34cceb..21f99977ffa51c9913c948544f36dc17d6bb57f9 100644
--- a/doc/ci/test_cases/index.md
+++ b/doc/ci/test_cases/index.md
@@ -70,7 +70,7 @@ To edit a test case:
 
 ## Make a test case confidential
 
-> Introduced for [new](https://gitlab.com/gitlab-org/gitlab/-/issues/422121) and [existing](https://gitlab.com/gitlab-org/gitlab/-/issues/422120) test cases in GitLab 16.5.
+> - Introduced for [new](https://gitlab.com/gitlab-org/gitlab/-/issues/422121) and [existing](https://gitlab.com/gitlab-org/gitlab/-/issues/422120) test cases in GitLab 16.5.
 
 If you're working on a test case that contains private information, you can make it confidential.
 
diff --git a/doc/ci/testing/accessibility_testing.md b/doc/ci/testing/accessibility_testing.md
index f8faaeec8f8a5545986e40cc327e2c6a13ab382b..a740e4545927bcaa7b81ea69eb27d28969aab06f 100644
--- a/doc/ci/testing/accessibility_testing.md
+++ b/doc/ci/testing/accessibility_testing.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Accessibility testing **(FREE ALL)**
+# Accessibility testing 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 If your application offers a web interface, you can use
 [GitLab CI/CD](../index.md) to determine the accessibility
diff --git a/doc/ci/testing/browser_performance_testing.md b/doc/ci/testing/browser_performance_testing.md
index 2988cfedce526c9919692256173b9add18476086..7bab347e0fd1970571062de02451622223d9d48f 100644
--- a/doc/ci/testing/browser_performance_testing.md
+++ b/doc/ci/testing/browser_performance_testing.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Browser Performance Testing **(PREMIUM ALL)**
+# Browser Performance Testing 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 If your application offers a web interface and you're using
 [GitLab CI/CD](../index.md), you can quickly determine the rendering performance
diff --git a/doc/ci/testing/code_coverage.md b/doc/ci/testing/code_coverage.md
index 43df79c44f57b167ae455c2ec0e66c6ff3561ffd..4e87512e543a2488fd8b45c279ce316182daa30d 100644
--- a/doc/ci/testing/code_coverage.md
+++ b/doc/ci/testing/code_coverage.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Code coverage **(FREE ALL)**
+# Code coverage 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Use code coverage to provide insights on what source code is being validated by a test suite. Code coverage is one of many test metrics that can determine software performance and quality.
 
@@ -84,7 +88,11 @@ To view a CSV file of the data, select **Download raw data (`.csv`)**.
 
 ![Code coverage graph of a project over time](img/code_coverage_graph_v13_1.png)
 
-### View history of group code coverage **(PREMIUM ALL)**
+### View history of group code coverage 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 To see the all the project's code coverage under a group over time, you can find view [group repository analytics](../../user/group/repositories_analytics/index.md).
 
@@ -95,7 +103,11 @@ To see the all the project's code coverage under a group over time, you can find
 You can use [pipeline badges](../../user/project/badges.md#test-coverage-report-badges) to indicate the pipeline status and
 test coverage of your projects. These badges are determined by the latest successful pipeline.
 
-## Coverage check approval rule **(PREMIUM ALL)**
+## Coverage check approval rule 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/15765) in GitLab 14.0.
 > - [Made configurable in Project Settings](https://gitlab.com/gitlab-org/gitlab/-/issues/331001) in GitLab 14.1.
diff --git a/doc/ci/testing/code_quality.md b/doc/ci/testing/code_quality.md
index 9e6c409a0d3fa43e1088d4e1d21e4eef10ee870b..866cc8f8f067069798c8d8ddc9458e39e98036e5 100644
--- a/doc/ci/testing/code_quality.md
+++ b/doc/ci/testing/code_quality.md
@@ -4,9 +4,13 @@ group: Static Analysis
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Code Quality **(FREE ALL)**
+# Code Quality 
 
-> [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212499) to GitLab Free in 13.2.
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
+
+> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212499) to GitLab Free in 13.2.
 
 Use Code Quality to analyze your source code's quality and complexity. This helps keep your
 project's code simple, readable, and easier to maintain. Code Quality should supplement your
@@ -48,7 +52,7 @@ Code Quality results are shown in the:
 
 ### Merge request widget
 
-> [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212499) to GitLab Free in 13.2.
+> - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212499) to GitLab Free in 13.2.
 
 Code Quality analysis results display in the merge request widget area if a report from the target
 branch is available for comparison. The merge request widget displays Code Quality findings and resolutions that
@@ -70,7 +74,11 @@ issues are marked by a symbol beside the gutter. Select the symbol to see the li
 
 ![Code Quality Inline Indicator](img/code_quality_inline_indicator_v16_7.png)
 
-### Pipeline details view **(PREMIUM ALL)**
+### Pipeline details view 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 The full list of Code Quality violations generated by a pipeline is shown in the **Code Quality**
 tab of the pipeline's details page. The pipeline details view displays all Code Quality findings
@@ -319,7 +327,7 @@ code_quality:
 
 ## Use a private container image registry
 
-> [Introduced](https://gitlab.com/gitlab-org/ci-cd/codequality/-/merge_requests/30) in GitLab 13.7.
+> - [Introduced](https://gitlab.com/gitlab-org/ci-cd/codequality/-/merge_requests/30) in GitLab 13.7.
 
 Using a private container image registry can reduce the time taken to download images, and also
 reduce external dependencies. You must configure the registry prefix to be passed down
diff --git a/doc/ci/testing/fail_fast_testing.md b/doc/ci/testing/fail_fast_testing.md
index 22ce9bb52d8d6f922a792b9d76161d229064a961..e69cff130f9cd1b80b7e07cf572ff67d1afddc3f 100644
--- a/doc/ci/testing/fail_fast_testing.md
+++ b/doc/ci/testing/fail_fast_testing.md
@@ -4,9 +4,13 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Fail Fast Testing **(PREMIUM ALL)**
+# Fail Fast Testing 
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/198550) in GitLab 13.1.
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/198550) in GitLab 13.1.
 
 For applications that use RSpec for running tests, we've introduced the `Verify/Failfast`
 [template to run subsets of your test suite](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates/Verify/FailFast.gitlab-ci.yml),
diff --git a/doc/ci/testing/index.md b/doc/ci/testing/index.md
index 2909bac4d0b95f4dca09bcb287a3e0198cc2f232..ab5b80f9e3edc341229a383ede4f21d37a16a55c 100644
--- a/doc/ci/testing/index.md
+++ b/doc/ci/testing/index.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Test with GitLab CI/CD and generate reports in merge requests **(FREE ALL)**
+# Test with GitLab CI/CD and generate reports in merge requests 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Use GitLab CI/CD to test the changes included in a feature branch. You can also
 display reports or link to important information directly from [merge requests](../../user/project/merge_requests/index.md).
diff --git a/doc/ci/testing/load_performance_testing.md b/doc/ci/testing/load_performance_testing.md
index a79136c008305c83e898a14776ff8ab5b42d336c..69076ca57a418bae4d325c868e1f8bd999a47b20 100644
--- a/doc/ci/testing/load_performance_testing.md
+++ b/doc/ci/testing/load_performance_testing.md
@@ -4,9 +4,13 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Load Performance Testing **(PREMIUM ALL)**
+# Load Performance Testing 
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/10683) in GitLab 13.2.
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/10683) in GitLab 13.2.
 
 With Load Performance Testing, you can test the impact of any pending code changes
 to your application's backend in [GitLab CI/CD](../index.md).
diff --git a/doc/ci/testing/metrics_reports.md b/doc/ci/testing/metrics_reports.md
index faa7add64b3fde4e9ecadd54564a6edce8f60a70..1ec3d3fe5408354167832129b2c7e672a066169f 100644
--- a/doc/ci/testing/metrics_reports.md
+++ b/doc/ci/testing/metrics_reports.md
@@ -4,9 +4,13 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Metrics Reports **(PREMIUM ALL)**
+# Metrics Reports 
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9788) in GitLab 11.10. Requires GitLab Runner 11.10 and above.
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9788) in GitLab 11.10. Requires GitLab Runner 11.10 and above.
 
 GitLab provides a lot of great reporting tools for things like [merge requests](../../user/project/merge_requests/index.md) - [Unit test reports](unit_test_reports.md), [code quality](code_quality.md), and performance tests. While JUnit is a great open framework for tests that "pass" or "fail", it is also important to see other types of metrics from a given change.
 
diff --git a/doc/ci/testing/test_coverage_visualization.md b/doc/ci/testing/test_coverage_visualization.md
index ecd5c794344b9db34d275354ad09f83b29b3a19c..4d56ce1af5b5934243701f9dfaf5b808ae8e5765 100644
--- a/doc/ci/testing/test_coverage_visualization.md
+++ b/doc/ci/testing/test_coverage_visualization.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Test coverage visualization **(FREE ALL)**
+# Test coverage visualization 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/3708) in GitLab 12.9.
 > - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/249811) in GitLab 13.5.
@@ -74,7 +78,7 @@ The visualization cannot be displayed if the blocking manual job did not run.
 
 ### Data expiration
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/321323) in GitLab 13.12, the latest data is kept regardless of expiry time.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/321323) in GitLab 13.12, the latest data is kept regardless of expiry time.
 
 By default, the data used to draw the visualization on the merge request expires **one week** after creation.
 
diff --git a/doc/ci/testing/unit_test_report_examples.md b/doc/ci/testing/unit_test_report_examples.md
index bade653bf18d3dc8bed045d6555967285a68d55f..d298b2c0f0b42380d6d0db719b3c5007b4d41190 100644
--- a/doc/ci/testing/unit_test_report_examples.md
+++ b/doc/ci/testing/unit_test_report_examples.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Unit test report examples **(FREE ALL)**
+# Unit test report examples 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 [Unit test reports](unit_test_reports.md) can be generated for many languages and packages.
 Use these examples as guidelines for configuring your pipeline to generate unit test reports
diff --git a/doc/ci/testing/unit_test_reports.md b/doc/ci/testing/unit_test_reports.md
index 59401449b63a98c0ca77fabd969ed243d32a2193..d7f2b9daaffaafa3f491719fb929a0c366e7b20f 100644
--- a/doc/ci/testing/unit_test_reports.md
+++ b/doc/ci/testing/unit_test_reports.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Unit test reports **(FREE ALL)**
+# Unit test reports 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/45318) in GitLab 11.2. Requires GitLab Runner 11.2 and above.
 > - [Renamed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/39737) from JUnit test reports to Unit test reports in GitLab 13.4.
@@ -68,7 +72,7 @@ the error output.
 
 #### Copy failed test names
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91552) in GitLab 15.2.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91552) in GitLab 15.2.
 
 You can copy the name and path of failed tests when there are failed tests listed
 in the **Test summary** panel. Use name and path to find and rerun the
@@ -155,7 +159,7 @@ You can also retrieve the reports via the [GitLab API](../../api/pipelines.md#ge
 
 ### Unit test reports parsing errors
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/263457) in GitLab 13.10.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/263457) in GitLab 13.10.
 
 If parsing JUnit report XML results in an error, an indicator is shown next to the job name. Hovering over the icon shows the parser error in a tooltip. If multiple parsing errors come from [grouped jobs](../jobs/index.md#group-jobs-in-a-pipeline), GitLab shows only the first error from the group.
 
diff --git a/doc/ci/triggers/index.md b/doc/ci/triggers/index.md
index b628159ad2142ea30b2c1bbff713250ff032646a..9f91f03e5b7a3351b196ae5826069966d1062206 100644
--- a/doc/ci/triggers/index.md
+++ b/doc/ci/triggers/index.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Trigger pipelines by using the API **(FREE ALL)**
+# Trigger pipelines by using the API 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 To trigger a pipeline for a specific branch or tag, you can use an API call
 to the [pipeline triggers API endpoint](../../api/pipeline_triggers.md).
diff --git a/doc/ci/variables/index.md b/doc/ci/variables/index.md
index 49f5f1edf4131844d4f653d1cb67c60628a3fc40..20cab081edf1fe9d1e964e45e824d6f3f2432954 100644
--- a/doc/ci/variables/index.md
+++ b/doc/ci/variables/index.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# GitLab CI/CD variables **(FREE ALL)**
+# GitLab CI/CD variables 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 CI/CD variables are a type of environment variable. You can use them to:
 
@@ -169,7 +173,7 @@ To add a group variable:
    - **Key**: Must be one line, with no spaces, using only letters, numbers, or `_`.
    - **Value**: No limitations.
    - **Type**: `Variable` (default) or [`File`](#use-file-type-cicd-variables).
-   - **Environment scope** Optional. `All`, or specific [environments](../environments/index.md#limit-the-environment-scope-of-a-cicd-variable). **(PREMIUM ALL)**
+   - **Environment scope** Optional. `All`, or specific [environments](../environments/index.md#limit-the-environment-scope-of-a-cicd-variable).
    - **Protect variable** Optional. If selected, the variable is only available
      in pipelines that run on protected branches or tags.
    - **Mask variable** Optional. If selected, the variable's **Value** is masked
@@ -180,7 +184,11 @@ The group variables that are available in a project are listed in the project's
 **Settings > CI/CD > Variables** section. Variables from [subgroups](../../user/group/subgroups/index.md)
 are recursively inherited.
 
-### For an instance **(FREE SELF)**
+### For an instance 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** Self-managed
 
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/14108) in GitLab 13.0.
 > - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/299879) in GitLab 13.11.
@@ -248,7 +256,7 @@ valid [secrets file](../../administration/backup_restore/troubleshooting_backup_
 
 ### Mask a CI/CD variable
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/330650) in GitLab 13.12, the `~` character can be used in masked variables.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/330650) in GitLab 13.12, the `~` character can be used in masked variables.
 
 WARNING:
 Masking a CI/CD variable is not a guaranteed way to prevent malicious users from
@@ -618,7 +626,7 @@ job:
 
 ### Prevent CI/CD variable expansion
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/217309) in GitLab 15.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/217309) in GitLab 15.7.
 
 Expanded variables treat values with the `$` character as a reference to another variable.
 CI/CD variables are expanded by default. To treat variables with a `$` character as raw strings,
@@ -696,7 +704,7 @@ can cause the pipeline to behave unexpectedly.
 
 ### Restrict who can override variables
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/295234) in GitLab 13.8.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/295234) in GitLab 13.8.
 
 You can limit the ability to override variables to only users with the Maintainer role.
 When other users try to run a pipeline with overridden variables, they receive the
diff --git a/doc/ci/variables/predefined_variables.md b/doc/ci/variables/predefined_variables.md
index 645cd9ee9af3678564da1c00f3c04065fa15e389..8d861c9ce58d359086f257d2f227edcff1f1e26b 100644
--- a/doc/ci/variables/predefined_variables.md
+++ b/doc/ci/variables/predefined_variables.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Predefined CI/CD variables reference **(FREE ALL)**
+# Predefined CI/CD variables reference 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Predefined [CI/CD variables](index.md) are available in every GitLab CI/CD pipeline.
 
diff --git a/doc/ci/variables/where_variables_can_be_used.md b/doc/ci/variables/where_variables_can_be_used.md
index 4ea45c9bae4e541ff6cfb048248b8124f7d2c25f..07ef4925480ab85a95beb96f2f5e7342eedd935a 100644
--- a/doc/ci/variables/where_variables_can_be_used.md
+++ b/doc/ci/variables/where_variables_can_be_used.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Where variables can be used **(FREE ALL)**
+# Where variables can be used 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 As it's described in the [CI/CD variables](index.md) documentation, you can
 define many different variables. Some of them can be used for all GitLab CI/CD
diff --git a/doc/ci/yaml/artifacts_reports.md b/doc/ci/yaml/artifacts_reports.md
index 131f9e502fe0b0b0ca738fe520f8a9aa4db39834..93df35840abe1226cbf1305174c9a144705ca38c 100644
--- a/doc/ci/yaml/artifacts_reports.md
+++ b/doc/ci/yaml/artifacts_reports.md
@@ -4,7 +4,11 @@ group: Pipeline Execution
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# GitLab CI/CD artifacts reports types **(FREE ALL)**
+# GitLab CI/CD artifacts reports types 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Use [`artifacts:reports`](index.md#artifactsreports) to:
 
@@ -41,7 +45,7 @@ For more information, see [Accessibility testing](../testing/accessibility_testi
 
 ## `artifacts:reports:annotations`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/38337) in GitLab 16.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/38337) in GitLab 16.3.
 
 The `annotations` report is used to attach auxiliary data to a job.
 
@@ -100,7 +104,11 @@ GitLab can display the results of one or more reports in:
 - The pipeline [**Security** tab](../../user/application_security/vulnerability_report/pipeline.md#view-vulnerabilities-in-a-pipeline).
 - The [security dashboard](../../user/application_security/api_fuzzing/index.md#security-dashboard).
 
-## `artifacts:reports:browser_performance` **(PREMIUM ALL)**
+## `artifacts:reports:browser_performance` 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > [Name changed](https://gitlab.com/gitlab-org/gitlab/-/issues/225914) from `artifacts:reports:performance` in GitLab 14.0.
 
@@ -114,7 +122,7 @@ GitLab cannot display the combined results of multiple `browser_performance` rep
 
 ## `artifacts:reports:coverage_report`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/344533) in GitLab 14.10.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/344533) in GitLab 14.10.
 
 Use `coverage_report` to collect coverage report in Cobertura format.
 
@@ -177,7 +185,7 @@ GitLab can display the results of one or more reports in:
 
 ## `artifacts:reports:cyclonedx`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/360766) in GitLab 15.3
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/360766) in GitLab 15.3
 
 This report is a Software Bill of Materials describing the components of a project
 following the [CycloneDX](https://cyclonedx.org/docs/1.4) protocol format.
@@ -286,7 +294,11 @@ concatenate them into a single file. Use either:
 - A combination of both (`junit: [rspec.xml, test-results/TEST-*.xml]`).
 - Directories are not supported(`junit: test-results`, `junit: test-results/**`).
 
-## `artifacts:reports:load_performance` **(PREMIUM ALL)**
+## `artifacts:reports:load_performance` 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 The `load_performance` report collects [Load Performance Testing metrics](../testing/load_performance_testing.md).
 The report is uploaded to GitLab as an artifact.
@@ -296,7 +308,11 @@ GitLab can display the results of only one report in the merge request
 
 GitLab cannot display the combined results of multiple `load_performance` reports.
 
-## `artifacts:reports:metrics` **(PREMIUM ALL)**
+## `artifacts:reports:metrics` 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 The `metrics` report collects [Metrics](../testing/metrics_reports.md). The collected Metrics report uploads to GitLab as an
 artifact.
@@ -314,13 +330,13 @@ GitLab can display the results of one or more reports in the
 
 ## `artifacts:reports:repository_xray` **(ULTIMATE ALL)**
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/432235) in GitLab 16.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/432235) in GitLab 16.7.
 
 The `repository_xray` report collects information about your repository for use by AI in code suggestions.
 
 ## `artifacts:reports:sast`
 
-> [Moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) from GitLab Ultimate to GitLab Free in 13.3.
+> - [Moved](https://gitlab.com/groups/gitlab-org/-/epics/2098) from GitLab Ultimate to GitLab Free in 13.3.
 
 The `sast` report collects [SAST vulnerabilities](../../user/application_security/sast/index.md).
 The collected SAST report uploads to GitLab as an artifact.
diff --git a/doc/ci/yaml/includes.md b/doc/ci/yaml/includes.md
index 8da4195f5aa2ec95fec96aecf0ffb33d88c22abe..c0aaec5756fb37bd133c8929232ee18981c0e17f 100644
--- a/doc/ci/yaml/includes.md
+++ b/doc/ci/yaml/includes.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Use CI/CD configuration from other files **(FREE ALL)**
+# Use CI/CD configuration from other files 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 You can use [`include`](index.md#include) to include external YAML files in your CI/CD jobs.
 
@@ -298,7 +302,7 @@ default:
 
 ### Use nested includes with duplicate `includes` entries
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/28987) in GitLab 14.8
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/28987) in GitLab 14.8
 
 Nested includes can include the same configuration file. The duplicate configuration
 file is included multiple times, but the effect is the same as if it was only
@@ -502,7 +506,7 @@ for information about work to improve this behavior.
 
 ### `include` with `rules:changes`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/342209) in GitLab 16.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/342209) in GitLab 16.4.
 
 Use [`rules:changes`](index.md#ruleschanges) to conditionally include other configuration files
 based on changed files. For example:
diff --git a/doc/ci/yaml/index.md b/doc/ci/yaml/index.md
index 543416d1216c3694f637f9d912893c24fdbb9c3e..004d38df8939a9907ebc467e60f685361eb112f4 100644
--- a/doc/ci/yaml/index.md
+++ b/doc/ci/yaml/index.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# CI/CD YAML syntax reference **(FREE ALL)**
+# CI/CD YAML syntax reference 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 This document lists the configuration options for the GitLab `.gitlab-ci.yml` file.
 This file is where you define the CI/CD jobs that make up your pipeline.
@@ -135,7 +139,7 @@ In this example:
 
 ### `include`
 
-> [Moved](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/42861) to GitLab Free in 11.4.
+> - [Moved](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/42861) to GitLab Free in 11.4.
 
 Use `include` to include external YAML files in your CI/CD configuration.
 You can split one long `.gitlab-ci.yml` file into multiple files to increase readability,
@@ -378,7 +382,7 @@ include:
 
 #### `include:inputs`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/391331) in GitLab 15.11 as a Beta feature.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/391331) in GitLab 15.11 as a Beta feature.
 
 Use `include:inputs` to set the values for input parameters when the included configuration
 uses [`spec:inputs`](#specinputs) and is added to the pipeline.
@@ -470,7 +474,7 @@ start. Jobs in the current stage are not stopped and continue to run.
 
 ### `workflow`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/29654) in GitLab 12.5
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/29654) in GitLab 12.5
 
 Use [`workflow`](workflow.md) to control pipeline behavior.
 
@@ -484,7 +488,7 @@ You can use some [predefined CI/CD variables](../variables/predefined_variables.
 
 #### `workflow:auto_cancel:on_new_commit`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/412473) in GitLab 16.8 [with a flag](../../administration/feature_flags.md) named `ci_workflow_auto_cancel_on_new_commit`. Disabled by default.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/412473) in GitLab 16.8 [with a flag](../../administration/feature_flags.md) named `ci_workflow_auto_cancel_on_new_commit`. Disabled by default.
 
 FLAG:
 On self-managed GitLab, by default this feature is not available. To make it available per project or
@@ -701,7 +705,7 @@ When the branch is something else:
 
 #### `workflow:rules:auto_cancel`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/436467) in GitLab 16.8 [with a flag](../../administration/feature_flags.md) named `ci_workflow_auto_cancel_on_new_commit`. Disabled by default.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/436467) in GitLab 16.8 [with a flag](../../administration/feature_flags.md) named `ci_workflow_auto_cancel_on_new_commit`. Disabled by default.
 
 FLAG:
 On self-managed GitLab, by default this feature is not available. To make it available per project or
@@ -753,7 +757,7 @@ with `---`.
 
 ### `spec`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/391331) in GitLab 15.11 as a Beta feature.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/391331) in GitLab 15.11 as a Beta feature.
 
 Add a `spec` section to the header of a YAML file to configure the behavior of a pipeline
 when a configuration is added to the pipeline with the `include` keyword.
@@ -803,7 +807,7 @@ scan-website:
 
 ##### `spec:inputs:default`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/391331) in GitLab 15.11 as a Beta feature.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/391331) in GitLab 15.11 as a Beta feature.
 
 Inputs are mandatory when included, unless you set a default value with `spec:inputs:default`.
 
@@ -845,7 +849,7 @@ In this example:
 
 ##### `spec:inputs:description`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/415637) in GitLab 16.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/415637) in GitLab 16.5.
 
 Use `description` to give a description to a specific input. The description does
 not affect the behavior of the input and is only used to help users of the file
@@ -870,7 +874,7 @@ spec:
 
 ##### `spec:inputs:options`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/393401) in GitLab 16.6.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/393401) in GitLab 16.6.
 
 Inputs can use `options` to specify a list of allowed values for an input.
 The limit is 50 options per input.
@@ -909,7 +913,7 @@ In this example:
 
 ##### `spec:inputs:regex`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/410836) in GitLab 16.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/410836) in GitLab 16.5.
 
 Use `spec:inputs:regex` to specify a regular expression that the input must match.
 
@@ -1286,7 +1290,7 @@ job:
 
 #### `artifacts:expose_as`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/15018) in GitLab 12.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/15018) in GitLab 12.5.
 
 Use the `artifacts:expose_as` keyword to
 [expose job artifacts in the merge request UI](../jobs/job_artifacts.md#link-to-job-artifacts-in-the-merge-request-ui).
@@ -1523,7 +1527,7 @@ job:
 
 ### `cache`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/330047) in GitLab 15.0, caches are not shared between protected and unprotected branches.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/330047) in GitLab 15.0, caches are not shared between protected and unprotected branches.
 
 Use `cache` to specify a list of files and directories to
 cache between jobs. You can only use paths that are in the local working copy.
@@ -1638,7 +1642,7 @@ cache-job:
 
 ##### `cache:key:files`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/18986) in GitLab 12.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/18986) in GitLab 12.5.
 
 Use the `cache:key:files` keyword to generate a new key when one or two specific files
 change. `cache:key:files` lets you reuse some caches, and rebuild them less often,
@@ -1681,7 +1685,7 @@ use the new cache, instead of rebuilding the dependencies.
 
 ##### `cache:key:prefix`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/18986) in GitLab 12.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/18986) in GitLab 12.5.
 
 Use `cache:key:prefix` to combine a prefix with the SHA computed for [`cache:key:files`](#cachekeyfiles).
 
@@ -1767,7 +1771,7 @@ rspec:
 
 #### `cache:unprotect`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/362114) in GitLab 15.8.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/362114) in GitLab 15.8.
 
 Use `cache:unprotect` to set a cache to be shared between [protected](../../user/project/protected_branches.md)
 and unprotected branches.
@@ -1794,7 +1798,7 @@ rspec:
 
 #### `cache:when`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/18969) in GitLab 13.5 and GitLab Runner v13.5.0.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/18969) in GitLab 13.5 and GitLab Runner v13.5.0.
 
 Use `cache:when` to define when to save the cache, based on the status of the job.
 
@@ -1953,7 +1957,7 @@ In this example:
 
 ### `dast_configuration` **(ULTIMATE ALL)**
 
-> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/5981) in GitLab 14.1.
+> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/5981) in GitLab 14.1.
 
 Use the `dast_configuration` keyword to specify a site profile and scanner profile to be used in a
 CI/CD configuration. Both profiles must first have been created in the project. The job's stage must
@@ -2222,7 +2226,7 @@ Every time the review app is deployed, that lifetime is also reset to `1 day`.
 
 #### `environment:kubernetes`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/27630) in GitLab 12.6.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/27630) in GitLab 12.6.
 
 Use the `kubernetes` keyword to configure deployments to a
 [Kubernetes cluster](../../user/infrastructure/clusters/index.md) that is associated with your project.
@@ -2256,7 +2260,7 @@ environment, using the `production`
 
 #### `environment:deployment_tier`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/300741) in GitLab 13.10.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/300741) in GitLab 13.10.
 
 Use the `deployment_tier` keyword to specify the tier of the deployment environment.
 
@@ -2429,7 +2433,7 @@ job1:
 
 ### `id_tokens`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/356986) in GitLab 15.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/356986) in GitLab 15.7.
 
 Use `id_tokens` to create [JSON web tokens (JWT)](https://www.rfc-editor.org/rfc/rfc7519) to authenticate with third party services. All
 JWTs created this way support OIDC authentication. The required `aud` sub-keyword is used to configure the `aud` claim for the JWT.
@@ -2631,7 +2635,7 @@ job2:
 
 ### `inherit`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/207484) in GitLab 12.9.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/207484) in GitLab 12.9.
 
 Use `inherit` to [control inheritance of default keywords and variables](../jobs/index.md#control-the-inheritance-of-default-keywords-and-global-variables).
 
@@ -2872,7 +2876,7 @@ This example creates four paths of execution:
 
 #### `needs:artifacts`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/14311) in GitLab 12.6.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/14311) in GitLab 12.6.
 
 When a job uses `needs`, it no longer downloads all artifacts from previous stages
 by default, because jobs with `needs` can start before earlier stages complete. With
@@ -2921,9 +2925,13 @@ In this example:
 
 - You should not combine `needs` with [`dependencies`](#dependencies) in the same job.
 
-#### `needs:project` **(PREMIUM ALL)**
+#### `needs:project` 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/14311) in GitLab 12.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/14311) in GitLab 12.7.
 
 Use `needs:project` to download artifacts from up to five jobs in other pipelines.
 The artifacts are downloaded from the latest successful specified job for the specified ref.
@@ -3004,7 +3012,7 @@ build_job:
 
 #### `needs:pipeline:job`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/255983) in GitLab 13.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/255983) in GitLab 13.7.
 
 A [child pipeline](../pipelines/downstream_pipelines.md#parent-child-pipelines) can download artifacts from a job in
 its parent pipeline or another child pipeline in the same parent-child pipeline hierarchy.
@@ -3148,7 +3156,7 @@ upstream_status:
 
 #### `needs:parallel:matrix`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/254821) in GitLab 16.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/254821) in GitLab 16.3.
 
 Jobs can use [`parallel:matrix`](#parallelmatrix) to run a job multiple times in parallel in a single pipeline,
 but with different variable values for each instance of the job.
@@ -3252,7 +3260,7 @@ This directory is exported as an artifact and published with GitLab Pages.
 
 #### `pages:publish`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/415821) in GitLab 16.1.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/415821) in GitLab 16.1.
 
 Use `publish` to configure the content directory of a [`pages` job](#pages).
 
@@ -3282,7 +3290,7 @@ as an artifact and published with GitLab Pages.
 
 #### `pages:pages.path_prefix` **(PREMIUM ALL EXPERIMENT)**
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129534) in GitLab 16.7 as an [Experiment](../../policy/experiment-beta-support.md) [with a flag](../../user/feature_flags.md) named `pages_multiple_versions_setting`, disabled by default.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129534) in GitLab 16.7 as an [Experiment](../../policy/experiment-beta-support.md) [with a flag](../../user/feature_flags.md) named `pages_multiple_versions_setting`, disabled by default.
 
 FLAG:
 On self-managed GitLab, by default this feature is not available. To make it available,
@@ -3317,7 +3325,7 @@ In this example, a different pages deployment is created for each branch.
 
 ### `parallel`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/336576) in GitLab 15.9, the maximum value for `parallel` is increased from 50 to 200.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/336576) in GitLab 15.9, the maximum value for `parallel` is increased from 50 to 200.
 
 Use `parallel` to run a job multiple times in parallel in a single pipeline.
 
@@ -3445,7 +3453,7 @@ deploystacks: [vultr, processing]
 
 ### `release`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/19298) in GitLab 13.2.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/19298) in GitLab 13.2.
 
 Use `release` to create a [release](../../user/project/releases/index.md).
 
@@ -3561,7 +3569,7 @@ job:
 
 #### `release:tag_message`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/363024) in GitLab 15.3. Supported by `release-cli` v0.12.0 or later.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/363024) in GitLab 15.3. Supported by `release-cli` v0.12.0 or later.
 
 If the tag does not exist, the newly created tag is annotated with the message specified by `tag_message`.
 If omitted, a lightweight tag is created.
@@ -3667,7 +3675,7 @@ released_at: '2021-03-15T08:00:00Z'
 
 #### `release:assets:links`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/271454) in GitLab 13.12.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/271454) in GitLab 13.12.
 
 Use `release:assets:links` to include [asset links](../../user/project/releases/release_fields.md#release-assets) in the release.
 
@@ -3688,7 +3696,7 @@ assets:
 
 ### `resource_group`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/15536) in GitLab 12.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/15536) in GitLab 12.7.
 
 Use `resource_group` to create a [resource group](../resource_groups/index.md) that
 ensures a job is mutually exclusive across different pipelines for the same project.
@@ -3820,7 +3828,7 @@ using variables.
 
 ### `rules`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/27863) in GitLab 12.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/27863) in GitLab 12.3.
 
 Use `rules` to include or exclude jobs in pipelines.
 
@@ -3976,7 +3984,7 @@ docker build:
 
 ##### `rules:changes:paths`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90171) in GitLab 15.2.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90171) in GitLab 15.2.
 
 Use `rules:changes` to specify that a job only be added to a pipeline when specific
 files are changed, and use `rules:changes:paths` to specify the files.
@@ -4083,7 +4091,7 @@ job:
 
 #### `rules:allow_failure`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/30235) in GitLab 12.8.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/30235) in GitLab 12.8.
 
 Use [`allow_failure: true`](#allow_failure) in `rules` to allow a job to fail
 without stopping the pipeline.
@@ -4238,9 +4246,13 @@ job2:
 - [Create custom collapsible sections](../jobs/index.md#custom-collapsible-sections)
   to simplify job log output.
 
-### `secrets` **(PREMIUM ALL)**
+### `secrets` 
+
+DETAILS:
+**Tier:** Premium, Ultimate
+**Offering:** SaaS, self-managed
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/33014) in GitLab 13.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/33014) in GitLab 13.4.
 
 Use `secrets` to specify [CI/CD secrets](../secrets/index.md) to:
 
@@ -4250,7 +4262,7 @@ Use `secrets` to specify [CI/CD secrets](../secrets/index.md) to:
 
 #### `secrets:vault`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/28321) in GitLab 13.4 and GitLab Runner 13.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/28321) in GitLab 13.4 and GitLab Runner 13.4.
 
 Use `secrets:vault` to specify secrets provided by a [HashiCorp Vault](https://www.vaultproject.io/).
 
@@ -4300,7 +4312,7 @@ job:
 
 #### `secrets:gcp_secret_manager`
 
-> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/11739) in GitLab 16.8 and GitLab Runner 16.8.
+> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/11739) in GitLab 16.8 and GitLab Runner 16.8.
 
 Use `secrets:gcp_secret_manager` to specify secrets provided by [GCP Secret Manager](https://cloud.google.com/security/products/secret-manager).
 
@@ -4328,7 +4340,7 @@ job:
 
 #### `secrets:azure_key_vault`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/271271) in GitLab 16.3 and GitLab Runner 16.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/271271) in GitLab 16.3 and GitLab Runner 16.3.
 
 Use `secrets:azure_key_vault` to specify secrets provided by a [Azure Key Vault](https://azure.microsoft.com/en-us/products/key-vault/).
 
@@ -4356,7 +4368,7 @@ job:
 
 #### `secrets:file`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/250695) in GitLab 14.1 and GitLab Runner 14.1.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/250695) in GitLab 14.1 and GitLab Runner 14.1.
 
 Use `secrets:file` to configure the secret to be stored as either a
 [`file` or `variable` type CI/CD variable](../variables/index.md#use-file-type-cicd-variables)
@@ -4602,7 +4614,7 @@ job4:
 
 #### `stage: .pre`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/31441) in GitLab 12.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/31441) in GitLab 12.4.
 
 Use the `.pre` stage to make a job run at the start of a pipeline. `.pre` is
 always the first stage in a pipeline. User-defined stages execute after `.pre`.
@@ -4638,7 +4650,7 @@ job2:
 
 #### `stage: .post`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/31441) in GitLab 12.4.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/31441) in GitLab 12.4.
 
 Use the `.post` stage to make a job run at the end of a pipeline. `.post`
 is always the last stage in a pipeline. User-defined stages execute before `.post`.
@@ -4722,7 +4734,7 @@ In this example, only runners with *both* the `ruby` and `postgres` tags can run
 
 ### `timeout`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/14887) in GitLab 12.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/14887) in GitLab 12.3.
 
 Use `timeout` to configure a timeout for a specific job. If the job runs for longer
 than the timeout, the job fails.
@@ -5037,7 +5049,7 @@ deploy_review_job:
 
 #### `variables:description`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/30101) in GitLab 13.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/30101) in GitLab 13.7.
 
 Use the `description` keyword to define a description for a pipeline-level (global) variable.
 The description displays with [the prefilled variable name when running a pipeline manually](../pipelines/index.md#prefill-variables-in-manual-pipelines).
@@ -5063,7 +5075,7 @@ variables:
 
 #### `variables:value`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/30101) in GitLab 13.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/30101) in GitLab 13.7.
 
 Use the `value` keyword to define a pipeline-level (global) variable's value. When used with
 [`variables: description`](#variablesdescription), the variable value is [prefilled when running a pipeline manually](../pipelines/index.md#prefill-variables-in-manual-pipelines).
@@ -5090,7 +5102,7 @@ variables:
 
 #### `variables:options`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105502) in GitLab 15.7.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105502) in GitLab 15.7.
 
 Use `variables:options` to define an array of values that are [selectable in the UI when running a pipeline manually](../pipelines/index.md#configure-a-list-of-selectable-prefilled-variable-values).
 
diff --git a/doc/ci/yaml/inputs.md b/doc/ci/yaml/inputs.md
index 18dcb865c06d230aeff9b04b8fb73f85738cd801..4f3d7d6b8465d1e586e0a351500620ae4d114e2e 100644
--- a/doc/ci/yaml/inputs.md
+++ b/doc/ci/yaml/inputs.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Define inputs for configuration added with `include` **(FREE ALL)**
+# Define inputs for configuration added with `include` 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/391331) in GitLab 15.11 as a Beta feature.
 > - Made generally available in GitLab 16.6.
@@ -186,7 +190,7 @@ spec:
 
 ## Specify functions to manipulate input values
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/409462) in GitLab 16.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/409462) in GitLab 16.3.
 
 You can specify predefined functions in the interpolation block to manipulate the input value.
 The format supported is the following:
@@ -222,7 +226,7 @@ In this example, assuming the input uses the default value and `$MY_VAR` is an u
 
 #### `expand_vars`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/387632) in GitLab 16.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/387632) in GitLab 16.5.
 
 Use `expand_vars` to expand [CI/CD variables](../variables/index.md) in the input value.
 
@@ -248,7 +252,7 @@ would expand to `test my value`.
 
 #### `truncate`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/409462) in GitLab 16.3.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/409462) in GitLab 16.3.
 
 Use `truncate` to shorten the interpolated value. For example:
 
diff --git a/doc/ci/yaml/script.md b/doc/ci/yaml/script.md
index 756f14ea5a5d1270607dbaf9cab36e1c1876e258..1c04cfefe549dd7c4618ebf81d68bcd60dff5731 100644
--- a/doc/ci/yaml/script.md
+++ b/doc/ci/yaml/script.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Format scripts and job logs **(FREE ALL)**
+# Format scripts and job logs 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 You can use special syntax in [`script`](index.md#script) sections to:
 
diff --git a/doc/ci/yaml/signing_examples.md b/doc/ci/yaml/signing_examples.md
index e56109085a3d5ef0931b5d5d0f4b83063a4798c5..4eb867100e5e0d6c4d0e0d306060ef47ab3222e7 100644
--- a/doc/ci/yaml/signing_examples.md
+++ b/doc/ci/yaml/signing_examples.md
@@ -4,7 +4,11 @@ group: Pipeline Security
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Use Sigstore for keyless signing and verification **(FREE SAAS)**
+# Use Sigstore for keyless signing and verification 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS
 
 The [Sigstore](https://www.sigstore.dev/) project provides a CLI called
 [Cosign](https://docs.sigstore.dev/signing/quickstart/) which can be used for keyless signing of container images built
diff --git a/doc/ci/yaml/workflow.md b/doc/ci/yaml/workflow.md
index a22e4e322b67395c6f84f008c939516664f0092a..fe74ff1095176552c1707b4bacef6940a01a3c58 100644
--- a/doc/ci/yaml/workflow.md
+++ b/doc/ci/yaml/workflow.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# GitLab CI/CD `workflow` keyword **(FREE ALL)**
+# GitLab CI/CD `workflow` keyword 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 Use the [`workflow`](index.md#workflow) keyword to control when pipelines are created.
 
@@ -63,7 +67,7 @@ request pipelines.
 
 ### Switch between branch pipelines and merge request pipelines
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/201845) in GitLab 13.8.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/201845) in GitLab 13.8.
 
 To make the pipeline switch from branch pipelines to merge request pipelines after
 a merge request is created, add a `workflow: rules` section to your `.gitlab-ci.yml` file.
@@ -136,7 +140,7 @@ This example assumes that your long-lived branches are [protected](../../user/pr
 
 ## `workflow:rules` templates
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/217732) in GitLab 13.0.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/217732) in GitLab 13.0.
 
 GitLab provides templates that set up `workflow: rules`
 for common scenarios. These templates help prevent duplicate pipelines.
diff --git a/doc/ci/yaml/yaml_optimization.md b/doc/ci/yaml/yaml_optimization.md
index 67383ad8e9e5234b52e398c472163ca5124e140e..7c14ed8ce6562c806c6bfe6f30b53eaf6af0392a 100644
--- a/doc/ci/yaml/yaml_optimization.md
+++ b/doc/ci/yaml/yaml_optimization.md
@@ -4,7 +4,11 @@ group: Pipeline Authoring
 info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
 ---
 
-# Optimize GitLab CI/CD configuration files **(FREE ALL)**
+# Optimize GitLab CI/CD configuration files 
+
+DETAILS:
+**Tier:** Free, Premium, Ultimate
+**Offering:** SaaS, self-managed
 
 You can reduce complexity and duplicated configuration in your GitLab CI/CD configuration
 files by using:
@@ -165,7 +169,7 @@ You can see that the hidden jobs are conveniently used as templates, and
 
 ### YAML anchors for scripts
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/23005) in GitLab 12.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/23005) in GitLab 12.5.
 
 You can use [YAML anchors](#anchors) with [script](index.md#script), [`before_script`](index.md#before_script),
 and [`after_script`](index.md#after_script) to use predefined commands in multiple jobs:
@@ -438,7 +442,7 @@ test-vars-2:
 
 ### Nest `!reference` tags in `script`, `before_script`, and `after_script`
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74792) in GitLab 14.8.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74792) in GitLab 14.8.
 
 You can nest `!reference` tags up to 10 levels deep in `script`, `before_script`, and `after_script` sections. Use nested tags to define reusable sections when building more complex scripts. For example: