Skip to content
Open
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
129d4ac
perf(scripts): scope and parallelize the markdown link check
jkim323 Aug 11, 2026
cfac5a8
fix(docs): correct table column padding in the workflows README
jkim323 Aug 11, 2026
6186687
perf(scripts): batch markdown files per link-check invocation
jkim323 Aug 11, 2026
c252dac
Merge branch 'main' into perf/markdown-link-check-scoping-and-paralle…
jkim323 Aug 11, 2026
63aa7ca
perf(scripts): deduplicate external URLs in markdown link checks
jkim323 Aug 11, 2026
26495c3
Merge branch 'main' into perf/markdown-link-check-scoping-and-paralle…
jkim323 Aug 11, 2026
3434ae9
fix(linting): ignore nvd.nist.gov in markdown link checks
Aug 12, 2026
2cf192c
Merge branch 'main' into perf/markdown-link-check-scoping-and-paralle…
jkim323 Aug 12, 2026
7001d1b
Merge branch 'main' into perf/markdown-link-check-scoping-and-paralle…
jkim323 Aug 12, 2026
bd9e5ae
Merge branch 'main' into perf/markdown-link-check-scoping-and-paralle…
jkim323 Aug 13, 2026
697d571
Merge branch 'main' into perf/markdown-link-check-scoping-and-paralle…
jkim323 Aug 17, 2026
f7e8398
Merge branch 'main' into perf/markdown-link-check-scoping-and-paralle…
jkim323 Aug 18, 2026
ae48f4c
Merge branch 'main' into perf/markdown-link-check-scoping-and-paralle…
jkim323 Aug 19, 2026
4079517
Merge branch 'main' into perf/markdown-link-check-scoping-and-paralle…
jkim323 Aug 20, 2026
10fb2a6
Merge branch 'main' into perf/markdown-link-check-scoping-and-paralle…
jkim323 Aug 21, 2026
8cdc422
fix(scripts): validate internal links repository-wide and bound batch…
Aug 22, 2026
d1c2ac9
Merge branch 'main' into perf/markdown-link-check-scoping-and-paralle…
jkim323 Aug 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ authorized manual actions. Local validation does not execute or verify them.
| `frontmatter-validation.yml` | Custom PS script | YAML frontmatter validation | `soft-fail` (false), `changed-files-only` (true), `skip-footer-validation` (false), `warnings-as-errors` (true) | frontmatter-validation-results |
| `skill-validation.yml` | Custom PS script | Skill directory structure validation | `soft-fail` (false), `changed-files-only` (true) | skill-validation-results |
| `link-lang-check.yml` | Custom PS script | Detect language-specific URLs | `soft-fail` (false) | link-lang-check-results |
| `markdown-link-check.yml` | markdown-link-check | Validate links (internal/external) | `soft-fail` (true) | markdown-link-check-results |
| `markdown-link-check.yml` | markdown-link-check | Validate links (internal/external) | `soft-fail` (true), `changed-files-only` (true), `throttle-limit` (8) | markdown-link-check-results |

All validation workflows use `permissions: contents: read`, publish PR annotations, and retain artifacts for 30 days.

Expand Down
30 changes: 29 additions & 1 deletion .github/workflows/markdown-link-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,21 @@ on:
required: false
type: boolean
default: false
changed-files-only:
description: 'Only validate markdown files changed against the base branch'
required: false
type: boolean
default: true
base-branch:
description: 'Base branch or SHA for change detection (defaults to origin/main)'
required: false
type: string
default: ''
throttle-limit:
description: 'Maximum number of markdown files checked concurrently'
required: false
type: number
default: 8

permissions:
contents: read
Expand All @@ -25,6 +40,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
fetch-depth: 0

- name: Setup Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
Expand All @@ -43,8 +59,19 @@ jobs:
- name: Run markdown link check
id: link-check
shell: pwsh
env:
BASE_BRANCH: ${{ inputs.base-branch }}
CHANGED_FILES_ONLY: ${{ inputs.changed-files-only }}
THROTTLE_LIMIT: ${{ inputs.throttle-limit }}
run: |
& scripts/linting/Markdown-Link-Check.ps1
$params = @{ ThrottleLimit = [int]$env:THROTTLE_LIMIT }
if ($env:CHANGED_FILES_ONLY -eq 'true') {
$params['ChangedFilesOnly'] = $true
if (-not [string]::IsNullOrEmpty($env:BASE_BRANCH)) {
$params['BaseBranch'] = $env:BASE_BRANCH
}
}
& scripts/linting/Markdown-Link-Check.ps1 @params
continue-on-error: ${{ inputs.soft-fail }}

- name: Upload markdown link check results
Expand All @@ -54,6 +81,7 @@ jobs:
name: markdown-link-check-results
path: logs/markdown-link-check-results.json
retention-days: 30
if-no-files-found: ignore

- name: Check results and fail if needed
if: ${{ !inputs.soft-fail && steps.link-check.outcome == 'failure' }}
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/pr-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,8 @@ jobs:
contents: read
with:
soft-fail: true
changed-files-only: true
base-branch: ${{ github.event.pull_request.base.sha || format('origin/{0}', github.base_ref) }}

dependency-pinning-check:
name: Validate Dependency Pinning
Expand Down
9 changes: 9 additions & 0 deletions .github/workflows/weekly-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,15 @@ jobs:
permissions:
contents: read

markdown-link-check:
name: Markdown Link Check (Full Repository)
uses: ./.github/workflows/markdown-link-check.yml
permissions:
contents: read
with:
soft-fail: true
changed-files-only: false

create-stale-docs-issues:
name: Create or Update Issues for Stale Documentation
needs: [msdate-freshness]
Expand Down
Loading
Loading