From 8a7e96d6fa25a1098c134146883d4f577ab229ca Mon Sep 17 00:00:00 2001 From: Yuriy Andamasov Date: Thu, 7 May 2026 09:25:54 +0300 Subject: docs(conf.py): set Jinja autoescape=False explicitly for llms.txt template MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The llms.txt template renders plain text (markdown), not HTML, so the HTML autoescape rules that bandit/ruff S701 flags don't apply. Explicit `autoescape=False` silences the lint while documenting the intent — there's no HTML context to escape into here. Behavior unchanged (Jinja's default `autoescape=False` was already in effect); this just makes it visible. Same change applied symmetrically across [#1874](https://github.com/vyos/vyos-documentation/pull/1874) (current), [#1876](https://github.com/vyos/vyos-documentation/pull/1876) (sagitta), and [#1903](https://github.com/vyos/vyos-documentation/pull/1903) (circinus). Addresses CodeRabbit review feedback (S701) on PR #1876. \xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io) --- CLAUDE.md | 11 ++++++++--- docs/conf.py | 4 ++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 4785e8bc..7c204a96 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -107,9 +107,14 @@ Each configuration page should contain: ## LLM-Facing Files (`llms.txt`, `llms-full.txt`) -Both files are regenerated on every Sphinx HTML build. They're shipped at the -docs root for each version (`https://docs.vyos.io/en//llms.txt`, -`.../llms-full.txt`). +Both files are regenerated on every `html` and `readthedocs` builder run. +The `dirhtml` builder is intentionally skipped (the curated template +encodes `.html` URLs which don't match `dirhtml` output paths). Local +`make dirhtml` won't emit `llms.txt` — production publishes via the +`html`/`readthedocs` builders, where the file lands. + +Files are shipped at the docs root for each version +(`https://docs.vyos.io/en//llms.txt`, `.../llms-full.txt`). - **`llms-full.txt`** — auto-generated by the `sphinx_llms_txt` extension from the full corpus. No curation; configured by `llms_txt_file = False` (which diff --git a/docs/conf.py b/docs/conf.py index 00324771..d3db8d2b 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -283,6 +283,10 @@ def _write_llms_txt(app, exception): loader=FileSystemLoader(str(tpl_dir)), undefined=StrictUndefined, keep_trailing_newline=True, + # Plain-text template (not HTML), so HTML autoescape is not + # appropriate. Setting autoescape=False explicitly to silence + # bandit/ruff S701 and document the intent. + autoescape=False, ) template = env.get_template('llms.txt.j2') rendered = template.render( -- cgit v1.2.3