Skip to content

Maintainability questions at design time, and an honest claim #1585

Maintainability questions at design time, and an honest claim

Maintainability questions at design time, and an honest claim #1585

Workflow file for this run

name: docs-linkcheck
on:
pull_request:
paths:
- "**/*.md"
- "scripts/check_doc_anchors.py"
- ".github/workflows/docs-linkcheck.yml"
push:
branches: [main]
paths:
- "**/*.md"
- "scripts/check_doc_anchors.py"
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
linkcheck:
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Internal relative links only (--offline) — that is the discipline the
# docs tree enforces (relative repo paths, fork-survivable). External
# URLs are deliberately not checked here: their flakiness should never
# block a PR. The auto-generated Codex mirror and .flow/ work artifacts
# are excluded to keep signal high.
- name: Check internal markdown links
uses: lycheeverse/lychee-action@v2
with:
args: >-
--offline
--no-progress
--root-dir ${{ github.workspace }}
--exclude-path plugins/flow-next/codex
--exclude-path .flow
--exclude-path node_modules
--exclude-path flow-next-tui/node_modules
README.md
CONTRIBUTING.md
SECURITY.md
GLOSSARY.md
STRATEGY.md
agent_docs
plugins/flow-next/README.md
plugins/flow-next/docs
plugins/flow-next/skills
fail: true
# lychee proves the file exists; it does not check the fragment after '#'.
# These docs cross-reference by anchor constantly, so a reworded heading
# would otherwise break navigation silently.
- name: Check markdown anchors
run: python3 scripts/check_doc_anchors.py