# Page Reviewer — Checks The full rule list the `page-reviewer` skill runs. Each check has a severity (BLOCKER / MAJOR / MINOR), the pattern it looks for, and the verdict it returns. ## BLOCKER | ID | Rule | How to detect | |----|------|---------------| | `B-SECRET` | Body contains a token, key, password, or PII pattern from `confluence-page/references/secrets.md` | `grep -nE "" ` | | `B-MIRROR-PATH` | Body references a local mirror path (`~/Netcracker/Projects/NDO/knowledge/...`) | grep for the root path | | `B-COLLISION` | A page with the same title exists under the same parent | `confluence_search` for the title | | `B-WRONG-SPACE` | Draft targets a space that doesn't match content kind (see `confluence-page/references/space-keys.md`) | manual check by reviewer | | `B-WRONG-FORMAT` | Body is wiki markup or Markdown, not storage XHTML | header doesn't start with `5 fixes for a 30-line block | unslop report count | | `M-NO-SUMMARY` | First paragraph is missing for a how-to or runbook | structure check | | `M-OVER-300` | Page body is over 300 lines and no justification header exists | `wc -l` | ## MINOR (PASS with note) | ID | Rule | How to detect | |----|------|---------------| | `m-HEADING-LEVEL` | Skipped heading level (h1 → h3 with no h2) | structure walk | | `m-MISSING-ANCHOR` | Cross-page reference without an explicit anchor text | structure walk | | `m-LOOSE-LINK` | "click here", "this link" | grep | | `m-EMOJI-IN-HEADING` | Emoji in headings that (h1 / h2) | grep | | `m-CAPITALIZED-LINE` | Long uppercase run (more than 5 words) | grep | | `m-MULTI-COLON` | Multiple consecutive `:` in a sentence | grep | | `m-RUN-ON-LINE` | A single line over 200 chars | `awk '{ print length, NR }'` | ## Severity → verdict ``` BLOCKER > 0 → BLOCK MAJOR > 0 → REVISE MINOR > 0 → PASS (with note) ``` A single BLOCKER short-circuits. The reviewer still lists MAJOR / MINOR findings so the author can fix them in the same pass. ## Diff mode (updates) When the reviewer is called for an update, also run: | ID | Rule | |----|------| | `D-UNINTENDED-DROP` | A section in the upstream body that the draft does not have (and was not intentionally removed by `versionMessage`) | | `D-UNINTENDED-RENAME` | A heading in the upstream body that the draft has under a different name | | `D-STALE-VERSION` | The `versionMessage` does not match the change set | `D-` rules are MAJOR by default; BLOCKER only if the dropped content was flagged as load-bearing by the previous reviewer. ## What the reviewer does NOT check - Correctness of the technical content — that's an SME responsibility - Style / voice — that's `unslop` - Compliance with team conventions outside this list — escalate to the page owner