Skip to content

fix: Audit and fix broken links in README#2013

Merged
osterman merged 12 commits intomainfrom
osterman/fix-readme-links
Jan 23, 2026
Merged

fix: Audit and fix broken links in README#2013
osterman merged 12 commits intomainfrom
osterman/fix-readme-links

Conversation

@osterman
Copy link
Copy Markdown
Member

@osterman osterman commented Jan 23, 2026

what

  • Fixed 15 broken /core-concepts/* links in README that returned 404 errors
  • Added 5 missing redirects to docusaurus.config.js for backward compatibility
  • Uncommented workflows redirect with corrected target URL
  • Created GitHub Action workflow (.github/workflows/link-check.yml) to automatically check .md files for broken links using lychee

why

GitHub reported 404 errors for several README links pointing to moved documentation pages. Adding redirects provides backward compatibility for external references, and the new link checker prevents future broken link regressions.

references

Related to: https://github.com/cloudposse/atmos/issues (README broken links audit)

Summary by CodeRabbit

  • New Features

    • Added automated link validation (CI workflow + local target) to catch broken Markdown links.
  • Documentation

    • Reorganized and updated many documentation links to new site structure for consistency.
    • Corrected external references to third-party docs and adjusted cross‑references across guides and examples.
    • Minor content alignments and added a Use Case bullet about service catalogs/landing zones.
  • Chores

    • Added link-check configuration and a Makefile target to run the checker locally.

✏️ Tip: You can customize this high-level summary in your review settings.

- Fixed 15 broken /core-concepts/* links in README.yaml to use new URL structure
- Added 5 missing redirects in docusaurus.config.js for backward compatibility
- Uncommented workflows redirect with corrected target URL
- Created link-check.yml GitHub Action to automatically check .md files for broken links using lychee

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
@osterman osterman requested review from a team as code owners January 23, 2026 14:34
@github-actions github-actions bot added the size/m Medium size PR label Jan 23, 2026
@mergify
Copy link
Copy Markdown

mergify bot commented Jan 23, 2026

Important

Cloud Posse Engineering Team Review Required

This pull request modifies files that require Cloud Posse's review. Please be patient, and a core maintainer will review your changes.

To expedite this process, reach out to us on Slack in the #pr-reviews channel.

@mergify mergify bot added the needs-cloudposse Needs Cloud Posse assistance label Jan 23, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Jan 23, 2026

Dependency Review

✅ No vulnerabilities or license issues found.

Scanned Files

  • .github/workflows/link-check.yml

@osterman osterman added the no-release Do not create a new release (wait for additional code changes) label Jan 23, 2026
@codecov
Copy link
Copy Markdown

codecov bot commented Jan 23, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 75.38%. Comparing base (fa23b7b) to head (a29df57).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #2013      +/-   ##
==========================================
+ Coverage   75.36%   75.38%   +0.01%     
==========================================
  Files         792      792              
  Lines       73396    73396              
==========================================
+ Hits        55313    55326      +13     
+ Misses      14570    14562       -8     
+ Partials     3513     3508       -5     
Flag Coverage Δ
unittests 75.38% <ø> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 3 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

- Add UTM exclusion patterns to link-check.yml workflow
- Delete reference to private repo (infra-live/pull/1640)
- Fix testing-strategy.md references to use correct filename
- Fix atmos-error-handling.md references to use correct filename
- Fix unified-flag-parsing-refactoring.md references in flag-handling docs
- Fix /core-concepts/* URLs in example READMEs
- Add additional redirects to docusaurus.config.js for backward compatibility

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Jan 23, 2026

📝 Walkthrough

Walkthrough

Adds repository-wide documentation link updates to reflect site restructuring and introduces automated Markdown link checking via a new GitHub Actions workflow, lychee configuration, and a Makefile target.

Changes

Cohort / File(s) Summary
Link checking infra
​.github/workflows/link-check.yml, lychee.toml, Makefile
Add GitHub Actions workflow using lychee-action v2; new lychee config (timeouts, retries, accepted statuses, excludes); add make link-check target and include in .PHONY.
Site redirects / config
website/docusaurus.config.js
Add/adjust redirects mapping legacy /core-concepts/* routes to new top-level routes (stacks, components, vendor, workflows, CLI commands, etc.).
Top-level docs & manifests
README.md, README.yaml, cmd/markdown/getting_started.md
Update many external/internal documentation links to new site paths (e.g., /core-concepts/.../stacks, /components, /vendor, /cli/configuration/commands, /workflows).
PRDs & internal docs
docs/prd/*.md, docs/*.md
Update cross-references and external links (testing-strategy → testability-refactoring-strategy, atmos-error-handling → error-handling, unified-flag-parsing refactor → unified-flag-parsing); fix XDG and third-party URLs.
Examples & demos
examples/**/README.md, examples/**/**/README.md
Update example README links to new documentation paths and adjust relative paths where needed.
Tests & snapshots
tests/snapshots/*, tests/README.md, tests/fixtures/**/README.md, tests/test-cases/*/README.md
Update golden files and test README links to reflect new documentation URLs.
Structured logging docs
docs/structured-logging.md, docs/logging.md
Update Charm Logger links (charm.sh → charm.land) and add minor descriptive bullets in structured-logging.
Misc. README updates
.atmos.d/README.md, CLAUDE.md, docs/developing-atmos-commands.md, docs/development.md
Update references to custom commands and other doc paths to new CLI/configuration locations.

Sequence Diagram(s)

sequenceDiagram
  participant Dev as "Developer / PR"
  participant GH as "GitHub Actions"
  participant LycheeAction as "lychee-action v2"
  participant LycheeConfig as "lychee.toml (repo)"
  participant Repo as "Repository files"

  Dev->>GH: Open PR / push
  GH->>LycheeAction: Trigger link-check job
  LycheeAction->>Repo: Load `**/*.md` list (exclude website)
  LycheeAction->>LycheeConfig: Read settings (timeout, retries, accept, excludes)
  LycheeAction->>LycheeAction: Perform HTTP checks for each link
  LycheeAction-->>GH: Report status (pass/fail)
  GH->>Dev: Job result + job summary
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

no-release

Suggested reviewers

  • aknysh
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: fixing broken links in README and related documentation by updating outdated paths and adding link validation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch osterman/fix-readme-links

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

osterman and others added 2 commits January 23, 2026 08:59
Enable jobSummary output so link checker results render as markdown
in the GitHub Actions job summary instead of raw console output.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update snapshot to reflect fixed URL in README
(core-concepts/stacks → stacks).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
coderabbitai[bot]
coderabbitai bot previously approved these changes Jan 23, 2026
- Add --base flag to lychee for correct GitHub file path resolution
- Add wttr.in exclusion for unreliable service
- Fix /core-concepts/* URLs to new URL structure in docs and examples
- Update redirect URLs to point directly to final destinations:
  - charm.sh/blog → charm.land/blog
  - specifications.freedesktop.org/basedir-spec → basedir
  - cloud.google.com → docs.cloud.google.com
  - terraform.io → developer.hashicorp.com/terraform
  - github.com/imdario/mergo → github.com/darccio/mergo
  - github.com/cloudposse/reference-architectures → cloudposse-archives

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add lychee.toml for centralized link checker configuration
- Add `make link-check` target for local iteration
- Update GitHub Action to use config file with GITHUB_TOKEN
- Fix broken file references in docs/prd/ files (double path prefixes)
- Fix testing-strategy.md → testability-refactoring-strategy.md
- Fix PRD-Atmos-Auth.md path references
- Fix quick-start links in examples/README.md
- Update cobra docs URL (master→cobra.dev)
- Update termenv URL (charmbracelet→muesli)
- Remove broken worktree reference in component-registry-pattern.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@osterman osterman force-pushed the osterman/fix-readme-links branch from 93772ba to f915e78 Compare January 23, 2026 16:39
osterman and others added 2 commits January 23, 2026 10:55
- Add GNU.org URLs to lychee exclusion list to avoid rate limits
- Fix invalid redirect destinations in docusaurus.config.js:
  - /stacks/naming → /stacks/name
  - /stacks/templates → /templates
  - /workflows/workflow-manifest → /workflows
  - /vendor/vendor-manifest → /vendor/vendor-config

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Docusaurus requires the trailing slash for the /vendor/ path.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Fix all issues with AI agents
In `@docs/prd/sso-role-auto-discovery.md`:
- Line 1462: The documentation line labeled "**Specification**" contains a wrong
XDG spec URL path (uses "basedir/"); update the URL to the correct path by
replacing
"https://specifications.freedesktop.org/basedir/basedir-spec-latest.html" with
either
"https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html"
or the canonical "https://specifications.freedesktop.org/basedir-spec/latest/"
so the link resolves correctly.

In `@examples/README.md`:
- Around line 50-54: The link targets and descriptions are inverted: the text
"simple quick start" currently links to /quick-start/advanced and the text
"advanced quick start" points at quick-start-simple/; update the hrefs so
"demo-stacks" and the "simple quick start" text link to quick-start-simple/ (or
the simple quick start URL) and the "quick-start-simple" mention for the
advanced section points to the /quick-start/advanced (or quick-start-advanced/)
target so that demo-stacks, quick-start-simple and quick-start-advanced
references match their intended descriptions.

In `@tests/test-cases/hooks-component-scoped/README.md`:
- Around line 92-94: You modified test assets under tests/test-cases which the
repo forbids; revert the changes made to README.md in the hooks-component-scoped
test case and any edits to the corresponding test implementation
(hooks_component_scope_test.go) and hooks code unless you have explicit approval
from the maintainers; if an exception is required, add a short approval note
from a maintainer to the PR description before keeping the changes.
🧹 Nitpick comments (2)
docs/prd/auth-list-command.md (1)

1416-1417: Convert bare URL to a Markdown link (optional cleanup).
MD034 flags the bare URL; suggest a follow-up cleanup (non-blocking for PRDs).

🧩 Suggested tweak
-- Configure authentication: https://atmos.tools/cli/commands/auth/login
+- Configure authentication: [https://atmos.tools/cli/commands/auth/login](https://atmos.tools/cli/commands/auth/login)

Based on learnings, markdownlint issues in docs/prd should be handled in a separate cleanup PR.

docs/development.md (1)

26-26: Reminder: run the website build after doc changes.
Per repo guidance, please run cd website && npm run build to validate no broken links or MDX render issues.

@osterman osterman added the patch A minor, backward compatible change label Jan 23, 2026
- Fix XDG spec URL path (basedir/ → basedir-spec/)
- Fix swapped quick-start folder references and URLs in examples/README.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@osterman osterman removed the no-release Do not create a new release (wait for additional code changes) label Jan 23, 2026
coderabbitai[bot]
coderabbitai bot previously approved these changes Jan 23, 2026
The getting_started.md URLs were updated from /core-concepts/* to the
new paths. Regenerating golden snapshots to match.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@osterman osterman merged commit ed80df3 into main Jan 23, 2026
60 checks passed
@osterman osterman deleted the osterman/fix-readme-links branch January 23, 2026 20:37
@mergify mergify bot removed the needs-cloudposse Needs Cloud Posse assistance label Jan 23, 2026
@github-actions
Copy link
Copy Markdown

These changes were released in v1.204.1-rc.5.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

patch A minor, backward compatible change size/m Medium size PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants