Summary
The CI link checker (lychee) reports 4 broken file references in docs/CONTRIBUTING.md. All four errors stem from paths resolving to a non-existent docs/docs/ directory.
Broken links
1. docs/assets/connected_devtools.png — Malformed image syntax
Line: Under the "React DevTools" section
Current syntax:
]
The extra outer brackets make this invalid Markdown. The file docs/assets/connected_devtools.png exists but the link doesn't resolve. Should be:

2. docs/faq.md — File does not exist at referenced path
The "Need help?" section links to:
[FAQ](https://gemini-cli.com/docs/resources/faq)
This external URL is correct for the hosted site, but the link checker appears to be resolving a local file:// reference to docs/docs/faq.md, which does not exist. There is no faq.md anywhere in the docs/ directory. If a local-relative link is intended, it should point to the correct path or be excluded from the checker.
3. docs/integration-tests.md — Path resolved one level too deep
The "Integration tests" section links to:
[Integration Tests documentation](https://gemini-cli.com/docs/integration-tests)
The file docs/integration-tests.md exists at the top level of docs/. The checker resolves it to docs/docs/integration-tests.md which doesn't exist.
4. docs/sidebar.json — Path resolved one level too deep
The "Documentation structure" section links to:
[sidebar.json](https://github.com/google-gemini/gemini-cli/blob/main/docs/sidebar.json)
The file docs/sidebar.json exists. The checker resolves it to docs/docs/sidebar.json.
Root cause
The primary bug is #1 — the malformed image markdown with double brackets. For #2–#4, the link checker appears to be resolving paths relative to the file's location (docs/) and then prepending another docs/ prefix, creating the non-existent docs/docs/ base path. This may be a configuration issue in the lychee link checker setup (base URL or --base flag), or the external URLs are being incorrectly transformed into local file paths before checking.
Suggested fix
CI output
| Status | Count |
|----------------|-------|
| 🔍 Total | 123 |
| ✅ Successful | 118 |
| ⏳ Timeouts | 0 |
| 🔀 Redirected | 0 |
| 👻 Excluded | 1 |
| ❓ Unknown | 0 |
| 🚫 Errors | 4 |
| ⛔ Unsupported | 0 |
Errors:
Error: R] <file:///home/runner/work/gemini-cli/gemini-cli/docs/docs/assets/connected_devtools.png> | Cannot find file
Error: R] <file:///home/runner/work/gemini-cli/gemini-cli/docs/docs/faq.md> | Cannot find file
Error: R] <file:///home/runner/work/gemini-cli/gemini-cli/docs/docs/integration-tests.md> | Cannot find file
Error: R] <file:///home/runner/work/gemini-cli/gemini-cli/docs/docs/sidebar.json> | Cannot find file
Summary
The CI link checker (lychee) reports 4 broken file references in
docs/CONTRIBUTING.md. All four errors stem from paths resolving to a non-existentdocs/docs/directory.Broken links
1.
docs/assets/connected_devtools.png— Malformed image syntaxLine: Under the "React DevTools" section
Current syntax:
The extra outer brackets make this invalid Markdown. The file
docs/assets/connected_devtools.pngexists but the link doesn't resolve. Should be:2.
docs/faq.md— File does not exist at referenced pathThe "Need help?" section links to:
This external URL is correct for the hosted site, but the link checker appears to be resolving a local
file://reference todocs/docs/faq.md, which does not exist. There is nofaq.mdanywhere in thedocs/directory. If a local-relative link is intended, it should point to the correct path or be excluded from the checker.3.
docs/integration-tests.md— Path resolved one level too deepThe "Integration tests" section links to:
The file
docs/integration-tests.mdexists at the top level ofdocs/. The checker resolves it todocs/docs/integration-tests.mdwhich doesn't exist.4.
docs/sidebar.json— Path resolved one level too deepThe "Documentation structure" section links to:
The file
docs/sidebar.jsonexists. The checker resolves it todocs/docs/sidebar.json.Root cause
The primary bug is #1 — the malformed image markdown with double brackets. For #2–#4, the link checker appears to be resolving paths relative to the file's location (
docs/) and then prepending anotherdocs/prefix, creating the non-existentdocs/docs/base path. This may be a configuration issue in the lychee link checker setup (base URL or--baseflag), or the external URLs are being incorrectly transformed into local file paths before checking.Suggested fix
]todocs/docs/. If intentional, add these paths to.lycheeignore.CI output
Errors: