summaryrefslogtreecommitdiff
path: root/.github/instructions
diff options
context:
space:
mode:
Diffstat (limited to '.github/instructions')
-rw-r--r--.github/instructions/doc-linter.instructions.md46
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).