Doctor
Every problem comark-linter and Vite Doctor report in a Comark document, one page each. A report's code links here, and each page shows Markdown that triggers it and the same Markdown fixed.
comark-linter reports each problem under a rule, and Vite Doctor reports it under that rule's code.
The core rules catch what Comark forgives: blocks never closed, misspelled components, broken anchors, and unsafe URLs. Each package adds one rule for each kind of problem its plugin puts in meta.issues. That way you can tell them apart in a report and look each one up here.
docs/review.md:8:1 comark/annotate/box-outside-image screenshot "after.png", annotation 2: the box runs past the image edge. Keep x + w and y + h within 100.Run it
Section titled "Run it"pnpm lint-comark "docs/**/*.md"Or add comark-linter/doctor to doctor.config.ts, and the comark/recommended preset turns every rule on. Vite Doctor has the setup.
How plugins name their rules
Section titled "How plugins name their rules"Each plugin adds its sentences to meta.issues, as it always has, and also names the rule of each one in meta.issueRules, keyed by the sentence:
const { meta } = await parseMarkdown(markdown, { plugins: [embed()] });
meta.issues; // ["`::embed` 1: `url` must start with https://."]
meta.issueRules; // { "`::embed` 1: `url` must start with https://.": "comark/embed/insecure-url" }An issue no rule names, such as one from a plugin of your own, is reported as comark/plugin-issue.
| Code | Rule | What it asks | Severity |
|---|---|---|---|
COMARK0001 | comark/unclosed-block | Close every :: block | warning |
COMARK0002 | comark/unknown-component | Use only known components | warning |
COMARK0003 | comark/malformed-attributes | Close { attributes and set each key once | warning |
COMARK0004 | comark/broken-anchor | Link #fragments to a heading or id in the document they name | warning |
COMARK0005 | comark/invalid-frontmatter | Write valid YAML frontmatter | error |
COMARK0006 | comark/plugin-issue | Fix the problems Comark plugins report | warning |
COMARK0007 | comark/unsafe-url | Keep script URLs out of href and src | error |
COMARK0008 | comark/duplicate-id | Give each element its own id | warning |
COMARK0009 | comark/missing-alt | Describe every image in its alt text | warning |
COMARK0010 | comark/empty-link | Give every link text | warning |
COMARK0011 | comark/broken-link | Link files that exist | warning |
COMARK0012 | comark/blocked-url | Keep local, private, tunnel, and preview URLs out of links | warning |
COMARK0013 | comark/dead-url | Link pages that still answer | warning |
COMARK0101 | comark/annotate/unknown-prop | Use only the props of ::screenshot, ::compare, and ::annotation | warning |
COMARK0102 | comark/annotate/undefined-binding | Bind props to data that exists | warning |
COMARK0103 | comark/annotate/unsafe-bound-url | Bind src and href to http:// or https:// URLs | warning |
COMARK0104 | comark/annotate/missing-src | Give every ::screenshot a src | warning |
COMARK0105 | comark/annotate/missing-alt | Describe every ::screenshot in its alt | warning |
COMARK0106 | comark/annotate/invalid-href | Link a screenshot to the http:// or https:// page it captured | warning |
COMARK0107 | comark/annotate/invalid-viewport | Write viewport as the capture size, like 1440x900 | warning |
COMARK0108 | comark/annotate/invalid-position | Place each annotation with x, y, w, h, at, and to from 0 to 100 | warning |
COMARK0109 | comark/annotate/box-outside-image | Keep each annotation's box inside the image | warning |
COMARK0110 | comark/annotate/box-as-fraction | Write x, y, w, and h as percentages, not fractions | warning |
COMARK0111 | comark/annotate/unknown-mark | Use a mark annotate draws | warning |
COMARK0112 | comark/annotate/invalid-color | Color a mark or a figure's ink with a named color or a hex color | warning |
COMARK0113 | comark/annotate/invalid-side | Set side to left, right, top, or bottom | warning |
COMARK0114 | comark/annotate/invisible-mark | Give an annotation with mark="none" a side | warning |
COMARK0115 | comark/annotate/missing-note | Write a note in every ::annotation | warning |
COMARK0116 | comark/annotate/nested-block | Keep screenshots, compares, and annotations out of notes and captions | warning |
COMARK0117 | comark/annotate/side-notes-overlap | Leave room between side notes on one side | warning |
COMARK0118 | comark/annotate/numbers-overlap | Leave room for each annotation's number | warning |
COMARK0119 | comark/annotate/too-many-annotations | Keep a screenshot or compare to 40 annotations | warning |
COMARK0120 | comark/annotate/annotation-outside-screenshot | Put every ::annotation inside a ::screenshot | warning |
COMARK0121 | comark/annotate/compare-content | Put only screenshots inside a ::compare | warning |
COMARK0122 | comark/annotate/compare-screenshot-count | Give every ::compare two screenshots, before and after | warning |
COMARK0123 | comark/annotate/compare-viewport-mismatch | Capture both sides of a ::compare at one viewport | warning |
COMARK0124 | comark/annotate/compare-same-image | Show two different images in a ::compare | warning |
COMARK0125 | comark/annotate/invalid-mode | Set a compare's mode to columns or slider | warning |
COMARK0126 | comark/annotate/needs-side | Give an annotation with at or to a side | warning |
COMARK0201 | comark/cards/invalid-color | Write a card's color as one of Nuxt UI's colors | warning |
COMARK0202 | comark/cards/href-instead-of-to | Link a card with to, not href | warning |
COMARK0203 | comark/cards/unsafe-link | Keep script URLs out of a card's to | error |
COMARK0204 | comark/cards/invalid-cols | Write cols as a number from 1 to 6 | warning |
COMARK0205 | comark/cards/empty-columns | Put a block in every ::columns | warning |
COMARK0206 | comark/cards/unknown-prop | Use only the props of ::card and ::columns | warning |
COMARK0207 | comark/cards/invalid-variant | Write a card's variant as outline, soft, or subtle | warning |
COMARK0301 | comark/carousel/content-outside-slide | Keep a carousel's content inside its :::slide blocks | warning |
COMARK0302 | comark/carousel/empty-carousel | Give every ::carousel a slide | warning |
COMARK0303 | comark/carousel/invalid-columns | Set columns to 1, 2, or 3 | warning |
COMARK0304 | comark/carousel/unresolved-binding | Bind :zoom and :title to the document or its frontmatter | warning |
COMARK0305 | comark/carousel/slide-outside-carousel | Keep :::slide inside a ::carousel | warning |
COMARK0306 | comark/carousel/unknown-prop | Use only ::carousel's and :::slide's props | warning |
COMARK0401 | comark/charts/unknown-prop | Use only the props of ::chart and its annotations | warning |
COMARK0402 | comark/charts/missing-table | Put a Markdown table in every ::chart | warning |
COMARK0403 | comark/charts/content-dropped | Keep text out of ::chart | warning |
COMARK0404 | comark/charts/too-few-columns | Give a chart's table an x column and a column of numbers | warning |
COMARK0405 | comark/charts/unnamed-column | Give every column of a chart's table a header | warning |
COMARK0406 | comark/charts/duplicate-column | Give each column of a chart's table its own header | warning |
COMARK0407 | comark/charts/empty-table | Give a chart's table rows | warning |
COMARK0408 | comark/charts/unknown-column | Name only the table's columns in x and y | warning |
COMARK0409 | comark/charts/x-in-y | Keep the x column out of y | warning |
COMARK0410 | comark/charts/missing-x | Fill in every row's x value | warning |
COMARK0411 | comark/charts/non-numeric-value | Write chart values as plain numbers | warning |
COMARK0412 | comark/charts/duplicate-x | Give each row its own x value | warning |
COMARK0413 | comark/charts/unknown-type | Use a type comark-charts draws | warning |
COMARK0414 | comark/charts/non-numeric-x | Put numbers on the x of a scatter plot | warning |
COMARK0415 | comark/charts/too-few-series | Give a dumbbell two or more columns of numbers | warning |
COMARK0416 | comark/charts/too-few-rows | Give a line or an area two or more rows | warning |
COMARK0417 | comark/charts/too-many-series | Draw one column in a pie or a waterfall | warning |
COMARK0418 | comark/charts/invalid-pie-values | Give a pie a total to divide, with no negative numbers | warning |
COMARK0419 | comark/charts/invalid-at | Point every chart annotation at a row with at | warning |
COMARK0420 | comark/charts/unknown-series | Name a column the chart draws in series | warning |
COMARK0421 | comark/charts/marks-empty-cell | Mark a cell that holds a number | warning |
COMARK0422 | comark/charts/spec-with-props | Leave type, x, and y off a chart drawn from a Vega-Lite spec | warning |
COMARK0423 | comark/charts/spec-with-annotations | Draw notes on a Vega-Lite chart as layers of its spec | warning |
COMARK0424 | comark/charts/invalid-spec-json | Write a Vega-Lite spec as one JSON object | warning |
COMARK0425 | comark/charts/spec-with-data | Leave data out of a Vega-Lite spec | warning |
COMARK0426 | comark/charts/unknown-spec-field | Use the table's headers as a spec's fields | warning |
COMARK0427 | comark/charts/draw-failed | Write a Vega-Lite spec that Vega-Lite can draw | warning |
COMARK0428 | comark/charts/start-and-end | Give every row of a gantt a start and an end | warning |
COMARK0429 | comark/charts/end-before-start | End every bar of a gantt after it starts | warning |
COMARK0430 | comark/charts/too-many-groups | Color a gantt by one column of names | warning |
COMARK0431 | comark/charts/invalid-labels | Put labels on bar and stacked bar charts | warning |
COMARK0432 | comark/charts/invalid-line | Cross a chart with a line at a number on its value axis | warning |
COMARK0501 | comark/chips/invalid-href | Give every :chip a web address in href | warning |
COMARK0502 | comark/chips/invalid-avatar | Write avatar as an image URL, @user, or provider:name | warning |
COMARK0503 | comark/chips/missing-avatar | Point a chip's avatar at an account or image that exists | warning |
COMARK0504 | comark/chips/rate-limited | Build again once unavatar.io answers | warning |
COMARK0601 | comark/code/invalid-range | Write line ranges in braces, such as {2-4} | warning |
COMARK0602 | comark/code/line-out-of-range | Mark only lines the code block has | warning |
COMARK0603 | comark/code/unknown-frame | Set frame to "terminal", "code", or "none" | warning |
COMARK0604 | comark/code/invalid-start-line | Write startLineNumber as a whole number | warning |
COMARK0605 | comark/code/listed-before-shiki | List shiki() before comark-code | warning |
COMARK0701 | comark/diff/unknown-prop | Use only ::diff's props | warning |
COMARK0702 | comark/diff/undefined-binding | Bind ::diff props to data that exists | warning |
COMARK0703 | comark/diff/stray-content | Put only the two code blocks inside a ::diff | warning |
COMARK0704 | comark/diff/block-count | Give every ::diff two code blocks, before and after | warning |
COMARK0705 | comark/diff/unified-diff | Write a ::diff as before and after, not as a unified diff | warning |
COMARK0706 | comark/diff/missing-file | Name the file a ::diff changes | warning |
COMARK0707 | comark/diff/file-mismatch | Show one file in each ::diff | warning |
COMARK0708 | comark/diff/language-mismatch | Give both blocks of a ::diff the same language | warning |
COMARK0709 | comark/diff/invalid-line | Write line as a whole number from 1 | warning |
COMARK0710 | comark/diff/too-many-lines | Keep each block of a ::diff to 200 lines | warning |
COMARK0711 | comark/diff/no-change | Change something between before and after | warning |
COMARK0801 | comark/embed/content-dropped | Keep content out of ::embed | warning |
COMARK0802 | comark/embed/missing-url | Give every ::embed a url | warning |
COMARK0803 | comark/embed/insecure-url | Embed only https:// links | warning |
COMARK0804 | comark/embed/credentials-in-url | Keep user names and passwords out of embed links | warning |
COMARK0805 | comark/embed/invalid-start | Write start as whole seconds | warning |
COMARK0806 | comark/embed/start-unsupported | Set start only on YouTube and Vimeo videos | warning |
COMARK0807 | comark/embed/card-without-title | Give a link card a title | warning |
COMARK0808 | comark/embed/unreadable-link | Link a provider's page it can read an ID from | warning |
COMARK0809 | comark/embed/unknown-prop | Use only ::embed's props | warning |
COMARK2301 | comark/footnotes/missing-definition | Define every footnote you reference | warning |
COMARK2302 | comark/footnotes/unused-definition | Reference every footnote you define | warning |
COMARK2303 | comark/footnotes/duplicate-definition | Define each footnote label once | warning |
COMARK0901 | comark/github/invalid-repo | Set references({ repo }) to owner/name | warning |
COMARK0902 | comark/github/unknown-callout-type | Use one of GitHub's five callout types | warning |
COMARK1001 | comark/icon/missing-name | Give every :icon a name | warning |
COMARK1002 | comark/icon/invalid-name | Write icon names as set:name | warning |
COMARK1003 | comark/icon/unknown-set | Draw icons from a set that exists | warning |
COMARK1004 | comark/icon/unknown-icon | Use an icon its set has | warning |
COMARK1005 | comark/icon/download-failed | Pass the icon sets Iconify can't serve in collections | warning |
COMARK1006 | comark/icon/unknown-prop | Use only :icon's props | warning |
COMARK1101 | comark/include/missing-src | Give every :include a src | warning |
COMARK1102 | comark/include/unknown-option | Use only :include's options | warning |
COMARK1103 | comark/include/remote-file | Include only local files | warning |
COMARK1104 | comark/include/path-outside-root | Keep included paths under the root | error |
COMARK1105 | comark/include/lines-and-region | Use lines or region, not both | warning |
COMARK1106 | comark/include/include-cycle | Don't let a file include itself | warning |
COMARK1107 | comark/include/too-deep | Nest includes no deeper than depth | warning |
COMARK1108 | comark/include/read-failed | Include a file that can be read | warning |
COMARK1109 | comark/include/file-not-found | Include a file that exists | warning |
COMARK1110 | comark/include/invalid-lines | Write lines as a range inside the file | warning |
COMARK1111 | comark/include/missing-region | Name a region the file marks | warning |
COMARK1112 | comark/include/unclosed-region | End every #region with #endregion | warning |
COMARK1113 | comark/include/open-block-in-partial | Close a partial's :: blocks inside it | warning |
COMARK1114 | comark/include/misplaced-include | Write :include alone on its own line | warning |
COMARK1201 | comark/steps/invalid-level | Set level from 2 to 6 | warning |
COMARK1202 | comark/steps/content-before-steps | Start ::steps with its first step's heading | warning |
COMARK1203 | comark/steps/no-steps | Start each step with a heading at level, or use one numbered list | warning |
COMARK1204 | comark/steps/unknown-prop | Use only ::steps's level prop | warning |
COMARK1301 | comark/tabs/content-outside-tab | Put everything in ::tabs inside a :::tabs-item | warning |
COMARK1302 | comark/tabs/content-in-code-group | Put only code blocks in ::code-group | warning |
COMARK1303 | comark/tabs/empty-tabs | Give every ::tabs a tab | warning |
COMARK1304 | comark/tabs/missing-label | Label every tab | warning |
COMARK1305 | comark/tabs/duplicate-label | Give each tab in a block its own label | warning |
COMARK1306 | comark/tabs/stray-tabs-item | Keep :::tabs-item inside ::tabs | warning |
COMARK1307 | comark/tabs/unknown-prop | Use only the props of ::tabs and :::tabs-item | warning |
COMARK1308 | comark/tabs/no-manager-form | Write npm2yarn commands every package manager has | warning |
COMARK1309 | comark/tabs/no-npm-command | Write an npm2yarn block in npm commands | warning |
COMARK1401 | comark/badge/invalid-color | Write a badge's color as one of Nuxt UI's colors | warning |
COMARK1402 | comark/badge/empty-badge | Give every :badge text | warning |
COMARK1403 | comark/badge/unknown-prop | Use only :badge's color prop | warning |
COMARK2501 | comark/outline/content-dropped | Keep content out of ::toc | warning |
COMARK2502 | comark/outline/invalid-depth | Write depth as a whole number from 2 to 6 | warning |
COMARK2503 | comark/outline/no-headings | Give a ::toc headings to list | warning |
COMARK2504 | comark/outline/unknown-prop | Use only ::toc's props | warning |
COMARK3901 | comark/media/unplayable-src | Link a video or audio file a browser plays | warning |
COMARK3902 | comark/media/missing-label | Describe every video and audio file | warning |
COMARK3903 | comark/media/poster-on-audio | Keep poster off audio | warning |
COMARK3904 | comark/media/autoplay-without-muted | Mute a file that plays by itself | warning |
COMARK3905 | comark/media/unknown-prop | Use only a media file's options | warning |
COMARK3301 | comark/qr/missing-value | Give every :qr a value | warning |
COMARK3302 | comark/qr/value-too-long | Keep a :qr value short enough to encode | warning |
COMARK3303 | comark/qr/content-dropped | Keep text out of :qr's brackets | warning |
COMARK3304 | comark/qr/unknown-prop | Use only :qr's props | warning |
COMARK3801 | comark/colors/missing-list | Give every ::palette a list of name: color lines | warning |
COMARK3802 | comark/colors/content-dropped | Keep everything but the list out of ::palette | warning |
COMARK3803 | comark/colors/unreadable-line | Write each palette line as name: color | warning |
COMARK3804 | comark/colors/invalid-color | Write palette colors in a form it can draw | warning |
COMARK3805 | comark/colors/unknown-prop | Give ::palette no props | warning |
COMARK1501 | comark/diagrams/draw-failed | Write a diagram's source so Kroki can draw it | warning |
COMARK1502 | comark/diagrams/server-unreachable | Reach the Kroki server while building | warning |
COMARK2201 | comark/cast/missing-cast | Give every ::cast a cast | warning |
COMARK2202 | comark/cast/unknown-prop | Use only ::cast's props | warning |
COMARK2203 | comark/cast/invalid-mode | Set mode to screen or log | warning |
COMARK2204 | comark/cast/src-and-code | Give a ::cast a src or a code block, not both | warning |
COMARK2205 | comark/cast/remote-file | Read casts from local files | warning |
COMARK2206 | comark/cast/path-outside-root | Keep cast paths under the root | error |
COMARK2207 | comark/cast/read-failed | Point src at a file that can be read | warning |
COMARK2208 | comark/cast/file-not-found | Point src at a file that exists | warning |
COMARK2209 | comark/cast/invalid-header | Start a cast with an asciinema v2 or v3 header | warning |
COMARK2210 | comark/cast/invalid-event | Write every line after the header as an event | warning |
COMARK2211 | comark/cast/no-output | Record a cast with output | warning |
COMARK3201 | comark/code-notes/missing-notes | Follow a fence with markers by a numbered list | warning |
COMARK3202 | comark/code-notes/marker-without-note | Give every marker a note | warning |
COMARK3203 | comark/code-notes/note-without-marker | Give every note a marker in the code | warning |
COMARK3204 | comark/code-notes/shiki-order | Put comark-code-notes after shiki | warning |
COMARK3601 | comark/tests/missing-report | Give every ::tests a src or an XML fence | warning |
COMARK3602 | comark/tests/content-dropped | Use src or a fence in ::tests, not both | warning |
COMARK3603 | comark/tests/remote-src | Point src at a local file | warning |
COMARK3604 | comark/tests/outside-root | Keep the report under the root | warning |
COMARK3605 | comark/tests/file-not-found | Point src at a report that exists | warning |
COMARK3606 | comark/tests/read-failed | Give ::tests a report it can read | warning |
COMARK3607 | comark/tests/malformed-xml | Fix the report's XML | warning |
COMARK3608 | comark/tests/not-junit | Show a JUnit report in ::tests | warning |
COMARK3609 | comark/tests/unknown-prop | Use only ::tests' props | warning |
COMARK3101 | comark/fields/missing-name | Give every ::field a name | warning |
COMARK3102 | comark/fields/unknown-prop | Use only ::field's props | warning |
COMARK3103 | comark/fields/description-ignored | Write a field's description once | warning |
COMARK1601 | comark/metrics/invalid-better | Write better as lower or higher | warning |
COMARK1602 | comark/metrics/missing-number | Give :delta its from and to, and :progress its value | warning |
COMARK1603 | comark/metrics/invalid-number | Write from, to, and value as bare numbers | warning |
COMARK1604 | comark/metrics/invalid-max | Write max as a number above 0 | warning |
COMARK1605 | comark/metrics/value-out-of-range | Keep a :progress value between 0 and max | warning |
COMARK1606 | comark/metrics/missing-table | Put a table inside ::stats | warning |
COMARK1607 | comark/metrics/content-dropped | Keep everything but the table out of ::stats | warning |
COMARK1608 | comark/metrics/column-count | Give a ::stats table three columns, or two with tiles | warning |
COMARK1609 | comark/metrics/non-numeric-cell | Write a ::stats row's before and after as numbers | warning |
COMARK1610 | comark/metrics/unit-mismatch | Write a ::stats row's before and after in one unit | warning |
COMARK1611 | comark/metrics/unknown-prop | Use only the props of :delta, :progress, and ::stats | warning |
COMARK2001 | comark/file-tree/list-instead-of-fence | Write a ::file-tree in a fenced block, not a list | warning |
COMARK2002 | comark/file-tree/empty-tree | Give every ::file-tree at least one entry | warning |
COMARK2003 | comark/file-tree/content-dropped | Put only one fenced block inside ::file-tree | warning |
COMARK2004 | comark/file-tree/unknown-prop | Give ::file-tree no props | warning |
COMARK2701 | comark/details/missing-summary | Give every ::details a summary | warning |
COMARK2702 | comark/details/content-outside-item | Put everything in ::accordion inside an :::accordion-item | warning |
COMARK2703 | comark/details/empty-accordion | Give every ::accordion an item | warning |
COMARK2704 | comark/details/missing-label | Label every accordion item | warning |
COMARK2705 | comark/details/invalid-default-value | Open accordion items by their position from 0 | warning |
COMARK2706 | comark/details/invalid-type | Write an accordion's type as single or multiple | warning |
COMARK2707 | comark/details/stray-accordion-item | Keep :::accordion-item inside ::accordion | warning |
COMARK2708 | comark/details/empty-collapsible | Put content in every ::collapsible | warning |
COMARK2709 | comark/details/unknown-prop | Use only the props of ::details, ::accordion, and ::collapsible | warning |
COMARK1701 | comark/critic/unclosed-mark | Close every CriticMarkup mark in its paragraph | warning |
COMARK1702 | comark/critic/missing-arrow | Write ~> between the old and new text of {~~ ~~} | warning |
COMARK1703 | comark/critic/invalid-mode | Set comark-critic's mode to view, accept, or reject | warning |
COMARK2801 | comark/properties/invalid-value | Write each shown key as text, a number, a link, or a list of them | warning |
COMARK2802 | comark/properties/content-dropped | Keep content out of ::properties | warning |
COMARK2803 | comark/properties/nothing-to-show | Give ::properties a key to show | warning |
COMARK2804 | comark/properties/unknown-prop | Write ::properties without props | warning |
COMARK3001 | comark/sources/invalid-cite | Write source numbers inside :cite | warning |
COMARK3002 | comark/sources/unknown-source | Cite only sources ::sources lists | warning |
COMARK3003 | comark/sources/missing-list | Give ::sources a numbered list | warning |
COMARK3004 | comark/sources/second-list | Keep one ::sources per document | warning |
COMARK3005 | comark/sources/missing-link | Link every source | warning |
COMARK3006 | comark/sources/content-dropped | Keep only the list inside ::sources | warning |
COMARK3007 | comark/sources/unknown-prop | Use only ::sources' props | warning |
COMARK2601 | comark/table/empty-block | Give every ::table a file or a table to show | warning |
COMARK2602 | comark/table/content-dropped | Give ::table a src or content, not both | warning |
COMARK2603 | comark/table/remote-src | Read tables only from local files | warning |
COMARK2604 | comark/table/path-outside-root | Keep a table's src under the root | error |
COMARK2605 | comark/table/file-not-found | Read a table from a file that exists | warning |
COMARK2606 | comark/table/read-failed | Read a table from a file that can be read | warning |
COMARK2607 | comark/table/unknown-format | Give a table CSV, TSV, or JSON | warning |
COMARK2608 | comark/table/invalid-json | Write a table's JSON so it parses | warning |
COMARK2609 | comark/table/json-not-rows | Write a table's JSON as an array of objects | warning |
COMARK2610 | comark/table/unclosed-quote | Close every quoted cell | warning |
COMARK2611 | comark/table/no-rows | Give a table a header and a row of data | warning |
COMARK2612 | comark/table/uneven-row | Give every row one cell per column | warning |
COMARK2613 | comark/table/base-outside-root | Set base to a folder under the root | warning |
COMARK2614 | comark/table/unknown-prop | Use only ::table's props | warning |
COMARK2615 | comark/table/unknown-tone | Color a cell with success, warning, error, or info | warning |
COMARK2616 | comark/table/partial-tone | Fill the cell with its tone span | warning |
COMARK2901 | comark/xref/duplicate-label | Give each figure and table its own label | warning |
COMARK2902 | comark/xref/inline-figure | Put a labeled image on a line of its own | warning |
COMARK2903 | comark/xref/missing-id | Give every :ref an id | warning |
COMARK2904 | comark/xref/unknown-label | Point :ref at a label in the document | warning |
COMARK2905 | comark/xref/ref-content | Keep text out of :ref | warning |
COMARK4001 | comark/quiz/no-options | Write a question's or poll's options as a task list | error |
COMARK4002 | comark/quiz/no-correct-option | Mark a question's right option [x] | error |
COMARK4003 | comark/quiz/correct-in-poll | Leave every poll option unchecked | error |
COMARK4004 | comark/quiz/missing-answer | Give every ::recall an #answer | error |
COMARK4005 | comark/quiz/missing-id | Give every quiz block an #id | warning |
COMARK4006 | comark/quiz/duplicate-id | Give each quiz block its own #id | error |
COMARK4007 | comark/quiz/longest-correct | Keep the right option about as long as the others | warning |
COMARK4008 | comark/quiz/position-option | Write out an option instead of pointing at others by place | warning |
COMARK4009 | comark/quiz/missing-rationale | Say why each wrong option is wrong in a > line | warning |
COMARK4010 | comark/quiz/line-break-option | Start an option's rationale with > | warning |
COMARK4011 | comark/quiz/swallowed-slot | Leave a blank line before #explain, #hint, and #answer | error |
COMARK4012 | comark/quiz/too-many-options | Keep a block to six options | warning |
COMARK4013 | comark/quiz/unknown-prop | Use only the props of ::question, ::poll, and ::recall | warning |
COMARK4014 | comark/quiz/unknown-slot | Use only the slots of ::question and ::recall | warning |
COMARK4015 | comark/quiz/invalid-closes | Write a poll's closes as an ISO date | warning |
COMARK4016 | comark/quiz/nested-block | Keep quiz blocks out of each other | warning |