This repo has no link checking in any of its 14 workflows — no lychee, no check-links, nothing. Both sibling templates do:
| Repo |
Link checking |
qwt |
d-morrison/gha/.github/workflows/check-links.yml@v2 |
qbt |
d-morrison/gha/.github/workflows/check-links.yml@v2 |
rpt |
none |
That matters more here than in a book template, because an R package template ships documentation full of links that rot in exactly the ways a checker catches: @seealso and @references URLs in roxygen blocks, badge URLs in README.Rmd, DESCRIPTION's URL/BugReports fields, vignette citations, and the altdoc site's own cross-references. None of R CMD check, lintr, or the spellcheck looks at any of them.
Since this is a template, every package created from it inherits the gap.
Suggested fix
Add a caller stub for the shared workflow, matching what qwt/qbt already do:
# .github/workflows/check-links.yml
name: Links
on:
pull_request:
push:
branches: [main]
schedule:
- cron: "0 0 * * 0" # weekly, catches rot with no code change
jobs:
link-checker:
uses: d-morrison/gha/.github/workflows/check-links.yml@v2
permissions:
contents: read
issues: write # files an issue when a scheduled run on main fails
Copy the exact shape from gha/examples/check-links.yml rather than the above, which is from memory of the sibling stubs.
Two things worth carrying over from qwt/qbt while doing it:
- a
lychee.toml at the repo root (this repo has none) — needed to exclude template-placeholder URLs, which would otherwise fail on day one for every package generated from the template
- the
links checked by hand skip label, so a PR that knowingly adds a not-yet-live URL can opt out
The weekly cron is the part that earns its keep: link rot happens with no commit to trigger a PR run.
Found while auditing all three templates' CI against IndrajeetPatil/workflows; rpt is by far the least migrated of the three (1 of 14 workflows calls gha, versus 3 of 12 in qwt and 6 of 11 in qbt), so there may be more gaps of this kind worth a separate pass.
This repo has no link checking in any of its 14 workflows — no lychee, no
check-links, nothing. Both sibling templates do:qwtd-morrison/gha/.github/workflows/check-links.yml@v2qbtd-morrison/gha/.github/workflows/check-links.yml@v2rptThat matters more here than in a book template, because an R package template ships documentation full of links that rot in exactly the ways a checker catches:
@seealsoand@referencesURLs in roxygen blocks, badge URLs inREADME.Rmd,DESCRIPTION'sURL/BugReportsfields, vignette citations, and the altdoc site's own cross-references. None ofR CMD check,lintr, or the spellcheck looks at any of them.Since this is a template, every package created from it inherits the gap.
Suggested fix
Add a caller stub for the shared workflow, matching what
qwt/qbtalready do:Copy the exact shape from
gha/examples/check-links.ymlrather than the above, which is from memory of the sibling stubs.Two things worth carrying over from
qwt/qbtwhile doing it:lychee.tomlat the repo root (this repo has none) — needed to exclude template-placeholder URLs, which would otherwise fail on day one for every package generated from the templatelinks checked by handskip label, so a PR that knowingly adds a not-yet-live URL can opt outThe weekly cron is the part that earns its keep: link rot happens with no commit to trigger a PR run.
Found while auditing all three templates' CI against
IndrajeetPatil/workflows;rptis by far the least migrated of the three (1 of 14 workflows callsgha, versus 3 of 12 inqwtand 6 of 11 inqbt), so there may be more gaps of this kind worth a separate pass.