---
title: Rules
description: Look up every stable Presswork Rule identifier, its examples, and the policy that enables it.
---

A Rule is a read-only check that evaluates documentation against one requirement of a Profile. Each Violation in a Check Report names one of the Rule identifiers below.

## Configurable Rule groups

A Profile's internal `rules` array selects these three groups. The selected Built-in Profile enables all three; individual Rule identifiers are not Presswork Configuration values.

### Markdown destinations

Enabled by `markdown-destinations`.

| Rule                                                                                           | Reported condition                                                               |
| ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| [`markdown-destination-malformed`](/rules/markdown-destination-malformed/)                     | A Markdown destination cannot be parsed or has an invalid supported-scheme form. |
| [`markdown-destination-scheme-unsupported`](/rules/markdown-destination-scheme-unsupported/)   | A destination uses a URI scheme other than HTTP, HTTPS, `mailto`, or `tel`.      |
| [`markdown-heading-fragment-missing`](/rules/markdown-heading-fragment-missing/)               | A checked Markdown fragment does not match a GitHub heading slug in its target.  |
| [`markdown-local-target-case-mismatch`](/rules/markdown-local-target-case-mismatch/)           | A local target's path casing differs from the repository path.                   |
| [`markdown-local-target-missing`](/rules/markdown-local-target-missing/)                       | A local target does not exist.                                                   |
| [`markdown-local-target-outside-repository`](/rules/markdown-local-target-outside-repository/) | A local target escapes the Repository Root lexically or through symbolic links.  |

### Document Types and Templates

Enabled by `document-types`.

| Rule                                                                                                           | Reported condition                                                                    |
| -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| [`document-type-filename-invalid`](/rules/document-type-filename-invalid/)                                     | A direct typed-document child does not match its canonical filename pattern.          |
| [`template-definition-directive-malformed`](/rules/template-definition-directive-malformed/)                   | A Template contains an unsupported or malformed Template Directive.                   |
| [`template-definition-heading-invalid`](/rules/template-definition-heading-invalid/)                           | A Template's heading structure is invalid.                                            |
| [`template-definition-optional-placement-ambiguous`](/rules/template-definition-optional-placement-ambiguous/) | Optional Template boundaries do not identify one valid heading section.               |
| [`template-definition-placeholder-malformed`](/rules/template-definition-placeholder-malformed/)               | A Template placeholder does not use the supported identifier form.                    |
| [`template-definition-prompt-unmatched`](/rules/template-definition-prompt-unmatched/)                         | Prompt Template Directive boundaries do not match.                                    |
| [`template-directive-unresolved`](/rules/template-directive-unresolved/)                                       | A completed typed document retains a Template Directive.                              |
| [`template-heading-missing`](/rules/template-heading-missing/)                                                 | A required Template heading is absent.                                                |
| [`template-heading-order`](/rules/template-heading-order/)                                                     | Template headings appear out of their declared relative order.                        |
| [`template-heading-structure-invalid`](/rules/template-heading-structure-invalid/)                             | A completed typed document does not have the required H1 and heading-level structure. |
| [`template-heading-undeclared`](/rules/template-heading-undeclared/)                                           | A Strict Template document contains an undeclared heading occurrence.                 |
| [`template-placeholder-unresolved`](/rules/template-placeholder-unresolved/)                                   | A completed typed document retains a Template placeholder or placeholder delimiter.   |

### Documentation indexes

Enabled by `documentation-indexes`. The Rules evaluate only enabled Index Policies.

| Rule                                                                                         | Reported condition                                                                   |
| -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| [`documentation-index-directory-missing`](/rules/documentation-index-directory-missing/)     | A relevant child Documentation Directory is absent from its parent's Index Section.  |
| [`documentation-index-document-malformed`](/rules/documentation-index-document-malformed/)   | The configured Index Document is not an eligible Recognized Document.                |
| [`documentation-index-document-missing`](/rules/documentation-index-document-missing/)       | A required Index Document is absent.                                                 |
| [`documentation-index-entry-malformed`](/rules/documentation-index-entry-malformed/)         | One index inventory entry identifies more than one relevant member.                  |
| [`documentation-index-member-duplicate`](/rules/documentation-index-member-duplicate/)       | A relevant member appears more than once in its Index Section.                       |
| [`documentation-index-member-stale`](/rules/documentation-index-member-stale/)               | An Index Section identifies a member that is no longer relevant.                     |
| [`documentation-index-member-undescribed`](/rules/documentation-index-member-undescribed/)   | An index member lacks meaningful authored loading guidance.                          |
| [`documentation-index-member-wrong-depth`](/rules/documentation-index-member-wrong-depth/)   | An entry identifies a member below the direct-child level owned by that index.       |
| [`documentation-index-member-wrong-target`](/rules/documentation-index-member-wrong-target/) | An entry does not target the direct document or child directory index it identifies. |
| [`documentation-index-orphaned-document`](/rules/documentation-index-orphaned-document/)     | A relevant direct child document is absent from its Index Section.                   |
| [`documentation-index-section-ambiguous`](/rules/documentation-index-section-ambiguous/)     | The Index Section heading appears more than once.                                    |
| [`documentation-index-section-missing`](/rules/documentation-index-section-missing/)         | The Index Section heading is absent.                                                 |

## Matt Pocock Profile policy Rules

These seven Rules come from declarative requirements owned by the `mattpocock@1` Profile. Selecting that Profile applies its requirements. They are not members of a configurable group and cannot be selected through the `rules` array.

| Rule                                                                                           | Reported condition                                                                             |
| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| [`mattpocock-adr-number-duplicate`](/rules/mattpocock-adr-number-duplicate/)                   | More than one canonical Architecture Decision Record uses the same number.                     |
| [`mattpocock-adr-number-gap`](/rules/mattpocock-adr-number-gap/)                               | The canonical Architecture Decision Record sequence is not contiguous from `0001`.             |
| [`mattpocock-adr-status-invalid`](/rules/mattpocock-adr-status-invalid/)                       | Optional `status` frontmatter has an unsupported value.                                        |
| [`mattpocock-adr-structure-invalid`](/rules/mattpocock-adr-structure-invalid/)                 | An Architecture Decision Record lacks one H1 and its one-to-three sentence decision paragraph. |
| [`mattpocock-adr-title-slug-mismatch`](/rules/mattpocock-adr-title-slug-mismatch/)             | The filename slug does not match the H1 title's normalized slug.                               |
| [`mattpocock-context-structure-invalid`](/rules/mattpocock-context-structure-invalid/)         | `CONTEXT.md` does not match the Profile's context-language structure.                          |
| [`mattpocock-context-map-structure-invalid`](/rules/mattpocock-context-map-structure-invalid/) | `CONTEXT-MAP.md` does not match the Profile's context-map structure.                           |

## Diagnostics are not Rules

Operational Diagnostics explain why a Check could not complete. See [Check Report](/check-report/#operational-diagnostics) for the complete catalog, fields, and effect on completeness.

CLI diagnostic codes describe failures at command boundaries rather than failed Rule evaluations. See [CLI](/cli/#diagnostic-codes) for the complete catalog, command behavior, and recovery contracts.
