Documentation snippet validation
Every JavaScript, JSX, TypeScript, and TSX fence in the root README,
installation guide, docs/, example READMEs, and SDK skills must declare
exactly one doc-test=compile or doc-test=skip directive. The validator uses
the repository's strict TypeScript configuration and real built declarations,
so it checks syntax, assignments, function arguments, static and dynamic
imports, re-exports, and namespace member access. The equivalent split-package
imports for React, geometry, Esri compatibility, and migration resolve to the
same declarations. CI runs the check after its normal build.
Keep examples syntactically complete even when host-defined values are omitted. The validator reports the Markdown file and opening-fence line when a package path or named export becomes stale.
Complete snippets use the info string ts doc-test=compile. Pseudocode, type
fragments, historical contracts, and intentionally incomplete examples must put
doc-test=skip and a nonempty quoted reason in the opening fence's info
string. For example, use the info string
ts doc-test=skip reason="abbreviated host integration". Skips without a
reason, unquoted reasons, duplicate directives or attributes, and unknown
directives fail validation, making unsupported code explicit during review.
A complete snippet that only needs shared ambient host declarations may use a
quoted repository-relative prelude, for example
ts doc-test=compile prelude="docs/snippet-preludes/browser.d.ts". Prelude paths
cannot be absolute or traverse outside the repository. Prefer a small typed
prelude over any; use a reasoned skip when an excerpt depends on substantial
application context.
Fenced blocks may use the CommonMark allowance of zero to three leading spaces and may live inside blockquotes. Four-space-indented blocks are ordinary indented code, not fenced snippets. Generated documentation, dependencies, and build output are excluded because their canonical inputs have separate freshness gates.