diff options
Diffstat (limited to '.github/instructions')
| -rw-r--r-- | .github/instructions/doc-linter.instructions.md | 46 |
1 files changed, 35 insertions, 11 deletions
diff --git a/.github/instructions/doc-linter.instructions.md b/.github/instructions/doc-linter.instructions.md index 5e7d359e..cc56f8fe 100644 --- a/.github/instructions/doc-linter.instructions.md +++ b/.github/instructions/doc-linter.instructions.md @@ -4,7 +4,10 @@ applyTo: "**/*.md,**/*.rst,**/*.txt" ## Doc Linter Rules -Every pull request is automatically linted by `scripts/doc-linter.py`. It checks **only changed files** for two things: IP address usage and line length. MyST Markdown (`.md`), legacy RST (`.rst`), and `.txt` includes are all linted. +Every pull request is automatically linted by `scripts/doc-linter.py`. +It checks **only changed files** for two things: IP address usage +and line length. MyST Markdown (`.md`), legacy RST (`.rst`), and +`.txt` includes are all linted. ### IP Address Rules @@ -33,23 +36,29 @@ The linter rejects public IP addresses that are not reserved for documentation. | Example | Why suppression is needed | |---------|--------------------------| -| `8.8.8.8` (Google DNS) | Real public IP, not documentation-reserved | +| Google Public DNS | Real public IP, not documentation-reserved | | `64:ff9b::/96` (NAT64) | Well-known prefix, not in doc ranges | | Real provider IPs in examples | Authenticity matters for the example | ### Line Length Rules -Maximum 80 characters per line. The line-length check is **skipped** inside fenced code: +Maximum 80 characters per line. The line-length check is +**skipped** inside fenced code: -- MyST / Markdown: ` ```...``` ` and `:::...:::` fenced blocks (any info string, including ` ```{eval-rst} `, ` ```{cfgcmd} `, etc.). +- MyST / Markdown: ` ```...``` ` and `:::...:::` fenced blocks + (any info string, including ` ```{eval-rst} `, ` ```{cfgcmd} `, + etc.). - RST: lines indented under `.. code-block::` directives. ### Suppression Syntax -When real public IPs or long lines are unavoidable, wrap the block. The marker form depends on the surrounding parser: +When real public IPs or long lines are unavoidable, wrap the block. +The marker form depends on the surrounding parser: **MyST Markdown (`.md`)** — use the MyST comment form: +% stop_vyoslinter + ````md % stop_vyoslinter @@ -60,8 +69,12 @@ set system name-server '8.8.8.8' % start_vyoslinter ```` +% start_vyoslinter + **RST (`.rst`) and `.txt` includes** — use the RST comment form: +% stop_vyoslinter + ```rst .. stop_vyoslinter @@ -72,19 +85,30 @@ set system name-server '8.8.8.8' .. start_vyoslinter ``` -**Inside a `{eval-rst}` block in MyST** — the embedded content is parsed as RST, so the RST form (`.. stop_vyoslinter`) matches the surrounding parser. The linter recognizes both forms regardless of context, but use the form that fits the parser of the enclosing block. +% start_vyoslinter + +**Inside a `{eval-rst}` block in MyST** — the embedded content is parsed +as RST, so the RST form (`.. stop_vyoslinter`) matches the surrounding +parser. The linter recognizes marker lines only in the parser context +where they apply, including RST markers inside `{eval-rst}` blocks. **Rules for suppression markers:** - Place the stop marker on its own line, immediately before the content. - Place the start marker on its own line, immediately after the content. -- Always re-enable the linter — never leave it stopped for the rest of the file. +- Always re-enable the linter — never leave it stopped for the rest + of the file. - Suppress the smallest possible region. -- Do NOT use suppression for content that can use documentation-reserved addresses instead. +- Do NOT use suppression for content that can use + documentation-reserved addresses instead. ### Common Mistakes -- Removing `stop/start_vyoslinter` markers without fixing the underlying issue (exposes the line to the linter and fails CI). +- Removing `stop/start_vyoslinter` markers without fixing the + underlying issue (exposes the line to the linter and fails CI). - Using real public IPs when documentation addresses would work just as well. -- Adding suppression markers around content that only has private (RFC 1918) addresses or `0.0.0.0/0` — these are allowed and don't need suppression. -- Mixing marker forms (using `% stop_vyoslinter` inside an `{eval-rst}` block, or `.. stop_vyoslinter` in plain MyST prose). +- Adding suppression markers around content that only has private + (RFC 1918) addresses or `0.0.0.0/0` — these are allowed and don't + need suppression. +- Mixing marker forms (using `% stop_vyoslinter` inside an + `{eval-rst}` block, or `.. stop_vyoslinter` in plain MyST prose). |
