fix(ci): exclude generated plugin-skills mirror from link-check - #3452
Merged
Conversation
The skills mirror at plugins/worktrunk/skills/ (added in #3440) is a byte-identical copy of skills/, synced by test_docs_are_in_sync. Its reference/README.md is materialized from the authored skills/ symlink to the repo-root README, whose relative docs/static/logo.png resolves at the repo root but not under the mirror directory — so the nightly link-check job reported a false-positive File-not-found on plugins/worktrunk/skills/worktrunk/reference/docs/static/logo.png. Exclude the redundant mirror from lychee via exclude_path. The authored skills/ source (and the repo-root README) are still checked, so coverage is unchanged.
This was referenced Jul 13, 2026
Closed
Collaborator
Author
|
The |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The nightly
link-checkjob failed onmain(run):Root cause is the generated plugin-skills mirror added in #3440. That mirror is a byte-identical copy of the authored repo-root
skills/, synced bytest_docs_are_in_sync. Inskills/,worktrunk/reference/README.mdis a symlink to the repo-rootREADME.md, whose<img src="docs/static/logo.png">resolves correctly relative to the repo root. The sync dereferences that symlink into a real file underplugins/worktrunk/skills/, so the same repo-root-relative image path now resolves to a nonexistentplugins/worktrunk/skills/worktrunk/reference/docs/static/logo.png— a false positive, not a real broken link.The check runs as the manual-stage
link-checkjob in thenightlyworkflow, not on PRs, so #3440 merged clean and the failure surfaced on the next nightly run.Solution
Add
exclude_path = ["plugins/worktrunk/skills/"]to.config/lychee.toml. The mirror is generated and every file in it is a duplicate of a file already link-checked at its authoredskills/source (and the logo path is validated via the repo-rootREADME.md), so excluding the redundant copy loses no coverage — it just drops the false positive that materializing the symlink creates.exclude_pathvalues are regexes matched against the file path; the pattern matches only the mirror.Testing
Reproduced and verified with a prebuilt lychee 0.24.2 binary, offline:
🚫 1 Erroron.../reference/docs/static/logo.png, exit 2).0 Total, exit 0); the authored repo-rootREADME.mdis still checked and itsdocs/static/logo.pngresolves (0 Errors).plugins/worktrunk+skillstrees with the config:0 Errors.Automated fix for failed run
Closes #3449 — surfaced by the nightly-failure issue.