You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## 16. File, navigation, and frontmatter conventions
768
768
769
+
Content of this section mostly describes contents of `docs.json` and `[...](...)` markdown links in `.mdx` files.
770
+
769
771
### 16.1 Sidebar groups and ordering
770
772
771
773
Objective. Keep navigation predictable and reduce decision points. (Why: consistent ordering helps readers find the right kind of page without scanning the whole section.)
@@ -779,11 +781,13 @@ Rules (binding).
779
781
780
782
Objective. Keep repository structure and UI labels consistent. (Why: predictable structure speeds editing, improves search/TOC behavior, and reduces merge and build issues.)
781
783
782
-
### 16.1 Files and titles
784
+
### 16.2 Files and titles
783
785
784
-
- Filenames **MUST** use kebab‑case.md or kebab‑case.mdx (e.g., `validator-setup.mdx`). (Why: kebab‑case avoids case‑sensitivity bugs, reads well in URLs, and is easy to grep.)
786
+
- Filenames **MUST** use kebab‑case.md or kebab‑case.mdx (e.g., `validator-setup.mdx`). (Why: kebab‑case avoids case‑sensitivity bugs, reads well in URLs, and is easy to grep.) \[HIGH]
787
+
- Filenames **MUST NOT** have uppercase characters, i.e. `foo-bAR.mdx`. \[HIGH]
788
+
- Filenames **MUST NOT** have cyrillic characters, i.e. `сhoice.mdx`. \[HIGH]
785
789
786
-
### 16.2 Navigation labels
790
+
### 16.3 Navigation labels
787
791
788
792
- Sidebar and nav labels **SHOULD** be short (2–4 words), unique, and mirror in‑page headings. (Why: short, unique labels prevent truncation and speed scanning.)
- Internal links **MUST** be root‑absolute (start with `/`) and **MUST NOT** include `./` or `../`; ensure anchors are stable. (Why: root‑absolute links survive file moves and changes to the information architecture; relative segments break during reorganizations.) \[HIGH]
832
836
- Trailing slashes: Follow a single repo‑wide policy set by the site generator, and apply it consistently across all internal links. (Why: consistency prevents duplicate routes, cache misses, and SEO issues.)
833
837
- Cross‑section links **SHOULD** target specific anchors rather than page tops. (Why: deep links land readers directly on the needed detail.)
834
838
835
-
### 16.4 Status labels
839
+
### 16.5 Status labels
836
840
837
841
- Pages and features **MAY** declare a status in content at the top of the page using an `<Aside>` with a clear title (e.g., `title="Deprecated"` or `title="Experimental"`). Do not introduce custom frontmatter keys for status. (Why: status is visible to readers and does not require unsupported metadata.)
838
842
- If deprecated, the page **MUST** include the replacement (link to successor) and the removal timeline (date or version) in the callout. You **MAY** set `noindex: true` in frontmatter to exclude the page from search when appropriate. (Why: clear migration guidance reduces breakage; de‑indexing avoids surfacing outdated pages.)
0 commit comments