From 55b150a252fb5b74bec9ff39a586171d11b32925 Mon Sep 17 00:00:00 2001 From: Janine Chan <64388808+janine-c@users.noreply.github.com> Date: Fri, 17 Apr 2026 10:48:31 -0600 Subject: [PATCH 1/2] Add app_links Vale rule to flag private internal Datadog URLs Catches internal subdomain patterns (dd*.datadoghq.com, demo.datadoghq.com) and datad0g.com links, suggesting app.datadoghq.com as the replacement. Co-Authored-By: Claude Sonnet 4.6 --- styles/Datadog/app_links.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 styles/Datadog/app_links.yml diff --git a/styles/Datadog/app_links.yml b/styles/Datadog/app_links.yml new file mode 100644 index 0000000..17a7c45 --- /dev/null +++ b/styles/Datadog/app_links.yml @@ -0,0 +1,14 @@ +# This file is used to lint links to internal Datadog environments that are not accessible to customers. +extends: substitution +message: "This looks like a private app link. Use '%s' instead of '%s'." +link: "https://github.com/DataDog/documentation/blob/master/CONTRIBUTING.md#links" +ignorecase: true +level: error +scope: raw +action: + name: replace +swap: + # Matches known internal subdomain patterns on the product domain + 'https?://(?:dd[a-zA-Z0-9\-]*|demo)\.datadoghq\.com': https://app.datadoghq.com + # Matches the internal zero-substitution domain variant + 'https?://(?:[a-zA-Z0-9][a-zA-Z0-9\-]*\.)?datad0g\.com': https://app.datadoghq.com From d910adb5cca9dd490edfda537310d9bff01725c5 Mon Sep 17 00:00:00 2001 From: Janine Chan <64388808+janine-c@users.noreply.github.com> Date: Fri, 17 Apr 2026 10:59:35 -0600 Subject: [PATCH 2/2] Catch app.datadog.com and suggest app.datadoghq.com Co-Authored-By: Claude Sonnet 4.6 --- styles/Datadog/app_links.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/styles/Datadog/app_links.yml b/styles/Datadog/app_links.yml index 17a7c45..13fe8d1 100644 --- a/styles/Datadog/app_links.yml +++ b/styles/Datadog/app_links.yml @@ -12,3 +12,5 @@ swap: 'https?://(?:dd[a-zA-Z0-9\-]*|demo)\.datadoghq\.com': https://app.datadoghq.com # Matches the internal zero-substitution domain variant 'https?://(?:[a-zA-Z0-9][a-zA-Z0-9\-]*\.)?datad0g\.com': https://app.datadoghq.com + # Matches app.datadog.com (missing 'hq') + 'https?://app\.datadog\.com': https://app.datadoghq.com