fix-failing-tests
Diagnose a failing test in the googleapis/mcp-toolbox repo and land a fix by reasoning from…
Sweep the googleapis/mcp-toolbox docs for broken and non-canonical links, report each finding with its cause, and apply the safe class of internal link fixes. CI does not check links on this repo, so this skill is the only link check that runs. Use when a maintainer asks for a
$ npx -y skills add googleapis/mcp-toolbox --skill docsite-link-sweep --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/docsite-link-sweepContext preview
The summary Claude sees to decide when to auto-load this skill.
Sweep the googleapis/mcp-toolbox docs for broken and non-canonical links, report each finding with its cause, and apply the safe class of internal link fixes. CI does not check links on this repo, so this skill is the only link check that runs. Use when a maintainer asks for a
name: docsite-link-sweep description: >- Sweep the googleapis/mcp-toolbox docs for broken and non-canonical links, report each finding with its cause, and apply the safe class of internal link fixes. CI does not check links on this repo, so this skill is the only link check that runs. Use when a maintainer asks for a link sweep or a docs health check, before a release, or after a docs reorg, page rename, or directory move. Example requests: "check the docs for broken links", "link sweep", "fix the dead links in docs/". The skill edits the working tree and makes one commit. It never pushes, never opens a PR, and never rewrites external links or ambiguous targets.
**No link check runs in CI.** Both link checker workflows are disabled at the GitHub Actions level, so a broken link now merges without warning and nobody files the weekly report issue. Run this skill yourself. Nothing else catches these.
The skill drives two tools, and each one misses what the other catches:
The skill covers the gap. It applies safe mechanical fixes to internal links. It reports external and ambiguous failures for a maintainer to decide.
Default scope is `README.md` and `docs/en/`. Sweep the full scope by default, because no CI pass has covered these files since the workflows went dark. Narrow to the changed markdown files only when the maintainer asks to check one PR.
Run lychee. Keep the two `--exclude` patterns. `neo4j+` and `bolt://` are database schemes, and lychee cannot fetch them:
lychee --quiet --no-progress --exclude '^neo4j\+.*' --exclude '^bolt://.*' README.md docs/ # For a PR, limit the scope to changed files: git diff --name-only --diff-filter=ACMRT origin/main...HEAD -- '*.md'
Then grep for the structural problems lychee cannot see:
# Directory-style links. Hugo resolves these, lychee fails them.
grep -rnE "\]\(\.\.?/[^)]*\)" docs/en --include=*.md | grep -vE "\.md(#[^)]*)?\)"
# Site-absolute links. These leak across versioned deploys.
grep -rnE "\]\(/[^)]*\)" docs/en --include=*.md
# Hardcoded domain URLs.
grep -rn "https://mcp-toolbox.dev/" docs/en --include=*.md
# Section indexes with no `type: docs`. Docsy then renders no child links.
find docs/en -name _index.md \
-not -path '*/tools/*' -not -path '*/samples/*' -not -path '*/prebuilt-configs/*' \
-exec grep -L "^type: docs" {} +The three excluded paths hold frontmatter-only wrapper files. `CLAUDE.md` requires them to stay minimal, so they are expected hits and not findings. Without the exclusions this check returns about 58 files instead of 1.
For a deep sweep, build the site and crawl the rendered HTML. This is the only pass that sees shortcode-generated links:
cd .hugo && hugo --minify --config hugo.cloudflare.toml lychee --offline --base-url public public
Fix only safe, unambiguous internal links. Report everything else.
| Category | Action | Criteria | |---|---|---| | **Safe to fix** | Rewrite in place to a file-relative `.md` link | • Directory link<br>• Site-absolute `[Text](/path/)`<br>• Hardcoded `https://mcp-toolbox.dev/...`<br>• Moved file with exactly one obvious git successor<br>• Renamed heading anchor | | **Needs decision** | Report with a recommendation. Do not apply. | • Target is missing or deleted<br>• Several candidate targets after a split or reorg<br>• Link points into an `ignoreFiles` path (see `hugo.toml`)<br>• `_index.md` has no `type: docs` | | **External** | Report `file:line`, URL, and status | • External URL returns 404, 403, or 500 | | **Ignore-worthy** | Propose a commented `.lycheeignore` regex | • Endpoint is auth-walled, rate-limited, or flaky |
**Canonical link rule:** use a file-relative path that ends in `.md`, for example `[Example](../folder/file.md)`. Never use a site-absolute `/...` path or a directory `/.../` path.
Check every modified file against both checkers:
lychee --quiet --no-progress --offline <modified-files> cd .hugo && hugo --environment development
git checkout -b docs/fix-docsite-links git commit -am "docs: fix broken docsite links"
[ server that connects your AI agents, IDEs, and applications directly to your enterprise databases.
Repo: googleapis/mcp-toolbox
Diagnose a failing test in the googleapis/mcp-toolbox repo and land a fix by reasoning from…
Reproduce a reported bug in googleapis/mcp-toolbox and decide whether it is real, delivering…
Review a GitHub pull request in the googleapis/mcp-toolbox repo against the team's reviewer…
Sweep the googleapis/mcp-toolbox repo for issues and PRs with no real activity in N days…
Triage GitHub issues in the googleapis/mcp-toolbox repo: propose the correct labels (type /…